首页 > 系统相关 >Linux:tcpdump抓包指令

Linux:tcpdump抓包指令

时间:2024-04-15 11:48:22浏览次数:27  
标签:dst host Linux 172.18 tcpdump 200.200 抓包 eth0

学习自:Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收! - Linux云计算网络 - SegmentFault 思否

tcpdump命令详解_tcpdump抓包命令-CSDN博客

1、用途

tcpdump是一个Linux平台抓包工具。

它可以抓取涵盖整个TCP/IP协议族的数据包,支持对网络层、协议、主机、端口的过滤,并提供and、or、not等逻辑语句来过滤无用的信息。

2、用法

①tcpdump [选项 参数] [not] [过滤器]

3、说明

1)[选项 参数]

选项后边紧跟着这个选项的参数

选项

参数

(不写代表无参)

说明

-A

 

只用ASCII打印报文的全部数据。

与参数-X冲突。

-b ip、arp、rarp、ipx 数据链路层上选择协议,包括ip、arp、rarp、ipx
-c 数字 抓包数量
-D   列出OS所有可用于抓包的接口
-e   打印链路层的报文首部
-i

网卡名、any

-i 网卡名:指定监听网卡

-i any:监听所有网卡

-n  

不解析主机名,直接用IP显示。

默认用hostname显示

-nn  

不解析主机名和端口,直接用Port显示。

默认显示Port对应的服务名。

-p   关闭接口的混杂模式
-P

in、out、inout

指定抓取的包是进入还是流出的,可选参数有in、out、inout

默认inout。

-q   快速打印输出,只输出少量的协议相关信息。
-s 数字

设置要抓取的包长,默认96B。

如果-s 0,会截取全部内容

-S   绝对值形式输出TCP序列号,缺省时以相对值形式输出
-t   不打印时间戳
-vv   输出详细信息
-w 某个pcap文件的路径 输出到指定pcap文件
-X   同时用hex和ascii显示报文头
-XX   同-X,但同时显示以太网首部

2)过滤器

用途:对抓取的包进行过滤,排除无用包

用法:tcpdump [选项 参数] [过滤器 参数]

参数:参数可以是多个合法参数的逻辑组合(使用and、or、!)

类型:

  • proto:协议
  • dir:报文方向
  • type:类型

不同类型的过滤器可以同时使用,但此时需要用逻辑运算符(and、or、!)来表示它们之间的关系

过滤器类型 选项及后跟参数 说明
proto

ip、arp、rarp、tcp、udp、icmp、ether。默认全部。

单独使用,无参

 
dir

src、dst、src and dst、src or dst(默认)

单独使用,无参。

该项不能用于修饰proto,只能用于修饰type
type

host IP

net 网段前缀

port 端口

portrange(端口范围)

 

3)过滤器的例子

①过滤主机

a)抓取主机172.18.82.173上所有收到、发出的数据包

 

tcpdump host 178.18.82.173

b)抓取主机172.18.82.173上经过指定网卡eth0的所有包

 

tcpdump -i eth0 host 172.18.82.173

3)抓取经过网卡eth0,从主机172.18.82.173发出的包、发往主机172.18.82.173的包

tcpdump -i eth0 src host 172.18.82.173
tcpdump -i eth0 dst host 172.18.82.173

4)抓取200.200.200.1和(200.200.200.2或200.200.200.3)通信的包

抓取200.200.200.1和除了200.200.200.2之外所有主机通信的包

说明:

  • 1)host之后的表达式中要用到逻辑关系;

  • 2)表达式中的特殊符号如括号()需要加转义符,或者用单引号

tcpdump host 200.200.200.1 and \(200.200.200.2 or 200.200.200.3\)
tcpdump host 200.200.200.1 and '(200.200.200.2 or 200.200.200.3)'

tcpdump ip host 200.200.200.1 and ! 200.200.200.2

 

②筛选端口

tcpdump port 22
tcpdump src port 22
tcpdump dst port 22
tcpdump -i eth0 port 22

#发送到host 172.18.82.173的网卡eth0,接收端口为22的包
tcpdump -i eth0 dst host 172.18.82.173 and port 22

③筛选网段

tcpdump net 172.18.82
tcpdump src net 172.18.82
tcpdump dst net 172.18.82

④筛选协议

tcpdump -i eth0 icmp
tcpdump -i eth0 ip
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 arp

协议是双向的,不能用src、dst修饰。

 

4)参数的例子

①-n和-nn

-n:不显示主机名,显示通信协议。将主机名用IP表示。

-nn:不显示主机名和通信协议,将主机名用IP表示,将通信协议用通信端口表示

#只接收一个包
tcpdump -c 1

10:32:45.830452 IP hostname.ssh > 172.29.94.103.57782


#-n
tcpdump -c 1 -n

10:32:45.830452 IP 172.29.198.119.ssh > 172.29.94.103.57782

#-nn
tcpdump -c 1 -n

10:32:45.830452 IP 172.29.198.119.22 > 172.29.94.103.57782

②序列号 -S

TCP通信时有两种序列号,seq和ack

-S代表了以绝对值或相对值的形式显示这两种序列号,通常情况下绝对值序列号会是一个很大的数。

tcpdump -nS
…… seq 2589090780:2589090988 ack 4014984328……

tcpdum -n
…… seq 288:704 ack 1

③逻辑表达式

tcpdump -c 5 tcp and port 22 and dst host 172.29.198.119

如果用到了括号,需要用转义符单引号,其中单引号更方便一些:

tcpdump -i eth0 -nntvv '((dst net 172.18) and (not dst host 172.18.82.173) and (tcp) and (not port 22))'

tcpdump -i eth0 -nntvv \(dst port 22 and host 172.198.10.22 \)

  

