python实现图片嗅探工具——自编driftnet

本文介绍了使用Python自编一个简单的图片嗅探工具,类似driftnet,通过scapy库进行数据包嗅探,捕获HTTP响应中的图片数据,并利用tkinter库显示图片。该工具在Windows环境下运行,需配合ARP欺骗工具使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python实现图片嗅探工具——自编driftnet

  • 前言
  • 一、数据包嗅探
  • 二、图片捕获
  • 三、图片显示及主函数
  • 写在最后

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

前言

想必尝试过中间人攻击(MITM)的小伙伴,大概率是知道driftnet的。这是一款简单使用的图片捕获工具,可以很方便的从网络数据包中抓取图片,从而将监听对象所浏览的图片尽收眼底。
苦于driftnet对windows的支持不是特别友好,而且近日闲来没事,于是我决定用python写一个简单的图片嗅探工具。
哐哐哐~搞定之后,效果还是不错的:


简单设置过后,开始监听:


注意:本工具不具有arp欺骗的功能,因此需要结合arp欺骗相应工具使用(如EvilFoca)

一、数据包嗅探

数据的嗅探采用的是scapy库的sniff模块,一句话便能搞定:

# 嗅探函数
def dosniff(filter_rule,sniff_time,prn_f):
    sniff(filter=filter_rule,timeout=sniff_time,prn=prn_f) # 监听数据包

其中prn参数是一个回调函数,即每抓取到一个数据包之后将执行这个函数,而这也是捕获数据包中图片的关键,具体实现,客官您望下看~

二、图片捕获

这里需要明确的是,在图片的传输过程中,往往一个TCP包的长度是不够的,所以一张图片往往分为很多个包。因此,为了捕获其中的图片,我们必须对图片数据进行识别,并将对应的数据包合并(相同的ack值)。
具体思路如下:

  1. 找到有上网数据的数据包
if p.haslayer(Raw): # 找出有上网数据的
  1. 判断是否为含有图片的HTTP响应
if 'Content-Type: image' in str(load): # 如果为图片响应
	xxxxx # 提取HTTP协议中的相关信息(图片长度、图片后缀、IP地址、以及部分图片二进制数据)
else:
	xxxxx # 判断是否为图片数据的某一部分,如果是则将数据添加进去
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值