tcpdump+nc(netcat)+wireshark进行手机实时跟踪抓包
准备知识: wireshark跟踪结果里面选中某行记录,右键-追踪流-tcp流,可以看到整个tcp流的信息; wireshark菜单-文件-导出对象-http,可以导出网页里面的图片等信息; nc(netcat)在Windows也有相应版本;有些版本的服务端参数为l(listening)+p(port),有些版本l和p不能一起用;老一些的版本、busybox里面自带的版本,等,均是混用的,Ubuntu14.04里面自带版本是l和p不能一起使用; 以老一点的版本为例:nc -lp 4444开启服务端监听端口4444,nc 对端IP 4444执行后建立起连接,两边可以交互; tcpdump |busybox nc -lp 4444,tcpdump的结果输出作为下一个命令的输入,“|”建立起一个无名管道,busybox是精简的工具集,这里使用了它的nc命令开启服务端口4444; 过程: 手机wifi和PC(win) wifi接入在同一LAN: 手机su后执行:tcpdump |busybox nc -lp 4444,PC(win7 64)执行.\netcat-win32-1.12\nc64.exe 192.168.1.40(手机IP) 4444,二者建立起连接,手机端命令的stderr直接输出到手机: tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes stdout重定向到无名管道,最后出现在PC的nc64命令后 同时开启wireshark监听网卡的4444端口,也能看到PC和手机之间的交互,停止nc后则跟踪不到和手机相关的数据包;如果查看netstat能看到手机的4444端口和PC的某端口是建立起了连接的; 手机cellular connection + PC(win) wifi: 手机su后执行tcpdump |busybox nc -lp 4444,PC执行.\adb\adb.exe forward tcp:44444 tcp:4444 后执行 .\netcat-win32-1.12\nc64.exe 127.0.0.1 44444 PC可显示实时数据包,但wireshark还无法跟踪到,事实上此方法对wifi连接也适用;如果查看netstat,手机的4444和PC的44444分别与本设备localhost的某端口建立起连接,二者之间没有直接网络连接,这个连接是通过adb实现的,只在localhost,并没有发送出去,所以wireshark无法抓取到;如何让wireshark能抓取到?可以考虑如下思路: 1. 使用Linux; 2. 放弃wireshark使用另外的软件如RawCap等; 3. 改路由; 4. 使用管道pipes(不管匿名还是命名的),PC收到包后写到管道里面,同时wireshark读取管道; 5. 使用wireshark命令行,但尝试均失败,powershell里**\netcat-win32-1.12\nc64.exe 127.0.0.1 44444 |.\Wireshark.exe -k -S -i 或者 **\netcat-win32-1.12\nc64.exe 127.0.0.1 44444 |.\Wireshark.exe -k -S -i - 执行后是没反应的,普通用户和管理员都一样,cmd也试过能启动但只要有数据包就弹出错误;其实这种方法是最可行的,网上有一些相关信息,例如:http://www.draytek.com/index.php?option=com_k2&view=item&id=5534&Itemid=293&lang=en 等,也许是win7 64 位版本的原因吧,换成XP也许OK; (参考:https://wiki.wireshark.org/CaptureSetup/Pipes) 上面方法1-4没有具体尝试,Windows下面使用wireshark实时手机抓包确实不好操作,还是Linux好使 注意:http://code.tutsplus.com/tutorials/analyzing-android-network-traffic--mobile-10663 里面对adb forward的理解是错误的,弄反了,具体可参考:http://developer.android.com/tools/help/adb.html,adb forward tcp:6100 tcp:7100 是把PC的6100端口forward到手机的7100,forward换成reverse则是反向 后记: 最近发现安装wireshark时有一个androiddump默认没选,重新选中安装后,居然可以实时跟踪手机包:1. 手机连上电脑并打开USB调试;2. adb需启动;3. 打开wireshark界面自动显示Android的几个相关interfaces,选中即可进行跟踪 参见:https://www.wireshark.org/docs/man-pages/androiddump.html
Labels: Linux, Operation and Maintenance, phones, Windows
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home