TCPflow:在Linux中分析和调试网络流量的利器(转)
TCPflow是一款功能强大的、基于命令行的免费开源工具,用于在Unix之类的系统(如Linux)上分析网络流量。它可捕获通过TCP连接接收或传输的数据,并存储在文件中供以后分析,采用的格式便于协议分析和调试。
它实际上是类似tcpdump的工具,因为它处理来自网络或存储文件的数据包。它同样支持tcpdump支持的功能强大的过滤表达式。唯一的区别是,tcpflow让所有TCP数据包井然有序,并在单独的文件(每路方向的数据流有一个文件)中组装每路数据流,供以后分析。
功能特性包括一个高级插件系统,用于解压缩压缩的HTTP连接、撤消MIME编码或调用后期处理的第三方程序等等。
TCPflow有许多使用场景,包括了解网络数据包流量,还支持执行网络取证分析和泄露HTTP会话的内容。
如何在Linux系统中安装TCPflow?
TCPflow可以在主流GNU/Linux发行版的官方代码仓库中找到,可以使用软件包管理器安装它,如下所示。
- $ sudo apt install tcpflow #Debian/Ubuntu
- $ sudo yum install tcpflow #CentOS/RHEL
- $ sudo dnf install tcpflow #Fedora 22+
安装TCPflow后,可以用超级用户权限来运行它,不然使用sudo命令。注意:它可侦听活动的网络接口(比如enp0s3)。
- $ sudo tcpflow
- tcpflow: listening on enp0s3
默认情况下,TCPflow将所有捕获的数据存储在表单中有名称的文件中(如果你使用某些选项,比如timestamp,这可能不一样)。
- sourceip.sourceport-destip.destport
- 192.168.043.031.52920-216.058.210.034.00443
现在不妨列出目录,看看TCP流量是否已捕获在任何文件中。
- $ ls -1
- total 20
- -rw-r--r--. 1 root root 808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443
- -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选项可帮助你指定将写入文件的输出目录。
- $ sudo tcpflow -o tcpflow_files
- $ sudo ls -l tcpflow_files
- total 32
- -rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986
- -rw-r--r--. 1 root root 45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496
- -rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954
- -rw-r--r--. 1 root root 68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436
- -rw-r--r--. 1 root root 573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443
- -rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443
- -rw-r--r--. 1 root root 38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443
- -rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml
你还可以将数据包的内容输出到stdout,并不将任何捕获的数据存储到文件,只需使用-c标志,如下所示。
想有效地进行测试,打开第二个端口,运行ping,或浏览互联网。你应该能够看到ping细节或浏览细节已被TCPflow捕获。
- $ sudo tcpflow -c
可以捕获某个端口上的所有流量,比如端口80(HTTP)。以HTTP流量为例,你可以看到HTTP Headers以及随后的内容都在stdout上;如果去除-c参数选项符,它们都在一个文件中。
- $ sudo tcpflow port 80
想捕获来自某个网络接口的数据包,使用-i标志来指定接口名称。
- $ sudo tcpflow -i eth0 port 80
还可以指定目标主机(接受的值是IP地址、主机名或域名),如下所示:
- $ sudo tcpflow -c host 192.68.43.1
OR
- $ sudo tcpflow -c host www.google.com
你可以使用-a标志,启用使用所有浏览器的所有处理,这相当于-e all参数选项符。
- $ sudo tcpflow -a
OR
- $ sudo tcpflow -e all
还可以激活特定的扫描器;可用的扫描器包括md5、http、netviz、tcpdemux和wifiviz(运行tcpflow –H,即可查看关于每个扫描器的详细信息)。
- $ sudo tcpflow -e http
OR
- $ sudo tcpflow -e md5
OR
- $ sudo tcpflow -e netviz
OR
- $ sudo tcpflow -e tcpdemux
OR
- $ sudo tcpflow -e wifiviz
下面这个例子显示了如何启用除tcpdemux之外的所有扫描器。
- $ sudo tcpflow -a -x tcpdemux
TCPflow通常在捕获数据包之前试图让网络接口处于混杂模式。可以使用-p标志来阻止这种模式,如下所示:
- $ sudo tcpflow -p -i eth0
想读取来自tcpdump pcap文件的数据包,使用-r标志。
- $ sudo tcpflow -f file.pcap
可以使用-v或-d 10选项启用详细模式。
- $ sudo tcpflow -v
OR
- $ sudo tcpflow -d 10
重要提醒:TCPflow的一个局限性是,目前它不了解IP片段,因而可能无法正确捕获作为TCP连接的一部分而传输的含有IP片段的数据。
想了解更多信息和用法选项,请参阅TCPflow参考手册页。
- $ man tcpflow
TCPflow Github代码仓库:https://github.com/simsong/tcpflow
就是这样!TCPflow是一款功能强大的TCP流量记录器,适用于了解网络数据包流量、执行网络取证分析等等。试用一下,欢迎交流心得。
TCPflow:在Linux中分析和调试网络流量的利器(转)的更多相关文章
- Linux 中 IDEA 不能调试(Debug)项目
问题描述: can't debug project on idea linux. 在Linux 中, IDEA能运行项目,但是点击调试项目,弹出警告.警告内容如下: Required connecto ...
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...
- linux中重启网卡后网络不通(NetworkManager篇)
1.问题描述 RHEL7.6系统,使用nmcli绑定双网卡后,在使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. systemctl restart network ...
- Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置
博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...
- Linux中oops信息调试【转】
1.Oops 信息来源及格式 Oops 这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息. 2.Oops 信息包含以下几部分内容 2.1 一段文本描述信息. ...
- Linux中C程序调试、makefile
gcc基本语法格式:gcc [-选项] 源文件 [-选项] 目标文件,GCC编译C程序的过程: 预处理:gcc -E hello.c hello.i.-E指定执行到预处理结束,下面类似. 编译:gcc ...
- Linux中获取本机网络信息的几个函数及应用
一.读取/etc/hosts 几个函数 头文件<netdb.h> 1.void sethostent(int stayopen);//开打/etc/hosts 配置文件 2.struct ...
- Linux中的gdb调试方法总结
- linux nethogs-终端下的网络流量监控工具
推荐:更多linux 性能监测与优化 关注:linux命令大全 有很多适用于Linux系统的开源网络监视工具.比如说,你可以用命令iftop来检查带宽使用情况.netstat用来查看接口统计报告,还有 ...
随机推荐
- 手把手教你nginx/linux下如何增加网站
先进入到nginx的配置文件目录请输入以下命令 cd /alidata/server/nginx/conf/vhosts 再输入 ll 看看是不是像下面截图的一样 用神器xftp将default. ...
- 1.新手上路:Windows下,配置Qt环境
个人体会: 我最初只是想看看C++除了"黑窗口"之外,怎么才能做一些"更好看的东西".之后在网上看到有人推荐Qt,就看了一下官网(https://www.qt. ...
- mysql-介绍、MySQL部署、数据类型、存储引擎
数据库介绍 什么是数据? 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材.数据是信息的表现形式和载体,可以是符号.文字.数字.语音.图像.视频等. ...
- vue 脚手架的使用 vue-cli
本文记录vue-cli的使用.在安装vue-cli之前,我们先来检查一下本地node和npm的版本,node版本要大于8,npm版本要大于6,低于这个版本的最好升级下,我node升级的时候,用命令行没 ...
- Java多态特性:重载和覆写的比較
Java重载: 在同一个类中 方法具有同样的名字,同样或不同的返回值,但參数不同的多个方法(參数个数或參数类型) public class MethoDemo{ public static void ...
- 一个兼容性比较好的图片左右滚动的js
下载地址:http://www.cnblogs.com/RightDear/admin/Files.aspx 文件:shhds.rar
- cocos2d-js v3事件管理器
总概: 1.时间监听器(cc.EventListener)封装用户的事件处理逻辑. 2.事件管理器(cc.eventManager)管理用户注册的事件监听器. 3.事件对象(cc.Event)包含事件 ...
- js 中常用的正则表达式
主要有以下几种: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了哦 获取日期正则表达式:\d{4}[年|\-|\.]\d{1,2}[ ...
- target!
工作到现在也有8个月了,从学生时代想从事嵌入是开发,到工作中从事android开发,跨度还是比较大的:曾经想从事这些消费类电子产品的开发,想从一个用户变成一个生产者,但是真正进入到这一行之后,才知道在 ...
- hihocoder 挑战赛9 A.好配对(思维题目 防止超时)
#1123 : 好配对 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个序列a和b,每个序列中可能含有重复的数字. 一个配对(i,j)是一个好配对当从第一个序列中选 ...