挖了一个tcpdump,哈哈哈

1、tcpdump简介

tcpdump 是 dump traffic on a network;
tcpdump 可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

yum install -y tcpdump

2、tcpdump示例

1、默认启动
普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

tcpdump

2、监视指定网络接口的数据包

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。 
tcpdump -i eth1

3、其他示例

1.使用host并指定ip进行过滤
tcpdump host 192.168.116.10
2.基于源ip和目标ip进行过滤
tcpdump src host 192.168.116.10
tcpdump dst host 192.168.116.10
3.基于源端口过滤
tcpdump src port 22
4.基于两个端口过滤
tcpdump src port 22 or port 8080
5.基于ssh协议过滤
tcpdump src port ssh
6.基于tcp协议过滤
tcpdump port tcp
7.-n:不把ip转换成域名,直接显示ip
tcpdump tcp -n
8.-nn:不把协议和端口号转换成名字
tcpdump tcp port ssh -nn
9.-N:不打印host的域名部分
tcpdump tcp port ssh -Q out -N
10.使用-w参数,文件格式为.pcap或.cap
tcpdump tcp -w tcp.pcap
11.使用-w参数,文件格式为.pcap或.cap
tcpdump tcp -r tcp.pcap

12.【and:逻辑并,同&&】【or:逻辑或,同||】 【not 逻辑非,同!12.1.抓取ip地址为192.168.116.10,并且端口为54321的包
tcpdump -i any host 192.168.116.10 and port 54321
12.2.抓取ip地址为192.168.116.10,并且端口为54321或者端口为51111的包
tcpdump -i any 'host 192.168.116.10 and (port 54321 && port 51111)'

3、tcpdump与wireshark

Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1) tcp : ip icmp arp rarp tcp udp icmp 这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
(2) -i eth1 : 只抓经过接口eth1的包。
(3) -t : 不显示时间戳。
(4) -s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包。
(5) -c 100 : 抓取100个数据包退出。Exit after receiving count packets。
(6) dst port ! 22 : 不抓取目标端口是22的数据包。
(7) src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24。
(8) -w ./target.cap : 保存成cap文件,方便用wireshark分析。

1、抓取所有网络包,并在terminal中显示抓取的结果,将包以十六进制的形式显示。
tcpdump 
2、抓取所有的网络包,并存到 result.cap 文件中。
tcpdump -w result.cap
3、抓取所有的经过eth0网卡的网络包,并存到 result.cap 文件中。
tcpdump -i eth0 -w result.cap
4、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump src host 192.168.1.100 -w result.cap 
5、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump host 192.168.1.100 -w result.cap 
6、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump dest host 192.168.1.100 -w result.cap 
7、抓取主机地址为 192.168.1.100 的数据包
tcpdump -i eth0 -vnn host 192.168.1.100
8、抓取包含192.168.1.0/24网段的数据包
tcpdump -i eth0 -vnn net 192.168.1.0/24
9、抓取网卡eth0上所有包含端口22的数据包
tcpdump -i eth0 -vnn port 22
10、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:
tcpdump udp  -i eth0 -vnn
11、抓取经过 eth0 网卡的源 ip192.168.1.100 数据包,src参数表示源。
tcpdump -i eth0 -vnn src host 192.168.1.100
12、抓取经过 eth0 网卡目的 ip192.168.1.100 数据包,dst参数表示目的。
 tcpdump -i eth0 -vnn dst host 192.168.1.100
13、抓取源端口是22的数据包
tcpdump -i eth0 -vnn src port 22
14、抓取源ip是 192.168.1.100 且目的ip端口是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22
15、抓取源ip是192.168.1.100或者包含端口是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22
16、抓取源ip是192.168.1.100且端口不是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 and not port 22
17、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的数据包。
tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )
18、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。
tcpdump –i eth0 -vnn -w /tmp/result -c 100
19、从/tmp/result记录中读取tcp协议的数据包
tcpdump -i eth0  tcp  -vnn -r /tmp/result
20、想要截获所有192.168.1.100 的主机收到的和发出的所有的数据包:
tcpdump host 192.168.1.100
21、如果想要获取主机192.168.1.100除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.1.100 and ! 192.168.1.101
22、如果想要获取主机 192.168.1.100 接收或发出的 telnet 包,使用如下命令:
tcpdump tcp port 23 host192.168.1.100

3、tcpdump文件不完整解决方案

在这里插入图片描述
要避免这种情况,就需要使用合理的方式正常结束tcpdump.

3.1、使用 Ctrl + c 给tcpdump发送终止信号

在这里插入图片描述

3.2、使用timeout命令正常终止tcpdump

在10秒钟之后,tcpdump就会正常退出。
timeout 10 tcpdump -i any -w test.cap 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值