USB流量分析

USB流量分析

鼠标流量

鼠标的流量包有三个字节是有用的,从左到右依次代表着按键水平方向位移垂直方向位移

注意这里是代表着位移,而之后在gnuplot工具中描绘出鼠标轨迹需要知道坐标,那么位移值(单位是像素)应该依次相加;而按键分为没有操作,左按键,右按键,分别对应0x00,0x01,0x02

一般鼠标流量是4个字节,也就是32bits,那么上面提到的有用字节应该分别是第1,2,3字节

也有可能是8字节的,那么有用的字节应该分别是第1,3,5字节

也有可能是其他字节长度的,这里就不一一举例了


关于流量包中的USB数据是这样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTmORn0U-1642501848235)(C:/Users/Menglin/AppData/Roaming/Typora/typora-user-images/image-20220118180054970.png)]

从流量包中导出USB数据

tshark -r xxx.pcapng -T fields -e usb.capdata > usbdata.txt

这样导出的数据里面除了鼠标流量,还有键盘流量,关于后者之后会提到

以我这边为例,导出的数据是以两位十六进制代表一位字节的数据

0100ffff01000000

0100000001000000

那么提取第1,3,5字节,由于这里涉及的是光标是一个绘图过程(需要按着左键进行),所以当有左键也就是第1字节等于0x01时,收集第3,5字节的数据并使用gnuplot画图

注意,当垂直或者水平位移值超过127时,那么ta代表的是负值

代码实现

from tqdm import tqdm
f2 = open("result.txt","a+")
with open("usbdata.txt","r") as f:
    posx = 0 # 记录光标的相对于第一个数据的坐标值
    posy = 0
    for line in tqdm(f.readlines()):
        # print(len(line))
        if len(line) != 16: # 根据实际需要调整
            continue
        x = int(line[4:6],16) # 这是位移像素值
        y = int(line[8:10],16)
        if x > 127: # 切换成负位移
            x -= 256
        if y > 127:
            y -= 256
        posx += x
        posy += y
        click = int(line[0:2],16)
        if click == 1:
            f2.write(str(posx)+" "+str(-posy)+'\n') # 由于重新选取鼠标位移,是与实际看到的屏幕是呈镜像的,所以将垂直坐标取反,以得到正确显示在屏幕上的轨迹过程
f.close()
f2.close()

最后得到的是各个时刻的光标的坐标值

gnuplot
plot "result.txt"

image-20220118181642400

这样就成功将鼠标流量中的绘图过程重新展现出来了

键盘流量

长度为8个字节,按键信息在第3个字节上

按键数据的大小对应不同的键位

与鼠标流量一样的,导出数据

tshark -r xxx.pcap -T fields -e usb.capdata > usbdata.txt

创建一个字典来对应第3个字节的大小来替换按键

参考文章

USB流量分析tshark命令:tshark(1) (wireshark.org)

深入理解USB流量数据包的抓取与分析 - Angel_Kitty - 博客园 (cnblogs.com)

【技术分享】从CTF中学USB流量捕获与解析 - 安全客,安全资讯平台 (anquanke.com)

【技术分享】从CTF中学USB流量捕获与解析 - 安全客,安全资讯平台 (anquanke.com)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M3ng@L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值