tshark 抓取mysql查询语句 及 返回结果

一直使用tshark抓取sql语句调试代码  这条命令只能显示查询语句 故对此命令做了修改 使其能显示查询结果 tshark -s 512 -i eth0 -n -f  'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query 修改后 sudo tshark -i lo -n -f 'tcp port 3306' -V | awk -v y=0 -v i=0 '{if($0~/State/){text_in=index($0,":");print substr($0,text_in+1)}if($0~'/Name/'){text_in=index($0,":");row[i]=substr($0,text_in+1);i++}if($0~/text/){if(y<=i){yy=y;y++}if(y>=i){y=0}text_in=index($0,":");print row[yy] "->" substr($0,text_in+1)}if($0~'/Frame/'){i=0;y=0;delete row}} END{y=0;while(y<=i){y++}}' 开启对应的端口后 tshark

抓取手机APP的数据包 调试接口

自从APP 关闭测试token后  无法在模拟请求 接口真心难测试 无奈只能通过抓包来抓取请求数据来调试接口  经过一天的学习 总结如下三种抓包调试方法 以下三种方法 都已经过测试 特此记录 操作系统 Ubuntu 12.04 方法一: wifi热点 设置wifi热点 手机连上热点 打开wireshark 监听wifi端口 测试下来发现不支持大多数android手机 原因是android不支持AP热点 当然也试了网上很多方法 ap-hotspot 最后发现是网卡不支持AP   又用了kde-nm-connection-editor 最后只能放弃 如果是ios则用此方案就可以了 方法二:Charles 是一个跨平台的HTTP代理服务器,HTTP监视器,反转代理服务器·它允许一个开发者查看所有连接互联网的HTTP通信·这些包括request, response现HTTP headers Charles(包含cookies与caching信息)官网地址 http://www.charlesproxy.com/  下载 Charles 解压并进入Charles 目录bin下  root权限 打开Charles Tools->Proxy setting 设置代理的端口 默认8888  如果有冲突 换成其他 Charlets_1 Tools->Access Control setting 设置允许访问的ip地址 Charlets_2 设置完毕后 确保手机连上wifi 确保和电脑在同个网段下 然后设置网络 代理服务地址 可使用ifconfig 查看  端口则是之设置的端口8885 然后直接访问App  Charlets 会显示如下图 charlets_3 上图所显示  Charlets 已经抓到包了 显示了APP的每个请求数据 包括响应时间 响应数据 虽然Charlets是个非常好的抓包工具 但无奈是收费软件  当然windows 下有破解版 linux下暂时没有发现有破解版 方法三:wireshark+squid+nethogs(不是必须) wireshark squid nethogs  都可以通过apt-get 安装 Wireshark(前称Ethereal)是一个著名的网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 Squid cache(简称为Squid)是一个流行的自由软件,它符合GNU通用公共许可证。Squid作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存,也可以用在局域网中,使局域网用户通过代理上网。Squid主要设计用于在Linux一类系统运行 NetHogs 是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率. 通过squid 设置代理服务器 来弥补wireshark 无法提供代理功能 首先sudo apt-get install  wireshark squid nethogs sudo vim /etc/squid3/squid.conf 设置代理服务器 大约860行 设置http_access allow all  #设置所有用户均能访问 大约689行 注释acl访问控制 当然也可以根据需要自行设置 大约1138  设置  http_port 172.16.2.119:8885    #绑定ip及端口 设置完后推出执行 sudo squid3 -z  此步骤可能出现错误  大多是应为配置文件出错 根据提示修改即可 sudo /etc/init.d/squid3 reload sudo /etc/init.d/squid3 restart sudo netstat -tunlpa | grep 8885 tcp 0 0 172.16.2.119:8885 0.0.0.0:* LISTEN 9046/squid3 代理服务已经启动 sudo nethogs eth1  监听网络 eth1 是无线网卡端口名 sudo wireshark 打开 wireshark 监听端口 手机连上wifi设置网络 和方法二一样 然后进入App nethogs nethogs 此显示 说明代理服务器已经接受到请求 wireshark 下过滤所有http wireshark如果 wireshark 没有抓到包 有可能是监听端口设置错了 我这里用的是any

tshark 抓包

tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t' 下面介绍参数含义: -s 512 :只抓取前512个字节数据 -i eth0 :捕获eth0网卡 -n :禁止网络对象名称解析 -f 'tcp dst port 80' :只捕捉协议为tcp,目的端口为80的数据包 -R 'http.host and http.request.uri' :过滤出http.host和http.request.uri -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri -l :输出到标准输出 3、实时打印当前mysql查询语句 tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query 下面介绍参数含义: -s 512 :只抓取前512个字节数据 -i eth0 :捕获eth0网卡 -n :禁止网络对象名称解析 -f 'tcp dst port 3306' :只捕捉协议为tcp,目的端口为3306的数据包 -R 'mysql.query' :过滤出mysql.query -T fields -e mysql.query :打印mysql查询语句 tshark使用-f来指定捕捉包过滤规则,规则与tcpdump一样,可以通过命令man pcap-filter来查得。 tshark使用-R来过滤已捕捉到的包,与界面板wireshark的左上角Filter一致。