【问题标题】:Establish direct peer-to-peer Wi-Fi communication between laptops在笔记本电脑之间建立直接的点对点 Wi-Fi 通信
【发布时间】:2012-03-20 20:38:02
【问题描述】:

TL;DR 位于底部

我一直在想办法让两台笔记本电脑(都运行 Ubuntu)能够来回传递基本消息而无需通过无线连接它们网络,通过 AP 或 ad-hoc。我想在此重申,ad-hoc 网络不是我正在寻找的,我在这里看到了许多类似的问题作为答案。

我想我要问的是:我如何实现这一目标?我真正需要的是让一台计算机能够发送数据包,然后让另一台计算机通过某种数据包嗅探器来接收它。

目前:我的两台笔记本电脑都处于监控模式(通过从 aircrack-ng 的 airmon-ng 创建的 mon0 接口),以便它们可以嗅探附近的流量(使用 Wireshark、tcpdump、tcpcump.org 的示例 libpcap 代码,并打开原始socket 并打印出所有的数据包。我尝试了每一个只是因为我认为一个人可能会做一些不同的事情/留下一些东西)。我还有一个非常基本的程序,包括打开一个原始套接字以将精心制作的以太网帧发送到空中,但我无法让我的两台机器看到对方的数据包。在每台机器上运行的嗅探器只能看到从该机器发出的数据包(除了附近的信标/来自该区域 wifi 的控制流量)。

需要注意的一些可能很重要的事情是:

-我发送的数据包在 Wireshark(仅在发送机器上)中显示为格式错误的 802.11 数据包(可能是因为我现在只是用垃圾数据填充它们)。我的印象是我的另一台笔记本电脑也会将它们视为格式错误的数据包,但它什么也得不到

-我使用的套接字来自对套接字(PF_PACKET,SOCK_RAW,ETH_P_ALL)的调用。原始套接字是我最近才知道的,所以我可能会误解它们的工作原理,但我的印象是我可以手工制作第 2 层数据包并直接发送到电线/空气中。

如果您对为什么我想做这样的事情感到好奇,那部分是出于好奇,部分是出于对我正在从事的项目的研究。我想简化/自动化设置 ad-hoc 网络的过程,而我在这里要做的是让笔记本电脑进行一次小型交换,以找出他们将要创建的 adhoc 网络的细节和然后自动建立/加入该网络,而不是由任何一个人明确设置网络或让两个人预先决定网络的名称等,并让两台计算机不断尝试连接到该特定网络。

如果有人认为我发布我的(非常基本的,取自 Stack Overflow 上的另一篇文章)原始套接字代码,我是否以正确的方式进行此过程而不是我的代码是否有效,我更感兴趣会帮助的,我可以。

编辑:如果我能让它工作,我非常乐意发布一套完整的带有说明的代码。我在 Internet 上找不到关于此主题的太多有用信息,我很乐意为将来尝试做同样事情的人提供它。

TL;DR 我想从一台笔记本电脑发送一个数据包,然后通过某种数据包嗅探器在另一台笔记本电脑上接收它。不涉及 wifi 网络或 ad-hoc 网络。类似于为了发送少量数据而欺骗 AP 的信标帧(或类似帧)。

编辑 2:经过一番思考,也许我正在寻找某种原始 802.11 用途?直接控制 wifi 收音机?这样的事情可能吗?

【问题讨论】:

  • 我可以建议您缩小这个问题的范围吗?目前有点 tl; 博士(恕我直言),您实际上要问的内容有些隐蔽。你不必为此做任何事情,但我觉得它可能会有所帮助。
  • 是的,我的帖子有点厚。我在最后附加了一个摘要,希望更清楚?
  • @Kaz - “正在寻找某种原始的 802.11 使用”,显然这是“可能的”,但我不知道 Linux WiFi 硬件接口的状态。我唯一的知识是基于在培训课程中使用 H&D Wifi SD 卡。我们获得了加载到卡上的封闭源代码,我们只能谈论它 :-( 我假设某个地方的某个人有更开放的方法。如果需要,你可以更换笔记本电脑吗?

标签: c wifi packet-capture packet-sniffers raw-sockets


【解决方案1】:

我发现只要我有正确的 802.11 和 radiotap 标头,我就可以通过我的监控模式接口发送数据包。我认为我最初遇到的问题(无法嗅探数据包)是因为它们格式错误,因此实际上没有被发送出去。

我可以通过修改here, courtesy of someone named Evan Jones 找到的示例代码来实现这一点,除了我不需要使用基于 Atheros 的卡或 Madwifi 驱动程序之外,使用 aircrack-ng 创建的 mon0 接口一切正常。

【讨论】:

    【解决方案2】:

    我确信 Apple Mac 会这样做。苹果称其为“bonjour”。很可能有一个合适的 IETF 规范。这是Article on Bonjour 这是Wikipedia on an open component of bonjour,它可能会帮助你动起来。

    【讨论】:

    • 嗯。这很有趣,但从这两篇文章看来,这些设备必须已经以某种方式联网。我正在尝试找出如何进行原始的、无网络的通信。后者虽然是一个有用的协议,但也需要一个设备来充当其他设备的代理,在我开始将代理设备纳入等式之前,我需要解决我的问题的这个无网络方面。
    • 过去的情况是两台 Mac 可以在“飞机”上开始“交谈”。我当时查了一下(3 多年前,如果我记错了,我深表歉意),我相信它不需要第三个网络设备。
    • 哦,我想知道它是否依赖于 IPv6?我知道其他无线网络,如 6loWPAN 使用一些漂亮的 IPv6 'ping' 增强功能来支持路由 - 我会尝试找出答案。很抱歉浪费您的时间
    • 完全没有,我想我稍后再看一下。我现在有点处于我所有编程项目兴趣的网络“阶段”,我可能可以将 Bonjour 用于一些有趣的网络内容。谢谢!
    • @Kaz - 如果您可以使用 IPv6,那么值得查看 ping 的增强功能。 Contiki Wireless networking 广泛使用它来构建其网状网络路由。因此,如果您现在可以输入 IP 地址,那么 Contiki 中可能会有一些灵感/想法/解决方案。如果你到达任何地方,请“ping”,这是一个有趣的问题。
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多