我要实现的功能就是:在windows XP下把本机发出的的所有IP包进行拦截,然后经过加密后再发送出去
我查了些网上的资料,有些没搞清楚,想请教下
1.我看有人说有这几种方法:替换系统自带的WINSOCK动态连接库、 spi、raw socket和ndis拦截,不知道哪种更方便实现我所要的
2.raw socket能不能实现拦截转发,还是它只能监听而不能拦截
3.IP包的加密怎么个实现法
刚涉及这方面的学习,希望有人给个解答,谢谢!

解决方案 »

  1.   

    "所有IP包进行拦截,然后经过加密后再发送出去"你这样做,系统岂不是要瘫痪 。"raw socket能不能实现拦截转发,还是它只能监听而不能拦截"raw socket 既不能监听,也不能拦截 。你要实现的功能真是奇怪,也许你表述错了。
      

  2.   

    其实是一个内网保密通信系统,把IP包截获加密后再发送出去,接收方通过共享的密钥解密后实现通信,这种系统怎么会瘫痪....
    我查了下Raw Socket,Winsock2以后提供了原始套结字功能,可以在用户态用Winsock函数接收所有流Winsock的IP包,好像只能监听不能拦截...
    我看有个相关的帖子的信息是:
    两种选择:
    1、可以通过替换Winsock.dll   wsock32.dll   等一些Windows的Dll! 
    2、如果要在Driver层来完成此内容,可以在Ndis或TDi层写一个Driver就行了! 
      

  3.   

    楼主的想法是极富创意的,但是 每个程序有其封包规则,你加密了,服务器就不认了。所以想将所有的封包都拦截可疑通过 apihook或者从驱动动手 完成 但是如果 都加密了 那么你电脑就别想上网了
      

  4.   

    增加一个LSP(分层服务)ws_32.dll载入LSP导出的接口