zoukankan      html  css  js  c++  java
  • [置顶] tcpflow 抓包

    转自:  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)'
    
    ...

  • 相关阅读:
    Centos7上安装docker
    docker部署mysql5.6.40
    centos7上部署spring boot并保存日志
    [转载]Ocelot简易教程(一)Ocelot是什么
    浅谈Surging服务引擎中的RabbitMQ组件和容器化部署
    [转载]Surging教学视频资源汇总
    [转载]netcore 使用surging框架发布到docker
    [转载]Surging 分布式微服务框架使用入门
    [转载]Surging Demo 项目之一
    [转载]剥析surging的架构思想
  • 原文地址:https://www.cnblogs.com/leonxyzh/p/7288971.html
Copyright © 2011-2022 走看看