我需要构建什么才能在内核级别直接访问以太网帧位?

2023-12-19

我想检索线路上所有以太网帧的以太网帧位,无论它们是否发往我的机器(MAC 级别)。

其逻辑必须位于内核级别。

所以为了实现这一目标,我需要构建一个独立的内核模块 or 以太网驱动程序 or 以太网网络接口

注意:我刚刚开始为我的项目学习 Linux 内核模块开发。如果这不是发布此问题的适当位置,我很抱歉。


为了接收发往所有主机的帧,您必须将网络接口设置为混杂模式。

为了获取框架,您可以使用不同的替代方案:

  1. pcap API(库 libpcap)
  2. 数据包套接字:http://man7.org/linux/man-pages/man7/packet.7.html http://man7.org/linux/man-pages/man7/packet.7.html
  3. 看看 ebtables (我从未使用过它,所以我不确定这一点):http://linux.die.net/man/8/ebtables http://linux.die.net/man/8/ebtables
  4. 这里提出netfilter:如何在内核模块中捕获网络帧 https://stackoverflow.com/questions/11051625/how-to-capture-network-frames-in-a-kernel-module

如果您仍然想破解内核,则不需要创建新的以太网设备驱动程序,只需编写一个内核模块来注册以接收从以太网设备驱动程序接收的帧。查看内核文件http://lxr.free-electrons.com/source/net/core/dev.c http://lxr.free-electrons.com/source/net/core/dev.c,你可以从函数开始:

int netif_rx(struct sk_buff *skb)

这是从设备驱动程序接收帧的一个。

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

我需要构建什么才能在内核级别直接访问以太网帧位? 的相关文章

随机推荐

  • Swift:.classForCoder() 的替代方案

    给出以下代码 return TyphoonDefinition withClass AppDelegate classForCoder definition in definition injectProperty assembly 有必要
  • 内核sys_call_table地址与system.map中指定的地址不匹配

    我正在尝试温习 C 所以我一直在研究 Linux 内核的系统调用表 在 3 13 0 32 generic 上 我在网上找到了一个资源 它使用以下函数搜索系统调用表 并将其加载到 LKM 中的内核中 static uint64 t aqui
  • 如何在 Linq 中进行完全外连接?

    我继承了一个设计不完全优化的数据库 并且我需要操作一些数据 让我对我必须做的事情给出一个更常见的类比 假设我们有一个Student桌子 一个StudentClass记录他参加的所有课程的表格 以及StudentTeacher表存储了所有教过
  • 将 Spring Boot WAR 部署到 Tomcat 8 - 访问资源时出现 HTTP 404

    我是 Spring Boot 的新手 正在努力将一个简单的 HTML Web 应用程序 AngularJS 部署到 Tomcat 8 这个 Web 应用程序仅提供一些 HTML CSS JS 内容 没有对后端的 REST 调用 它是使用 W
  • 是否有 VS Code 和 VS Code 扩展的活动监视器?

    有一天 我在拔掉电源的情况下使用我的笔记本电脑 3 小时内它就从充满电到了 10 通常电池可以持续一整天 长话短说 VS Code 正在耗尽我的电池寿命 VS Code 的能源使用量似乎比排名第二的能源用户 Chrome 高出近 30 倍
  • 修改Devise重置密码错误文本

    使用 Devise GEM 当用户密码重置时 他们可以设置新密码 如果输入的密码不匹配或密码太短 您会收到默认消息 密码与确认不匹配 密码太短 最少8个字符 如何 在哪里可以更改这些错误消息的文本 将其添加到您的 config locals
  • iOS 7隐藏标签栏问题

    IOS7 中隐藏选项卡显示非正式行为 当我使用 self tabBarController tabBar hidden YES 上面的代码隐藏了 tabBar 但我的底部视图不保持交互式 但是当我在导航中推送 viewController
  • Mac Mini 足以用作 iPhone 开发机吗?

    所以过去我接触过的两个客户 所有的讨论都是关于创建一个 iPhone 应用程序 我不会撒谎 我想制作一个 或者至少学习如何制作它们 我从未拥有过 Mac 所以我不知道他们的操作系统如何工作 工作 执行 无论如何 我是一名 NET 开发人员
  • 如何读取 AngularJS 中 ArrayBuffer 中的二进制数据?

    在 AngularJS 中有 http get http docs angularjs org api ng 24http get动态获取数据 不幸的是 从官方文档中很难理解如何读取二进制数据 例如 用于图像操作 默认get获取数据作为St
  • 如何正确转义正则表达式中的字符

    我想在字符串内进行字符串搜索 简单地说MySTR search Needle 出现此问题时needle字符串包含特殊的正则表达式字符 如 等 它因错误而失败invalid quantifier 我浏览过网页 发现可以使用以下命令转义字符串
  • 响应式六边形网格

    我从互联网上加载了我的网站上的多个图像 是否有可能给所有这些图像一个六边形在响应式网格中 div img src link class Image div div img src link class Image div 我找到了多种方法来
  • 如何从 adb shell 检查 SharedPreferences?

    现在我们可以从远程 Shell 检查 sqlite3 数据库 http developer android com guide developing tools adb html sqlite 是否可以从 adb shell 检查 Shar
  • 通过ObjectID获取MongoDB集合

    MongoDB ID 对于单个数据库集群是唯一的 是否可以获取使用特定 ObjectID 的集合 我有一个 ObjectID 的十六进制表示形式 并且需要知道具有此 ID 的文档所在的集合 可能吗 它不是本机功能 但可以通过迭代所有集合来实
  • “返回等待承诺”和“返回承诺”之间的区别

    鉴于下面的代码示例 行为是否有任何差异 如果有 这些差异是什么 return await promise async function delay1Second return await delay 1000 return promise
  • 正则表达式正在捕获整个字符串

    我正在使用以下正则表达式 public private function a zA Z 0 9a zA Z 0 9a zA Z 匹配以下字符串 public function messenger text sendMsg text priv
  • 在python中查找二维数组中数字对的频率

    我想找到二维数组中成对的频率 输入示例如下 list of items 12 14 18 12 19 54 89 105 14 19 54 88 105 178 预期输出如下 12 14 1 12 18 1 12 19 1 12 54 1
  • 对话插件与 ActionFlow

    谁能详细说明 Struts2 Conversation 插件和 ActionFlow 插件之间的区别以及我何时应该选择其中之一 Regards 它们是用于不同目的的完全不同的插件 Conversation插件添加conversation范围
  • 扩展 Outlook 2010 附件上下文菜单

    我正在以 xml 形式扩展 Outlook 2010 中附件显示的上下文菜单 到目前为止 我已经有了一个按钮和一个 onAction 事件的处理程序 有人可以帮助我如何从这里获取当前选择的附件吗 好的 我知道了 http msdn micr
  • Asp.net 多语言 Web 应用程序 - 本地化

    您对构建 asp net 多语言本地化 Web 应用程序 仅字符串资源的 UI 本地化 的最佳方法有何看法 尤其是这两件事 如何存储资源 Xml 文件 resx 文件还是其他文件 如何处理 URL 我不想一直将语言参数保留在查询字符串中 所
  • 我需要构建什么才能在内核级别直接访问以太网帧位?

    我想检索线路上所有以太网帧的以太网帧位 无论它们是否发往我的机器 MAC 级别 其逻辑必须位于内核级别 所以为了实现这一目标 我需要构建一个独立的内核模块 or 以太网驱动程序 or 以太网网络接口 注意 我刚刚开始为我的项目学习 Linu