使用netfilter队列修改数据包?

2024-05-16

我目前正在尝试在用户空间中使用带有 libnetfilter_queue 的代码来修改在 iptables 的 NFQUEUE 目标中排队的数据包。但是我不知道如何去做。

我已将其设置为使用 NFQNL_COPY_PACKET 复制数据包,如果我要修改复制的数据包,它会通过函数 nfq_set_verdict() 自动发送回内核吗?

此外,我之前曾从 pcap 文件中提取数据包,但我注意到从 nfq_get_payload() 获得的数据似乎非常不同。有谁知道如何剖析数据?


如果在 nfq_set_verdict 中将判决设置为 NF_REPEAT,则数据包(无论是否修改)将再次进入 iptables mangle OUTPUT 链、nat OUTPUT chane、filter OUTPUT 链等(换句话说,它将表现得好像某个应用程序发送了它)

要提取数据,请在 NFQUEUE 处理程序回调中使用此样板:

int queueHandle_input ( struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, struct nfq_data *nfad, void *mdata ){

struct iphdr *ip;
int id;
struct nfqnl_msg_packet_hdr *ph = nfq_get_msg_packet_hdr ( ( struct nfq_data * ) nfad );
if ( ph ) id = ntohl ( ph->packet_id );
nfq_get_payload ( ( struct nfq_data * ) nfad, (char**)&ip );

现在 ip 包含按网络字节顺序排列的 IP 标头数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用netfilter队列修改数据包? 的相关文章

  • 计算机网络实验报告(三):Cisco Packet Tracer 实验

    文章目录 一 CPT 软件使用简介二 直接连接两台 PC 构建 LAN三 用交换机构建 LAN四 交换机接口地址列表五 生成树协议 xff08 Spanning Tree Protocol xff09 六 路由器配置初步说明一说明二说明三说
  • SYNPROXY抵御DDoS攻击的原理和优化

    序 又到了周末 我又要必须写点什么了 周末依然加班 感谢周末上班平日休息的老婆分担了几乎所有家务 一切依然 然而这些对我来讲都不是个事儿 事实上我是希望取消一切节假日和周末的 所谓的周末和节假日是我一直以来觉得出自 圣经 里面最荒唐的东西
  • 如何使用 netfilter 挂钩在内核空间中回显数据包?

    我想在内核空间中回显一个数据包 我在这台机器上运行一个 echo 服务器 端口为 6000 现在 客户端在另一台机器上运行 向回显服务器发送数据 现在 我想做的是从内核空间回显数据包 我不想用数据包打扰服务器 它会从内核空间默默地回显 我在
  • 路由器在 NAT 中保留记录多长时间?这些记录可以重复使用来转发来自其他主机的请求吗?

    有一个答案以简单的方式解释了路由器如何将请求从本地网络转换到外部网络并返回 https superuser com questions 105838 how does router know where to forward packet
  • 协议术语:消息与数据包

    在实践中 对于采用更高级别协议 例如 TCP IP 之上的协议 通过网络传输的通信最合适的术语是什么 具体来说 我指的是小的二进制数据单元 我在各种客户端 服务器库中都看到过 消息 和 数据包 但我对社区的共识感兴趣 这些绝对是消息 数据包
  • 使用python解码tcp数据包

    我正在尝试解码通过 TCP 连接收到的数据 数据包很小 不超过100字节 然而 当它们很多时 我会收到一些连接在一起的数据包 有没有办法防止这种情况 我正在使用Python 我尝试分离数据包 我的来源如下 数据包以STX字节开始 以ETX字
  • HTTP 的 BPF 是什么?

    定义可见here http en wikipedia org wiki Berkeley Packet Filter 候选人的答案可能是tcp and dst port 80 但是可以tcp and dst port 80保证它是HTTP流
  • 在PHP中接收UDP数据包数据报

    我正在用 php 为 GPS 跟踪系统构建监听服务器 GPS 通过 UDP 数据包发送数据 我可以通过运行以下脚本来显示数据 然而 实际数据以符号形式出现 所以我猜我错过了转换 Reduce errors error reporting E
  • 从 Qt 应用程序获取原始数据包数据

    我正在寻找一种方法来访问和篡改 Qt 应用程序发送和接收的原始数据包数据 但找不到任何东西 有什么方法吗 或者 如果不是应用程序 至少有一个从 QWebView 访问数据包数据的方法 有没有什么方法可以实现以上两者中的任何一个 对不起 萨姆
  • 如何解决“struct iphdr”没有名为“daddr”的成员等错误

    我运行了一个程序 链接是 http www security freak net raw sockets sniffer eth ip tcp c http www security freak net raw sockets sniffe
  • 打印 TCP 数据包数据

    在TCP通信中 当数据包从以太网传输到网络 IP 层时 我想打印该数据包中存在的数据 我正在Linux上工作 我得到一些信息 它可以在 Linux 内核代码的帮助下完成 即在 Linux NAT 防火墙代码中 但是我从哪里可以获得内核源代码
  • 为什么服务器不使用 C# 中的套接字接收本地传输中的所有 UDP 数据包?

    我有一个服务器和一个客户端应用程序 客户端将一堆数据包发送到服务器 使用的协议是UDP 客户端应用程序生成一个新线程来循环发送数据包 服务器应用程序还生成一个新线程来循环等待数据包 这两个应用程序都需要根据传输进度保持 UI 更新 如何正确
  • Scapy发送的数据包收不到

    我正在尝试使用以下命令使用 scapy 发送 UDP 数据包 gt gt send IP dst 127 0 0 1 src 111 111 111 111 UDP dport 5005 Hello Sent 1 packets 并从tcp
  • UDP 数据报中发送的消息未经过净化?

    我的代码如下 一切都按照我想要的方式进行 但是当我的消息收到时 它们的末尾有很多框 有点像这样 消息 你好 如何才能让接收和打印的内容仅为 Message hello 我非常感谢任何帮助 import java io import java
  • 如何在 debian 64 位上从 tcphdr (sk_buff) 结构访问数据/有效负载?

    我正在开发一个小型防火墙 我必须从端口 80 http 检索每个 tcp 数据包的数据以进行解析 这段代码在 debian 32 位虚拟机上运行良好 我能够打印每个网页的标题 但是当我尝试加载内核模块并通过 http 端口传输一些数据时 它
  • 编写一个http嗅探器

    我想编写一个程序来通过数据包捕获提取系统访问的网站的 URL IP 地址 我认为该 URL 将出现在数据部分中 即不在任何标头中 ethernet ip tcp udp 此类程序有时称为http嗅探器 我不应该使用任何可用的工具 作为初学者
  • TCP网络数据包什么时候会在应用层产生分片?

    TCP报文什么时候会在应用层分片 当应用程序发送 TCP 数据包时 应用程序层的接收者是否会收到两个或多个数据包中的数据包 如果是这样 什么条件会导致数据包被分割 似乎数据包在达到以太网 在网络层 1500 字节的限制之前不会被分段 但是
  • 定义 Netfilter 挂钩函数的正确方法是什么?

    我正在编写一个内核模块 更具体地说 一个网络过滤器模块 适用于 Linux 我试图使其与各种内核兼容 但入口功能给我带来了麻烦 从 LXR 中 我可以看到nf hookfntypedef 在内核 3 13 中发生了变化 Linux 3 12
  • 当网络上的所有计算机都具有相同的公共IP地址时,如何向特定计算机发送UDP数据包? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这就是问题 它非常简单 理解 我家里有 2 台电脑 它们都有相同的公共 IP 地址 例如 1 2 3 4 我在咖啡馆有一台计算机 不同的网络 因此它具
  • 当 TCP 序列号到达而不是预期时会发生什么情况?

    我正在编写一个程序 使用 libpcap 捕获数据包并重新组装 TCP 流 我的程序只是监视流量 因此我无法控制数据包的接收和发送 我的程序忽略所有非 TCP IP 流量 我根据 ISN 计算下一个预期序列号 然后计算连续的 SEQ 号 我

随机推荐