工具:WireShark  WinHex

目标:在同一网络中,过滤目标IP的数据包,追踪TCP流,处理数据包,还原出文件。

QQ手机和QQPC同时在线且在一个IP端局域网中,这种情况会使用局域网点对点传输,直接匹配IP进行网络直链传输。

本文,使用手机和电脑连接到同一热点,手机和电脑登录QQ,手机向电脑发送图片。

        打开wireshark,根据自己情况选择网卡,就开始在抓包了。然后手机向电脑发送图片。为避免其他无用的数据包影响分析,我们已知手机的IP,只需要过滤出该IP的数据包即可。

设置显示过滤器过滤条件 ip.src == 手机的IP  ,表示只显示源IP为手机的IP的数据包。或者ip.addr == 手机的IP   表示显示源IP或者目的IP为手机的IP的数据包。都可以。

wireshark TCP多流统计 wireshark 跟踪tcp流_网络

 

        找到了一个特别的数据包,看备注信息,推测是用HTTP协议传输了一张Jpeg(jpg)格式的图片

选中,右键选择追踪(follow)TCP流(TCP stream),会得到这个流的全部内容包括数据包。

wireshark TCP多流统计 wireshark 跟踪tcp流_文件大小_02

 

wireshark TCP多流统计 wireshark 跟踪tcp流_IP_03

这里,我们可以获取一些信息,比如,这张图片大致的Exif信息

        选择以原始数据(raw)格式显示数据,得到下图的数据,然后另存到本地。(注意.jpg)

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_04

 

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_05

         现在,查看刚才保存的图片,发现打不开

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_06

我们保存了这个流全部内容,其中含有与图片数据报文无关的报文,所以图片无法识别打开。由于流中的内容按在网络中出现顺序排序的,我们只需要把非图片报文的部分删除即可。

        用WinHex打开这个文件, 在右侧是不是看到了似曾相识的东西?

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_07

Jpg(jpeg)格式的文件的16进制数据文件头为 FFD8FF(百度可以查),

查找16进制数值(Hex值),FFD8

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_08

 

wireshark TCP多流统计 wireshark 跟踪tcp流_IP_09

 选中FFD8 之前的数值,删除,保存即可

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_10

wireshark TCP多流统计 wireshark 跟踪tcp流_网络_11

wireshark TCP多流统计 wireshark 跟踪tcp流_IP_12

 

 

wireshark TCP多流统计 wireshark 跟踪tcp流_文件大小_13

 

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_14

 

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_15

         然后就可以看到图片可以识别查看了。额但是,是不是觉得这图片怪怪的,

对,它不完整。

我们找来原图,对比一下,图片显然不一样。呐这里翻车了。

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_16

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_17

         那这是为什么呐。经过多次尝试,我找到了似乎是原因的原因,(其实我一开始也不懂,摸索摸索着就。。目前我没查到什么关于这个的解释),下面我说说我的见解。

         我们回头看,这数据包,所传输的文件大小应该是2.7兆字节,我们原图是2.6M,还原出来是图片大小应该和原图的一样差不多才对。

wireshark TCP多流统计 wireshark 跟踪tcp流_IP_18

 

分组的数量,或许就是导致保存的文件大小不同的原因(不知道对不对。。)。

wireshark TCP多流统计 wireshark 跟踪tcp流_网络_19

 

wireshark TCP多流统计 wireshark 跟踪tcp流_文件大小_20

 

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark_21

分组应该等同于数据包/报文

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_22

当分组未加载完全,就保存了,得到的文件实际大小小于应得到的大小,而且,分组的数量越少,最后还原出的图片越不完整;但是有我很不解的是,分组数量还会大于原本应有的,保存的文件大小也大于应有的。等分组加载完了,再保存就可以了。

对上述情况下保存的文件进行同样的处理,最后结果:

wireshark TCP多流统计 wireshark 跟踪tcp流_wireshark TCP多流统计_23

         额。,那大家在追踪流时想要保存的时候,关注一下那个分组的情况啊,大概就可以了。我也是在写这篇文章时准备素材,才发现了,似乎,能解开我“多年”的困惑。如果抓不到数据包,建议多试几次,在网络比较通畅时,也可能其他因素有关,像文件经由服务器转发,额目前我尚不懂。。

        本文内容就到这了,以后的路还长,继续学习。