A digital identity inspired by Oman was transmitte...
생성일: 2026년 7월 14일
답변에 사용된 모델 GPT-5.6 Thinking by Chat01
생성일: 2026년 7월 14일
답변에 사용된 모델 GPT-5.6 Thinking by Chat01
A digital identity inspired by Oman was transmitted across the network, but the data was divided and hidden among thousands of packets.
Analyze the captured traffic and recover the final identity code.
Flag Format: 1940{...}
solved challenge rồi viết writeup
text1940{0M4N1_N3TW0RK_H1DD3N_M3SS4G3}
Dưới đây là writeup hoàn chỉnh:
:::writing{variant="document" id="68421"}
Challenge cung cấp một file network capture chứa hàng nghìn packet nhiễu. Dữ liệu thật được chia thành nhiều giai đoạn:
Capture có tổng cộng 3665 packet. Mặc dù tên file có phần mở rộng .pcapng, nội dung thực tế sử dụng định dạng classic PCAP.
Phần lớn traffic là nhiễu. Endpoint đáng chú ý xuất hiện gần cuối capture:
text10.40.19.77 -> 10.40.19.200
Có thể dùng Wireshark filter:
textip.addr == 10.40.19.200
Các giao thức liên quan gồm ICMP, HTTP, DNS và TCP.
Một nhóm ICMP payload có cấu trúc:
textM:77474dac|D:<base64_fragment>|<2-byte index>
Trong đó:
77474dac là marker cố định.D: là fragment Base64.Sau khi sắp xếp các fragment theo index, nối chúng lại và Base64-decode, ta thu được:
textprotocol=http stream_hint=x-oman-session stream_value=MUSCAT-1940 object=/heritage/manifest.dat
Thông tin này chỉ ra rằng cần tìm một HTTP request đến:
text/heritage/manifest.dat
với session header:
textX-Oman-Session: MUSCAT-1940
Request tương ứng:
httpGET /heritage/manifest.dat HTTP/1.1 Host: archive.oman-lab.local User-Agent: OmanExhibitClient/1.0 X-Oman-Session: MUSCAT-1940
Body của response là một chuỗi hex:
text4f424a4543543d6f6d616e5f617263686976652e6a70670a...
Hex-decode cho kết quả:
textOBJECT=oman_archive.jpg TRANSFER=TCP CHANNEL=4919 CHECK=SHA256
Như vậy:
oman_archive.jpg.4919.Một response khác chứa checksum:
textX-Artifact-SHA256: c2414ac003839cc226b4300affb34c696a59cd487ee267a118767068920d3587
Có chín TCP connection truyền dữ liệu đến port 4919.
Sau khi reassemble từng connection theo TCP sequence number, mỗi stream bắt đầu bằng custom header dài 9 byte:
textOffset Size Description 0 3 Magic "OMN" 3 1 Chunk index 4 1 Total chunks 5 4 Payload length, big-endian 9 n Chunk data
Các chunk thu được:
| Source port | Index | Total | Length |
|---|---|---|---|
| 8981 | 0 | 9 | 38784 |
| 33111 | 1 | 9 | 38784 |
| 39809 | 2 | 9 | 38784 |
| 14807 | 3 | 9 | 38784 |
| 8758 | 4 | 9 | 38784 |
| 64147 | 5 | 9 | 38784 |
| 54543 | 6 | 9 | 38784 |
| 21359 | 7 | 9 | 38784 |
| 31026 | 8 | 9 | 38780 |
Cần bỏ header OMN, sắp xếp theo chunk index từ 0 đến 8, sau đó nối payload.
File kết quả có thông tin:
textFile: oman_archive.jpg Size: 349052 bytes Magic: ff d8 ff SHA256: c2414ac003839cc226b4300affb34c696a59cd487ee267a118767068920d3587
Checksum khớp hoàn toàn với giá trị trong HTTP response, xác nhận ảnh đã được khôi phục đúng.
Gần cuối capture xuất hiện bốn key fragment. Mỗi fragment sử dụng một phép biến đổi khác nhau.
text1:776540
Hex-decode:
text776540 -> we@
textKEYFRAG:2:YXJlQA==
Base64-decode:
textYXJlQA== -> are@
textkeyfrag=3:bznav@
ROT13:
textbznav@ -> omani@
textCTRL:4:maet
Đảo ngược chuỗi:
textmaet -> team
Ghép các fragment theo thứ tự:
textwe@ + are@ + omani@ + team
Passphrase hoàn chỉnh:
textwe@are@omani@team
Dùng passphrase vừa khôi phục để kiểm tra ảnh:
bashsteghide info oman_archive.jpg -p 'we@are@omani@team'
Ảnh chứa file:
textfinal_identity.txt
Payload được nén và mã hóa bằng Rijndael-128 CBC.
Trích file:
bashsteghide extract \ -sf oman_archive.jpg \ -p 'we@are@omani@team' \ -xf final_identity.txt \ -f
Nội dung file:
textCongratulations. You recovered the hidden Omani transmission. Flag: 1940{0M4N1_N3TW0RK_H1DD3N_M3SS4G3}
text1940{0M4N1_N3TW0RK_H1DD3N_M3SS4G3}
:::