编程夜未眠

有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,千三越甲可吞吴.

郑绍辉ID:shaohui
[修改头像]
824437次访问,排名28好友3人,关注者8
两次PHP programmar.
分别一次C++和Delphi程序员。
一次SQA.
现在为UESTC在校研究生,系统分析员,参与和负责多个项目的开发。
shaohui的文章
原创 109 篇
翻译 0 篇
转载 7 篇
评论 1256 篇
shaohui的公告
首页链节
公开留言私人留言
blog日志 blog声明
Shaohui的google相册

语言   English(beta) Chinese
最近关注

最新公告

My Work
发布SnifferFox v1.0,该软件在界面和易用性方面作了比较大的改进,默认安装提供了超过30套界面皮肤。
下载 源程序 安装程序

发布一个公式计算器,功能不比Windows的计算器弱哈,而且还更为实用,不过还有一些bug等以后有时间了再来改进.
下载 安装程序 免安装压缩包
发布SnifferFox Version Beta了,并且提供源代码,对学网络编程的朋友可能会有帮助!

下载 源程序 安装程序
个人档案

联系方式:

访问统计

.
最近评论
Shaohui:re rain:
1. Windows 下面push的问题
我只是在windows下pull过,但是从来都没有push过,所以,这个问题我也不知道,不过建议你到他们的mail list去问一下
2.其实可以开多个端口,但是必须是不同的目录,这个我试验过

新的问题
hg实际上比CVS好用多了. 至于push权限,我也不是太了解,一般……
rain:谢谢楼主!
1. 关于ssl required,按上面的步骤在linux下push没有问题,在windows下 clone一下配置库,修改完,pussh时出现ssl required ,可能是上面的配置不适合在windows下执行,不知道楼主有没有遇到过?
2. 可能是受svn的影响,觉得应该只能启动一个端口,原来可以这样实现。hg服务好像也可以通过apache启动,不过……
Shaohui:re rain:
我是把我配置的步骤一步步写下来的,可能会有遗漏
至于“ssl required”,这个问题我遇到过,原因好像是你的仓库是readonly的,需要设置一下
建议你去看一下merciural的FAQ,里面有提到这个问题 www.selenic.com/mercurial/wiki/index.cgi/FAQ

