用tcpdump截获msn信息_打杂的_新浪博客

本文介绍了一个使用tcpdump工具捕获特定主机MSNMessenger数据包的shell脚本。该脚本不仅捕获数据包,还进一步解析了数据包内容,并尝试将捕获到的UTF-8十六进制数据转换为可读的中文和英文形式。
今天听同事谈论tcpdump,不了解是什么用途,怎么用,GOOGLE一下,发现一篇精文,收藏起来,有空看一下:
 
#!/bin/sh
echo "" > temp.1
echo "" > temp.3

#此处没有限制多少个msn数据包

tcpdump -f -lnx -s 0 host 192.168.0.1 and port 1863 > temp.0
lines=`cat temp.0 | wc -l`
line=1
while [ $line -le $lines ]
do

#此处获取时间收发ip等信息

        memo=`sed -n ''"$line"'p' temp.0 | gawk '{if (!~/^0x/)print ,,,,,,,,,,," "}'`
        memo=$"aaaaaaaa"
        if [ "$memo" = "aaaaaaaa" ]
        then

#截取数据包中数据部分

              out=`sed -n ''"$line"'p' temp.0 | cut -c"11-14, 16-19, 21-24, 26-29, 31-34, 36-39, 41-44, 46-49"`
                echo -n "$out" >> temp.1
       else
                echo "" >> temp.1
                out=`sed -n ''"$line"'p' temp.0 | gawk '{if (!~/^0x/)print ,,,,,,,,,,," "}'`
                echo -n "$out" >> temp.1
       fi
line=`expr $line + 1`
done
echo "" >> temp.1

#删除空行和前两行

sed '/^&/d' temp.1 | sed '1,2d' > temp.2
lines=`cat temp.2 | wc -l`
line=1
while [ $line -le $lines ]
do

#获取要现实的内容
        TIME=`sed -n ''"$line"'p' temp.2 | gawk '{print }' | gawk -F "." '{print }'`
        FROM=`sed -n ''"$line"'p' temp.2 | gawk '{print }'`
        TO=`sed -n ''"$line"'p' temp.2 | gawk '{print }'`

#根据标志位确定并截取msn数据

        DATA0=`sed -n ''"$line"'p' temp.2 | awk '{print }' | gawk -F "0d0a0d0a" '{print }' | sed '/^0d0a$/d' | sed 's/../%&/g'`

#将截获的utf-8十六进制数交由perl的URI::Escape模块处理并显示中英文

        DATA=`perl  -e "use URI::Escape; print uri_unescape('$DATA0');"`
        isnull=`echo $DATA | wc -m`
        if [ $isnull -gt 1 ]
        then
                echo "$ FROM $ TO $ DATA: $"
        fi
        line=`expr $line + 1`
done
rm -f temp.*
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值