有没有什么类似Winpcap的数据包拦截的库? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
keary
V2EX    问与答

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

  •  
  •   keary 2014-01-17 10:46:17 +08:00 9291 次点击
    这是一个创建于 4287 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,我现在想写个需要做到数据包拦截与修改的的程序,比如拦截目的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     Solana     1476 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:43 PVG 00:43 LAX 09:43 JFK 12:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86