zoukankan      html  css  js  c++  java
  • Tcpdump 抓包 wireshark 分析

    最近在项目联调里碰到数据收发的争议,网上看到有人用tcpdump 来捕捉Linux系统的数据包然后丢到wireshark上分析,本人觉得这样挺方便的,于是使用了一下,发觉效果不逊色在window 直接用wireshark

    在Linux 里安装 tcpdump ,如果系统有自带安装好可以略过

    TcpDump的安装
    1、freebsd下系统自带
    2、linux下的安装
        1)、rpm包的形式安装:
            #rpm -ivh tcpdump-3_4a5.rpm
            这样tcpdump就顺利地安装到你的linux系统中
        2)、源程序的安装:
            第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种形式,一种是
            tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。这两种形式的内容都是一样的,不
            同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
            #tar xvfz tcpdump-3_4a5.tar.Z
            rpm的包可以使用如下命令安装:
            #rpm -ivh tcpdump-3_4a5.src.rpm
            这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下. 

            第二步 做好编译源程序前的准备活动
            在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。同样,你同
            时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpdump的源程序目录中。有一个文件是
            Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配
            置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
            BINDEST = @sbindir@
            MANDEST = @mandir@
            第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man 帮助页的路径名,你可以修改它们来满足
            系统的需求。

            第三步 编译源程序
            使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,
            以便编译使用.make命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make install命令安装编译好的tcpdump
            的二进制文件。

            总结一下就是:
            # tar xvfz tcpdump-3_4a5.tar.Z
            # vi Makefile.in
            # . /configure
            # make
            # make install

     

    在Linux 里tcpdump 简单使用,如果要看详细使用请自行问百度,最好还是看看Linux 里的man怎么说的

     

    下面以抓取eth0接口为例,如果不加"-i eth0"是表示抓取所有的接口包括lo。
     
    1、抓取包含10.10.10.122的数据包 
    # tcpdump -i eth0 -vnn host 10.10.10.122
     
    2、抓取包含10.10.10.0/24网段的数据包
    # tcpdump -i eth0 -vnn net 10.10.10.0/24
     
    3、抓取包含端口22的数据包
    # tcpdump -i eth0 -vnn port 22 
     
    4、抓取udp协议的数据包
    # tcpdump -i eth0 -vnn  udp
     
    5、抓取icmp协议的数据包
    # tcpdump -i eth0 -vnn icmp

    6、抓取arp协议的数据包
    # tcpdump -i eth0 -vnn arp
     
    7、抓取ip协议的数据包
    # tcpdump -i eth0 -vnn ip
     
    8、抓取源ip是10.10.10.122数据包。
    # tcpdump -i eth0 -vnn src host 10.10.10.122
     
    9、抓取目的ip是10.10.10.122数据包
    # tcpdump -i eth0 -vnn dst host 10.10.10.122
     
    10、抓取源端口是22的数据包
    # tcpdump -i eth0 -vnn src port 22
     
    11、抓取源ip是10.10.10.253且目的ip是22的数据包
    # tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22
                     
    12、抓取源ip是10.10.10.122或者包含端口是22的数据包
    # tcpdump -i eth0 -vnn src host 10.10.10.122 or port 22
     
    13、抓取源ip是10.10.10.122且端口不是22的数据包
    [root@ ftp]# tcpdump -i eth0 -vnn src host 10.10.10.122 and not port 22


    14、抓取源ip是10.10.10.2且目的端口是22,或源ip是10.10.10.65且目的端口是80的数据包。
    # tcpdump -i eth0 -vnn ( src host 10.10.10.2 and dst port 22 ) or   ( src host 10.10.10.65 and dst port 80 )

       

    15、抓取源ip是10.10.10.59且目的端口是22,或源ip是10.10.10.68且目的端口是80的数据包。
    [root@localhost ~]# tcpdump -i  eth0 -vnn 'src host 10.10.10.59 and dst port 22' or  ' src host 10.10.10.68 and dst port 80 '

       

    16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。
    # tcpdump –i eth0 -vnn -w  /tmp/fil1 -c 100

       

    17、从/tmp/fill记录中读取tcp协议的数据包
    # tcpdump –i eth0 -vnn -r  /tmp/fil1 tcp

       

    18、从/tmp/fill记录中读取包含10.10.10.58的数据包
    # tcpdump –i eth0 -vnn -r  /tmp/fil1 host  10.10.10.58

     

     

    如上面的实例 16来说生成记录文件后

    1.先从Linux 上拷贝tcpdump生成的记录文件

    2用wireshark打开 tcpdump生成的记录文件

    3.打开后按 ctrl + f 查找目标内容数据帧

    4.自行查找

  • 相关阅读:
    CSS------制作一个带+-的input框
    rest简介
    flask之flask-login登陆验证(一)
    Python之异常设计(一)
    flask之flask-sqlalchemy(一)
    flask之wtforms 表单验证(一)
    三 Django模型层之Meta
    二 Djano模型层之模型字段选项
    一 Django模型层简介
    Django之路由、模板和模型系统 (转载)
  • 原文地址:https://www.cnblogs.com/sheng1255blog/p/5241300.html
Copyright © 2011-2022 走看看