Single

[SUCTF2019]protocol1 min read

题目下载

看到满满的usb流量首先想做的就是提取qwq:

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

看到了熟悉的png文件头:

把这个文件以十六进制形式贴到010等十六进制编辑器里,然后利用foremost工具可以提取出来一堆小图片:

可以发现每15个字符图后就跟着十张纯黑图,纯黑图里的数据也是一模一样的,再次分析流量包,按Length排序,然后从最后一个长度为7845的包开始分析:

从它向上数15个后,流量包里的图片数据完全一样了(纯黑),和刚才提取的图片顺序相同,但是纯黑图的数据部分有一位是在变化的:

根据变化这一位,按顺序找这一位相同的字符图,一一对应就可以了。这里马克一下官网WP:

kernel运行在一个连接触摸屏的Linux设备上,而gui项目一方面解析经过USB发来的信息,将一些png图片显示触摸屏上,一方面响应触摸屏上的输入信息,并将输入信息发到USB对端。在源码中我们可以发现该程序的运行原理是:对端一次性发送15张png图片,每一张图片是一个字符,按照数据部分第3个字节表示的数字显示在屏幕上;接下来读取触摸屏上输出的点击信息,如果点击正确那么对端发来一张空图片覆盖掉点击位置(可以理解为清空该位置图像),等到该组中有10个字符消失后开始下一组。整个流量中包含了5组上述过程。