zoukankan      html  css  js  c++  java
  • tcpdump移植和使用 -- by Johnson

    1. 概述
    tcpdump是一个用于抓取网络数据包的命令行工具,与带界面的Wireshark一样,基于libpcap库构建。
    tcpdump的设计目标是帮你分析包头(比如Tcp包头,udp包头),同时你可以根据包头,用它支持的表达式,过渡出你感兴趣的包,从而方便你自己处理包中数据

    2.移植
    分为下面三步:
    1)设置环境变量:
    a. vi configure.env
    b. 输入以下内容:
    ARCH=xxxxxx    #xxxxx为你的编译器目录
        CC=${ARCH}-gcc
        CXX=${ARCH}-g++
        AR=${ARCH}-ar

        export ARCH
        export CC
        export CXX
        export AR
    c. 保存后,配置当前shell:
    source configure.env

    2)移植libpcap
    a. 下载libpcap-1.0.0.tar.gz;
    b. 解压:
    tar xvf libpcap-1.0.0.tar.gz
    c. 进入解压后的libpcap-1.0.0目录,配置项目:
    ac_cv_linux_vers = 2.6.35 ./configure -host=arm-linux --with-pcap=linux --prefix=xxxxxx    #2.6.35为目标linux版本,xxxxxx为你想安装的位置
    d.编译、安装:
    make; make install

    3)移植tcpdump
    a.下载tcpdump-4.0.0.tar.gz;
    b.解压:
    tar xvf tcpdump-4.0.0.tar.gz
    c.进入解压后的tcpdump-4.0.0目录,配置项目:
    ac_cv_linux_vers = 2.6.35 ./configure -host=arm-linux --prefix=xxxxxx    #选项含义同上
    d.编译:
    make;     #此步骤会提示"undefined reference to 'ip6_print'"
    e.注释掉print-enc.c文件中的下面这段:
    case AF_INET6:
           ip6_print(p, length);
           break;
    f.编译、安装:
    make; make install    #完成后,可以安装目录的sbin中找到tcpdump

    3.使用
    1)使用格式如下:
    命令    [无参数标志] [有参数标志] [表达式]

    Usage: tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
    		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
    		[ -i interface ] [ -M secret ] [ -r file ]
    		[ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]
    		[ -y datalinktype ] [ -z command ] [ -Z user ]
    		[ expression ]
    2)常用标志:
    -x    #打印数据的16进制值,每行16个字节
    -X    #同上,还在每行右边显示对应的ASCII的值,如果值可显示的话
    -s 0    #打印时,包括包中的数据,默认只打包的帧头(比如:tcp的帧头)

    3)常用表达式
    a. 单个表达式间存在空格时,要用引号包起来
    b. 表达式间要用and/or/not连接起来

    src/dst    #指定下一个参数(host/net/port) 作用于本地,或是远程
    host/net 192.168.1.150   #指定我们关心的主机、IP等
    tcp/udp    port    3333    #指定我们关心的tcp或udp端口
    and or not    #表达式间的与、或、非
    & || !    #表达式内部的与、或、非

    c.示例
    ./tcpdump -X -s 0 host 192.168.1.153 and "tcp[tcpflags] & tcp-push != 0" and src port 3333
    #抓住所有从192.168.1.153的3333端口发过来的tcp数据包(不要同步包、结束包等),并将包头和数据的16进制值与ASCII值打印到控制台

    4)详细使用说明




    资源优化配置,就是将时间花在珍惜你时间的人身上
  • 相关阅读:
    读《构建之法》8、9、10章有感
    评论
    复利计算器(4)——jQuery界面美化、自动补全
    送给搭档的“汉堡”
    MFC之TreeCtrl控件使用经验总结
    MFC绘制图片闪烁详解
    MFC 网络编程中::connect返回-1问题
    C++网络编程之select
    C++关于Condition Variable
    Mutex 和 Lock
  • 原文地址:https://www.cnblogs.com/littleblackbox/p/4289922.html
Copyright © 2011-2022 走看看