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注册界面,注册成功!
代码语言:javascript复制 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()