간단한 키젠 문제.
총 4개의 키젠 생성 구문이 있음.
근데 첫번째 키 생성 루틴에 전체 Name값이 다 사용되고 일치하는 값을 구했을때 중복되는 값들이 없어서 나머지 키 생성 루틴을 분석할 필요가 없었음. 맨 앞의 5D88을 만드는 키 생성루틴을 그대로짜서 브루트포싱으로 구했음.
serial = "5D88"
strings = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
def carry(result):
if len(result) > 10:
result = result[0:2] + result[len(result) - 9:len(result) - 1]
return result
for i in range(0,len(strings)):
for j in range(0,len(strings)):
name = strings[i]+strings[j]
result = "0x00"
for k in range(0,2):
result = hex((int(result,16)+int("0x"+name[k].encode('hex'),16))*0x772)
result = carry(result)
tmp = result
result = hex(int(result, 16) * int(result,16))
result = carry(result)
result = hex(int(result, 16) + int(tmp, 16))
result = carry(result)
result = hex(int(result, 16) *0x474)
result = carry(result)
result = hex(int(result, 16) * 0x2)
result = carry(result)
if result[2:6].lower() == serial.lower():
print "[*]Name = " + name
break
'Wargame > CodeEngn' 카테고리의 다른 글
CodeEngn advance10번 (0) | 2018.03.02 |
---|---|
CodeEngn advance 9번 (0) | 2018.02.28 |
CodeEngn advance 7번 (0) | 2018.02.28 |
CodeEngn advance 6번 (0) | 2018.02.08 |
code engn advance 5번 (0) | 2018.02.08 |