wing pro 所有版本序列号脚本
1、支持wing pro 5.x.x 6.x.x 7.x.x 8.x.x 多个版本,而且是图形界面,绝对良心。
2、用wing pro 运行上述脚本,弹出tk版本的图形界面。
3、复制tk界面中license id 到wing pro中,点开enter lincense key菜单,输入Lincense id。
4、复制wing pro 注册界面中request id ,粘贴到tk界面中对应字段,点生成注册码。
5、拷贝注册码到wing pro注册界面,注册成功!
1 import os 2 import string 3 import random 4 import hashlib 5 import platform 6 py_version = platform.python_version() 7 if py_version[0] != '3': 8 print("Can't run under python2 env ! please run tool under python 3.2 or later version !") 9 os.system("pause") 10 os._exit(0) 11 # GUI Import 12 from tkinter import * 13 from tkinter import ttk 14 from tkinter import messagebox 15 16 BASE16 = '0123456789ABCDEF' 17 BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY' 18 19 20 def RandomString(size=20, chars=string.ascii_uppercase + string.digits): 21 return ''.join((random.choice(chars) for _ in range(size))) 22 23 24 def BaseConvert(number, fromdigits, todigits, ignore_negative=True): 25 if not ignore_negative and str(number)[0] == '-': 26 number = str(number)[1:] 27 neg = 1 28 else: 29 neg = 0 30 x = 0 31 for digit in str(number): 32 x = x * len(fromdigits) + fromdigits.index(digit) 33 34 res = '' 35 while x > 0: 36 digit = x % len(todigits) 37 res = todigits[digit] + res 38 x //= len(todigits) 39 40 if neg: 41 res = '-' + res 42 return res 43 44 45 def AddHyphens(code): 46 return code[:5] + '-' + code[5:10] + '-' + code[10:15] + '-' + code[15:] 47 48 49 def SHAToBase30(digest): 50 tdigest = ''.join([c for i, c in enumerate(digest) if i // 2 * 2 == i]) 51 result = BaseConvert(tdigest, BASE16, BASE30) 52 while len(result) < 17: 53 result = '1' + result 54 return result 55 56 57 def loop(ecx, lichash): 58 part = 0 59 for c in lichash: 60 part = ecx * part + ord(c) & 1048575 61 return part 62 63 g_version_list = ('8.0.0', '7.X.X', '6.X.X', '5.X.X') 64 g_version_magics = { 65 '5.X.X': [7, 123, 23, 87], 66 '6.X.X': [23, 161, 47, 9], 67 '7.X.X': [221, 13, 93, 27], 68 '8.0.0': [179, 95, 45, 245], 69 } 70 71 72 def CalcActivationCode(args): 73 if not isinstance(args, Application): 74 return 75 # # Generate License ID 76 # licenseID = AddHyphens('CN' + RandomString(18, '123456789ABCDEFGHJKLMNPQRTVWXY')) 77 licenseID = args.LicID.get() 78 print ('License id: ' + licenseID) 79 80 #requestCode = input('Enter request code:') 81 requestCode = args.ReqCode.get() 82 if requestCode.strip() == '': 83 messagebox.showerror("Hints", "Please input the Request Code !") 84 return 85 # # SHA1 86 shaHasher = hashlib.sha1() 87 shaHasher.update(requestCode.encode('utf-8')) 88 shaHasher.update(licenseID.encode('utf-8')) 89 hashResult = shaHasher.hexdigest().upper() 90 lichash = AddHyphens(requestCode[:3] + SHAToBase30(hashResult)) 91 92 versionMagic = None 93 # Supported crack WingIDE Pro version list : 5.x.x, 6.x.x, 7.x.x 94 wingIDEProVerStr = args.VersionInfo.get() 95 print ('Cracking WingIDE Version : ' + wingIDEProVerStr) 96 if wingIDEProVerStr in g_version_magics.keys(): 97 versionMagic = g_version_magics[wingIDEProVerStr] 98 if versionMagic: 99 activationCode = format(loop(versionMagic[0], lichash), '05x') + \ 100 format(loop(versionMagic[1], lichash), '05x') + \ 101 format(loop(versionMagic[2], lichash), '05x') + \ 102 format(loop(versionMagic[3], lichash), '05x') 103 pass 104 else: 105 print('Get wrong WingIDE version, exit...') 106 os._exit(0) 107 activationCode = BaseConvert(activationCode.upper(), BASE16, BASE30) 108 while len(activationCode) < 17: 109 activationCode = '1' + activationCode 110 111 activationCode = AddHyphens('AXX' + activationCode) 112 print ('Activation code: ' + activationCode) 113 args.ActCode.set(activationCode) 114 pass 115 116 117 class Application(Frame): 118 def __init__(self, master=None): 119 super().__init__(master) 120 self.master = master 121 self.master.title('WingIDE Pro Keygen(5, 6, 7)') 122 self.master.geometry('350x180') 123 self.create_widgets() 124 pass 125 126 def create_widgets(self): 127 current_row = 0 128 current_col = 0 129 130 # Version Info 131 self.l0 = Label(self.master, text='WingIDE Pro :') 132 self.l0.grid(padx=5, pady=5, row=current_row, column=current_col) 133 self.VersionInfo = StringVar() 134 self.versionComb = ttk.Combobox(self.master, textvariable=self.VersionInfo, state='readonly') 135 self.versionComb['values'] = g_version_list 136 self.versionComb.grid(padx=5, pady=1, row=current_row, column=current_col + 1) 137 self.versionComb.current(0) 138 current_row += 1 139 140 # License ID info 141 self.l1 = Label(self.master, text='LicenseID:') 142 self.l1.grid(padx=5, pady=5, row=current_row, column=current_col) 143 self.LicID = StringVar() 144 self.LicEntry = Entry(self.master, textvariable=self.LicID, width=30, state='readonly') 145 self.LicEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1) 146 self.LicID.set(AddHyphens('CN' + RandomString(18, '123456789ABCDEFGHJKLMNPQRTVWXY'))) 147 current_row += 1 148 149 # Request code info 150 self.l2 = Label(self.master, text='RequestCode:') 151 self.l2.grid(padx=5, pady=5, row=current_row, column=current_col) 152 self.ReqCode = StringVar() 153 self.ReqcodeEntry = Entry(self.master, textvariable=self.ReqCode, width=30) 154 self.ReqcodeEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1) 155 current_row += 1 156 157 # Activation code info 158 self.l3 = Label(self.master, text=b'ActivationCode:') 159 self.l3.grid(padx=5, pady=5, row=current_row, column=current_col) 160 self.ActCode = StringVar() 161 self.ReqcodeEntry = Entry(self.master, textvariable=self.ActCode, width=30, state='readonly') 162 self.ReqcodeEntry.grid(padx=5, pady=5, row=current_row, column=current_col + 1) 163 current_row += 1 164 165 self.btn_Calc = Button(self.master) 166 self.btn_Calc['text'] = 'Generate' 167 self.btn_Calc['command'] = lambda: CalcActivationCode(self) 168 self.btn_Calc.grid(padx=5, pady=5, row=current_row, column=current_col + 1) 169 pass 170 171 172 if __name__ == '__main__': 173 root = Tk() 174 # 175 app = Application(master=root) 176 app.mainloop()