linux抓包命令,linux教程

今天给各位分享linux抓包命令的知识,其中也会对linux教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

linux 抓包命令

linux系统下抓包命令是什么呢?下面是具体介绍:

linux系统下抓包命令是:tcpdump。

1、tcpdump命令简介是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump适用于大多数的类Unix系统操作系统(如linux,BSD等)。类Unix系统的 tcpdump需要使用libpcap这个捕捉数据的库就像 windows下的WinPcap。

2、Tcpdump的形式:

例:tcpdump–i eth0’port 1111‘-X-c 3

-X告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

tcpdump采用命令行方式,它的命令格式为:

tcpdump [-adeflnNOpqStvx ] [-c数量 ] [-F文件名 ]

[-i网络接口 ] [-r文件名] [-s snaplen ]

[-T类型 ] [-w文件名 ] [表达式 ]

3、tcpdump的选项介绍

-a:将网络地址和广播地址转变成名字;

-d:将匹配信息包的代码以人们能够理解的汇编格式给出;

-dd:将匹配信息包的代码以c语言程序段的格式给出;

-ddd:将匹配信息包的代码以十进制的形式给出;

-e:在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;

-f:将外部的Internet地址以数字的形式打印出来;

-l:使标准输出变为缓冲行形式;

-n:指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;

-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示

-t:在输出的每一行不打印时间戳;

-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-vv:输出详细的报文信息;

-c:在收到指定的包的数目后,tcpdump就会停止;

-F:从指定的文件中读取表达式,忽略其它的表达式;

-i:指定监听的网络接口;

-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用

-r:从指定的文件中读取包(这些包一般通过-w选项产生);

-w:直接将包写入文件中,并不分析和打印出来;

-s snaplen:snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump只显示部分数据包,默认68字节。

-T:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;)

-X:告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

linux抓包命令tcpdump

tcpdump是一个功能强大的命令行数据包分析器,它通过监听服务器的网卡获取数据包,可用于分析所有网络访问的数据。此工具还具有过滤功能,可以获取特定网络、端口或协议的数据包。

程序员在日常问题排查中,常利用过滤功能获取特定端口的数据包,以分析服务器是否收到请求,请求数据是否完整。

tcpdump命令的参数丰富,本文仅介绍常用参数:

参数-c count表示指定数量的数据包,达到count后结束命令;若不使用此参数,程序将持续抓取数据包,直到手动停止。

参数-C file_size在抓取数据包保存到文件时,通过此命令设定文件大小。文件达到指定大小后,将创建以原文件名加序号的新文件,例如 dump.txt, dump.txt1。单位为字节(b)。

参数-D列出服务器的所有网卡,tcpdump默认监听编号最小的网卡(一般为eth0)。在执行抓包时,可通过参数-i interface指定监听的网卡,any表示监听所有网卡。

参数-n输出结果时,不将IP转换为主机名(默认显示主机名)。

参数-q快速输出,仅显示简要的数据包信息。

参数-r file从文件读取数据包,不再从网络获取数据包。

参数-t不输出时间戳。

参数-w file将抓取的数据包保存到指定文件,与参数-r结合使用时,从文件中读取数据包。

参数-W filecount指定文件数量,文件滚动到指定数量后,从第一个文件开始覆盖。

除了上述参数,还存在用于条件过滤的关键字,如:

参数-host过滤主机,例如 tcpdump host 192.168.1.110只抓取经过此IP的数据包。

参数-src用于过滤请求来源方,如 tcpdump src host 192.168.1.110只抓取从此IP过来的数据包。

参数-dst用于过滤请求接收方,例如 tcpdump dst host 192.168.1.110只抓取发送到此IP的数据包。

参数-port过滤端口,如 tcpdump port 8080只抓取经过8080端口的数据包。

参数-net过滤网络,如 tcpdump net 192.168只抓取经过此网段的数据包。

逻辑操作符如-and、not、or用于条件组合,例如 tcpdump net 192.168 and port 8080抓取特定网络和端口的数据包。

数据包分析结果如下:

时间戳:时:分:秒.微秒

IP协议名称

请求发送方IP和端口>请求接收方IP和端口。端口可能显示为协议名,如HTTP、SSH、MySQL等。

Flags [R]

标识和状态,可选状态包括 [S.] [.] [P.] [F.][R]

seq、ack、fin

表示TCP协议的握手和挥手过程。seq表示请求序列号,ack是回答序列号,fin表示完成。序列号显示为相对值,使用参数-S可显示绝对值。

win

当前窗口大小

length

报文体长度,此长度可用于简单分析是否正确接收请求。

利用以上信息可进行基本分析,通过参数-w将数据包写入文件,文件中包含更详细信息,借助分析工具如Wireshark进行进一步分析。

常用命令示例:

抓取8080端口的数据包

抓取从192.168.1.110发送到192.168.1.111的数据包

抓取192.168网段除了192.168.1.110的请求数据包

抓取8080端口的数据包并写入dump.log文件

注意事项:

1.运行tcpdump需要管理员权限,可通过sudo命令或使用root用户。

2.通过length字段只能进行简单判断,欲进行详细分析,需借助数据包分析工具,如Wireshark。

Linux的命令行下抓包工具tcpdump的使用图文介绍

我们使用Linux服务器,有些时候需要抓取其中的数据包进行分析攻击的类型以及特征,这样就可以根据特征在防火墙上面进行拦截防护了,在Linux的命令行里边我们需要借助tcpdump软件进行抓包,下面小编与大家分享一下tcpdump的使用,希望对大家有所帮助,谢谢。

工具/原料

Centos 6.5服务器

电脑一台

方法/步骤

1、默认系统里边没有安装有tcpdump的,无法直接使用

2、这里我们可以使用yum来直接安装它

yum install-y tcpdump

3、如果忘记了这个软件的用法,我们可以使用 tcpdump--help来查看一下使用方法

4、一般我们的服务器里边只有一个网卡,使用tcpdump可以直接抓取数据包,但是这样查看太麻烦了,所以都会添加参数来进行获取的。

例如我截取本机(192.168.31.147)和主机114.114.114.114之间的数据

tcpdump-n-i eth0 host 192.168.31.147 and 114.114.114.114

5、还有截取全部进入服务器的数据可以使用以下的格式

tcpdump-n-i eth0 dst 192.168.31.147

或者服务器有多个IP可以使用参数

tcpdump-n-i eth0 dst 192.168.31.147 or 192.168.31.157

6、我们抓取全部进入服务器的TCP数据包使用以下的格式,大家可以参考下

tcpdump-n-i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp

从本机出去的数据包

tcpdump-n-i eth0 src 192.168.31.147 or 192.168.31.157

tcpdump-n-i eth0 src 192.168.31.147 or 192.168.31.157 and port! 22 and tcp

或者可以条件可以是or和 and配合使用即可筛选出更好的结果。

注意事项

使用还是比较简单的,可以考虑把数据包保存再拷出来,然后用wireshark进行图形查看更好理解。

阅读剩余
THE END