4、结合wireshark

tcpdump抓包时,默认打印到屏幕,这在包很多的时候会来不及看清内容。

此时可以用参数-w把抓取到的数据保存到文件:

tcpdump [选项 参数] [过滤选项 参数] -w 文件名.pcap

.pcap文件需要用wireshark工具查看,不能用vim或cat。

有时候我们为了对抓取的包进行区分,通常把文件名中加入时间、日期等变量,此时上式可以写为:

tcpdump [选项 参数] [过滤选项 参数] -w /tmp/%Y%m%d_%H%M.pcap

其中的%Y、%m、%d、%H、%M为各时间项的格式化表示形式(完整版如下)。

%y 两位数的年份表示 (00-99)
%Y 四位数的年份表示 (0000-9999)
%m 月(01-12)
%d 日(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟(00-59)
%S 秒(00-59)
%a 星期几,简写
%A 星期几,完整
%b 月份,简写
%B 月份,完整
%c 本地的日期、时间表示
%j 一年第几天 (001-366)
%p 本地A.M.或P.M.等价符
%U 一年第几周(00-53),星期天为一周开始
%w 星期几,数字(0-6)
%W 一年第几周(00-53),星期一为一周开始
%x 本地日期
%X 本地时间,13:22:44这种形式
%Z 当前时区名称
%% 转义%
%f 微秒

 

标签:dst,host,Linux,172.18,tcpdump,200.200,抓包,eth0
From: https://www.cnblogs.com/ShineLeBlog/p/18135595

相关文章

  • Linux系统时间与硬件时钟同步
    由于机房没做时间同步服务器,就只能依赖机器的时钟固件了。服务器断电后,服器内置的BIOS芯片的小电池也会继续供电,在硬件时钟层面持续记录时间(需要电池有电)。假如硬件时间与实际时间不一致,硬件时间存储的CST时间(应该存储UTC),断电重启后系统会读取硬件时间作为系统时间,导致系统时间快......
  • 2024年8个最佳Linux IRC客户端整理
    IRC(InternetRelayChat)客户端是用户可以安装在其计算机上的程序,它可以向IRC服务器发送消息或从IRC服务器接收消息。它只是将您连接到IRC服务器的全球网络,并支持一对一和群组通信。尽管IRC被认为是一种老式的在线交流方式,但出于某种原因,仍有许多用户使用IRC 。但不要谈......
  • 在Linux中,如何配置和管理iSCSI目标和发起器?
    在Linux中,iSCSI(InternetSmallComputerSystemInterface)是一种将SCSI接口封装在TCP/IP协议中,从而允许在IP网络上进行数据块级存储的技术。iSCSI目标是提供存储的服务器,而iSCSI发起器是访问存储的客户端。1.配置iSCSI目标安装iSCSI目标软件:在目标服务器上安装targetctl和li......
  • 在Linux中,如何使用NFS和Samba共享文件和目录?
    在Linux中,NFS(NetworkFileSystem)和Samba是两种常用的文件共享协议,分别用于在Unix-like系统之间以及跨Linux和Windows系统共享文件和目录。下面分别详细介绍如何使用它们:1.使用NFS共享文件和目录安装NFS服务:对于基于Debian/Ubuntu的系统:sudoapt-getupdatesudoapt-geti......
  • 在Linux中,如何管理和优化文件系统的性能?
    在Linux中,管理和优化文件系统的性能是确保系统高效运行的关键。以下是一些提高文件系统性能的方法:1.选择合适的文件系统类型不同的文件系统类型具有不同的性能特点。例如,ext4提供了良好的性能和稳定性,而XFS则在处理大文件和大量数据时表现更优。根据你的应用需求选择合适的文件......
  • 在Linux中,如何使用fstab文件配置自动挂载?
    在Linux系统中,/etc/fstab是一个非常重要的系统配置文件,用于定义文件系统及其挂载点,以及它们如何在系统启动时自动挂载。当你想要确保某些磁盘分区或者存储设备在系统启动后自动加载并可用时,你需要编辑这个文件。以下是通过/etc/fstab配置自动挂载的详细步骤:1.确认设备和挂载......
  • 在Linux中,如何进行文件系统的迁移和升级?
    在Linux中,文件系统的迁移和升级是涉及数据完整性和系统稳定性的重要操作。以下是进行文件系统迁移和升级的一般步骤:1.文件系统迁移文件系统迁移通常涉及将数据从一个文件系统迁移到另一个文件系统,例如从ext3迁移到ext4,或者从一个分区迁移到另一个分区。备份数据:在进行任何......
  • 修复或重新安装debian12linux的/boot分区,efi引导
    一.使用live系统二.挂载块设备三.chroot到/mnt,用arch-chroot比较方便四.开始重新安装/boot下的文件有config-6.1.0-18-amd64grub System.map-6.1.0-18-amd64efi initrd.img-6.1.0-18-amd64vmlinuz-6.1.0-18-amd64注意我的是amd架构,换成你的架构1.efi......
  • ubuntu Linux kernel升级导致英伟达显卡驱动失效
    Linuxkernel升级导致英伟达显卡驱动失效报错nvidia-smiNVIDIA-SMIhasfailedbecauseitcouldnotcommunicatewiththeNVIDIAdriver.MakesurethatthelatestNVIDIAdriverisinstalledandrunning.#或者nvidia-smiNvidiaNVMLDriver/libraryversionmisma......
  • Linux-用户管理-查看用户命令id-/etc/passwd-/etc/shadow-系统中用户的约定和规范
    1.Linux下的用户有什么作用1)系统上的每一个进程(运行的程序)都需要特定的用户运行2)每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制3)进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关  2.用户相关查看命令命令:id#语法id[option......