非Windows平台上的仿真KMS服务器

我在这里开始一个新话题,讨论如何在非Windows环境中设置工作的KMS服务器,例如Linux-PC,Raspberry Pi,路由器,Mac OS,Android,iOS,NAS服务器,卫星接收器等。

臭名昭着的时候11/24/2016攻击某些内容遭到物理删除,无法恢复。您仍然可以在Wayback Machine上找到一些内容(截至2016年5月20日)。即使Wayback Machine不是恶意网站,请勿输入您的MDL(或任何其他)用户名和密码。



py-kms - 用python编写的KMS v6仿真器(在python2.6和2.7上运行,不依赖于OS)

可以在这里找到




vlmcsd - C中的便携式开源KMS仿真器


  • 支持的操作系统/运行时环境
    • Linux,GNU / Linux,uclibc / Linux,musl / Linux,Android(bionic / Linux),FreeBSD,带有glibc的FreeBSD(例如debian / kFreeBSD),OpenBSD,NetBSD,DragonflyBSD,Solaris,Open Indiana,Dyson,Minix,Darwin, Mac OS,iOS,Windows,Cygwin,WSL,Wine,The Hurd。
  • 支持的CPU
    • x86,arm,mips,PowerPC,Sparc,s390

vlmcsd是
  • 替代Microsoft的KMS服务器
  • 它包含vlmcs,KMS测试客户端,主要用于调试目的,也可以“收费”一个真正的KMS服务器
  • 旨在运行在永远在线或经常在设备上,例如路由器,NAS Box,...
  • 旨在帮助失去其合法拥有许可证的人员,例如由于硬件(主板,CPU,...)的变化,
vlmcsd 不是
  • 一键激活或破解工具
  • 旨在激活软件的非法拷贝(Windows,Office,Project,Visio)

源和二进制文件:http : //rgho.st/87T6PMhsh
仅源:http : //rgho.st/87X9dxZWP

7zip密码为2017 

