Winpcap是啥?Windows packet capture有什么用

Winpcap是啥?Windows packet capture有什么用,第1张

winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。Winpcap可以为为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能: a:捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包; b:在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉; c:在网络上发送原始的数据包; d:收集网络通信过程中的统计信息。

一提到Python获取数据包的方式,相信很多Python爱好者会利用Linux的libpcap软件包或利用Windows下的WinPcap可移植版的方式进行抓取数据包,然后再利用dpkt软件包进行协议分析,我们这里想换一个角度去思考:
1 Python版本的pcap存储内存数据过小,也就是说缓存不够,在高并发下容易发生丢包现象,其实C版本的也同样存在这样的问题,只不过Python版本的缓存实在是过低,让人很郁闷。
2 dpkt协议分析并非必须,如果你对RFC 791和RFC 793等协议熟悉的话,完全可以使用structunpack的方式进行分析。
如果你平常习惯使用tcpdump抓取数据包的话,完全可以使用它来代替pcap软件包,只不过我们需要利用tcpdump将抓取的数据以pcap格式进行保存,说道这里大家一定会想到Wireshark工具,具体命令如下:
tcpdump dst 1013202116 and tcp dst port 80 -s 0 -i eth1 -w /pcap/tcpdumppcap -C 1k -W 5
我们首先需要对pcap文件格式有所了解,具体信息大家可以参考其他资料文档,我这里只说其重要的结构体组成,如下:
sturct pcap_file_header
{
DWORD magic;
WORD version_major;
WORD version_minor;
DWORD thiszone;
DWORD sigfigs;
DWORD snaplen;
DWORD linktype;
}
struct pcap_pkthdr
{
struct timeval ts;
DWORD caplen;
DWORD len;
}
struct timeval
{
DWORD GMTtime;
DWORD microTime;
}
这里需要说明的一点是,因为在Python的世界里一切都是对象,所以往往Python在处理数据包的时候感觉让人比较麻烦。Python提供了几个libpcapbind,>本地是指浏览器客户端的话,可以在浏览器的文件打开方式里设置(比如Firefox就就可以设置某种类型的文件怎样打开,是直接下载还是用某个程序打开等)。如果你是指点击Web服务器端的pcap文件,然后在服务器端就解析这种文件格式,再以图形表格等数据显示出来传回浏览器端的话,那需要自己用Web服务器端的开发技术(PHP、Python等)写pcap的解析器(基本的解析估计Wireshark会有C语言的API)和绘图代码

你可以先将你抓到的包保存到文件
主要代码:
/ 回调函数,用来处理数据包 /
void packet_handler(u_char dumpfile,const struct pcap_pkthdr header,const u_char pkt_data)
{
/ 保存数据包到堆文件 /
pcap_dump(dumpfile,header,pkt_data);
}
然后用wireshark 这款软件,打开文件你保存抓包信息的文件,查看你抓到的包
Wireshark(前称Ethereal)是一个网络封包分析软件

两种抓包模式

Spawn 模式,直接抓包

python r0capturepy -U -f 包名

Attach 模式,将抓包内容保存成pcap格式文件

python r0capturepy -U 包名 -p 文件名pcap

建议使用Attach模式,从感兴趣的地方开始抓包,并且保存成pcap文件,供后续使用Wireshark进行分析。

导入脚本项目

导入到Pycharm项目中

安装项目所需的包

pip install win_inet_pton

pip install hexdump

pip install loguru

在开启的命令行中两种方式的任意一种进行抓包,建议使用Attach模式,从感兴趣的地方开始抓包,并且保存成pcap文件。

开始抓包

获取应用包名

1adb shell am monitor
2启动需要获取包名的应用
3窗口就会打印出来当前应用的包名

给应用添加读取存储空间权限

启动frida-server

adb sehll
su
cd /data/local/tmp/
/frida-server &
ps | grep frida

Spawn 模式,直接抓包

Attach 模式,将抓包内容保存成pcap格式文件

先打开需要抓包的应用,然后在命令行输入

python r0capturepy -U comdianpingv1 -p 123pcap

Ctrl+C 结束,如果数据量很大的话,需要等待一会才能彻底关闭

分析数据

你直接抓 TCP/UDP 数据包,然后根据数据包内的 IP 地址,判断两个 IP 地址是否在同一个局域网内就 OK 了(这个你可以根据 IPV4 协议的私有地址来实现,即如果两个地址都是私有地址则说明是局域网数据包) winpcap混杂模式下抓包就可以抓到流经本


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10418622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存