在Mac上抓包常用Charles,在linux服务器上抓包,比较常用tcpdump,tcpflow命令,tcpdump对http包的抓取支持不好,tcpflow的http的抓取表现不错。tcpdump是按照包为单位进行输出的,阅读起来不是很方便。 而tcpflow是面向tcp流的。 每个tcp传输会保存成一个文件,所以一个tcp会话会产生两个文件,每个方向产生一个文件。
安装
- 安装前,先确保已安装下面的依赖,若没可以再安装下
yum -y@H_404_11@ install git gcc-c@H_404_11@++@H_404_11@ automake autoconf boost-devel@H_404_11@ cairo-devel@H_404_11@ libpcap-devel@H_404_11@ zlib-devel@H_404_11@
- 编译安装tcpflow
下载地址 http://digitalcorpora.org/downloads/tcpflow/
./configure
make@H_404_11@
sudo make@H_404_11@ install
但是由于boost版本过低报了下面这个错误:
configure: error:
tcpflow requires a@H_404_11@ version@H_404_11@ of@H_404_11@ Boost that has Boost interval_map and@H_404_11@ interval_set.
Your version@H_404_11@ is too old! Please install a@H_404_11@ current version@H_404_11@ of@H_404_11@ Boost from@H_404_11@ http@H_404_11@://www.boost.org/users/download/.
Try these commands:
wget http@H_404_11@://downloads.sourceforge.net/project/boost/boost/1.53@H_404_11@.0@H_404_11@/boost_1_53_0.tar.gz?r=http@H_404_11@%3@H_404_11@A%2@H_404_11@F%2@H_404_11@Fsourceforge.net%2@H_404_11@Fprojects%2@H_404_11@Fboost%2@H_404_11@Ffiles%2@H_404_11@Fboost%2@H_404_11@F1.53@H_404_11@.0@H_404_11@%2@H_404_11@F&ts=1362359340@H_404_11@&use_mirror=hivelocity
tar xfz boost_1_53_0.tar.gz
cd boost_1_53_0
sh bootstrap.sh
./b2
sudo ./b2 install
... and@H_404_11@ then@H_404_11@ re-run configure!
按照上面的提示下载boost新版本安装后,重写编译安装tcpflow即可。
使用
tcpflow和tcpdump的命令有些类似
man tcpflow //查看使用手册@H_404_11@
tcpflow -i@H_404_11@ eth0 host 'ip'@H_404_11@ //使用该命令最好在一个空的文件夹下,因为抓包产生的文件会全部放在当前目录下,文件中的内容和浏览器调试工具中看到的类似@H_404_11@
tcpflow -ci@H_404_11@ eth0 'src host ip'@H_404_11@ // 抓该主机发送的包 -c是打印出来,不保存文件中@H_404_11@
tcpflow -i@H_404_11@ eth0 'dst host ip'@H_404_11@ //抓取该ip主机接收的包@H_404_11@
tcpflow -i@H_404_11@ eth0 'port 80 and src host ip'@H_404_11@ //监听该主机通过80端口发送的数据包@H_404_11@
Charles手机端抓包
- 查看电脑ip
- 打开iOS设置,进入当前wifi连接(Mac在一个局域网内),设置HTTP代理Group,将服务器填为上一步中获得的IP,端口填8888
然后操作手机就可以看到抓包信息了,其实就是用Charles来做手机的HTTP代理,所以关闭Charles后,记着也要关闭手机的代理设置。
Mac 系统抓包,打开Charles,在菜单中勾选Proxy–>Mac OS X proxy 即可