tcpdump和wireshark抓包方法介绍

25 篇文章 7 订阅
20 篇文章 0 订阅

1.tcpdump工具的使用:用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的
包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提
供and、or、not等逻辑语句来帮助你去掉无用的信息。
    语法:
    tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
        [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
        [ -i interface ] [ -m module ] [ -M secret ]
        [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
        [ -W filecount ]
        [ -E spi@ipaddr algo:secret,...  ]
        [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
        [ expression ]
    c 设定抓多少个包后自动停止                     s 指定抓每个包的前多少字节(默认56字节)
    w 保存到某个文件                            r 读文件
    v 显示更详细                                n 不显示主机名,显示IP
    nn 也把端口显示为数值,否则显示端口服务名    i 指定哪块网卡
    host 指定某个主机                            port 指定某个端口
    net 指定某个网络                            tcp 指定抓tcp包
    udp 指定抓udp包                                ip 指定抓ip包
    icmp 指定抓icmp包                            src host 指定源主机
    dst host 指定目的主机                        dst port 指定目的端口
2.使用举例
    抓164访问本地22端口的包 ,单向的
[root@stu24 ~]# tcpdump -i eth0 -n src host 192.168.0.164 and dst port 22
    抓164ping本地的包
[root@stu24 ~]# tcpdump -i eth0 -n icmp and src host 192.168.0.164
    当网卡工作于混杂模式里时
[root@stu24 ~]# tcpdump -i eth0 -n dst port 22 or dst port 80 
    两种条件一起抓
[root@stu24 ~]# tcpdump -i eth0 -n 'src host 192.168.0.164 and dst port 22' or 'src host 192.168.0.4 and dst port 80'二者等价
[root@stu24 ~]# tcpdump -i eth0 -n \(src host 192.168.0.164 and dst port 22\) or \(src host 192.168.0.4 and dst port 80\)

tcpdump -i eth0 
tcpdump -i eth0 -v -n 
    -v 显示包含有TTL,TOS值等等更详细的信息    -n不要做IP解析为主机名      -nn不做名字解析和端口解析
    更有针对性的抓包:针对IP,网段,端口,协议
[root@ ftp]# tcpdump -i eth0 -vnn host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn net 192.168.0.0/24
[root@ ftp]# tcpdump -i eth0 -vnn port 22 
[root@ ftp]# tcpdump -i eth0 -vnn  udp
[root@ ftp]# tcpdump -i eth0 -vnn icmp
[root@ ftp]# tcpdump -i eth0 -vnn arp
[root@ ftp]# tcpdump -i eth0 -vnn ip
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn dst host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn src port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 202.106.0.254 and dst port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154 or port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154 and not port 22 
[root@ ftp]# tcpdump -i eth0 -vnn \( src host 192.168.0.2 and dst port 22 \) or   \( src host 192.168.0.65 and dst port 80 \)
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 tcp
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 host  202.106.0.258
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 tcp
[root@ ~]# tcpdump -i eth0 -vnn -w  /tmp/fil1 -c 100

3.包文分析
16:50:11.916308 IP 10.37.63.3.52346 > 61.135.169.121.http: Flags [P.], seq 1888894293:1888894434, ack 2526934942, win 8192, 
length 141: HTTP: GET / HTTP/1.1
第一列是时间戳:时、分、秒、微秒
第二列是网际网路协议的名称
第三列是报文发送方的十进制的网际网路协议地址,以及紧跟其后的端口号(偶尔会是某个协议名如 http ,如果在此处仍然显示端口号加上 -n 选项)
第四列是大于号
第五列是报文接收方的十进制的网际网路协议地址,以及紧跟其后的端口号(偶尔会是某个协议名如 http ,如果在此处仍然显示端口号加上 -n 选项)
第六列是冒号
第七列是 Flags 标识,可能的取值是 [S.] [.] [P.] [F.]
第八、九、十……列 是tcp协议报文头的一些变量值:
seq 是 请求同步的 序列号
ack 是 已经同步的 序列号
win 是 当前可用窗口大小
length 是 tcp协议报文体的长度
如果加入了-S选项,会看到的 seq, ack 是 两个冒号分割的值,分别表示变更前、后的值。

每一行中间都有这个包所携带的标志:
S=SYN,发起连接标志。    P=PUSH,传送数据标志。   F=FIN,关闭连接标志。ack,表示确认包。RST=RESET,异常关闭连接。
.,表示没有任何标志。

4.linux(tcpdump抓包)和windows(wireshark分析)配合抓包分析。
    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个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

步骤:
    1)启动8080端口,tcpdump抓包命令如下:
tcpdump -i lo0 -s 0 -n -S host 10.37.63.3 and port 8080 -w ./Desktop/tcpdump_10.37.63.3_8080_20160525.cap

    # 然后再执行curl
curl http://10.37.63.3:8080/atbg/doc
    2)使用Wireshark打开tcpdump_10.37.63.3_8080_20160525.cap文件

wireshark请参考:https://www.cnblogs.com/shenpengyan/p/5912567.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值