【CTF】USB流量分析详解

原理概述

USB流量即USB设备接口的流量,CTF中主要以键盘鼠标流量为主.

流量数据域特征

USB协议数据字段在Leftover Capture Data域中,数据长度为八个字节,主要看第三个字节的值,将它与按键值相对以得出按键内容。

在这里插入图片描述

解题步骤

协议筛选

usb.capdata–Leftover Capture Data

usbhid.data–Hide Data

tshark提取

//到wireshark的路径下
.\tshark.exe -r D:\Downloads\usb.pcap -T fields -e usb.capdata >D:\Downloads\usbdata.txt
.\tshark.exe -r D:\Downloads\usb.pcap -T fields -e usbhid.data >D:\Downloads\usbdata.txt
-r 指定tshark的分析文件
-T 输出的格式,ek|fields|json|jsonraw|pdml|ps|psml|tabs|text 
-T -e 结合打印出指定的规则(过滤)字段usbhid.data, fields 要配合 -e 参数使用
-e 导出的协议字段

键盘数据分析

键盘数据会出现在Leftover Capture Data或者HID Data中,数据长度为8个字节,主要关注第3个字节, 每次键盘操作后都会产生一个数据包。
直接上脚本

def check_charset(file_path):
  import chardet
  with open(file_path, "rb") as f:
    data = f.read(4)
    charset = chardet.detect(data)['encoding']
  return charset


with open('usbhid.txt', 'r', encoding=check_charset('usbhid.txt')) as f:
    with open('out.txt', 'w') as fi:
        for line in f:
            a = line.strip()
            if a and len(a) == 16:
                out = ':'.join(a[i:i+2] for i in range(0, len(a), 2))
                fi.write(out + '\n')

#最后用脚本提取
   # print((line[6:8])) #输出6到8之间的值
   #取出6到8之间的值

normalKeys = {
   
   "04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i",
              "0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r",
              "16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值