前言:浏览器
抓取电脑的数据包比较简单,使用一些抓包软件便可实现,譬如Wireshark、Fiddle、Sniffer、Appsniff、IRIS等等,这些的使用并很少说,反正要掌握各自的过滤方法,只查看有用的数据包。其中Wireshark、Sniffer、IRIS这类能够抓取整个局域网内全部的数据包,主要工做在数据传输层,Fiddle这类专用抓包工具只抓取某一类协议,譬如HTTP协议,一般工做在应用层,Fiddle支持HTTP断点调试,可修改发送和接受前的数据包。服务器
但若是要抓手机的数据包就比较麻烦,目前我使用的方法就是经过Connectify创建wifi热点,而后再经过Wireshark抓包。网络
使用Connectify:tcp
安装Connectify须要一台有无线网卡的笔记本,安装成功后运行Connectify,而且开启无线链接。“Hotspot Name、Password”设置热点名称和密码,以供手机链接,密码长度至少8位。“Internet”分享一个连接,能够有线或者无线,如今个人电脑能使用“本地链接 2”和“无线网络链接 3”上网,随便选一个都可,而手机就是经过这个分享的链接发送数据包。“Advanced”里的是电脑无线网卡的信息,不用做修改。Start Hotspot后,个人电脑会开启一个无线链接4,手机是经过它接收数据包。ide
顺利开启后,就能够用手机链接了,Connectify的Clients标签页里会看见一些信息,譬如分配给手机的IP地址。工具
另:Bzeek也能够实现相似效果,但听说须要注册账号,而且不够稳定。post
使用Wireshark:网站
运行Wireshark后,选择要抓包的链接,而后开始捕获,再过滤一些包就能够了,譬如“(ip.src==192.168.1.102 or ip.dst==192.168.1.102) and http”。加密
还有一些过滤规则如端口过滤tcp.port ==80、tcp.srcport == 80,http模式过滤http.request.method=="GET"。spa
这里有一个疑问,我电脑明明是使用无线链接的,托盘也显示无线的图标,但抓包的时候发现,个人请求包和响应包不知为什么都是经过“本地链接2”的。
而后就能在数据包的详细窗口里查看相关信息,越在上面的就越是底层。
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 网络层IP包头部信息
Transmission Control Protocol: 传输层数据段头部信息
Hypertext Transfer Protocol: 应用层的信息
简单来讲,IP是网络层,TCP是传输层,HTTP是应用层。咱们如今主要关注应用层的信息。
捕获“行讯通”的数据
开始嗅探“本地链接2”的包,同时手机运行“行讯通”并查询信息,便可获得一个关键的包。
能够看到请求地址是“http://info.gzyyjt.net:9009/unicom/Bus ”,服务器地址是“http://info.gzyyjt.net:9009 ”,看这域名应该是羊羊网下的一个网站,但他们IP不相同。但关键问题是最后那行Line-based text data,发现手机post过去的数据是已经加密了的,不能从中获取有用的信息。浏览器上直接打开刚刚提到的两个地址,都是一些加密的数据。看来只能作到这一步了,虽然有点惋惜,但捕获手机应用的数据包仍是成功的。
后记:
这个方法实质就是把电脑看成路由器,而后再嗅探通过这个“路由器”的数据包而达到目的。若是是Win7系统的话,如下两行命令也能够建立人点。
netsh wlan set hostednetwork mode=allow ssid=APName key=password
netsh wlan start hostednetwork
另:路由器的MAC地址可经过“arp -a”命令得到。