'-'와 '.' 만으로 이루어져 있는 것을 보니 모스부호가 바로 생각납니다.


모스부호에는 '/'가 없으니 아마 띄어쓰기를 나타난 것이라고 보여집니다.



python에는 사전기능이 있습니다. 


간단하게 필요한 영문자와 특수문자를 사전으로 정의해놓고 해당하는 값으로 바꿔주면 알맞은 문자열이 나옵니다.


(모스부호는 검색하면 나옵니다)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
payload = '.... .. --..-- / - .... .- -. -.- ... / - --- / ... .- -- ..- . .-.. / '
payload += '-- --- .-. ... . / - .... . / - .-. .- -. ... -- .. ... ... .. --- -. / '
payload += '--- ..-. / - . .-.. . --. .-. .- .--. .... .. -.-. / .. -. ..-. --- .-. -- .- - .. --- -. / '
payload += '.-- .- ... / ... - .- -. -.. .- .-. -.. .. --.. . -.. .-.-.- / .... . / ..- ... . -.. / '
payload += '-.. --- - ... / .- -. -.. / -.. .- ... .... . ... / - --- / -.-. .-. . .- - . / .- / '
payload += '... - .- -. -.. .- .-. -.. / .-- .- -.-- / --- ..-. / -.-. --- -- -- ..- -. .. -.-. .- - .. --- -. --..-- / '
payload += '.... . / .... .- ... / .... . .-.. .--. . -.. / -.-- --- ..- / - --- -.. .- -.-- / - --- / --. . - / - .... . / '
payload += '.--. .- ... ... ---... / - .... .- -. -.- -.-- --- ..- ... .. .-.'

payload = payload.split( )
 
 
dic = { '.-'   : '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',
        '.-.-.-' : '.',
        '--..--' : ',',
        '-.--.'  : '(',
        '-.--.-' : ')',
        '-..-.'  : '?',
        '---...' : ':'}
 
result=''
for index in range(len(payload)):
    if payload[index] != '/':
        result += dic[payload[index]]
    else:
        result += ' '
 
print(result)
 
cs



다음과 같이 문자열로 바뀌어서 나오게 됩니다.


처음에 대문자로 입력해서 안되서 소문자로 입력하니 인증이 되었습니다^^



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level5  (0) 2018.08.26
[HackThis] Crypt level4  (0) 2018.08.26
[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24

1번 문제와는 다르게 그래도 진짜 암호문제 같습니다.


어떻게 암호가 된건지 잘 봐봅니다.


암호학을 배우셨다면 전치암호라고 들어보셨을 겁니다.


정해진 값만큼 다음 문자로 바꿔서 표기하는 것인데


예를들어 hack이라는 문자를 3번 옆으로 옮긴다고 하면


abcdefghijklnmopqrstuvwxyz 를 보면서


'h'를 옆으로 3번 옮긴 값인 'k'

'a'를 옆으로 3번 옮긴 값인 'd'

'c'를 옆으로 3번 옮긴 값인 'f'

'k'를 옆으로 3번 옮긴 값인 'm'


이렇게 되어 'hack'이라는 문자는 'kdfm'라는 문자로 변경되어 쉽게 알아보지 못하게 됩니다.



이 문제도 동일한 방법으로 되어있습니다.


먼저 접근을 어떻게 하냐면 확실히 알 수 있는 문자가 있다면 그 문자를 비교하면 됩니다.


1번 문제에서 Password를 표기할 때 'pass'라고 표기했습니다.


위에 'teww'를 보시면 뒤에 'ww'가 연속된 것부터 왠지 원래 문자가 'pass' 일것 같다는 생각이 듭니다.


't'가 원래는 'p' 였을테니 abcdefghijklnmopqrstuvwxyz 보시는거 같이 p를 오른쪽으로 4번 이동한 값입니다.


그럼 하나하나 다 하기는 힘드니 Python 코드로 한번에 변경해 보겠습니다.


ascii 값으로 +4 되어있던 것이니 -4를 시켜주면 원래 문자로 돌아옵니다.


(ascii code 기반으로 짰더니.. 대문자랑 특수문자가 걸리긴하는데 귀찮아서 답만 체크했습니다.)




'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level4  (0) 2018.08.26
[HackThis] Crypt level3  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24

암호 문제입니다.


다음 문장에서 Password를 찾으라고 합니다.


뒤집어져 있긴하지만 맨앞에 눈에 띄게 적혀있으니... 넘어갑니다..

(1번이라 너무 쉽네요 ㅜ.. 놀림받은 기분..)



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level3  (0) 2018.08.25
[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24

+ Recent posts