zoukankan      html  css  js  c++  java
  • TCPflow:在Linux中分析和调试网络流量的利器(转)

    TCPflow是一款功能强大的、基于命令行的免费开源工具,用于在Unix之类的系统(如Linux)上分析网络流量。它可捕获通过TCP连接接收或传输的数据,并存储在文件中供以后分析,采用的格式便于协议分析和调试。

    它实际上是类似tcpdump的工具,因为它处理来自网络或存储文件的数据包。它同样支持tcpdump支持的功能强大的过滤表达式。唯一的区别是,tcpflow让所有TCP数据包井然有序,并在单独的文件(每路方向的数据流有一个文件)中组装每路数据流,供以后分析。

    功能特性包括一个高级插件系统,用于解压缩压缩的HTTP连接、撤消MIME编码或调用后期处理的第三方程序等等。

    TCPflow有许多使用场景,包括了解网络数据包流量,还支持执行网络取证分析和泄露HTTP会话的内容。

    如何在Linux系统中安装TCPflow?

    TCPflow可以在主流GNU/Linux发行版的官方代码仓库中找到,可以使用软件包管理器安装它,如下所示。

    1. $ sudo apt install tcpflow #Debian/Ubuntu  
    2. $ sudo yum install tcpflow #CentOS/RHEL  
    3. $ sudo dnf install tcpflow #Fedora 22+  

    安装TCPflow后,可以用超级用户权限来运行它,不然使用sudo命令。注意:它可侦听活动的网络接口(比如enp0s3)。

    1. $ sudo tcpflow  
    2. tcpflow: listening on enp0s3  

    默认情况下,TCPflow将所有捕获的数据存储在表单中有名称的文件中(如果你使用某些选项,比如timestamp,这可能不一样)。

    1. sourceip.sourceport-destip.destport  
    2. 192.168.043.031.52920-216.058.210.034.00443  

    现在不妨列出目录,看看TCP流量是否已捕获在任何文件中。

    1. $ ls -1  
    2. total 20  
    3. -rw-r--r--. 1 root root 808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443  
    4. -rw-r--r--. 1 root root 59 Sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920  

    如上所述,每路TCP流量存储在各自的文件中。从上面输出可以看出,有三个记录文件(transcript file),这表明TCPflow呈两个截然不同的方向,源IP在第一个文件中,目的地IP在第二个文件中,反之亦然。

    第一个文件192.168.043.031.52920-216.058.210.034.00443含有从主机192.168.043.031(TCPflow运行所在的localhost,通过端口52920)传输到主机216.058.210.034(远程主机,通过端口443)的数据。

    而第二个文件216.058.210.034.00443-192.168.043.031.52920含有从主机216.058.210.034(远程主机,通过端口443)传输到主机192.168.043.031(TCPflow运行所在的localhost,通过端口52920)的数据。

    还生成了一个XML报告,含有关于该程序的信息,比如它是如何编译的、它在哪台计算机上运行以及每条TCP连接的记录。

    你可能注意到了,TCPflow默认情况下将记录文件存储在当前目录下。-o选项可帮助你指定将写入文件的输出目录。

    1. $ sudo tcpflow -o tcpflow_files  
    2. $ sudo ls -l tcpflow_files  
    3. total 32  
    4. -rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986  
    5. -rw-r--r--. 1 root root 45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496  
    6. -rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954  
    7. -rw-r--r--. 1 root root 68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436  
    8. -rw-r--r--. 1 root root 573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443  
    9. -rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443  
    10. -rw-r--r--. 1 root root 38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443  
    11. -rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml  

    你还可以将数据包的内容输出到stdout,并不将任何捕获的数据存储到文件,只需使用-c标志,如下所示。

    想有效地进行测试,打开第二个端口,运行ping,或浏览互联网。你应该能够看到ping细节或浏览细节已被TCPflow捕获。

    1. $ sudo tcpflow -c 

    可以捕获某个端口上的所有流量,比如端口80(HTTP)。以HTTP流量为例,你可以看到HTTP Headers以及随后的内容都在stdout上;如果去除-c参数选项符,它们都在一个文件中。

    1. $ sudo tcpflow port 80 

    想捕获来自某个网络接口的数据包,使用-i标志来指定接口名称。

    1. $ sudo tcpflow -i eth0 port 80 

    还可以指定目标主机(接受的值是IP地址、主机名或域名),如下所示:

    1. $ sudo tcpflow -c host 192.68.43.1 

    OR

    1. $ sudo tcpflow -c host www.google.com 

    你可以使用-a标志,启用使用所有浏览器的所有处理,这相当于-e all参数选项符。

    1. $ sudo tcpflow -a 

    OR

    1. $ sudo tcpflow -e all 

    还可以激活特定的扫描器;可用的扫描器包括md5、http、netviz、tcpdemux和wifiviz(运行tcpflow –H,即可查看关于每个扫描器的详细信息)。

    1. $ sudo tcpflow -e http 

    OR

    1. $ sudo tcpflow -e md5 

    OR

    1. $ sudo tcpflow -e netviz 

    OR

    1. $ sudo tcpflow -e tcpdemux 

    OR

    1. $ sudo tcpflow -e wifiviz 

    下面这个例子显示了如何启用除tcpdemux之外的所有扫描器。

    1. $ sudo tcpflow -a -x tcpdemux 

    TCPflow通常在捕获数据包之前试图让网络接口处于混杂模式。可以使用-p标志来阻止这种模式,如下所示:

    1. $ sudo tcpflow -p -i eth0 

    想读取来自tcpdump pcap文件的数据包,使用-r标志。

    1. $ sudo tcpflow -f file.pcap 

    可以使用-v或-d 10选项启用详细模式。

    1. $ sudo tcpflow -v 

    OR

    1. $ sudo tcpflow -d 10 

    重要提醒:TCPflow的一个局限性是,目前它不了解IP片段,因而可能无法正确捕获作为TCP连接的一部分而传输的含有IP片段的数据。

    想了解更多信息和用法选项,请参阅TCPflow参考手册页。

    1. $ man tcpflow 

    TCPflow Github代码仓库:https://github.com/simsong/tcpflow

    就是这样!TCPflow是一款功能强大的TCP流量记录器,适用于了解网络数据包流量、执行网络取证分析等等。试用一下,欢迎交流心得。

  • 相关阅读:
    jquery 实现 html5 placeholder 兼容password密码框
    php返回json的结果
    使用PHP读取远程文件
    Sharepoint 自定义字段
    Sharepoint 中新增 aspx页面,并在页面中新增web part
    【转】Sharepoint 2010 配置我的站点及BLOG
    JS 实现 Div 向上浮动
    UserProfile同步配置
    【转】Import User Profile Photos from Active Directory into SharePoint 2010
    Sharepoint 2010 SP1升级后 FIMSynchronizationService 服务无法开启
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/9851073.html
Copyright © 2011-2022 走看看