如何配置多个库<……
rain:初次接触hg,很多都不懂,楼主能否帮忙解答呢?
rain:1. 似乎配置还不完整,完成上面的配置后,push提示:ssl required
2. 上面的配置只能启动一个配置库project.hg,如果有多个配置库,服务怎么启动呢?
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    关于我
    作品截图
    常去的地方
    C++Builder研究
    ChinaUnix
    CSDN
    系统分析之窗
    软件工程专家网
    友情链节
    CSDN Blog开发组
    Eric's BLog(RSS)
    Expression Calculator
    Fantasy Soft(RSS)
    Shaohui
    SnifferFox on Google Code
    流星絮语 JAVA学习笔记
    老顽童-程序员考试
    葛涵涛(RSS)
    键者天行
    珍藏链节
    Qmail 官方网站
    STL技术文章不完全列表
    中国历代疆域图
    存档

    原创 发布SnifferFox Beta版本了

    新一篇: 如何编译SnifferFox version beta的源代码

     

    下载地址已经更改为 http://www.shaohui.org/snifferfox.html 

    这是我和我同学去年做的一个项目,现在把它公布出来,包括发行版本和项目的源代码.

     源代码        下载

     发行版本    下载
    如果不能够下载,可以直接和我们联系,或者留言.

     

     

     

     


    I.   什么是SnifferFox.

    II.  SnifferFox工作原理

    III.    SnifferFox目录结构

    IV.    SnifferFox功能说明.

    V.  SnifferFox特点

    VI.    扩展SnifferFox

    VII.  作者

    VIII. 结束语

      

     

    I.      什么是SnifferFox

    SnifferFox是运行于Windows平台的嗅探器(Sniffer)。用于截获经过本地计算机指定网卡的所有数据包,并且对这些包进行分析和统计。

    SnifferFox是基于Winpcap开发的,Winpcap是一个开源的项目,为了能够得到原始的数据包,因此我们选择了它(由于Socket工作在IP层,不能够得到ARP,RARP的包,所以我们没有使用)。所以说,在你安装SnifferFox以前请先安装Winpcap,否则就会出现找不到网卡的提示。

           我们选择是Borland C++Builder来开发这个Sniffer,经过近2个月的努力,我们写了将近6000多行的代码(文件docs/codestat.txt有详细的统计),这个软件终于基本开发完成了,现在我们可以发布它的Alpha版了。不过里面可能还是有不少我们没有发现的错误,这可能回在以后的版本中得到更正。

    SnifferFox是免费的,是一个绿色软件,无需安装和注册,我们向大家承诺绝对不修改你的计算机的注册表,可以直接运行(当然,为了你使用方便,我们还是制作了一个安装包)

    下图是SnifferFoxBanner

    II. SnifferFox工作原理

    软件首先把网卡设置为混杂模式,然后获得网卡接收到的数据,按TCP/IP协议对数据包进行分析,按照用户的要求把一部分包过滤掉,然后再把这些等剩下的数据包写入缓冲区(一块指定大小的内存块,可以根据用户计算机的内存大小手工设置),显示在用户界面上,当缓冲区满了的时候,系统会自动把缓冲区的数据写入到外存中去。

    下图是一个简单的说明。

     

     

         

    SnifferFox是一个多线程的系统,大致可以分成3个线程(实现的时候实际只用了2),抓包线程(Sniffer Thread),协议分析和过滤的线程,用户界面。工作在数据链路层,因此可以获得原始的数据帧,所以SnifferFox可以支持ARPRARP等底层协议。

    由于Sniffer截获的包的数据量是相当大的,所以把这些包都保存在内存中是不太现实的想法,所以这里我们引进了操作系统中两个概念CacheBufferCache是临时保存数据包的一个链表。为了不给用户的计算机带来太大的负担我们限制这个链表的最大长度为5000。当这个链表达到长度达到其用户设置的上限的时候,系统会自动把链表中的数据写到Buffer中,然后把Cache清空。

    Buffer是一个二进制文件,它是由一个一个的数据包组成。我们不妨称每个包为一个记录。其长度是不固定的,主要是因为数据包的大小是没有办法确定的。

     

    它由4个部分构成,ID(4字节),段偏移(4字节),数据帧的相关信息(16字节),数据(长度不定,不过可以根据图中的计算公式来计算)。其中段偏移也就是记录长度,主要是用于确定记录的结束位置和下一个记录的开始位置。

     

    III.          SnifferFox目录结构

    当然这里我们必须说明的是发布版本和开发版本的目录结构是不一样的,开发版本中的目录更多,更复杂,但是发布版本中的目录发布版本都有,因此这里只介绍开发版本的目录,发布版本可以对照得出(参考docs/dir.txt)

    +Snifferfox

           +Bin              编译器编译后的二进制文件已经动态链接库文件

           +Config         配置文件

           +Images       图片

           +Obj             编译器生成得中间文件

           +Docs           文档目录

           +Project        工程目录

           +Core           核心的代码,主要是自己定义的数据结构以及其实现

           +Gui              实现图形界面的代码

           +Lang           多语言支持

           +Cache         缓存目录,用于存放临时文件

           +3Com         系统中使用的第3方控件    

                  +Save           用户目录,用于保存用户文件

     

    IV.          SnifferFox功能说明

    1.      数据包截取

    用户可以指定一个计算机的网卡,然后用SnifferFox截取经过这张网卡的所以数据包。系统截取这些包以后会按照要求以列表的形式显示包的摘要信息,以面板的形式显示包的具体信息。

    2.      数据包过滤

    我了得到满足我们要求的包,我们可以对截取到的包进行过滤,根据不用的要求我们可以定义2中不同的过滤器:协议过滤器和IP地址过滤器。这两种过滤器是同时工作的,只有同时满足这2种要求的包才会被保留下来,其它的不满足要求的包都被丢弃掉。

    3.      数据包统计

    为了方便用户了解自己截取到的包的分布情况,我们提供了数据包统计的功能,按照不同的协议层次统计其百分比以及包的数量。用图的形式显示出来。

    4.      协议分析

    根据包的类型,我们会针对不同的情况对包的数据进行分析和显示。SnifferFox支持了比较多的的协议类型,从数据链路层到应用层几乎都支持。

    对应用层以下的协议,都进行了详细的分析,取出了数据包中的每一个字段。至于应用层,暂时只识别了112个协议,但是由于应用层协议实在繁多而且每个协议都相当复杂,所以我们没有进行深入的分析。

    5.      智能排序

    为了方便用户快速找到指定的包,我们提供了智能排序的功能,在用户停止截取数据包的时候,只需要点击一下列表的其中一个字段,系统就会自动对列表中的数据进行升序排序,再次点击排序方式切换。

    6.      检测网卡信息

    系统能够自动检测到系统中的网卡数目(包括虚拟的网卡),动态地显示在菜单列表中。同时能够检测网卡的相关信息。

    7.      作为截包的守护进程

    经过测试,SnifferFox可以在计算机运行几天而不会死机,因此我们可以用它作为专门的截包程序,像守护进程一样一直运行(当然这有一定的限制,当截包实在太多的时候,比如好几个G的时候就有些困难了,因为在这个版本中,我们没有对Buffer文件进行分块,这或许会在以后的版本中加入这个功能)

    8.      状态动态显示

    为了在截取包的时候不影响用户的其它工作,我们可以把SnifferFox最小化,然后它会自动地在任务栏上消失,只显示一个小的托盘图标,在它工作的时候,它的图标会动态地闪烁,停止的时候会停止不动。另外,我们还制作了一个小的浮动窗口显示系统状态,默认的时候放置于窗口顶部,

    9.      数据包的保存和载入

    用户可以把截取的包保存到一个指定的文件(扩展名为*.sni),在需要的时候再通过SnifferFox载入,这种方式查看数据包和截取包的时候没有什么区别的,同时还可以动态地决定查看那一页(系统已经有分页的功能,并且是动态分页,我们可以自己定义每页的记录个数)

    10.  存储用户选项

    系统选项的内容保存在config/config.ini中,这是一个in文件,一旦用户设置(比如界面,语言等)改变,该改变就会记录在文件中,系统下一次运行的时候就会自动根据这些设置做响应的工作。

     

    V. SnifferFox特点

    1.      简单实用

    简单是我们追求的目标,尽管系统的设计和实现比较复杂,但是我们更希望用户看到的是一个简单的系统而且是一个实用的系统。

    2.      界面美观

    SnifferFox的界面没有什么可说的,系统中包含了5套标准的界面(Winxp,MacOS,Protein,DeepBlue,BlueGrass),在不用重新启动系统的情况下可以及时地更换系统界面,而且是整体更换(当然这需要感谢我们的第3方控件)

    3.      多语言支持

    在设计系统的时候我们就考虑到了这个问题,所以SnifferFox本身就是支持多语言的,我们很容易对它进行扩展,只需要把Lang/english翻译成响应的语言就可以,不需要进行任何的程序更改。系统中已经提供了中英两中语言的支持,可以很容易的切换。

    4.      有比较好的扩展性

    我们在语言,界面,协议方面都充分考虑到了其可扩展性。所以,要在这个版本的基础上开发新的版本相对来说还是不难的。这样可以很好的复用现在的代码。

    5.      操作方便

    这是我们考虑得比较多的一个问题,我们在尽量地让系统的操作方式符合人们的习惯,使得用户觉得它方便好用。

    6.      支持了比较多的协议

    以太网中,SnifferFox分析了TCP/IP族的几乎应用层以下的所有协议,应用层的协议能够识别112个。

     

    VI.          扩展SnifferFox

    扩展SnifferFox是一件不容易的工作,除非你对它的结构非常了解,当然只是靠现在你读这个文档的话那是很难做到的。我们可以分3个方面扩展它:

    1.      协议扩展

    SnifferFox用是用面向对象的方法来分析设计和实现的,因此要扩展它,需要写相应的协议分析的Class来解决,然后在主程序中把它们连接起来即可。具体需要详细了解现在的系统结构才可以做到。

    2.      界面扩展

    通过更改第3方控件SUIPack来实现(3com目录),具体参见SUIPack的相关文档。

    3.      语言扩展

    这是SnifferFox中扩展功能最简单的部分,直接翻译Lang/english文件就可以了。

     

    VII.     作者

    FoxBackBone Teamzhengshgourf

    VIII.              结束语

    尽管SnifferFox只是一个小的软件,但是我们通过这个文档也只能够了解它的很小一部分,所以如果你要详细的了解它,只是通过这个文档是绝对不够的。进一步的阅读就只有源代码了,因为我们也没有太多的时间来详细地写出系统的设计。

    如果你在使用了SnifferFox以后有关于它的建议或者想法,无论赞扬的还是批评的或者其它方面的,欢迎反馈给到我们的邮箱:shaohui_1983#163.com gouruifeng_529#sohu.com,感谢你的支持。

     

     

    发表于 @ 2006年02月25日 02:56:00|评论(loading...)|编辑

    旧一篇: VMware中Linux内核2.6.14.4编译全过程(终于编译通过了!!!)

    评论

    #lance-yang 发表于2006-02-25 13:05:00  IP: 222.66.36.*
    TrackBack来自《》

    Demo i测试 trackback
    #我的程序天涯 发表于2006-02-25 14:35:00  IP: 222.66.36.*
    TrackBack来自《先声明我是测试》

    这是对trackback的测试
    #flyingxu 发表于2006-04-22 23:28:00  IP: 61.147.119.*
    TrackBack来自《blog of this week》

    TrackBack From:http://www.cppblog.com/flyingxu/archive/2006/04/22/6088.html
    #mozoer 发表于2006-02-25 11:19:00  IP: 219.136.109.*
    mozoer@gmail.com
    发一份给我.....
    ..刚开始学bcb,希望有帮助.....
    #水浒轮 发表于2006-02-25 14:28:00  IP: 218.249.188.*
    对你的研究非常感兴趣,可否发一份给我参考!!!
    hjawin@cuc.edu.cn
    #hoper 发表于2006-02-25 11:30:00  IP: 218.87.171.*
    我对你的软件非常感兴趣,可以发一份源码给我吗?谢谢!
    jxtzs@126.com
    #超级感兴趣 发表于2006-02-25 16:48:00  IP: 218.94.136.*
    我对你的软件非常感兴趣,可以发一份源码给我吗?谢谢!
    lishuai_girl@126.com
    #drinkeagle 发表于2006-02-25 23:01:00  IP: 202.38.73.*
    感兴趣!
    3X。
    sea220@mail.ustc.edu.cn
    #riflex 发表于2006-02-25 23:03:00  IP: 221.219.252.*
    感兴趣,学习 riflex@gmail.com
    #虫子 发表于2006-02-25 20:47:00  IP: 211.147.234.*
    有兴趣,不错,想看看
    #sladesky 发表于2006-02-26 00:04:00  IP: 211.147.247.*
    谢谢,sladesky@163.com
    #binz 发表于2006-02-25 21:15:00  IP: 218.72.74.*
    谢谢!cannsy@163.com
    #lyra 发表于2006-02-26 09:46:00  IP: 221.222.141.*
    多谢了,lyra_bj@126.com
    #love  发表于2006-02-26 20:41:00  IP: 222.82.141.*
    做过类似的东西,能给一份吗,谢谢?
    zhoutiejun@163.net
    #elife 发表于2006-02-26 16:17:00  IP: 222.95.37.*
    对你的软件很感兴趣,可以发一份源码给我吗?谢谢!
    elife@21cn.com
    #source520.com 发表于2006-02-26 22:55:00  IP: 59.40.23.*
    帮顶!

    ╭=========================================╮

    80G海量源代码,控件,书籍全免费狂下不停!

    http://www.source520.com

    ╰=========================================╯
    #百分百好牛 发表于2006-02-26 20:04:00  IP: 218.1.191.*
    俺对你的软件很感兴趣,可以发份源码给我吗?
    万分感谢!

    yazoox@gmail.com
    #tot 发表于2006-02-26 20:34:00  IP: 202.112.147.*
    可以发份源码给我吗?
    万分感谢! !

    thetopone@163.com

    #xlty 发表于2006-02-27 00:05:00  IP: 61.48.19.*
    非常感兴趣,给我一份,谢谢.
    xlty.0512@gmail.com
    #koce 发表于2006-02-27 09:41:00  IP: 219.142.80.*
    想学习一下,谢谢,请传给我一份
    #koce 发表于2006-02-27 09:42:00  IP: 219.142.80.*
    想学习一下,谢谢,请传给我一份!
    koce_08@163.com
    #China618 发表于2006-02-27 10:18:00  IP: 218.4.153.*
    好东西,也给一份,谢谢!
    china618@163.com
    #ahao 发表于2006-02-27 11:46:00  IP: 221.137.221.*
    学习学习,谢谢
    a_hao@21cn.com
    #liwx 发表于2006-02-27 08:33:00  IP: 218.94.84.*
    学习和测试,给我一份,谢谢!
    #excuseser 发表于2006-02-27 11:10:00  IP: 220.195.161.*
    希望看一下,谢谢。
    excuseser@163.com
    #liwx 发表于2006-02-27 08:33:00  IP: 218.94.84.*
    学习和测试,给我一份,谢谢!
    lwxemail@163.com
    #minimu 发表于2006-02-27 09:01:00  IP: 222.212.64.*
    想学习一下,能发一份源码吗?!谢谢
    minimu@163.com
    #nickel 发表于2006-02-27 09:34:00  IP: 219.232.52.*
    学习和研究,给我一份,谢谢!
    chenf1019@gmail.com
    #eRay 发表于2006-03-02 23:03:00  IP: 60.166.97.*
    我现在正在做这一块。
    已经分析到了TCP、UDP这一层,但再往上却有些困难了,因为协议众多,在识别上犯难了。而时间又很紧。

    真心希望能得到你们的帮助,谢谢。
    请尽快回复好吗?

    已经给你们发邮件了:eRay.Jiang@Gmail.Com
    #Moses 发表于2006-03-06 13:21:00  IP: 60.216.104.*
    我的毕设类似这个方面 可以给我一份源码看看么?
    谢谢
    lx0319@gmail.com
    #srva 发表于2006-04-14 22:22:00  IP: 222.240.144.*
    能否发个给我。。。?
    cry921@163.com
    #chenyan 发表于2006-05-12 10:14:00  IP: 218.91.26.*
    我的毕业设计也是这方面的,不过功能比这个少点~~能不能帮帮我啊"网络报文监听及流量统计功能的实现"我的E:chenyan530520@yahoo.com.cn
    #donglvs 发表于2006-06-18 04:44:00  IP: 210.192.96.*
    想研究下协议细节 给我发一份吧我的邮箱是donglvs@yahoo.com.cn 谢谢
    #如斯 发表于2006-09-20 13:29:00  IP: 60.209.128.*
    能给我一份吗?源代码和可执行程序。qimingos_lsk@163.com
    谢谢
    #hex 发表于2006-10-15 14:58:00  IP: 222.208.171.*
    WINDOS 2003 SP1 下提示找不到网卡(我机器上有2张网卡)...
    #Edward 发表于2006-10-16 09:27:00  IP:
    如果一张都没有找到的话,那说明是你没有安装winpcap. 如果只找到了一张网卡,那就是SnifferFox的bug了,你是哪种情况呢?
    #ch1oE 发表于2007-04-13 21:47:18  IP: 222.184.232.*
    希望可以发一份源代码和程序来学习
    提供的下载我这里链接不到
    谢谢了~

    ch1oE@163.com
    #shaohui 发表于2007-04-14 13:19:30  IP: unknown, 202.*
    请到http://www.shaohui.org/snifferfox.html下载
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © shaohui