代码改变世界

网络抓报文TCPDUMP

2020-09-24 17:47  宋海宾  阅读(580)  评论(0编辑  收藏  举报

# 1。 安装

yum install tcpdump

保存报文到一个文件中的方式:
   tcpdump 'dst port 3306 or src port 3306' -w capmysql.cap
 


PC 机源地址:106.11.34.10.27926
iz8vb1p4olazw5f54audn3z.14310

tcpdump 'net 192.168.0.148' -w monitor.cap

tcpdump -i eth0 -c 3 'host 172.16.0.11 and (210.45.123.249 or210.45.123.248)'


tcpdump 'dst port 14310 or dst port 1921 or src port 14310 or src port 1921'

drds数据库
tcpdump 'dst port 14312 or dst port 3306 or src port 14312 or src port 3306'


# 2。查看HTTP GET请求
tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

# 3。查看HTTP POST请求
tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

# 4。命令行格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]
常用的参数:

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

-n    不把网络地址转换成名字;

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

-i    指定监听的网络接口;(如果没有指定可能在默认网卡上监听,需要指定绑定了特定IP的网卡)

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

-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了

-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出

常用表达式:

关于类型的关键字,主要包括host,net,port

传输方向的关键字,主要包括src , dst ,dst or src, dst and src

协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型

逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'||'

其他重要的关键字如下:gateway, broadcast,less,greater

1、抓取回环网口的包:tcpdump -i lo

2、防止包截断:tcpdump -s0

3、以数字显示主机及端口:tcpdump -n

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


tcpdump -i eth0 port 1111 -l | awk '{print $1}'



tcpdump过滤语句介绍
可以给tcpdump传送“过滤表达式”来起到网络包过滤的作用,而且可以支持传入单个或多个过滤表达式。

可以通过命令 man pcap-filter 来参考过滤表达式的帮助文档

过滤表达式大体可以分成三种过滤条件,“类型”、“方向”和“协议”,这三种条件的搭配组合就构成了我们的过滤表达式。

关于类型的关键字,主要包括host,net,port, 例如 host 210.45.114.211,指定主机 210.45.114.211,net 210.11.0.0 指明210.11.0.0是一个网络地址,port 21 指明

端口号是21。如果没有指定类型,缺省的类型是host.

关于传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,

这些关键字指明了传输的方向。举例说明,src 210.45.114.211 ,指明ip包中源地址是210.45.114.211, dst net 210.11.0.0 指明目的网络地址是210.11.0.0 。如果没有指明

方向关键字,则缺省是srcor dst关键字。

关于协议的关键字,主要包括 ether,ip,ip6,arp,rarp,tcp,udp等类型。这几个的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的

信息包。

如我们只想抓tcp的包命令为: sudo tcpdump -i eth0 -nn -c1 'tcp'


(1)只想查目标机器端口是21或80的网络包,其他端口的我不关注:

  sudo tcpdump -i eth0 -c 10 'dst port 21 or dst port 80'

(2) 想要截获主机172.16.0.11 和主机210.45.123.249或 210.45.123.248的通信,使用命令(注意括号的使用):

  sudo tcpdump -i eth0 -c 3 'host 172.16.0.11 and (210.45.123.249 or210.45.123.248)'

(3)想获取使用ftp端口和ftp数据端口的网络包

sudo tcpdump 'port ftp or ftp-data'