Find the (supposed to be) confidential data in this ethernet frame:
00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
0a
raw data가 주어진다.
사실 바로 ascii로 변환시키면 답을 확인할 수 있겠지만 아쉬우니 Ethernet 프레임 구조를 알아보자.
이더넷 프레임은 2계층의 전송단위이다.
맥 주소로 송신지를 구분한다.
헤더는 다음과 같이 구성되어 있다.
(EtherType까지가 이더넷 프레임의 헤더이다.)
Preamble: 프레임의 시작을 알린다. 단순히 시작점이므로 Preamble과 SFD는 헤더에 속하지 않는다. (7 octets)
SFD: Preamble의 끝을 알린다. (1 octet)
FCS(Frame Check Sequence): crc 값으로 프레임의 무결성을 확인하기 위해 사용한다.(4 octets)
이더넷의 새로운 규격이다.
헤더상의 큰 차이는 없다.
다시 문제로 돌아와서 프레임을 확인해보자.
이를 위해 다음의 사이트에서 헥스값을 패킷 형태로 변환시켜 확인해보자.
처음 12바이트는 송수신 주소값이다.
다음 2바이트는 이더넷 타입이며, IPv6을 나타내고 있다.
마지막에 패딩된 프로토콜은 TCP이다.
포트를 보면 임의의 값을 사용하여 어떤 프로토콜인지 유추할 수 없지만, TCP 영역의 데이터는 앱에서 처리하는 값이 그대로 전송된 것이므로 ascii로 변환시켜보면 그 내용을 대략 짐작할 수 있다.
해당 프레임은 HTTP의 GET request이며 Authorization
으로 Basic 인증을 시도하고 있다.
전달되는 base64 인코드 값을 디코딩하여 정답을 확인할 수 있다.
confi:dential