Linux下用libpcap抓取数据包,修改完源和目的IP地址后如何原封不动地转发出去?

用C语言实现我已实现libpcap抓取数据包修改源和目的IP地址但是怎样原封不动地将数据包转发出去呢?是用libnet吗?求那部分代码!假如我给主机A发ICMP的ping... 用C语言实现

我已实现libpcap抓取数据包修改源和目的IP地址
但是怎样原封不动地将数据包转发出去呢?是用libnet吗?
求那部分代码!
假如我给主机A发ICMP的ping包,我在主机A上用libpcap的API捕获到数据包后,修改源IP地址为任何一个IP地址,目的IP地址为主机B。
之后我能否将新的数据包(只修改了源、目的IP地址)转发出去,给主机B呢?
就好像这个ping包是从别的源发给主机B的,而不是我给主机A发的。
展开
 我来答
小虾西i
2014-05-05
知道答主
回答量:1
采纳率:0%
帮助的人:2.3万
展开全部
什么意思?你用到ARP了没?如果没用到ARP的话你捕获到的数据包只是正常流经你的网卡的数据包,你只是把它复制了一份而已,并没有影响数据包正常的收发。如果你用了ARP,例如你把局域网内本来应该告洞裤颤姿发给网关的数据包发到你的主机上了,你还是可以用Libpcap里的API把数据包再转发出袜简去啊。
更多追问追答
追问
原来如此啊,这个应该和wireshark是一个原理吧?
那假如我给主机A发ICMP的ping包,我在主机A上用libpcap的API捕获到数据包后,修改源IP地址为任何一个IP地址,目的IP地址为主机B。
之后我能否将新的数据包(只修改了源、目的IP地址)转发出去,给主机B呢?
就好像这个ping包是从别的源发给主机B的,而不是我给主机A发的。
请问这样能实现吗?
谢谢。
追答
应该是可以的。
以前我同学玩过一个高端点的,先用ARP欺骗把局域网内所有(或者其中某一台机器)给欺骗了,这样本来这台机器应该发给网关的数据包就全都发给你了,如果你什么都不干那他就上不了网了。如果你再直接转发给网关,设置个转发间隔,比如0.1秒这样的,他那边应该都感觉不出来,最多会感觉上网有点卡。这个方法理论上是可行的,不过现在大家基本上都装了360,如果他打开了局域网防护你就要想办法绕过360咯,这个我没研究过,估计应该不轻松,360里高手可不少。

UPDATE:重新看了一下你的要求,挺简单的啊,研究研究Libpcap的API可以实现的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式