Brute Force Attack
다음은 무차별 대입공격(Brute Force Attack)에 대한 코드로 126개의 알파벳을 생성하는 코드이다. 예를 들어 카이사르 암호 도구와 같은 경우는 문자열들을 하나씩 밀어서 분명 문장내에서 특정 내용을 확인할 수 있으며, 참고 하고 있는 화이트 해커를 위힌 암호화 해킹에서의 문자열을 입력하여 코드를 실행하면 다음과 같은 결과를 확인할 수 있다.
def makeDisk(k):
dec_disk={}
for i in range(26):
alp = (i+k)%26 + 65
dec_disk[chr(alp)] = chr(i+65)
return dec_disk
def caesar(msg, key):
ret = ''
msg = msg.upper()
disk = makeDisk(key)
for c in msg:
if c in disk:
ret += disk[c]
else:
ret += c
return ret
def attack(msg):
for key in range(1, 26):
decmsg = caesar(msg, key)
print('SHIFT[%d]: %s' %(key, decmsg))
if __name__ == '__main__':
msg = 'UGAMKZMBSMGQAVCUJMZBPZMMNQDMWVMBPZMM'
attack(msg)
다음 코드를 실행하면 아래와 같은 결과 값을 얻을 수 있으며, 해당 내용 중 해독된 의미를 확인할 수 있다.
SHIFT[1]: TFZLJYLARLFPZUBTILYAOYLLMPCLVULAOYLL
SHIFT[2]: SEYKIXKZQKEOYTASHKXZNXKKLOBKUTKZNXKK
...
SHIFT[8]: MYSECRETKEYISNUMBERTHREEFIVEONETHREE
...
SHIFT[24]: WICOMBODUOISCXEWLOBDRBOOPSFOYXODRBOO
SHIFT[25]: VHBNLANCTNHRBWDVKNACQANNORENXWNCQANN
[Finished in 0.0s]
이를 통해서 확인할 수 있는 것은 8만큼 이동한 가이사르 암호문인 것을 확인할 수 있다.
이럴 때 사용하면 진짜 유용하겠군! 흠..암호란..
빈도수 분석(Frequency Analysis)
문자 | 확률 | 문자 | 확률 |
---|---|---|---|
A | 0.082 | N | 0.067 |
B | 0.015 | O | 0.075 |
C | 0.028 | P | 0.019 |
D | 0.043 | Q | 0.001 |
E | 0.127 | R | 0.060 |
F | 0.022 | S | 0.063 |
G | 0.020 | T | 0.091 |
H | 0.061 | U | 0.028 |
I | 0.070 | V | 0.010 |
J | 0.002 | W | 0.023 |
K | 0.008 | X | 0.001 |
L | 0.040 | Y | 0.020 |
M | 0.024 | Z | 0.001 |
유독 확률이 높은 문자열(0.05이상): A, E, H, I, N, O, R, S, T
빈도수 분석은 우선, 암호화된 문자열의 빈도수를 확인한 후 가장 많이 사용된 문자열을 E로 다음을 T로 생각하여 복원시킨다. TE하면 생각나는 영어면! THE가 있을 것이다. 그럼 H에 해당 하는 값을 확인할 수 있고 하나하나 유추가 가능하다.
하지만 브포나 빈도수 분석은 불규칙적인 암호문에서는…?ㅠㅠ 여튼 그래도 이런 방법이 있구나 하고 넘어가자! 이단 여기서는 위에 빈도수 표가 있다는 것을 확인할 수 있었고 추후에 사용할 일이 있지 않을까 싶다!
해쉬 값을 크랙하기 좋은 사이트 : crackstation
대상 사이트를 들어가면 15기가 혹은600메가에 달하는 해쉬값 데이터를 가지고 있는 파일을 공유하고 있다.
댓글 없음:
댓글 쓰기