• tcpdump教程入门


    tcpdump是一个最基本重要的网络分析工具, 掌握好这, 对于学习tcp/ip协议也是很有帮助的. 理解了tcp/ip协议栈的知识, 分析调优网络的能力才会更高. 所以使用tcpdump相比其它的工具, 更能帮我们理解协议.

    tcpdump的一些命令选项

    1. -n不要转换一些数值, 比如把80端口转换成http显示.
    2. -i需要监控的网卡. 如果不指定, 则监控所有有效的网卡数据.
    3. -c抓取多少个包后自动停止抓取
    4. -s默认是只抓取96bytes的数据, 如果想要抓取更多的数据, 则要通过这指定更大的数值. 比如-s 1500抓取1500byte
    5. -S默认每个包的sequence是显示相对的值, 如果想显示绝对值, 通过此选项打开.

    过滤表达式

    我们抓包时, 一般是有针对性的去关注感兴趣的东西, 不然太多的信息会对我们分析数据造成干扰, tcpdump支持过滤语法.

    基本用法

    host

    host指定主机, 可以是ip或者域名.

    tcpdump -s0  -i wlan0 host www.baidu.com
    

    上面的功能是抓取本机网卡wlan0上和www.baidu.com这个主机打交道的数据. 其中-s0指定抓取所有数据, 查考前面选项介绍.

    dst, src

    有时候我们只关心数据流其中一个方向上的数据, 可以通过src: 源端, dst:目的端来指定过滤.

    tcpdump  -i wlan0 dst  www.baidu.com
    

    port

    指定端口

    tcpdump -i wlan0  port 6379
    

    抓取redis的数据.

    协议

    指定协议数据, 比如: tcp, udp, icmp

    tcpdump -i wlan0  tcp and udp
    

    抓取所有的tcp和udp数据包.

    高级用法

    tcpdump表达式可以支持逻辑组合运算, 提供更强大的功能.

    • and
    • or
    • not

    这些和所有开发语言中的语义是一样的. 下面看一些例子:

    # 源主机是192.168.1.34, 并且目标端口是80
    tcpdump -i eth0 src 192.168.1.34 and dst port 80
    
    # 所有tcp协议并且端口不是22
    tcpdump -i eth0 tcp and not port 22
    

    有时候表达式太复杂了, 我们要进行分组, 即用()把一些表达式组合在一起.

    # 源主机是192.168.1.34并且目标端口是22或者3389
    tcpdump -i eth0 'src 192.168.1.34 and (dst port 22 or 3389)'
    

    我们还可以通过分析数据包其中的部分数据计算过滤:

    # 抓取带有SYN标志的数据, tcp[13]的意思是从tcp数据包头中取第14个byte数据, 详细参考tcp协议头
    sudo tcpdump -i wlan0 'host www.baidu.com and tcp[13]&2!=0'
    

    数据保存和读取分析

    一般在服务器上截取到数据包后, 用于之后的分析, 比如传到本地机器后用wireshark分析. 可以通过-w选项保存:

    tcpdump -i eth0 src www.baidu.com -w file.cap
    

    上面把数据保存到了file.cap文件中

    参考: https://danielmiessler.com/study/tcpdump/

  • 相关阅读:
    软件架构师是如何工作
    安装flume由于HBASE出现的错误
    学习记录(Python集合)
    bzoj4199: [Noi2015]品酒大会
    清橙A1484
    codeforces 232D Fence
    bzoj2337: [HNOI2011]XOR和路径
    bzoj3143: [Hnoi2013]游走
    codeforces 235 B. Let's Play Osu!
    bestcoder单调区间
  • 原文地址:https://www.cnblogs.com/jcli/p/4248145.html
Copyright © 2020-2023  润新知