首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取已重定向到localhost的tcp数据包?

如何读取已重定向到localhost的tcp数据包?
EN

Stack Overflow用户
提问于 2011-06-06 06:58:24
回答 2查看 690关注 0票数 2

我使用iptables (PREROUTING)将所有TCP流量重定向到本地端口。

现在我想用一个C程序来捕获这些数据包。我尝试了很多套接字变体(UDP / TCP / ...)但是我不能使用我在iptables中指定的端口连接到localhost。

我可以看到所有的数据包都被重定向,但是如何捕获这些流量呢?

这些是我的规则(它是Android,但不应该有任何不同……):

代码语言:javascript
复制
Chain PREROUTING (policy ACCEPT 32 packets, 5675 bytes)
 pkts bytes target     prot opt in     out     source               destination
FIX ME! implement getprotobynumber() bionic/libc/bionic/stubs.c:384
    0     0 DNAT       tcp  --  any    any     anywhere             anywhere            tcp dpt:5512 to:192.168.1.107

Chain OUTPUT (policy ACCEPT 56 packets, 3433 bytes)
 pkts bytes target     prot opt in     out     source               destination
FIX ME! implement getprotobynumber() bionic/libc/bionic/stubs.c:384
    0     0 DNAT       tcp  --  any    any     anywhere             anywhere            tcp dpt:5512 to:127.0.0.1

我已经尝试过创建TCP/UDP/RAW套接字(我也考虑过"local“/ UNIX-Sockets,但是它的地址是什么?)和ServerSocket / DatagramServer -但我什么也没收到...

谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-06 07:19:50

您可以只使用libpcap,它将捕获以太网设备上发生的任何流量,然后过滤出您想要/需要的内容。

如果没有服务在端口上侦听,则无法连接到端口,即使使用DNAT也是如此。您需要准确地解释您试图实现的目标,解释您的网络设置以及您尝试捕获的数据。

票数 1
EN

Stack Overflow用户

发布于 2011-06-06 07:12:53

如果您只是想读取数据包,那么ULOG目标可能是您的首选。您可以将netfilter配置为将数据包发送到用户空间,并且ulogd守护进程可以save the packets to a file or database,因此可以对其进行配置或修改,以直接将数据包发送到您的程序。

另一方面,如果你试图做一些巧妙的插入来创建一个透明的虚拟专用网或类似的东西,ULOG可能会有一点太多的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6246471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档