← writeups

Forensics · Medium · BeeCTF 2026 · Aug 22, 2026

Sudah lama

Sudah lama tidak ketemu soal seperti ini, semoga memperbanyak ilmu kalian, cemungut BeeCTF. Author: wavess

  • FORENSIC
  • MEDIUM
  • USB
  • PCAP

Sudah lama

Sudah lama tidak ketemu soal seperti ini, semoga memperbanyak ilmu kalian, cemungut BeeCTF. Author: wavess

Sudah lama — figure 1


Jadi kita diberikan file capture.pcap, ketika kita buka file tersebut di wireshark isinya hanya protocol USB.

Sudah lama — figure 2Nah ketika aku searching itu rata rata challengenya pada USB HID keyboard, seperti writeups yang kutemui di internet.

Sudah lama — figure 3https://infosecwriteups.com/keystroke-forensics-101-extracting-secrets-from-usb-traffic-7fdd4797d1a9

https://res260.medium.com/usb-pcap-forensics-graphics-tablet-nsec-ctf-2021-writeup-part-2-3-9c6265ca4c40

Nah, pas aku liat di packet kita ternyata di leftover capture data yang buat USB HID keyboard ini, jadi aku tinggal search cari cara bagaimana cara export packetnya.

Dan aku nemu caranya seperti ini

text
tshark -r capture.pcap -Y "usb.capdata" -T fields -e usb.capdata

Nanti outputnya seperti ini

bash
~/ctf/beectf/foren/sudahlama
❯ tshark -r capture.pcap -Y "usb.capdata" -T fields -e usb.capdata               󰥔 09:37:18
0200050000000000
0000000000000000
0000080000000000
0000000000000000
0000080000000000
0000000000000000
0200060000000000
0000000000000000
0200170000000000
0000000000000000
0200090000000000
0000000000000000
02002f0000000000
0000000000000000
0000160000000000
0000000000000000
0000180000000000
0000000000000000
0000070000000000
0000000000000000
0000210000000000
0000000000000000
00000b0000000000
0000000000000000
02002d0000000000
0000000000000000
00000f0000000000
0000000000000000
0000210000000000
0000000000000000
0000100000000000
0000000000000000
0000040000000000
0000000000000000
02002d0000000000
0000000000000000
0000170000000000
0000000000000000
00001e0000000000
0000000000000000
0000070000000000
0000000000000000
0000040000000000
0000000000000000
00000e0000000000
0000000000000000
02002d0000000000
0000000000000000
0000050000000000
0000000000000000
0000180000000000
0000000000000000
0000210000000000
0000000000000000
0000170000000000
0000000000000000
02002d0000000000
0000000000000000
0000160000000000
0000000000000000
0000270000000000
0000000000000000
0000040000000000
0000000000000000
00000f0000000000
0000000000000000
02002d0000000000
0000000000000000
0000160000000000
0000000000000000
0000200000000000
0000000000000000
0000130000000000
0000000000000000
0000200000000000
0000000000000000
0000150000000000
0000000000000000
0000170000000000
0000000000000000
00000c0000000000
0000000000000000
02002d0000000000
0000000000000000
00001e0000000000
0000000000000000
0000110000000000
0000000000000000
00000c0000000000
0000000000000000
0200300000000000
0000000000000000

Nah aku tinggal cari cara buat decode deh, terus searching dan nemu writeup ini

Sudah lama — figure 4 https://medium.com/@__sudocoder__/the-few-chosen-ctf-write-up-19dbb3ca8e50

Dikarenakan aku ngga nemu caranya untuk ngedecode itu dicyberchef ternyata harus pake script. Aku ambil solver dari dia sebagai dasar.

Sudah lama — figure 5Cuman karena sebelumnya aku udah cari cara biar ngambil si USB HID keyboard itunya aja, 0 nya hilang dicyberchef. Jadi aku langsung ambil solvernya aja dari writeup tersebut terus aku sesuaikan.

Sudah lama — figure 6Solver:

text
newmap = {
2: "PostFail",
4: 'a',
5: 'b',
6: 'c',
7: 'd',
8: 'e',
9: 'f',
10: 'g',
11: 'h',
12: 'i',
13: 'j',
14: 'k',
15: 'l',
16: 'm',
17: 'n',
18: 'o',
19: 'p',
20: 'q',
21: 'r',
22: 's',
23: 't',
24: 'u',
25: 'v',
26: 'w',
27: 'x',
28: 'y',
29: 'z',
30: '1',
31: '2',
32: '3',
33: '4',
34: '5',
35: '6',
36: '7',
37: '8',
38: '9',
39: '0',
40: 'Enter',
41: 'esc',
42: 'del',
43: 'tab',
44: 'space',
45: '-',
47: '[',
48: ']',
56: '/',
57: 'CapsLock',
79: 'RightArrow',
80: 'LeftArrow'
}
ch=""
myKeys = open('hexdump.txt')
i = 1
for line in myKeys:
    bytesArray = bytearray.fromhex(line.strip())
    #print "Line Number: " + str(i)
    for byte in bytesArray:
        if byte != 0:
            keyVal = int(byte)

        if keyVal in newmap:
            print(newmap[keyVal])
            ch=ch+newmap[keyVal]
        else:
            print("No map found for this value: " + str(keyVal))

            print(format(byte, '02X'))
            i+=1
            print(ch)

Outputnya lumayan berserakan.

bash
~/ctf/beectf/foren/sudahlama
❯ python3 solve.py                                                               󰥔 09:42:02
b
b
e
e
e
e
c
c
t
t
f
f
[
[
s
s
u
u
d
d
4
4
h
h
-
-
l
l
4
4
m
m
a
a
-
-
t
t
1
1
d
d
a
a
k
k
-
-
b
b
u
u
4
4
t
t
-
-
s
s
0
0
a
a
l
l
-
-
s
s
3
3
p
p
3
3
r
r
t
t
i
i
-
-
1
1
n
n
i
i
]
]

Terus aku coba jadiin oneliner, terus aku sesuaikan dengan format flag deh.

Sudah lama — figure 7Terus aku lihat dari si medium tadi itu kalau ada 02 berarti dia ini uppercase, akhirnya kita bisa menyesuaikannya deh.

Sudah lama — figure 8

flag

export & files

all writeups →

0x06 / contact

Say hi.

CTF team invites, collabs, or a challenge you think I can't pwn. I read everything.

Elang Dimas Syadewa

available · Malang

    Open email

    Your email app will open with a draft. Review it and press Send there.