tcpflow 抓包

转载 2016年06月04日 23:55:55

转自:  http://www.rwifeng.com/jekyll/update/2015/04/16/how-to-tcpflow/


tcpflow 抓包

Apr 16, 2015

大家都知道 tcpdump 是一个很方便的抓包工具, 但是 tcpdump 是以包为单位进行输出的,阅读起来不是很方便。 而 tcpflow 是面向 TCP 流的,每个 TCP 传输会保存成一个文件。所以一个典型的 TCP 会话会产生两个文件,每个方向产生一个文件。 此外, tcpflow 还可以解析 tcpdump 保存的文件。

先看一个小例子。在我的 Mac 上有一个 HTTP 服务,所用端口号为 12345,那么用 tcpflow 抓包结果如下:


可以看到,tcpflow 直观地显示出了请求、响应的 HTTP 报文,具有很好的可读性。

安装

具体可以参考: tcpflow github

简单使用

具体的使用方法,可以去查应用手册 man tcpflow. 下面介绍几种简单的使用方法。

  • 打印经过网卡的所有报文

在你的 terminal 中输入:

tcpflow -ci en0

其中 -c 表示将报文直接打印在 terminal 中。不指定 -c 参数会将抓取的 TCP 报文保存在文件中。 -i 表示你要监听的网络端口。 假如你不指定 -c 参数, tcpflow 会将每个 TCP 流的数据存储在他自己的文件中,其中文件的命名规则你可以参考: tcpflow github . 基本格式为:

[timestampT]sourceip.sourceport-destip.destport[--VLAN][cNNNN]
  • 读取已有的 pcap 文件

在使用 tcpdump, 或者 wireshark 抓得包的格式是 pcap。 使用 tcpflow 也可以读取这些包得格式。 这儿有一个我使用 tcpdump 抓的包的格式: tcpdump pcap

tcpflow -cr test.pcap

可以将 pcap 包打印到 terminal 中。当然你也可以将 TCP 流保存在文件中:

tcpflow -r test.pcap
 
# 这样我得到了两个文件:
# 183.136.139.016.00080-192.168.199.146.49570
# 192.168.199.146.49570-183.136.139.016.00080

其中文件  192.168.199.146.49570-183.136.139.016.00080 是我的主机向服务器发送的请求包。文件 183.136.139.016.00080-192.168.199.146.49570 是服务器向客户端返回的响应包。如果你想要重放下请求,就可以使用这种方法。

nc -i 1 183.136.139.16 80 < 192.168.199.146.49570-183.136.139.016.00080
  • 使用表达式过滤抓包

tcpflow 也是支持表达式过滤的,格式和 tcpdump 一样,具体格式和对应参数你可以参考 filter expression 。 这里列几种常用的表达式:

# 过滤经过 192.168.1.202 的流量:
tcpflow -i any host 192.168.1.202

# 过滤从主机 192.168.1.202 发出的流量:
tcpflow -i any src host 192.168.1.202

# 过滤从主机 192.168.1.202 发出的流量并且端口号为 80:
tcpflow -i any src host 192.168.1.202 and port 80

# 过滤固定端口的流量:
tcpflow -i en0 any port 443 or port 80

# 过滤主机 192.168.1.202 端口为 80 或 443 的流量:
tcpflow -i en0 'host 192.168.1.202 and (port 80 or port 443)'

...

Linux下抓包命令tcpflow使用总结

tcpflow实际上也是一个抓包工具,这个抓包工具与tcpdump不同的是它是以流为单位显示数据内容,而cpdump以包为单位显示数据。我们平常会经常分析HTTP数据,用tcpflow会更便捷。 tc...
  • kobejayandy
  • kobejayandy
  • 2014年03月09日 21:34
  • 12973

CentOS tcpflow抓包

在Mac上抓包常用Charles,在linux服务器上抓包,比较常用tcpdump,tcpflow命令,tcpdump对http包的抓取支持不好,tcpflow的http的抓取表现不错。tcpdump...
  • lzx_2011
  • lzx_2011
  • 2016年07月25日 18:22
  • 2473

tcpflow使用手册

  • 2009年11月24日 11:42
  • 12KB
  • 下载

tcpflow 安装

rpm -ivh ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoga/CentOS_CentOS...
  • wwwsec
  • wwwsec
  • 2015年01月13日 16:33
  • 1176

mac下的抓包工具

Q:  I'm trying to debug a network problem. How do I get a packet trace? A: This depends on your p...
  • ojl12345
  • ojl12345
  • 2013年07月11日 20:51
  • 1897

tcpflow命令使用总结

tcpflow实际上也是一个抓包工具,这个抓包工具与tcpdump不同的是它是以流为单位显示数据内容,而tcpdump以包为单位显示数据。 我们平常会经常分析HTTP数据,用tcpflow会更便...
  • xymyeah
  • xymyeah
  • 2012年02月08日 20:00
  • 7636

Linux下抓包命令tcpdump的使用

例:tcpdump host 172.16.29.40 and port 4600 -X -s 500 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOp...
  • kobejayandy
  • kobejayandy
  • 2014年03月09日 21:45
  • 2068

TcpFlow 1.4.6( C++版本)源代码分析之main函数分析

最近公司项目拟定使用tcpflow来分析http协议分析源代码后才能更好的利用源代码进行二次开发代码下载地址:https://github.com/simsong/tcpflow1.从main函数开始...
  • haolipengzhanshen
  • haolipengzhanshen
  • 2016年06月13日 14:34
  • 605

Linux下抓包命令tcpflow使用总结

tcpflow实际上也是一个抓包工具,这个抓包工具与tcpdump不同的是它是以流为单位显示数据内容,而cpdump以包为单位显示数据。我们平常会经常分析HTTP数据,用tcpflow会更便捷。 t...
  • havarduniv
  • havarduniv
  • 2015年03月18日 17:51
  • 897

TcpFlow(1.4.6 C++版本)源代码分析

tcpflow C++版本 1.4.5 源代码流程分析
  • haolipengzhanshen
  • haolipengzhanshen
  • 2016年06月03日 09:30
  • 706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tcpflow 抓包
举报原因:
原因补充:

(最多只允许输入30个字)