图形分析wireshark+抓包tcpdump

1.  tcpdump 命令详解

1.1 tcpdump 命令的基本简介

  • tcpdump :dump the traffic on a network 根据使用者的定义对网络上的数据包进行截获的分析工做;tcpdump 能够讲网络中传送的数据包的header彻底截获下来进行分析;它支持对网络层(net  IP 段)、协议(TCP/UDP)、主机(src/dst host)、网络或端口(prot)的过滤,并提供and、or、not 等逻辑语句来帮助你去掉无用的信息。
  • tcpdump:默认状况下,sudo /usr/sbin/tcpdump 会监视 第一个网络接口 通常是eth0 的全部port 全部协议的 数据包

1.2 tcpdump 的主要选项

协议 TCP,UDP,IP,ARP,RARP,ETHER,FDDI
网络(net) 192.168.0.0/16 IP网段
方向(host) src,dst,src or dst,src and dst
端口(prot) 80 22 !22  9999 
逻辑 and,or,not  &&,||,!
  • 协议:tcp udp ip arp rarp ether fddi   协议这选项要放在 前面,由于要过滤数据包
  • 网络:net  ip网段     tcpdump net 192.168.1.0/24   监听这个网段
  • 方向:host  就是主机  src 是源主机、dst 是目的主机 or  and 是逻辑 tcpdump host test.hostname 
  • 端口:port  指定tcpdump 监听的端口  tcpdump src 192.168.1.11 and port 80  监听源IP是192.168.1.11 的80端口
  • 逻辑:是表示 与 或  即:同时知足或知足之一

        前面的四个选项:协议、net 、host、port 若是同时在 tcpdump 里面 时必须用 逻辑 and 链接起来;并且如用() 必定要转义,不然会包语法错误。    linux

 

2. tcpdump 的选项

2.1 主要选项

  • -i :指定网卡 默认是 eth0   
  • -n :线上ip,而不是hostname
  • -c :指定抓到多个包后推出
  • -A:以ASCII方式线上包的内容,这个选项对文本格式的协议包颇有用
  • -x:以16进制显示包的内容
  • -vvv:显示详细信息
  • -s :按包长截取数据;默认是60个字节;若是包大于60个字节,则抓包会出现丢数据;因此咱们通常会设置 -s 0 ;这样会按照包的大小截取数据;抓到的是完整的包数据
  • -r:从文件中读取【与 -w 对应,/usr/sbin/tcpdump -r test.out  读取 tcpdump -w  test.out】
  • -w:处处指向文件【必定要用,-w t.out ,而后用 -r t.out 来看抓包信息,不然可读性不好】

使用:windows

tcpdump -w google.cap        #抓包结果存放在文件中
tcpdump -r google.cap http   #还可使用-r参数制定抓包数据文件
tcpdump -i eth1              #使用-i参数指定经过哪个网卡抓包
tcpdump -D                   #查看哪几个网卡抓包服务器

 

2.2 tcpdump 抓包的具体含义

       tcpmdump 抓包出来分析包的具体含义网络

  1.        包携带的标志:
  • S:S=SYC  :发起链接标志
  • P:P=PUSH:传送数据标志
  • F:F=FIN:关闭链接标志
  • ack:表示确认包
  • RST=RESET:异常关闭链接
  • 表示没有任何标志

3. tcpdump的实例:

  • 起步1: 抓取指定端口的包
    tcpdump -i eth0 -c 100
  • 起步2:抓取指定协议的包
    tcpdump -i eth0 -c 100 tcp
  • 起步3:抓取指定协议,指定port的包【tcp ip port src dst host net】
    tcpdump -i eth0 -c 100 tcp port 5440
  • 起步4:组合过滤条件【and or not】
    tcpdump -i eth0 -c 100 tcp port 5440  and src host 192.1.1.2
  • 起步5:抓取指定网段的包
    tcpdump -i eth0 -c 100 tcp port 5440 and src net 192.1.1.0/24
  • 高级1:写入文件并用wireshark在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
    而后用ftp传输到windows下面,在用wireshark打开cap文件便可
  • 高级2:提取http包
    tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -c 20 -w ./target.cap
    其中-s 0表示不限制包的大小;tcp[20:2]从表示tcp包头第20个字节开始的2个字节等于0x4745(对应字符GE)或者等于0x4854(对应HT);
    这种方法适用于tcp头中OPTION为空的状况,若是不为空,须要从第24个字节开始。

    基本语法tcp

    ========
    过滤主机
    --------
    - 抓取全部通过 eth1,目的或源地址是 192.168.1.1 的网络数据
    # tcpdump -i eth1 host 192.168.1.1
    - 源地址
    # tcpdump -i eth1 src host 192.168.1.1
    - 目的地址
    # tcpdump -i eth1 dst host 192.168.1.1
    过滤端口
    --------
    - 抓取全部通过 eth1,目的或源端口是 25 的网络数据
    # tcpdump -i eth1 port 25
    - 源端口
    # tcpdump -i eth1 src port 25
    - 目的端口
    # tcpdump -i eth1 dst port 25网络过滤
    --------
    # tcpdump -i eth1 net 192.168
    # tcpdump -i eth1 src net 192.168
    # tcpdump -i eth1 dst net 192.168
    协议过滤
    --------
    # tcpdump -i eth1 arp
    # tcpdump -i eth1 ip
    # tcpdump -i eth1 tcp
    # tcpdump -i eth1 udp
    # tcpdump -i eth1 icmp

  注意:在linux抓取包后用tcpdump -r 只能看到包的简单信息;若是须要查询抓取包的详细信息须要把抓取的包target.cap 经过 ftp服务器传输到windows机器上;借助wireshark工具来分析数据;wireshark是一款开源的分析网络抓包的工具;灰常的好用。工具

相关文章
相关标签/搜索