如何用wireshark抓取并还原qq图片
第一步:根据网络状态连接选择链接
我的电脑是连接的WiFi所以选择WLAN(双击)
进入wireshark界面以后已经是默认开始抓取数据包,若还没设置好过滤器可以先选择暂停。
第二步:为了让抓取到的数据包更少,所以我们可以设置数据包的源地址(本机IP地址)
查看本机IP:打开cmd,输入ipconfig,因为是wifi连接所以 无线局域网适配器 WLAN的IPv4后面那一串数字即本机的IP地址
第三步:设置wireshark的应用显示过滤器
输入ip.src==(这里输入自己的IP地址蛤)即选择源地址为本机发出的数据包
ip.addr==(1)即选择由1地址发出或到达的 数据包
ip.dst == (1)即选择到达1地址的数据包
第四步:为了抓包能正确找到图片,我们把带抓包的图片拖进winhex看一下头部和尾部的十六进制码
头部:(左边的是十六进制码,右边的是字符串)
(一般jpg文件的头部信息都是FFD8,各种文件都有固定的头部,这里就不一一介绍了)
尾部:(由于这张照片后面全都是0,删掉也不影响照片的显示,所以这里默认就是照片的尾部了)
第四步:选择一个qq群作为一个实验对象(据说qq对于发送到私人的数据包是加密的,但是发到群里面的数据包不加密)
选择好了以后先别发图片文件,先点击开始捕获分组再发。
不过开始捕获分组之前要对之前的数据包做处理,如下弹窗,我一般不保存。
我选择的QQ群:
第五步:开始抓包
待图片成功发送后,点击红色的四方小按钮即停止捕获分组。
点击显示过滤器->十六进制值->输入文件头的16进制码查找,箭头指向的数据包即图片数据包开始的地方
(右键mark把它加深做标记,以免找不到,就算忘记做标记也没关系,再搜索一次文件头就好)
搜索图片的尾部(mark一下):
可以看到,在winhex 和抓包的数据包的尾部都是一样的
第六步:保存图片数据包
之前mark的深色标记的图片的开头的那个数据包,单击选中它。
然后滚动鼠标,找到尾部的数据包(要是实在找不到可以再搜索一次尾部的十六进制码),按住shift,单击选中,此时你已经选中了完整的图片的数据包。(因为数据包的发送是连续的,只要找到头部和尾部,中间的数据基本上就是完整的)
如图:
然后,点击左上角文件->保存为,就可以把它保存为十六进制包了。
再用wireshark打开的话也只有这些选中的数据包而不会有其他的数据包了。
但是此时,图片还是不能显示的,因为文件在传输过程中会加上一些头部信息,来让网络知道这个数据包要发到的地址等一些信息。
所以我们还要用winhex来删掉那些头部信息来还原图片。
由于时间关系,我这里就先不介绍怎么用winhex还原了,下一篇博客可以详细介绍一下。
如果对winhex的操作没那么熟练的话,建议刚开始用小一点的图片。这样子就能比较快的把图片还原,增强自信心,
成果展示:
原图:
原图数据在winhex中的页数:
我抓包保存的数据包的页数:
好像他就是删掉头部删的差不多以后后面有差不多1200页全都是0。
这是中间用winhex剪到人都疯了决定就复制粘贴前面的数据出来看看效果的图(已经可以看到冰淇淋的边边啦):
我剪这个数据好像花了好几天,因为不会用winhex,所以刚开始看哪里的数据不一样的时候都是慢慢看,不过通过这个图片的还原,我也算是对winhex的基础操作有了一些了解。