使用WinDump联合wifi精灵抓取手机网络数据包

最近因为客户端与服务端http通信出现疑似丢包的情况,而且客户端PC端没问题,而安卓机客户端必现,所以想到了抓包。
最开始是用fiddler代理来抓,但是可能是因为设置还是过滤的问题,安卓机经过fiddler代理的数据始终没有包含我们app的http数据包,只抓到了自带浏览器、以及我们app的sdk的http数据包。至今我还不知道其原因,假如大佬知道了,恳请告诉我一下-
既然代理可能有过滤的规则,那我直接抓网卡的包,总不至于没有了吧。
说干就干。

Windump

Windump是TCPdump的windows版本,用于抓取经过网卡的数据包

  1. 安装
    1.1. 需要安装其库WinPcap
    1.2. 安装Windump,可在官网下载。
  2. 使用
    2.1. 安装好WinPcap,下载好Windump.exe可执行文件,将Windump.exe放在适当的目录下如C:\
    2.2. 打开终端,从终端运行Windump.exe,先用-D列出所有的网卡接口
C:\WinDump.exe -D

幸运的话,你只有一个网卡,否则,可能会有几个网卡,并且无法分辨出它们对应的是哪个网卡,如图所示:

此时需要确定数据包流过的网卡。
为了使手机的数据包经过PC的网卡,需要开启一个热点,手机wifi链接该热点。假如PC本身自带的话,不用Wifi精灵也可以,或者其他的代替品都行。
回到上面的问题,我们要确定:使用哪个网卡?
2.3.1. 打开-网络和Internet设置,查看适配器选项,如win10下:


如上图所示,我有4张网卡,其中第一张是笔记本的无线网卡,第二张是wifi精灵热点的虚拟网卡(等我打开热点,就不是红叉状态),另外两张无视。
请记住网卡接口名字(第三行的Intel(R) Centrino(R) Wireless-N...)
再看看WinDump列出的网卡接口名字,完全对不上是不是?

1.\Device\NPF_{7B6ED36B-30F0-4FDA-842B-545B04D0B690} (Microsoft)
2.\Device\NPF_{8D6A2EE4-5764-4200-973F-B8ECAE16572B} (Realtek PCIe GbE Family Controller)
3.\Device\NPF_{86A7B99D-9B52-4323-B62B-40A5F4ED9FF1} (Microsoft)
4.\Device\NPF_{DE4131E1-2AE0-4538-945C-A53F6129DD78} (Microsoft)

没事,我们可以排除第二个,那是笔记本的有线网卡接口,接下来怎么办呢?看看花括号那串字码,凭感觉注册表里面很多类似的,去注册表里面查查!
打开注册表(Win+R运行regedit)

逐个搜索NPF_{}花括号里面那串字码
好吧,其实物理网卡在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\下面,可以直接去那里找到对应的网卡接口名

假如你找到这儿,知道了\Device\NPF_{7B6ED36B-30F0-4FDA-842B-545B04D0B690}就是你无线网卡的接口,其实已经够了,因为即使是wifi精灵的虚拟网卡,最终也要流过它。
比较折腾点可以继续搜别的字码,最终可以找到哪个是虚拟网卡的。
接下来就是抓包了,仅仅是为了验证数据包有没有发送接收,使用下面的命令就可以了,如果有兴趣了解它,可去官网看用户手册。

WinDump.exe -i \Device\NPF_{7B6ED36B-30F0-4FDA-842B-545B04D0B690} -s 0 -Xx port 端口号

假如有更美观的参数设置还请看到的大佬告诉我-.

Done.

posted @ 2020-06-12 21:32  J6`  阅读(347)  评论(0编辑  收藏  举报