V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
keary
V2EX  ›  问与答

有没有什么类似Winpcap的数据包拦截的库?

  •  
  •   keary · 2014-01-17 10:46:17 +08:00 · 8799 次点击
    这是一个创建于 3965 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,我现在想写个需要做到数据包拦截与修改的的程序,比如拦截目的IP为XXX.XXX.XXX.XXX的数据包,然后修改IP字段后再发出去~

    Winpcap库感觉简单好用,问题是它只能做到旁路捕包,而不能拦截,所以想问问有没有什么跟它类似的现成的数据包拦截的类库?我看现在要拦截都是写NDIS中间层驱动,不过这个好像稳定性不是很好,而且驱动开发我也不怎么会…
    24 条回复    2018-04-01 11:37:10 +08:00
    keary
        1
    keary  
    OP
       2014-01-17 10:46:47 +08:00
    对了,是Windows平台~
    the13matrix
        2
    the13matrix  
       2014-01-17 11:13:25 +08:00
    我也在找。
    我发现部分扫描器,在线程数较大时,会有部分握手包不经全局代理,直接发向公网。这会导致真实IP暴露。
    当时想的是能不能有个软件把违规数据包拦截在本机。可惜没找到。搜“数据包拦截”,搜到的全是抓包软件。
    keary
        3
    keary  
    OP
       2014-01-17 11:23:05 +08:00
    嗯,Windows下拦截数据包好像都是用NDIS中间层驱动来做的,不过这个比较麻烦,而且一不小心就蓝屏了。所以要是有个类似winpcap这样简单好用又稳定的库就好了~
    Akagi201
        4
    Akagi201  
       2014-01-17 12:54:02 +08:00
    高端, 防火墙 iptables这类不行吗?
    keary
        5
    keary  
    OP
       2014-01-17 13:45:37 +08:00
    @Akagi201 我是Windows…而且还需要修改数据包再发送~
    liwei
        6
    liwei  
       2014-01-17 16:58:30 +08:00   ❤️ 2
    liwei
        7
    liwei  
       2014-01-17 16:59:31 +08:00   ❤️ 1
    这东西要是在linux下做就简单多了,利用iptables把数据包放到NFQUEUE,在用户空间处理NFQUEUE就行了,Windows真是麻烦。
    keary
        8
    keary  
    OP
       2014-01-17 19:20:46 +08:00
    @liwei 要的就是这个!~谢谢!不过要是能支持XP就好了~
    lehui99
        9
    lehui99  
       2014-01-17 23:31:06 +08:00 via Android   ❤️ 1
    @keary Winpkfilter http://www.ntkernel.com/?Products:Development_Toolkits:Windows_Packet_Filter_Kit
    不过不开源,商业开发和使用都要收费
    Tinet
        10
    Tinet  
       2014-01-18 09:38:15 +08:00
    我用过一个叫burpsuite的软件,可以拦截,不知道他是用什么库写的
    Tinet
        11
    Tinet  
       2014-01-18 09:43:28 +08:00
    @liwei 学习了
    Tinet
        12
    Tinet  
       2014-01-18 09:48:30 +08:00
    @liwei 请问怎么用iptables把数据包放到NFQUEUE
    keary
        13
    keary  
    OP
       2014-01-18 09:50:12 +08:00
    @Tinet Linux下一般是用netfilter写的~
    Tinet
        14
    Tinet  
       2014-01-18 09:54:01 +08:00
    @keary 感觉linux下实现的原理蛮有意思的,不知道有没有详细一点的资料啊
    liwei
        15
    liwei  
       2014-01-18 10:18:47 +08:00
    @Tinet NFQUEUE就是iptables的一个target,前面用match条件匹配到数据包后用 -j NFQUEUE 就可以了。
    liwei
        16
    liwei  
       2014-01-18 10:20:27 +08:00
    @keary XP应该只能通过写驱动的方式来完成,在Vista之后才有的 WFP,WinDivert就是用WFP实现的。
    http://msdn.microsoft.com/en-us/windows/hardware/gg463267.aspx
    keary
        17
    keary  
    OP
       2014-01-18 10:43:08 +08:00
    @liwei 这个我懂哈哈,再多问一句,那有没有文件过滤的类库~?文件过滤我看是有两种,用户层HOOK住CreateFile这类API,不过很容易被破解;驱动层方法主要就是用miniFilter,这个我学过一下,比较难懂,而且动不动就蓝屏…
    liwei
        18
    liwei  
       2014-01-18 10:46:16 +08:00
    @keary 这个我不懂
    Tinet
        19
    Tinet  
       2014-01-18 11:33:45 +08:00
    @liwei 我看了一下相关资料,有一点疑问,就是在用户空间处理后,不需要额外的处理数据包就会自动返回到内核空间吗
    keary
        20
    keary  
    OP
       2014-01-20 00:39:56 +08:00
    @liwei 请问这个WinDivert你用过吗?我用它编译好的版本,导入了.h和.lib文件,结果编译的时候VS提示“error LNK2019: 无法解析的外部符号 __imp__WinDivertOpen,该符号在函数 _main 中被引用”,请问这个怎么弄?
    liwei
        21
    liwei  
       2014-01-20 07:21:30 +08:00 via Android   ❤️ 1
    @Tinet 用户空间通过 netlink 获取到数据包 处理后再通过netlink发送到内核
    liwei
        22
    liwei  
       2014-01-20 07:23:11 +08:00 via Android
    @keary lib没连接上? 不清楚什么原因 我平时都是在linux下用的 gcc
    a7a2
        23
    a7a2  
       2016-12-31 16:58:06 +08:00
    @keary WinDivert 上的 WinDivert sample applications 你在 windows gcc 编译通过了无?
    wuwenjia
        24
    wuwenjia  
       2018-04-01 11:37:10 +08:00
    请问这个修改数据包,可以对数据包里面的具体数据的某个字段的值进行修改吗,我想对 post 的数据包里面的数据进行拦截加密再发出去,这个要怎么弄呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3531 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:16 · PVG 19:16 · LAX 03:16 · JFK 06:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.