Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1683120
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: LINUX

2009-11-09 20:44:35

   在以前工作中和教学中,如果使用网络截包软件,一般使用都是使用Windows 下的图形的软件,如Sniffer Pro /Ethereal/EtherPeek ,Linux 下字符界面的TCPDump 操作实现太难记了,而且演示,分析,培训效果都不好.也曾试图安装了LINUX的图形界面的ethereal未成功,就停止安装了.
   换了一家新的机构任职,这里全部采用RHEL5作为基本的操作系统.这样安装一个Linux的图形界面的截包软件的任务就迫在眉睫,没这个我后面协议分析,SOCKET编程包的传输,TCP三次握手都没有直观演示了。逼得我必须解决这一问题。
  因为最新版是已经换成,所以最先安装这个包试试。一开始发现官方网站没有针对RHEL5 的RPM下载,后来在互联网找到这两个链接:
 
 
其中wireshark-gnome-1.1.2-1.pre1.i386.rpm是基于gnome的图形界面,wireshark-1.1.2-1.pre1.i386.rpm 是核心库。后者要先安装。
 
但安装后有如下提示

 
 
即安装wireShark-gnome出现问题 ,尝试安装libportaudio.从网上找rpm安装需要先安装libjack,安装libjack后出现大家都极为痛恨rpm 版本过低的提示.即需要rpm 4.4.6更高版本提示
[root@rhel5 tmp]# rpm -ivh libjack0-0.116.2-4.1.i586.rpm
warning: libjack0-0.116.2-4.1.i586.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID 3dbdc284
error: Failed dependencies:
        libc.so.6(GLIBC_2.7) is needed by libjack0-0.116.2-4.1.i586
        rpmlib(PayloadIsLzma) <= 4.4.6-1 is needed by libjack0-0.116.2-4.1.i586
 
这个原因也简单,即RHEL自带的是RPM version 4.4.2.3,但网上并无4.4.6以上的rpmlib的安装包.下了rpmlib 最新版的源码,费尽周折编译,make install后仍然提示如下.
 
 其中又试了ethereal 的源码编译安装.但因为ethereal 需要很多较老的库.RHEL已经更新.发现安装更麻烦,这种方法取消掉.
 
  后又试用 wireShark 编译,但是发现其支持库GTK+的编译安装更为麻烦.装了半天仍未成功.而我只是想用一个工具用来教学和使用.这么麻烦还是算了.
 
 当然还有用yum从互联网自动下载方法,但这个方法要求机器能接入互联网.对于未上网的教室的多台机器这样安装还是非常麻烦.
 
快速安装方法
 
首先使用rpm 的--force --nodeps 强行安装,忽略依赖包.
 
rpm -i --force --nodeps wireshark-1.1.2-1.pre1.i386.rpm
 注:最早是采用rpm -ivh wireshark-1.1.2-1.pre1.i386.rpm安装,但是如果这样安装旧的wireshark版本,如1.0.2将会导致新版本的库安装不上。一种解决办法是强行安装,另一种是把旧版本清除再安装新版本
rpm -i --force --nodeps wireshark-gnome-1.1.2-1.pre1.i386.rpm
 
然后再将其的支持包用源码编译.
一般的包RHEL已经自带,第三方所缺的包有 pcap/portaudio
 
 
这两种在x86都是简单的 tar /configure /make /make install
 
libpcap 的编译

[root@rhel5 libpcap-1.0.0]# make
gcc -O2 -fPIC -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))"
-c ./fad-getad.c In file included from ./fad-getad.c:67:
/usr/include/linux/if_packet.h:52: error: expected specifier-qualifier-list  before '__u32'

 
解决办法 #include 加入到 /usr/include/linux/if_packet.h
portaudio编译安装简单.
这一些动态库一般安装在/usr/local/lib下.执行时可以用如下方法调用
export LD_LIBRARY_PATH=/usr/local/lib;wireshark
 
还有一种方法是把 /usr/local/lib加入到 /etc/ld.so.conf中,这样这个目录所以有动态库都不需要特殊操作即可调用
   vim /etc/ld.so.conf #加一行/usr/local/lib
   ldconfig #让路径生效
 
这是RHEL运行的界面
 
 
跟WINDOWS界面比较一下
  

 

快速使用手册

  • 点击第一个列表,可以选择一个网卡抓包,LINUX版的可以抓lo,就是本机内部之间包交流的包.这给开发带来不少方便,WireShark也能抓无线网卡的包了.
 
  • 抓包时界面,分为三栏,上面是包列表,中间包分析结果,下面包原始数据罗列,最方便功能是原始数能按BYTE拷贝出来.这样在C语言构造一个包,拿这现成包改改就行
  • 第二个按键,较多的抓包选项.

  

  • 使用过滤表达式
 
安装问题解决
    如果提示 libwsutil.so 找不到,这个往往是因为系统中有老的版本wireshark 在系统导致安装冲突.可以先卸掉这个老版本,再安装.如果无法卸载,可以强行安装wireshark库
rpm -i --force --nodeps wireshark-1.1.2-1.pre1.i386.rpm
阅读(4119) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:文本处理---iconv的使用与编程

给主人留下些什么吧!~~