更改

  • 2017-05-31(1110
    • Visual C ++平台工具集更新到v141_xp
    • 在许多平台上将gcc更新为6.3.0
    • 删除32位cygwin OpenSSL二进制,因为64位Cygwin不再具有32位OpenSSL标头和库
    • 更改Windows构建脚本以使用MSBuild 2017
    • 更新了用于ASCII(TXT)man文件的groff格式化选项
    • 增加了对企业G和企业GN的支持(Windows中国政府版)
      • 新的命令行开关-G <EPID>指定Windows中国政府版本的EPID
      • 新的INI文件指令WinChinaGov(与命令行-G相同)
      • 如果检测到遗留数据库,则会添加警告
      • 可启动软盘:新建SYSLINUX.CFG参数WINCHINAGOV =为Windows中国政府版(企业G / GN)设置EPID
    • 添加后缀_unused到一些本地参数,以表明可以忽略MSVC编译器警告
    • 重命名了一些本地参数以避免编译器发出警告
    • 添加了转换以减少MSVC编译器的警告
    • 修复了内存分配错误,如果.kmd文件的CSVLK少于内置的最小值
  • 2017-01-19(1108
    • 修复了如果从非Atom CPU(thx到Daz运行,Android x86 / x64构建的终止与SIGILL(非法指令)的错误
    • 新选项-x1(由Hahu请求)导致vlmcsd退出if
      • 任何用-L指定的监听套接字(IP地址/端口)都无法设置。
      • TAP镜像线程遇到从VPN适配器读取或写入错误的错误。
    • 新的INI文件指令ExitLevel = 1,它与-x1相同
  • 2016-12-12(1107
    • 修复了所有Cygwin构建中的错误,如果vlmcsd作为服务启动,则无法正确停止。
    • 更新了./src/GNUmakefile以在FEATURES = minimum中包含CFLAG NO_TAP
    • 更新GNUmakefile有助于解释CFLAG NO_TAP
    • 修复了所有Windows和Cygwin构建与TCP端口锁定的错误
    • 在Android 1.5的仿生图书馆中解决POSIX 2008兼容性的问题,构建了realpath无法分配字符串缓冲区。

较旧的变化


更新日志


  • 2016-12-06(1106
    • Windows和Cygwin版本的vlmcsd具有新的命令行选项-O,以使用OpenVPN Tap或TeamViewer VPN适配器来轻松自我激活
    • 新的INI文件指令VPN =(与命令行选项-O相同)
    • 新的CFLAG NO_TAP,可编译vlmcsd而不支持TAP或TeamViewer VPN适配器。
    • 修复了在极少数情况下,在命令行选项-O-A-R中的时间跨度错误的错误。
  • 2016-11-28(1105
    • 解决了旧的uclibc(0.9.30.x)中的一个错误,该realpath不符合POSIX 2008(thx到alorsnon)。
    • 使用Linux和musl的PowerPC架构的新二进制文件。
  • 2016-11-26(1104
    • vlmcsd现在支持从文件(外部数据库)加载KMS产品数据库
      • 现在,vlmcsd预构建的二进制文件现在只包含一个基本的数据库,可以像往常一样执行所有任务。但是,如果您记录,所有产品名称显示为“未知”。对于使用清晰的文本名称进行日志记录而不是GUID,您将需要一个外部数据库。您将在.etc/vlmcsd.kmd中找到完整的产品数据库
      • vlmcsd和vlmcs的预构建二进制文件在与vlmcsd和vlmcs 相同的目录中的名为vlmcsd.kmd的文件中查找外部数据库。如果找到,数据库将在程序启动时自动加载。如果您想要一个完整的数据库(用于记录),只需将vlmcsd.kmd放在与vlmcsd二进制文件相同的目录中即可。在OpenBSD,Minix和Hurd系统上,vlmcsd和vlmcs替代了/etc/vlmcsd.kmd。
      • vlmcs和vlmcsd中的新命令行选项-j <filename>来加载特定的外部数据库。-j-禁用加载默认数据库。
      • 新的INI文件参数KmsData = <filename>,它与命令行选项-j相同。
      • 新的CFLAG -DNO_EXTERNAL_DATA来编译vlmcsd而不支持加载外部数据库。
      • 新的CFLAG -DNO_INTERNAL_DATA可以编译没有内部数据库的vlmcsd。如果没有找到外部数据库,则vlmcsd将失败。
      • 新建make命令行选项DATA = <filename>以编译具有外部数据库的自定义默认位置的vlmcsd,例如DATA = / usr / local / etc / vlmcsd
      • 新的CFLAG -DUNSAFE_DATA_LOAD编译vlmcsd而不检查外部数据库的完整性。这保存一些字节,但如果加载特制数据库,则会冒着远程执行代码。强烈建议不要使用此CFLAG。
      • 新的CFLAG -DFULL_INTERNAL_DATA来编译具有完整内部数据库的vlmcsd。如果您合并了-DFULL_INTERNAL_DATABASE-DNO_EXTERNAL_DATA,则生成的二进制文件将与以前版本的vlmcsd一样工作。
      • CFLAGs -DNO_EXTENDED_PRODUCT_LIST-DNO_BASIC_PRODUCT_LIST已被删除。
      • make命令行选项WINDOWS =OFFICE201X =已被删除。
      • 可以使用License Manager 4.5或更高版本创建自定义数据库。
    • 修复了./src/GNUmakefile中的错误,如果在make命令行或libkms上指定了FEATURES = minimum,则CFLAGs -DNO_STRICT_MODES-DNO_CLIENT_LIST不会自动定义。
    • 修复了在Android构建中未正确检测到共享内存的可用性的错误。
    • 如果KMS服务器报告错误,vlmcs现在包含更多的明文错误消息。
    • vlmcs的Windows版本现在将所有错误消息从KMS服务器转换为清除文本。
    • 在非详细日志中,vlmcsd现在将显示SKU ID而不是“未知”(由mkuba50请求
    • Atheros OpenWRT预构建的二进制文件现在支持使用命令行选项-m限制vlmcsd中的并发客户端。
    • 现在,Linux x32二进制文件与bfd链接,而不是使它们更小的金子。
    • 修复了如果vlmcsd使用CFLAG SIMPLE_SOCKETS编译,则vlmcsd的Windows版本没有锁定侦听端口的错误。这也影响了libkms32.dll和libkms64.dll。
    • 删除vlmcsd中不必要的套接字关闭调用。
    • vlmcsd的RPC代码已经针对仿真器检测进行了强化
      • vlmcsd现在在RPC绑定期间检查接口UUID,并发送适当的NACK CTX结果。
      • 如果客户端尝试调用未绑定的CTX索引,则vlmcsd现在将返回正确的RPC_PT_FAULT包。
    • 修复了vlmcsd抱怨错误的Ndr64 Ctx的错误,即使如果使用CFLAG -D_PEDANTIC编译vlmcsd,则不使用Ndr64
    • 您现在可以在make命令行上为定义__GLIBC__的任何工具链指定AUXV = 1。在以前的版本中,如果__linux__未被工具链定义,AUXV = 1被忽略。
  • 2016-11-04(1103
    • 新的二进制vlmcsd-armelv7-bcm47xx_53xx-openwrt-musl支持基于ARM的Broadcom 47xx至53xx芯片的OpenWRT
    • 新的二进制vlmcsd-armelv7-bcm47xx_53xx-openwrt-musl-static(与上面的静态构建一样)
    • 用于基于glibc的OpenWRT构建的新二进制vlmcsd-armelv7-bcm47xx_53xx-openwrt-glibc
    • 将版本控制系统从颠覆更改为git
    • 修正了一些在某些Linux版本上可能会失败的错误(由于llabs的隐含定义)
    • 在GNUmakefile帮助中包含忘记的CFLAG -DNO_CLIENT_LIST
    • 将vlmcsd,vlmcs和vlmcsdmulti的Visual C ++构建中的默认启动代码替换为自己的代码(较小的二进制文件)
    • vlmcsd,vlmcs和vlmcsdmulti的Visual C ++构建现在运行在XP(需要SP3)和Windows Server 2003
  • 2016-10-25(svn1099
    • 修复了vlmcs无法向不支持NDR64的服务器发送请求的错误。
    • vlmcsd现在支持维护客户端列表(CMID),以更好地防止仿真器检测(可以使用新的CFLAG -DNO_CLIENT_LISTS在编译时禁用)。
    • CFLAG -DNO_STRICT_MODES现在自动包含-DNO_CLIENT_LISTS。
    • 新的vlmcsd命令行选项-M0(默认)和-M1禁用或启用维护CMID。
    • 新的vlmcsd命令行选项-E0(默认)和-E1禁用或启用一个空的CMID列表。如果使用-M0,则忽略。
    • 新的INI文件参数MaintainClients(与-M0和-M1相同)
    • 新的INI文件参数StartEmpty(与-E0和-E1相同)
    • 改进了Posix线程可用性的自动检测
    • 修复了vlmcsd的cygwin版本中的日志互斥体未初始化的错误。
    • 修复了vlmcsd中的一个错误,这是一个长时间未被正确检测到的请求。
    • 可启动软盘的syslinux.cfg文件有一个新参数VLMCSD_EXTRA_ARGS来指定将传递给vlmcsd(由vactis请求)的其他命令行选项。
    • 可启动软盘现在使用vlmcsdmulti的线程版本能够使用-M1(剥离内核没有共享内存支持)。
    • 修复了Linux构建脚本中的一些错误,一些vlmcsdmulti二进制文件未正确构建。
    • 修复了示例vlmcsd.ini文件(thx到qewlpal)中的打字错误。
    • 将默认HWID更改为当前的Ratiborus虚拟机。
    • OpenBSD预编译二进制文件现在使用线程而不是fork,因为缺少pthread_mutexattr_setpshared。
  • 2016-10-21(svn1085
    • 新的CFLAG -DSIMPLE_RPC,禁用在RPC协议中支持NDR64和BTFN
    • NDR64和BTFN现在可以关闭并单独为客户端和服务器(libkms要求)
    • 新的命令行选项-c0和-c1 for vlmcsd。如果服务器和客户端的时间差超过4小时,-c1将导致拒绝激活。这对于防止仿真器检测非常有用。
    • 新的INI文件参数CheckClientTime(与-c0和-c1相同的效果)
    • 已将CFLAG -DNO_WITHELISTING重命名为-DNO_STRICT_MODES。它禁用白名单和时间检查。
    • 修复了vlmcsd和vlmcs在64位模式下遇到具有对准要求的CPU(PowerPC64,mips64和sparc64)的错误
  • 2016-10-19(svn1080
    • 修复了Office 2013预览未被检测为beta /预览产品(thx至Aty)的错误。
    • 修复了一个错误,AppList没有被编译在某些实际需要的实例中。
    • 修正了即使不需要编译output.c中的函数(例如NO_LOG定义)的错误。
  • 2016-10-19(svn1079
    • vlmcs,vlmcsd和libkms不再报告像0这样的非特定错误,但是使用平台特定的API(strerror,FormatMessage等)可以将其转换为可读字符串的正确错误号
    • 修复了在不支持IPv6的系统上使用SIMPLE_SOCKETS无法编译vlmcsd的错误(例如Minix)
    • Visual Studio Linux项目已暂时移至./src。这是由于Visual C ++ for Linux扩展中的一个错误。
    • 在Visual Studio项目中为每个项目正确设置一个单独的obj dierectory。
    • DragonFlyBSD构建系统更新到版本4.6
    • 为DragonFlyBSD构建将gcc更新为6.2版。
    • 在请求中,vlmcsd现在报告的活动客户端数量至少是N计数策略的两倍,从而使模拟器检测更加困难。
    • vlmcsd中的新命令行选项-K0,-K1,-K2和-K3,允许列出KMS ID。vlmcsd现在可以拒绝未知的KMS ID,KMS ID不正确的应用程序ID,零售KMS ID(例如Windows Home Editions)和测试版/预览KMS ID(由Carlos Detweiller要求)
    • 新的INI文件参数WhitelistingLevel(与-K0,-K1,-K2和-K3相同)
    • 新的CFLAG -DNO_WHITELISTING来编译没有白名单功能的vlmcsd。
    • libkms现在支持在RPC绑定期间的RPC功能选择和检查(BTFN,NDR64)。将在未来版本的许可证管理器中用于高级仿真器检测。
  • 2016-10-12(svn1065
    • 修复MSVC构建中导致错误解析负整数的错误。
    • 在vlmcs和vlmcsd中使用选项-V时,MSVC现在包含编译器版本。
    • 修复了vlmcsd的所有Windows版本中的错误,它接受的最大值为32767。
    • 增加了对Linux的Visual Studio远程构建和调试的支持(需要使用Visual Studioion“15”预览5或使用Linux C ++扩展的Visual Studio 2015)
    • 新改进的目录结构
    • 所有源文件位于./src中
    • man文件位于./man
    • 所有可执行文件默认情况下转到./bin
    • 所有图书馆都去./lib
    • 临时文件将以./build(execpt * .d文件创建,如果您使用DEPENDENCIES = 1)创建。这些文件必须在./src中创建,以便依赖关系工作)
    • 示例vlmcsd.ini现在在./etc中
    • 即使设置了* _NAME变量,GNUmakefile现在总是接受通用名称vlmcs,vlmcsd,vlmcsdmulti,libkms和libkms-static作为目标名称
    • 标记所有MSVC二进制文件,从CD和网络安全运行,并将其标记为终端服务器
    • 修复了包含windows.h和winsock2.h错误顺序的构建警告
    • 修复了一个构建错误,如果在使用ELF二进制文件的系统上构建libkms,则-fPIC编译器不会自动设置
    • 修复了如果在make命令行上指定了VERBOSE = 1,则导致libkms无法正确构建的错误
    • FreeBSD构建环境升级到FreeBSD 11.0。
    • NetBSD 64位二进制文件现在使用gcc 6.2进行编译
    • GNU Hurd编译器更新到gcc 6.2
    • kFreeBSD编译器更新到6.2
  • 2016-10-06(svn1031
    • 因为我相信pkeyconfig文件超过* .cilx文件,但是仍然不能100%确定哪个是哪个,为Win 2016 Azure Core和Cloud Storage交换了SKU ID。
    • vlmcsd,vlmcs,vlmcsdmulti和libkms现在使用Visual Studio 2013和2015编译
    • 添加了Visual Studio 2015解决方案
    • 更新的Windows构建脚本来构建Visual Studio版本
    • 修复了vlmcsd中的一个错误,Office 2016报告了50个活动客户端而不是10个
    • 现在使用Visual C ++构建的vlmcsd,vlmcs,vlmcsdmulti和libkms的Windows版本(gcc版本仍然可以使用后缀-gcc.exe,所有msrpc版本仍然使用gcc构建)
    • 将Mac OS X更新到Sierra,并为Xcode 8.0,clang 3.8,gcc 6.2.0构建工具
  • 2016-09-16(svn1016
    • 如果使用-DNO_LOG编译vlmcsd,则二进制文件中不会包含任何产品名称
    • 一些内部更改更容易维护EPID和PKEYCONFIGs
    • Windows 2016的发布日期现在是随机EPID中生成的最小日期
    • 新的编译时间CFLAG -DSMALL_AES实现了较小但速度较慢的AES版本
    • 在编译vlmcsd时,再次使用-DNO_BASIC_PRODUCT_LIST是安全的。发送适当EPID所需的KMS ID将始终包含在二进制文件中。
    • 如果使用了-DNO_LOG,则不再需要APP ID列表,因为它不再需要,因为EPID生成现在使用KMS ID而不是APP ID
    • 修复了vlmcs中的错误,KMSv6中的HMAC不正确(Thx到CODYQX4)
    • 将FreeBSD工具链更新到gcc 6.1
  • 2016-09-03(svn1006
    • 在Cygwin升级到MingW32 gcc 5.4工具链后,更改了GNUmakefile在Windows上构建Windows版本
    • vlmcsd现在使用Office 2016的单独EPID(Thx到Aty和echo2)
    • vlmcsd中的新命令行选项-6可指定Office 2016的用户定义的EPID
    • INI文件不再使用GUID来定义自定义EPID和HWID。改用关键字Windows,Office2010,Office2013和Office2016。
    • 修复了vlmcs的-G选项中的错误,将错误的请求发送到KMS服务器
    • vlmcs中的-G选项现在使用新的INI文件格式来创建/更新INI文件
    • GNUmakefile命令行参数FEATURES = minimum不再包含-DNO_BASIC_PRODUCT_LIST,因为现在需要KMS ID来区分Office 2013和Office 2016
    • 新的GNUmakefile命令行选项OFFICE2016 =在编译时指定Office2016的默认EPID
    • 如果在GNUmakefile CFLAGS中使用-DNO_BASIC_PRODUCT_LIST,则生成的二进制文件将无法为Office 2016发送有效的EPID。此编译时选项不应再使用。
    • 可启动软盘现在接受一个内核启动参数OFFICE2016 =指定Office 2016的EPID
  • 2016-08-27(svn1003
    • 添加新的KMS ID“Windows 10 2016(卷)”(thx到kelorgo和Aty)
    • 将Windows 10 Enterprise 2016 LTSB和LTSB N移动到“Windows 10 2016(卷)”
  • 2016-08-26(svn1001
    • 添加了更多产品(SKU ID和KMS ID)
    • 修复了ePID生成的随机ePID生成中的一个关键错误,它不会在真正的服务器上激活Office 2016,Windows 10,Windows 8.1,Windows 2012 R2和Windows 2016。

本博客所有文章如无特别注明均为原创。作者:樱木复制或转载请以超链接形式注明转自 EFE
原文地址《非Windows平台上的仿真KMS服务器
分享到:更多

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)