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()

 

查看原文