키젠문제인데 올리로 알고리즘 분석할랫더니 생각보다 복잡해서 ida로 봤는데도 생각보다 많이 헤맸다.
핵심 함수. (check_serial함수)
index값 구해오는 사용자 정의함수 구조(stringFindSecond함수)
list = "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
strings = "AJXGRFV6BKOW3Y9TM4S2ZU I70H5Q81PDECLNAJXGRFV6BKOW3Y9TM4S2ZU I70H5Q81PDECLNAJXGRFV6BKOW3Y9TM4S2ZU I70H5Q81PDECLN"
serial = "WWWCCCJJJRRR"
result = []
for j in range(0,12,3):
first_index = strings.find(serial[j]) + 1
result1 = strings[first_index:].find(serial[j]) + first_index
for i in range(0,len(list)):
first_index = strings.find(list[i]) + 1
result2 = strings[first_index:].find(list[i]) + first_index
if abs(result2 - result1) <=5:
print str((j+1)/3+1)+"th name = " + list[i]
ida로 확인한 뒤 요런식으로 브루트 포싱해주는 코드짜서 돌리면 name의 각자리수별로 가능한 문자들이 나오는데 정답중 0~9,a~z,A~Z 순서상 가장 먼저 오는 문자열 구하래서 맨위의 문자들 조합해주면 된다.
'Wargame > CodeEngn' 카테고리의 다른 글
CodeEngn advance 9번 (0) | 2018.02.28 |
---|---|
CodeEngn advance 8번 (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 |