中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Shell
[shell]用tcpdump截获msn信息
作者:未知 时间:2005-09-13 23:27 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:[shell]用tcpdump截获msn信息
用tcpdump截获msn信息

#!/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.*

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有