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进行图形查看更好理解。