神探tcpdump第五招

2023-10-15 13:10
文章标签 tcpdump 神探 第五招

本文主要是介绍神探tcpdump第五招,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前四招都是围绕tcpdump的选项来介绍的,从这招起,我们会把目光转向更加常用的“过滤表达式”内容。

    通过这几招的学习,你将具备“心无旁骛,潜心专注”的武功。

    ==

    【师傅领进门】

    可以给tcpdump传送“过滤表达式”来起到网络包过滤的作用,而且可以支持传入单个或多个过滤表达式,从这一点来说tcpdump还是很大肚能容的。

     当你传入的过滤表达式含有shell通配符时,别忘使用单引号把表达式括起来,以防shell自作主张的把含有通配符的表达式先进行了解释和通配。

    如果你希望自己研究“过滤表达式”,没问题,我会告诉你如何“进门”,方法就是:

man pcap-filter

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

    【我只想抓UDP的包,不想被TCP的包打扰】

# tcpdump -i eth0 -c 10 \'udp\'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:25:20.801612 IP 116.255.245.48.54808 > 229.111.112.12.csd-mgmt-port: UDP, length 4
11:25:20.802120 IP 116.255.245.206.54313 > ns.sc.cninfo.net.domain: 5256+ PTR? 12.112.111.229.in-addr.arpa. (45)
11:25:21.145126 IP ns.sc.cninfo.net.domain > 116.255.245.206.54313: 5256 NXDomain 0/0/0 (45)
11:25:21.145315 IP 116.255.245.206.46658 > ns.sc.cninfo.net.domain: 15551+ PTR? 48.245.255.116.in-addr.arpa. (45)
11:25:21.153966 IP 116.255.245.43.62220 > 229.111.112.12.csd-mgmt-port: UDP, length 4
11:25:21.180135 IP 116.255.245.61.hsrp > all-routers.mcast.net.hsrp: HSRPv0-hello 20: state=active group=21 addr=116.255.245.33
11:25:21.231151 IP ns.sc.cninfo.net.domain > 116.255.245.206.46658: 15551 NXDomain 0/0/0 (45)
11:25:21.231430 IP 116.255.245.206.46158 > ns.sc.cninfo.net.domain: 31924+ PTR? 69.2.139.61.in-addr.arpa. (42)
11:25:21.277087 IP ns.sc.cninfo.net.domain > 116.255.245.206.46158: 31924 1/0/0 PTR ns.sc.cninfo.net. (72)
11:25:21.277824 IP 116.255.245.206.42656 > ns.sc.cninfo.net.domain: 806+ PTR? 206.245.255.116.in-addr.arpa. (46)
10 packets captured
20 packets received by filter
0 packets dropped by kernel

    举这个例子,是为了说明tcpdump具有根据网络包的协议来进行过滤的能力,我们还可以把udp改为ether、ip、ip6、arp、tcp、rarp等。

     或许你会提问“为啥这些协议里没有应用层协议呢?”,其实理由很简单,应用层协议非基础类网络协议,经常会新增或淘汰,tcpdump不会深入到应用层部分去智能解析。所以,你现在看到的tcpdump支持的protocol都是应用层以下的。

    【我想专门查看这个源机器和那个目的机器之间的网络包,不想被其他无关的机器打扰】

    这个其实很简单,也很直观,只要设置src(source)和dst(destination)就好了,而且方便的是,tcpdump还支持使用and和or来进行搭配组合呢!

     如果没有设置的话,默认是src or dst。

# tcpdump -i eth0 \'dst 8.8.8.8\'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:21:23.281978 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 1, length 64
13:21:24.286663 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 2, length 64
13:21:25.288612 IP 116.255.245.206 > google-public-dns-a.google.com: ICMP echo request, id 23081, seq 3, length 64
^C
3 packets captured
5 packets received by filter
0 packets dropped by kernel

    【我只想查目标机器端口是53或80的网络包,其他端口的我不关注】

