本文将介绍一种简单高效的方式提取 PCAP 报文中的文件,将通过PCAP报文中数字证书、图片、视频等为例进行讲述,作为我的专栏《wireshark从入门到精通》中的一篇。
首先简单说明一下报文中这些文件,图片视频的产生过程。整体的原理其实很简单,就是数字证书、图片以及视频这些文件以二进制存储在发送端。按照顺序从文件的开始,顺序传输给通信的另一方,直到文件的结束。这里面可能隐含一个问题就是,主机字节序和网络字节序之间的转换问题。即传输前将主机字节序转换为网络字节序进行传输,在接收到数据之后,会自动的将网络字节序转换为主机字节序。这个过程对于我们来说是透明的,至于我们处理本机离线的PCAP报文并不需要过多的关注。只需要把传输过程中产生的pcap格式头以及传输过程中的协议数据去除之后,将剩余部分按照二进制的形式存储下来,就可以得到发送端的文件内容。如果能够知道是文件类型,加上相应的后缀名,使用相应的程序就可以打开。
在阅读本文之前,你也许遇到过还原文件信息的场景,你可能使用的是 C 语言、Python 或者 Java 来做这种工作,这对于问题的处理并不容易。通常的做法是首先要定位数据的起始,然后去除报文的协议头部数据,定位到真实文件数据的偏移。然后根据 TCP 中数据的偏移,按照顺序将数据包一个个拼接起来。最后还要定位文件数据的结束为止。上述过程中不能出现任何错误数据的定位。如果出现乱序,你的程序很大程度上并不能完成工作。
通过本专栏的学