-
-
Save jyotidwi/ec565f40bf0f5f42577d03efd61d7b4c to your computer and use it in GitHub Desktop.
WingIDE Pro KeyGen 支持5.x-10.x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 来源:https://www.chinapyg.com/thread-150972-1-1.html | |
| 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() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment