tcpdump nc的一次使用测试[原创]

目的: 为了抓住TCP指定的数据包内容

----------tcpdump脚本-------------
#!/bin/bash
#===============================================================================
DEV="lo0"
V="-vvv"
LOG="-W 1.log"
#LOG=""
#TCP_FLAG="tcp[8:4]&0xFFFFFFFF=1 and tcp[13] & 0xff=16"
#TCP_FLAG="tcp[13] & 0xff=16"
#TCP_FLAG="tcp[13] & 0x3 != 0"
#TCP_FLAG="tcp[13] & 0x08 != 0"
#TCP_FLAG="tcp[13] & 0x08 != 0 and tcp[32:2] = 0x4040" #@@
TCP_FLAG="tcp[13] & 0x08 != 0 and tcp[32:2] != 0x4040" # 抓下不是以 @@ 开头的数据包
sudo tcpdump $LOG -i $DEV -nn -X $TCP_FLAG


------------------------
nc 命令
----------------------
监听端命令 选择端口号为1234
nc -kl 1234

连接命令脚本
while :
do

    nc localhost 1234 < 1.txt
    nc localhost 1234 < 2.txt
    sleep 1
done

==========================
cat 1.txt 内容为
$ cat 1.txt
@@1234567890

---------------------------------------
cat 2.txt
BBBBBBBBBBBBBBBBBBBBB


tcp[13] & 0x08 != 0 为了判断是否为push
关键是 tcp[32] 是push 的data开始位置
0x4040 是 @@ 字符的16进制表示
tcp[32:2] 表示从 位置32 开始取2个字节

以前没试成功是错误的算出数据开始地址为 tcp[0x24] 开始 其实是 tcp[0x20] 也就是 tcp[32]

你可能感兴趣的:(#linux防火墙路由)