zoukankan      html  css  js  c++  java
  • Tcpdump安装使用

    本来想安装wireshark

    yum install wireshark  命令行下使用,包含抓包的基本功能

    yum install wireshark-gnome  提供wireshark(UI)工具,依赖wireshark RPM

     root@localhost: wireshark 
    wireshark: symbol lookup error: wireshark: undefined symbol: gtk_combo_box_text_new_with_entry
    不能启动图形界面,所以采用linux下流量监控及抓包工具tcpdump

    安装:yum install tcpdump

    截获某IP的主机的网络数据包:

    tcpdump host 192.168.0.120

    TCP协议要建立连接要经过3次“握手”,截取的数据包也是从3次握手开始,可以看到前三个包的状态(Flags)分别是:

     [S]、[S.]、[.]

     首先是客户端向服务端发送一个10位的序号给服务端;服务端收到后把它+1再返回回去;客户端检查返回来的序号是对的,就返回给服务端一个1。根据上面的描述,知道这三个包满足:第一个包的seq+1=第二个包的ack;第三个包的ack=1

    注意:开始发送时,发送方是按三次握手完成时定下的序列号和ack来进行通信的,客户端一直在发,客户端的seq不断的按发送字节数在累加,而服务器是应答端,seq始终不变。同理若客户端作为应答端的话,它的seq也是不变的

    TCP协议要断开连接要经过4次“挥手”,上面数据包的最后3条就是挥手的过程。细心的朋友会发现前面说的4次挥手,却只有3个包,这不是笔误。

    最后三个包的状态分别是:

    [F.]、[F.]、[.]    

    ACK延迟发送机制,如果系统禁用了延迟发送,就会看到4个包了

    cron可以定时执行抓包的时间

    抓包命令:

    tcpdump -c 100000 -w /home/kang/Desktop/test.txt -n

    注释:抓10万个包,存在test.txt文件里,-n的意思是不对原地址和目的地址进行DNS查询

    读文件命令:

    tcpdump -r /home/kang/Desktop/test.txt -X -vv

    注释:-r是读文件,-X是以ASCII码显示内容。-VV是以详细的报文信息显示

    -x是以十六进制打印,-X是以十六进制和ASCII同时打印,都不包含数据链路头部,-xx -XX 包含数据链路层的头部,其余的一样。

    总共打印的数据大小不会超过整个数据包的大小与snaplen中的最小值,如果高层协议数据没有snaplen那么长,则Ethernet层的填充数据也会被打

     详细参数参考这里 

     

    查看txt编码::set fileencodin  

    转编码:iconv -f GBK -t UTF-8 file1 -o file2
    iconv -f gbk -t utf8 file1 .txt > file2.txt

    打印结果:部分是解析的结果,部分是十六进制,显示的比较乱,转换格式也没有用

    原因:tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的,所以通常的解决办法是显示用带-w的tcpdump保存到i文件中,再使用wireshark进行解码分析,并且定义过滤规则,以避免捕获的数据包铺满整个硬盘。

    tcpdump为了方便wireshark工具认识,保存的文件名最好是xx.pcap后缀。例如:

    tcpdump -nn -s 0 host 192.168.0.120 and port -80 -w wireshark.pcap

    -s 设置捕获数据包的长度,抓取数据包时原来默认长度是68字节,加上-S 0后可以抓到完整的数据包

    使用tcpdump只抓取http包:

    tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

    0x4745为“GET”前两个字母“GE”,0x4854为“HTTP”前两个字母“HT”

    101.227.172.51.80
    115.25.210.10.80
    61.135.132.59.80
    222.23.55.208.80
    61.135.132.59
    220.181.11.98
    ip/dns解析:http://dns.aizhan.com/,查询到DNS解析的URL和地址

    tcpdump抓取具体某个网页的数据包:

    tcpdump -s 0 tcp port 80 -w sohu1.cap

    在打开firefox之后,输入www.sohu.com。先别运行,先运行以上命令,再刷新页面(之前做过测试,firefox没有输入任何命令时,抓取的数据包为0)

    再用wireshark——open打开,并用statistic来统计,参考一站式学习wireshark:http的统计

      如果单独是tcpdump,默认情况下,tcpdump会选择第一块网卡,也就是eth0,进行抓包 

      tcpdump是基于Unix系统的命令行式的数据包嗅探工具。如果要使用tcpdump抓取其他主机MAC地址的数据包,必须开启网卡混杂模式,所谓混杂模式,用最简单的语言就是让网卡抓取任何经过它的数据包,一般而言,Unix不会让普通用户设置混杂模式,因为这样可以看到别人的信息,比如telnet的用户名和密码,开启混杂模式的命令是:ifconfig eth0 promisc, eth0是你要打开混杂模式的网卡

    过滤器(BPF语言)的使用

    tcpdump tcp -i eth0  -t -s 0  and  port 8080 -w ./bb.cap  

    tcpdump host 192.168.0.148 and tcp port 22

    tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 ) 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

    tcpdump ip host 210.27.48.1 and ! 210.27.48.2 获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包

    tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

    详情可参考tcpdump详细参数

  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/kxdblog/p/4201311.html
Copyright © 2011-2022 走看看