Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

TH3 6R3@T H@CK

[Multimedia] 타이틀 참조 본문

CTF

[Multimedia] 타이틀 참조

vvh0am1 2022. 11. 20. 12:28

[문제]

 

 


[풀이]

문제 파일을 다운받아 확인해보면 프레임 마다 QRcode가 계속 달라진다.

 

Animated GIF Frame Extractor 툴을 이용하여 프레임 개수를 확인해보니

 

총 88개의 프레임이 추출되는 것을 확인 할 수 있다.

 

해당 QRcode 값을 일일이 확인하기에는 프레임 개수가 너무 많아,

88개 프레임의 값을 추출하는 python 코드를 직접 작성했다.

(※ https://blog.naver.com/nkj2001/222748501684 참고하여 코드 응용함.)

 

중복을 제외하고 나열해보면 결과는 다음과 같다.

two parts all lower add 9447 { to start and { to the end first looks like '7do' cut off 450ms seconds like https://www.youtube.com/watch?v=5xxTkB5bGy4 like faucet script

 
youtube URL이 포함되어 있어 영상을 확인해보면 탭댄스를 추는 한 남성을 볼 수 있다.

무엇을 의미하는지 모르겠어서 일단 넘겼다.

 

우선 여기서 Hint를 다시 확인해보면
 
Hint 1: Flag는 두 부분의 조합입니다.
two parts all lower add 9447{to start ~ 이것과 관련 있는 것 같다.
 
Hint 2: 이 문제의 경우, QR중 하나가 잘못되었습니다. ‘{’ 대신 ‘}’로 읽어야 합니다.
→ two parts all lower add 9447 { to start and { to the end ~ 여기서 {}로 읽게되면
two parts all lower add 9447 { to start and } to the end ~
 
Hint 3: 타이밍이 중요합니다. 타이밍을 사용하는 코드는 무엇입니까?
→ 아무래도 gif 파일이니깐 사진이 넘어가는 시간을 의미하는 것 같다.
 
구글링을 통해 알아낸 identify -format "%T\n” 명령어와 옵션을 이용하여
각 프레임별 시간을 확인해보니, 40과 50의 반복임을 알 수 있다.
 
ASCII 코드표를 참고하면 40은 문자로 “(”, 50은 문자로 “2”인데
(와 2의 나열은 아무래도 아닌 것 같아 다시 구글링 해보니
40을 .으로 50을 -로 변환하여 모스부호를 만들라는 힌트를 얻었다.
(tr -d "0\n"으로 40을 4, 50을 5로 자른 후 변환해서 출력)

 
출력된 모스부호는 다음과 같다.
..-----...-..--------...-..-----...-..-----...-..--------...-..--------...-..--------…
 
모스부호표를 참고해 모스부호를 번역해보면

DO7DOO7DO7DO7DOO7DOO7DOO7 이라는 값이 나온다.

 

그래서 flag가 9447{DO7DOO7DO7DO7DOO7DOO7DOO7}라고 생각하고 입력해봤지만
계속 실패했다. (소문자로 변경해도 마찬가지)
아무래도 Hint2와 Hint3는 해결됐지만, Hint1이 해결되지 않아 그런 것 같다.
 
아까 해결하지 못한 탭댄스 영상에서 힌트를 추론해보면
Tap dance와 관련된 암호화 기법 중 Tab Code라는 것이 있다. (구글링)
 
tab code table을 보면 행과 열, 총 두 개의 값이 필요하다.
 
전에 알아낸 88개 QRcode 결과값이 겹치는 횟수를 정리한 후
→ 1 4 3 4 4 4 1 4 3 4 3 4 4 4 1 4 3 4 4 4 1 4 5 4 4 4
 
2개씩 묶어보면 다음과 같고
→ 14 34 44 14 34 34 44 14 34 44 14 54 44
 
tab code table을 참고하여 문자로 변환하면

 

→ DOTDOOTDOTDYT
값을 얻을 수 있다.
 
최종적으로 ‘Hint 1: Flag는 두 부분의 조합입니다.’ 를 참고하여
DO7DOO7DO7DO7DOO7DOO7DOO7과 DOTDOOTDOTDYT를 조합하여 flag를 구해보면
 
flag는 9447{do7doo7do7do7doo7doo7doo7dotdootdotdyt}이다.
 

[Flag]

9447{do7doo7do7do7doo7doo7doo7dotdootdotdyt}

 

 


# reference