目的: 为了抓住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]