#10_Find_Key.py # -*- coding: utf-8 -*- #Made by Kali-KM kali-km.tistory.com #CodeEngn Advance 10 Keygen def main(): print '[+] Kali-KM : CodeEngn Advance 10 ' print '[+] kali-km.tistory.com : 2015.07.15' print '' #Key 값을 문자열의 형태로 담고 이를 split()를 통하여 리스트로 반환 array='A.J.X.G.R.F.V.6.B.K.O.W.3.Y.9.T.M.4.S.2.Z.U. .I.7.0.H.5.Q.8.1.P.D.E.C.L.N.A.J.X.G.R.F.V.6.B.K.O.W.3.Y.9.T.M.4.S.2.Z.U. .I.7.0.H.5.Q.8.1.P.D.E.C.L.N' array_split=array.split('.') #여기서 코드 작성의 편의를 위하여 a-z를 A-Z로 대체해서 하였다. 출력되는 값이 만약 X라면 이는 x가 키 값을 포함한다고 볼 수 있다. value='0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z' value_split=value.split(',') # 문제가 가장 빠른 순서에 있는 단어를 구하는 것이기에 flag를 통해서 구해진 단어의 경우 flag를 True로 바꿈으로 더이상 찾지 않도록함 flag1 =False flag2 =False flag3 =False flag4 =False # Find the key for i in value_split: for j in range(6,44): #array에 있어서 특정 한 값 x 에 대하여 x-5~x~x+5 까지를 포함해야하기떄문에 범위는 6부터 시작 #이 밑에 if문은 모두 동일한 형식으로 진행되기에 첫번쨰 if문에만 주석으로 설명 if i == array_split[j]: #해당 value와 일치하는 array가 있을 경우 if 'W' in (array_split[j-5],array_split[j-4],array_split[j-3],array_split[j-2],array_split[j-1],array_split[j],array_split[j+1],array_split[j+2],array_split[j+3],array_split[j+4],array_split[j+5]): #해당 array의 +-5범위에 key가 있는 지를 확인 if flag1==True: #만약 flag가 True일 경우 이미 이전에 key를 찾은 것이기에 pass pass else: print 'W : ' + str(i) #만약 flag가 False일 경우 아직 key를 찾지 못하였기에 해당 value를 출력 flag1=True #그 후 flag를 True로 변경 if i == array_split[j]: if 'C' in (array_split[j-5],array_split[j-4],array_split[j-3],array_split[j-2],array_split[j-1],array_split[j],array_split[j+1],array_split[j+2],array_split[j+3],array_split[j+4],array_split[j+5]): if flag2==True: pass else: print 'C : ' + str(i) flag2=True if i == array_split[j]: if 'J' in (array_split[j-5],array_split[j-4],array_split[j-3],array_split[j-2],array_split[j-1],array_split[j],array_split[j+1],array_split[j+2],array_split[j+3],array_split[j+4],array_split[j+5]): if flag3==True: pass else: print 'J : ' + str(i) flag3=True if i == array_split[j]: if 'R' in (array_split[j-5],array_split[j-4],array_split[j-3],array_split[j-2],array_split[j-1],array_split[j],array_split[j+1],array_split[j+2],array_split[j+3],array_split[j+4],array_split[j+5]): if flag4==True: pass else: print 'R : ' + str(i) flag4=True #만약 WCJR이 아닌 다른 값을 찾고 싶을 경우 if 문에 있는 해당 문자를 수정하면 다른 경우에도 가장 빠른 순서값을 찾을 수가 있다. if __name__ == '__main__': main()