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可以实现的。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式