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.自行查找

posted @ 2016-03-04 10:56  sheng1255  阅读(523)  评论(0编辑  收藏  举报