zoukankan      html  css  js  c++  java
  • 48、tcpdump简单使用

    1、说明

    tcpdump - dump traffic on a network

    tcpdum option

    tcpdump [-adeflnNOpqStvx] [-c 数量][-F 文件名][-i 网络界面][-r 文件名][-s snaplen][-T 类型][-w 文件名][表达式]

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

    系统时间 来源主机.端口 > 目标主机.端口 数据包参数

    07:40:51.668134 IP 192.168.161.160 > 10.6.12.8: ICMP echo request, id 12587, seq 5, length 64

    07:40:51.671144 IP 10.6.12.8 > 192.168.161.160: ICMP echo reply, id 12587, seq 5, length 64

    tcpdump过滤出来的数据用Ethereal 来分析。

    2、option

    -a

    将网络位址和广播地址转变成名字;

    -b

    在数据链路层上选择协议,包括iparprarpipx都是这一层的

    -d

    将匹配信息包的代码以人们能够理解的汇编格式给出;

    -dd

    将匹配信息包的代码以c语言程序段的格式给出;

    -ddd

    将匹配信息包的代码以十进制的形式给出;

    -e

    在输出行列印出资料连结层的头部信息;

    -f

    将外部的Internet位址以数位的形式打印出来;

    -l

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

    进行重定向

    -n

    不把网络位址转换成名字;

    -nn

    不进行端口名称的转换。

    -N

    不打印出默认的域名。

    -s

    指定数据包的长度

    -t

    在输出的每一行不打印时间戳;

    -tt

    打印原始的、未格式化过的时间。

    -tttt

    完整的时间格式

    -v

    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

    -vv

    输出详细的报文信息;

    -c

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

    -F

    从指定的文件中读取表达式,忽略其他的表达式;

    -X

    print packet format in hex and ASCII.

    -i

    指定监听的网络界面;

    -r

    从指定的档中读取包(这些包一般通过-w选项产生)

    -w

    直接将包写入档中,并不分析和打印出来;

    src、dstporthostnetethergateway这几个选项又分别包含srcdst porthostnetehost等子选项。他们用来分辨数据包的来源和去向。host指定主机相关无论它是源还是目的,net指定网络相关的,ether是物理地址,而gateway则用于网关。

    ip icmp arp rarp和tcp udp icmp这些选项要放到第一个参数位置,用来过滤数据报的类型。

    -T

    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远端过程)

    3、表达式

    1)表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件。

    在表达式中一般有如下几种类型的关键字,一种是关于类型的关键字,主要包括hostnetport;第二种是确定传输方向的关键字,主要包括src,dst,dst or src, dst and src;第三种是协议的关键字,主要包括ip ,arp,rarp,tcp,udp等类型。

    还有其他关键字,gateway, broadcast,less,greater,还有三种逻辑运算,非'not ' '! ';与'and','&&';或'or' ,'||'

    2)src > dst:表明从源地址到目的地址, flagsTCP包中的标志信息,"." (没有标记)SSYN标志, F (FIN), P(PUSH) , R (RST) ; data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针。

    4、示例

    1)tcpdump //监听所有数据包

    2)tcpdump -b arp

    3)tcpdump -i eth0 //只显示通过eth0接口上的所有报头

    4)src host 192.168.0.1 //指定源主机IP地址是192.168.0.1

    5)dst net 192.168.0.0/24 //指定目标是网络192.168.0.0

    6)tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

    7)tcpdump ether src 00:50:04:BA:9B

    8)tcpdump src host 192.168.0.1 and dst port not telnet //过滤源主机192.168.0.1和目的端口不是telnet的报头

    9)tcpdump ip//只过滤数据-链路层上的IP报头。

    10)tcpdump udp and src host 192.168.0.1 //只过滤源主机192.168.0.1的所有udp报头。

    11)tcpdump tcp port 23 host 210.27.48.1

    12)tcpdump -w test.out -i eth0 tcp port 6881

    13)tcpdump -w test.out -i eth0 tcp port 6881 or udp \( 33210 or 33220 \)

    14)tcpdump -w test.out dst 10.168.28.22 and tcp port 22

    15)tcpdump tcp portrange 20-24

    16)tcpdump -s 1500 //-s 0就可以按包长,截取数据

    17)tcpdump -l > dat & tail -f  dat”,例如tcpdump -l |grep "sldfj"

    18)tcpdump ip host 210.27.48.1 and !210.27.48.2

    5、其他

    1)在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。

    2)显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。

    参考

    1http://baike.baidu.com/view/76504.htm

    2http://gosman.blogbus.com/logs/5504841.html

    3】 后面的讨论不错

    http://www.chinaunix.net/jh/29/674578.html

    4http://jessy.blog.51cto.com/476840/131993

    5http://linux.vbird.org/linux_server/0140networkcommand.php#tcpdump

  • 相关阅读:
    C:函数指针、回调函数
    C:内存分配、内存中五大区
    C:指针
    C:进制
    C:预编译指令
    C:矩形相交、相包含、相离关系判断
    C:结构体
    C:函数
    C:数组
    C: 冒泡排序
  • 原文地址:https://www.cnblogs.com/mydomain/p/2194797.html
Copyright © 2011-2022 走看看