# tcpdump -i eth0 -c 3 \'dst port 53 or dst port 80\'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:29:04.530130 IP 114.255.192.96.29832 > 116.255.245.206.http: Flags [S], seq 3169042560, win 5840, options [mss 1460,sackOK,TS val 2949111416 ecr 0], length 0
13:29:04.530660 IP 116.255.245.206.43211 > ns.sc.cninfo.net.domain: 40188+ PTR? 206.245.255.116.in-addr.arpa. (46)
13:29:04.548589 IP 114.255.192.96.29832 > 116.255.245.206.http: Flags [.], ack 3709396068, win 5840, options [nop,nop,TS val 2949111475 ecr 1601243970], length 0
3 packets captured
10 packets received by filter
0 packets dropped by kernel

    我们可以设置过滤类型,上面例子中我们使用了port这个类型,就是来指定端口。当然,tcpdump还支持如下的类型:

     1 host:指定主机名或IP地址,例如’host roclinux’或’host 202.112.18.34′

     2 net :指定网络段,例如’arp net 128.3′或’dst net 128.3′

     3 portrange:指定端口区域,例如’src or dst portrange 6000-6008′

    如果我们没有设置过滤类型,那么默认是host。

转载于:https://my.oschina.net/leejun2005/blog/77475

这篇关于神探tcpdump第五招的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217925

相关文章

网络故障排查和tcpdump抓包

网络故障排查: ping一台服务器不通,你如何排查 检查本机ip地址设置  网关和dns服务器是否设置正确 或者ip地址冲突能否上网 看路由器是否有问题 ping服务器是否运行服务器禁止ping   防火墙设置 iptables -A INPUT -P ICMP -j DROPiptables -D INPUT -P ICMP -j DROP用户不能访问服务器 怎么排查 检查用户网络连接检查服

Linux - Tcpdump命令

一、说明    是一个用于抓取网络数据包并输出的工具,命令格式如下: tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F expr_file ][ -i interface ] [ -m module ] [ -M secret ][ -r read_file ] [ -s snaplen

通过GRE封装前的IP地址tcpdump抓包

GRE封装IP层数据后导致抓包抓的是GRE的包,直接抓包会很大,所以希望通过里层的IP来抓包。 如下的测试数据包,最外层IP对:172.27.1.66-66.59.109.137,封装了66.59.111.190-172.28.2.3的数据包。此时我们只想抓取66.59.111.190-172.28.2.3这个相关的数据包。 通过对IP层数据的偏移位置来直接匹配数据 找到IP层开始的位置

tcpdump抓取tcp的三次握手

tcpdump抓取tcp的三次握手 先要打开两个终端,打开root权限 输入 telnet www.baidu.com 80 查询一下IP号,然后输入ctrl+] 以及quit退出 administrator@ubuntu:~$ sudo su[sudo] password for administrator: root@ubuntu:/home/administrator#

tcpdump 命令详解

1、抓取回环网口的包:tcpdump -i lo 2、防止包截断:tcpdump -s0 3、以数字显示主机及端口:tcpdump -n 关键字说明  第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是

linux命令详解--tcpdump

http://www.tuicool.com/articles/26nmqy

linux 命令之tcpdump

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句来删选去掉无用的信息。 tcpdump选项说明: -A 以ASCII格式打印出所有分组,并将链路层的头最小化-c 在收到指定的数量的分组后,tcpdump就会停止-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参

使用adb将tcpdump的流量导到wireshark

搭建环境 1、下载安 装adb 如果之前电脑里有装Android SDK,那么在 Android SDK 的 Tools 里面有 adb 工具, 将adb配到环境变量里 2、下载安装windows 端 netcat 工具 安装好后配到环境变量里 3、下载安装android 端 netcat 工具(手机要Root) 可以下载 Bu

Linux网络命令——tcpdump

tcpdump是Linux下的一个网络数据采集分析工具,也就是常说的抓包工具 tcpdump 核心参数 tcpdump [option] [proto] [dir] [type] 例如:$ tcpdump -i eth0 -nn -s0 -v port 80 option 可选参数: -i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该

tcpdump 命令对容器内的网络请求抓包的方法

记录一种在不进入容器的情况下对容器进行抓包的方法。 方法介绍 简单来说就是找到容器所用的网卡,然后在 host 机器上对该网卡进行抓包就可以了 :joy 操作示例 找到这个容器使用的网卡: $ PID=$(docker inspect --format {{.State.Pid}} test2)$ nsenter -n -t $PID ip addr1: lo: <LOOPBACK,U