Linux命令tcpdump是分析数据包的重要工具,但无法以彩色显示字段。

这里提供一个以绿色显示源IP,以黄色显示目标IP的脚本,这样能清晰地分辨出不同的数据包。

实验步骤:

  • A电脑运行WEB服务,编写彩色输出脚本,运行tcpdump
  • B电脑运行wget抓取A电脑的网页
  • A电脑抓取数据包并以彩色形式输出

第一步:确保A电脑WEB服务运行正常,可访问网页

第二步: A电脑编写彩色输出脚本color.sh

#!/bin/bash

# 使用 tput 设置颜色
green=$(tput setaf 2)
yellow=$(tput setaf 3)
reset=$(tput sgr0)
echo -n

# 直接从标准输入读取并处理每一行
while IFS= read -r line || [[ -n "$line" ]]; do

    # 检查行中是否包含 '>'
    if [[ "$line" == *">"* ]]; then
        # 找到源IP地址和目标IP地址
        src_ip=$(echo "$line" | awk '{print $3}' | cut -d':' -f1)
        dst_ip=$(echo "$line" | awk '{print $5}' | cut -d':' -f1)

        # 替换源IP地址为绿色
        line=$(echo "$line" | sed "s/\b$src_ip\b/${green}${src_ip}${reset}/g")

        # 替换目标IP地址为黄色
        line=$(echo "$line" | sed "s/\b$dst_ip\b/${yellow}${dst_ip}${reset}/g")
    fi

    # 打印处理后的行
    echo -e "$line"
done
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

第三步:A电脑给彩色输出脚本添加执行权限

chmod +x color.sh

第四步:A电脑运行tcpdump和彩色输出脚本

本例监听的网卡名称是enp11s0,依现场情况而定

tcpdump -i enp11s0 -nn port 80 and host 192.168.0.146|./color.sh

第五步:B电脑抓取A电脑的网页

运行2次wget命令:wget http://192.168.0.147/

第六步:A电脑以彩色输出抓取到的数据包

tcpdump -i enp11s0 -nn port 80 and host 192.168.0.146|./color.sh

注:B电脑第1次运行wget命令,A电脑无反应,第2次运行wget命令A电脑才会显示第1次的抓取结果,以此类推。

tcpdump以彩色显示输出的脚本_字段