飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1026|回复: 10

[Python] WingIDE Pro KeyGen 支持5.x-10.x

[复制链接]
  • TA的每日心情
    开心
    2019-3-25 15:21
  • 签到天数: 487 天

    [LV.9]以坛为家II

    发表于 2024-2-4 10:19:36 | 显示全部楼层 |阅读模式
    部分代码来源于网络,我只是稍加整理,增加了一些元素,支持了最新版,感谢坛友提供了新版本的 魔数key,虽然还不知道是怎么来的,有知道的朋友可以回帖说一下 感谢
    此源码在Python3.8.6编译测试通过,特此论坛备份一份,部分模块需自行安装,源码见下方,提前祝大家新年快乐!感谢大家一致的陪伴

    QQ图片20240204101712.png

    Python源码:

    [Python] 纯文本查看 复制代码
    import os
    import string
    import random
    import hashlib
    import platform
    
    py_version = platform.python_version()
    if py_version[0] != '3':
        print("Can't run under python2 env ! please run tool under python 3.2 or later version !")
        os.system("pause")
        os._exit(0)
    # GUI Import
    
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    
    BASE16 = '0123456789ABCDEF'
    BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY'
    
    
    def RandomString(size=20, chars=string.ascii_uppercase + string.digits):
        return ''.join((random.choice(chars) for _ in range(size)))
    
    
    def BaseConvert(number, fromdigits, todigits, ignore_negative=True):
        if not ignore_negative and str(number)[0] == '-':
            number = str(number)[1:]
            neg = 1
        else:
            neg = 0
        x = 0
        for digit in str(number):
            x = x * len(fromdigits) + fromdigits.index(digit)
    
        res = ''
        while x > 0:
            digit = x % len(todigits)
            res = todigits[digit] + res
            x //= len(todigits)
    
        if neg:
            res = '-' + res
        return res
    
    
    def AddHyphens(code):
        return code[:5] + '-' + code[5:10] + '-' + code[10:15] + '-' + code[15:]
    
    
    def SHAToBase30(digest):
        tdigest = ''.join([c for i, c in enumerate(digest) if i // 2 * 2 == i])
        result = BaseConvert(tdigest, BASE16, BASE30)
        while len(result) < 17:
            result = '1' + result
        return result
    
    
    def loop(ecx, lichash):
        part = 0
        for c in lichash:
            part = ecx * part + ord(c) & 1048575
        return part
    
    g_version_list = ('10.x.x','9.x.x','8.x.x', '7.x.x', '6.x.x', '5.x.x')
    g_version_magics = {
        '5.x.x': [7, 123, 23, 87],
        '6.x.x': [23, 161, 47, 9],
        '7.x.x': [221, 13, 93, 27],
        '8.x.x': [179, 95, 45, 245],
        '9.x.x': [123, 17, 42, 7],
        '10.x.x': [102, 99, 107, 117]
    }
    
    
    def CalcActivationCode(args):
        if not isinstance(args, Application):
            return
        # # Generate License ID
        # licenseID = AddHyphens('CN' + RandomString(18, '123456789ABCDEFGHJKLMNPQRTVWXY'))
        licenseID = args.LicID.get()
        print ('License id: ' + licenseID)
    
        #requestCode = input('Enter request code:')
        requestCode = args.ReqCode.get()
        if requestCode.strip() == '':
            messagebox.showerror("Hints", "Please input the Request Code !")
            return
        # # SHA1
        shaHasher = hashlib.sha1()
        shaHasher.update(requestCode.encode('utf-8'))
        shaHasher.update(licenseID.encode('utf-8'))
        hashResult = shaHasher.hexdigest().upper()
        lichash = AddHyphens(requestCode[:3] + SHAToBase30(hashResult))
    
        versionMagic = None
        # Supported crack WingIDE Pro version list : 5.x.x, 6.x.x, 7.x.x
        wingIDEProVerStr = args.VersionInfo.get()
        print ('Cracking WingIDE Version : ' + wingIDEProVerStr)
        if wingIDEProVerStr in g_version_magics.keys():
            versionMagic = g_version_magics[wingIDEProVerStr]
        if versionMagic:
            activationCode = format(loop(versionMagic[0], lichash), '05x') + \
                format(loop(versionMagic[1], lichash), '05x') + \
                format(loop(versionMagic[2], lichash), '05x') + \
                format(loop(versionMagic[3], lichash), '05x')
            #pass
        else:
            print('Get wrong WingIDE version, exit...')
            os._exit(0)
        activationCode = BaseConvert(activationCode.upper(), BASE16, BASE30)
        while len(activationCode) < 17:
            activationCode = '1' + activationCode
    
        activationCode = AddHyphens('AXX' + activationCode)
        print ('Activation code: ' + activationCode)
        args.ActCode.set(activationCode)
        #pass
    
    
    class Application(Frame):
        def __init__(self, master=None):
            super().__init__(master)
            self.master = master
            self.master.title('WingIDE Pro KeyGen 5.x-10.x')
            self.master.geometry('350x180')
            self.create_widgets()
            self.master.resizable(width=False, height=False)
            #pass
    
        def create_widgets(self):
            current_row = 0
            current_col = 0
    
            # Version Info
            self.l0 = Label(self.master, text='WingIDE Pro :')
            self.l0.grid(padx=5, pady=5, row=current_row, column=current_col)
            self.VersionInfo = StringVar()
            self.versionComb = ttk.Combobox(self.master, textvariable=self.VersionInfo, state='readonly')
            self.versionComb['values'] = g_version_list
            self.versionComb.grid(padx=5, pady=1, row=current_row, column=current_col + 1)
            self.versionComb.current(0)
            current_row += 1
    
            # License ID info
            self.l1 = Label(self.master, text='LicenseID:')
            self.l1.grid(padx=5, pady=5, row=current_row, column=current_col)
            self.LicID = StringVar()
            self.LicEntry = Entry(self.master, textvariable=self.LicID, width=30)
            self.LicEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1)
            self.LicID.set(AddHyphens('CN' + RandomString(18, '123456789ABCDEFGHJKLMNPQRTVWXY')))
            current_row += 1
    
            # Request code info
            self.l2 = Label(self.master, text='RequestCode:')
            self.l2.grid(padx=5, pady=5, row=current_row, column=current_col)
            self.ReqCode = StringVar()
            self.ReqcodeEntry = Entry(self.master, textvariable=self.ReqCode, width=30)
            self.ReqcodeEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1)
            current_row += 1
    
            # Activation code info
            self.l3 = Label(self.master, text=b'ActivationCode:')
            self.l3.grid(padx=5, pady=5, row=current_row, column=current_col)
            self.ActCode = StringVar()
            self.ReqcodeEntry = Entry(self.master, textvariable=self.ActCode, width=30, state='readonly')
            self.ReqcodeEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1)
            current_row += 1
    
            self.btn_about = Button(self.master, text='About', width=10, bg="#0266d1", command=lambda: messagebox.showinfo("Dialog", "Wing IDE Pro KeyGen 2.0\n     Code By: Wgz001\n           2024.02.02"))
            self.btn_about.place(x=10, y=135)
    
            self.btn_Reroll = Button(self.master, text='Reroll ID', width=10, bg="#0266d1", command=lambda: self.LicID.set(AddHyphens('CN' + RandomString(18, '123456789ABCDEFGHJKLMNPQRTVWXY'))))
            self.btn_Reroll.place(x=95, y=135)
    
            self.btn_gen = Button(self.master, text='Generate', width=10, bg="#38a851", command=lambda: CalcActivationCode(self))
            self.btn_gen.place(x=180, y=135)
    
            #self.btn_exit = Button(self.master, text='Exit', width=10, bg="#d73343", command=lambda: self.master.destroy())
            self.btn_exit = Button(self.master, text='Exit', width=10, borderwidth=1, bg="#d73343", command=lambda: self.master.destroy())
            self.btn_exit.place(x=265, y=135)
    
    
    if __name__ == '__main__':
        root = Tk()
        #
        app = Application(master=root)
        app.mainloop()

    来自群组: 一起玩游戏

    评分

    参与人数 5威望 +7 飘云币 +7 收起 理由
    gyjijian525 + 1 + 1 PYG有你更精彩!
    echo + 2 + 2 感谢发布原创作品,PYG有你更精彩!
    不破不立 + 2 + 2 PYG有你更精彩!
    慕若曦 + 1 + 1 原创精品 感谢分享!
    飞天 + 1 + 1 赞一个,这个帖子很给力!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情

    昨天 14:13
  • 签到天数: 118 天

    [LV.6]常住居民II

    发表于 2024-2-4 11:25:11 | 显示全部楼层
    #在这里快速回复#

    评分

    参与人数 1飘云币 -10 收起 理由
    Rooking -10 珍惜ID 远离灌水!

    查看全部评分

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    6 小时前
  • 签到天数: 2109 天

    [LV.Master]伴坛终老

    发表于 2024-2-4 11:37:26 | 显示全部楼层
    版主的软件都很高端,啥时候放出傻丫头?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:10
  • 签到天数: 959 天

    [LV.10]以坛为家III

    发表于 2024-2-4 15:00:40 | 显示全部楼层
    啥也不说了,楼主就是给力!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2024-2-4 20:23:42 | 显示全部楼层
    强大的代码和功能
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 676 天

    [LV.9]以坛为家II

    发表于 2024-2-4 20:24:54 | 显示全部楼层
    这个已经有在线版的注册机了,感谢楼主分享源码!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 09:26
  • 签到天数: 603 天

    [LV.9]以坛为家II

    发表于 2024-2-5 08:44:04 | 显示全部楼层
    感谢楼主分享源码!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-4-19 10:08
  • 签到天数: 384 天

    [LV.9]以坛为家II

    发表于 2024-2-5 11:25:31 | 显示全部楼层
    感谢表哥分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-19 20:39
  • 签到天数: 1238 天

    [LV.10]以坛为家III

    发表于 2024-2-5 12:00:43 | 显示全部楼层
    感谢分享源码!收藏了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表