Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from struct import *
- import sys
- key1 = "86DE9AF8DFF585E9DD85EF".decode('hex')
- def encode(data,n):
- global key1
- zero_to_100 = []
- i =0
- while i<0x100:
- zero_to_100.append(i)
- i+=1
- temp_key1 = list(key1)
- temp_key = [chr(ord(i) ^ n) for i in key1]
- calc_key1 = "".join(temp_key)
- i = 0
- v4 = 0
- v8 = 0
- v3 = 0
- while i<0x100:
- v3 += (zero_to_100[i] + ord(calc_key1[i % 0xB]))
- v3 = v3 & 0xFF
- v8 = zero_to_100[i]
- zero_to_100[i] = zero_to_100[v3]
- zero_to_100[v3] = v8
- i+=1
- i=0
- v9 = 0
- v10 = 0
- answer = ""
- while i < 0x20:
- v12 = v10+1
- v17 = v12
- v9 += zero_to_100[v12]
- v9 = v9 & 0xFF
- v13 = zero_to_100[v12]
- v15 = zero_to_100[v9]
- zero_to_100[v12] = v15
- zero_to_100[v9] = v13
- k = zero_to_100[(v13 + v15) & 0xFF]
- answer += chr(ord(data[i]) ^ k)
- v10 = v17
- i+=1
- return answer
- def check(data):
- data = list(data)
- for i in data:
- if ord(i) < 0x20 or ord(i) >= 0x80:
- return False
- return True
- compare = ""
- compare += pack('<L', 0x03C7C8CA)
- compare += pack('<L', 0x1F2810FC)
- compare += pack('<L', 0x948C7F7A)
- compare += pack('<L', 0x2469F92E)
- compare += pack('<L', 0xC1277D9F)
- compare += pack('<L', 0x7F4509C4)
- compare += pack('<L', 0x9745EE75)
- compare += pack('<L', 0x1F79AF8D)
- for n in range(0,0x100):
- xored = encode("1"*32,n)
- key = ""
- for i in xored:
- key += chr(ord(i) ^ ord('1'))
- i=0
- answer = ""
- while i< 32:
- answer += chr(ord(key[i]) ^ ord(compare[i]))
- i+=1
- if check(answer):
- print answer
- sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement