本文编写于 253 天前,最后修改于 238 天前,其中某些信息可能已经过时。

前言

      这个事情还是要从那只蝙蝠说起,上次写了一个装系统的教程,想了想没有激活怎么行,市面上大部分激活软件可能又不安全,再加上自己平常都是用Windows的Slmgr命令+kms激活的,然后突发奇想就写了这个东西,废话不多说,下面上github链接

Github链接

原理

      通过注册表中的ProductName项获取当前系统版本,再根据版本从微软提供的KMS密钥中获取对应版本的密钥,然后从再验证kms激活服务器,验证成功后通过windows自带slmgr命令分别设置kms验证服务器,密钥,最后激活完成

源码

import socket
import os
import winreg


def serverTest(ip, port):
    try:
        s = socket.socket()
        s.connect((ip, port))
        s.shutdown(2)
        return True
    except socket.error as e:
        return False


def getSystemEdition():
    winRegKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion")
    ver = winreg.QueryValueEx(winRegKey, "ProductName")[0]
    return ver


def getKmsKey(edition):
    keyDict = {
        'Windows Server 2019 Datacenter': 'WMDGN-G9PQG-XVVXX-R3X43-63DFG',
        'Windows Server 2019 Standard': 'N69G4-B89J2-4G8F4-WWYCC-J464C',
        'Windows Server 2019 Essentials': 'WVDHN-86M7X-466P6-VHXV7-YY726',
        'Windows Server 2016 Datacenter': 'CB7KF-BWN84-R7R2Y-793K2-8XDDG',
        'Windows Server 2016 Standard': 'WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY',
        'Windows Server 2016 Essentials': 'JCKRF-N37P4-C2D82-9YXRT-4M63B',
        'Windows 10 Pro': 'W269N-WFGWX-YVC9B-4J6C9-T83GX',
        'Windows 10 Pro N': 'MH37W-N47XK-V7XM9-C7227-GCQG9',
        'Windows 10 Pro for Workstations': 'NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J',
        'Windows 10 Pro for Workstations N': '9FNHH-K3HBT-3W4TD-6383H-6XYWF',
        'Windows 10 Pro Education': '6TP4R-GNPTD-KYYHQ-7B7DP-J447Y',
        'Windows 10 Pro Education N': 'YVWGF-BXNMC-HTQYQ-CPQ99-66QFC',
        'Windows 10 Education': 'NW6C2-QMPVW-D7KKK-3GKT6-VCFB2',
        'Windows 10 Education N': '2WH4N-8QGBV-H22JP-CT43Q-MDWWJ',
        'Windows 10 Enterprise': 'NPPR9-FWDCX-D2C8J-H872K-2YT43',
        'Windows 10 Enterprise N': 'DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4',
        'Windows 10 Enterprise G': 'YYVX9-NTFWV-6MDM3-9PT4T-4M68B',
        'Windows 10 Enterprise G N': '44RPN-FTY23-9VTTB-MP9BX-T84FV',
        'Windows 10 Enterprise LTSC 2019': 'M7XTQ-FN8P6-TTKYV-9D4CC-J462D',
        'Windows 10 Enterprise N LTSC 2019': '92NFX-8DJQP-P6BBQ-THF9C-7CG2H',
        'Windows 10 Enterprise LTSB 2016': 'DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ',
        'Windows 10 Enterprise N LTSB 2016': 'QFFDN-GRT3P-VKWWX-X7T3R-8B639',
        'Windows 10 Enterprise 2015 LTSB': 'WNMTR-4C88C-JK8YV-HQ7T2-76DF9',
        'Windows 10 Enterprise 2015 LTSB N': '2F77B-TNFGY-69QQF-B8YKP-D69TJ',
        'Windows Server 2012 R2 Server Standard': 'D2N9P-3P6X9-2R39C-7RTCD-MDVJX',
        'Windows Server 2012 R2 Datacenter': 'W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9',
        'Windows Server 2012 R2 Essentials': 'KNC87-3J2TX-XB4WP-VCPJV-M4FWM',
        'Windows Server 2012': 'BN3D2-R7TKB-3YPBD-8DRP2-27GG4',
        'Windows Server 2012 N': '8N2M2-HWPGY-7PGT9-HGDD8-GVGGY',
        'Windows Server 2012 Single Language': '2WN2H-YGCQR-KFX6K-CD6TF-84YXQ',
        'Windows Server 2012 Country Specific': '4K36P-JN4VD-GDC6V-KDT89-DYFKP',
        'Windows Server 2012 Server Standard': 'XC9B7-NBPP2-83J2H-RHMBY-92BT4',
        'Windows Server 2012 MultiPoint Standard': 'HM7DN-YVMH3-46JC3-XYTG7-CYQJJ',
        'Windows Server 2012 MultiPoint Premium': 'XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G',
        'Windows Server 2012 Datacenter': '48HP8-DN98B-MYWDG-T2DCC-8W83P',
        'Windows Server 2008 R2 Web': '6TPJF-RBVHG-WBW2R-86QPH-6RTM4',
        'Windows Server 2008 R2 HPC edition': 'TT8MH-CG224-D3D7Q-498W2-9QCTX',
        'Windows Server 2008 R2 Standard': 'YC6KT-GKW9T-YTKYR-T4X34-R7VHC',
        'Windows Server 2008 R2 Enterprise': '489J6-VHDMP-X63PK-3K798-CPX3Y',
        'Windows Server 2008 R2 Datacenter': '74YFP-3QFB3-KQT8W-PMXWJ-7M648',
        'Windows Server 2008 R2 for Itanium-based Systems': 'GT63C-RJFQ3-4GMB6-BRFB9-CB83V',
        'Windows Web Server 2008': 'WYR28-R7TFJ-3X2YQ-YCY4H-M249D',
        'Windows Server 2008 Standard': 'TM24T-X9RMF-VWXK6-X8JC9-BFGM2',
        'Windows Server 2008 Standard without Hyper-V': 'W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ',
        'Windows Server 2008 Enterprise': 'YQGMW-MPWTJ-34KDK-48M3W-X4Q6V',
        'Windows Server 2008 Enterprise without Hyper-V': '39BXF-X8Q23-P2WWT-38T2F-G3FPG',
        'Windows Server 2008 HPC': 'RCTX3-KWVHP-BR6TB-RB6DM-6X7HP',
        'Windows Server 2008 Datacenter': '7M67G-PC374-GR742-YH8V4-TCBY3',
        'Windows Server 2008 Datacenter without Hyper-V': '22XQ2-VRXRG-P8D42-K34TD-G3QQC',
        'Windows Server 2008 for Itanium-Based Systems': '4DWFP-JF3DJ-B7DTH-78FJB-PDRHK',
        'Windows 8.1 Pro': 'GCRJD-8NW9H-F2CDX-CCM8D-9D6T9',
        'Windows 8.1 Pro N': 'HMCNV-VVBFX-7HMBH-CTY9B-B4FXY',
        'Windows 8.1 Enterprise': 'MHF9N-XY6XB-WVXMC-BTDCT-MKKG7',
        'Windows 8.1 Enterprise N': 'TT4HM-HN7YT-62K67-RGRQJ-JFFXW',
        'Windows 8 Pro': 'NG4HW-VH26C-733KW-K6F98-J8CK4',
        'Windows 8 Pro N': 'XCVCF-2NXM9-723PB-MHCB7-2RYQQ',
        'Windows 8 Enterprise': '32JNW-9KQ84-P47T8-D8GGY-CWCK7',
        'Windows 8 Enterprise N': 'JMNMF-RHW7P-DMY6X-RF3DR-X2BQT',
        'Windows 7 Professional': 'FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4',
        'Windows 7 Professional N': 'MRPKT-YTG23-K7D7T-X2JMM-QY7MG',
        'Windows 7 Professional E': 'W82YF-2Q76Y-63HXB-FGJG9-GF7QX',
        'Windows 7 Enterprise': '33PXH-7Y6KF-2VJC9-XBBR8-HVTHH',
        'Windows 7 Enterprise N': 'YDRBP-3D83W-TY26F-D46B2-XCKRJ',
        'Windows 7 Enterprise E': 'C29WB-22CC8-VJ326-GHFJW-H9DH4'
    }
    return keyDict[edition]


if __name__ == '__main__':
    kmsServerList = ['kms.03k.org', 'kms.chinancce.com', 'kms.lotro.cc', 'cy2617.jios.org', 'kms.shuax.com',
                     'kms.luody.info', 'kms.cangshui.net', 'kms.library.hk', 'xykz.f3322.org', 'kms.v0v.bid',
                     'kms.moeclub.org', 'amrice.top', 'kms.lolico.moe', 'kms8.MSGuides.com', 'kms9.MSGuides.com']
    port = 1688
    for ip in kmsServerList:
        status = serverTest(ip, port)
        edition = getSystemEdition()
        ipk = getKmsKey(edition)
        if status:
            print("----------正在激活----------")
            print("----------连接激活服务器----------")
            os.system('slmgr /skms ' + ip)
            print("连接成功")
            print("----------安装密钥----------")
            os.system('slmgr /ipk ' + ipk)
            print("安装完成")
            print("----------验证激活中----------")
            os.system('slmgr /ato')
            print("激活完成!")
            break
        else:
            print(ip + ':' + str(port), "False")
    input('回车关闭此页面!')