간단한 키젠 문제.

 

 

 

총 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
블로그 이미지

JeonYoungSin

메모 기록용 공간

,