TL;DR 在底部可用
我一直在想办法让两台笔记本电脑(都运行 Ubuntu)能够来回传递基本消息,而无需通过无线网络连接它们,无论是通过 AP 还是 ad-hoc . 我想在此重申,ad-hoc 网络不是我想要的,我在这里看到了许多类似的问题作为答案。
我想我要问的是:我如何实现这一目标?我真正需要的是一台计算机能够发送一个数据包,然后另一台计算机通过某种数据包嗅探器来接收它。
目前:我的两台笔记本电脑都处于监控模式(通过从 aircrack-ng 的 airmon-ng 创建的 mon0 接口),以便它们可以嗅探附近的流量(使用 Wireshark、tcpdump、tcpcump.org 的示例 libpcap 代码,并打开一个原始套接字,然后打印出所有的数据包。我每个都试过只是因为我认为一个人可以做一些不同的事情/遗漏一些东西)。我还有一个非常基本的程序,包括打开一个原始套接字以将精心制作的以太网帧发送到空中,但我无法让我的两台机器看到对方的数据包。在每台机器上运行的嗅探器只能看到从该机器发出的数据包(除了附近的信标/来自该区域 wifi 的控制流量)。
需要注意的一些可能很重要的事情是:
- 我发送的数据包在 Wireshark(仅在发送机器上)中显示为格式错误的 802.11 数据包(可能是因为我现在只是用垃圾数据填充它们)。我的印象是我的另一台笔记本电脑也会将它们视为格式错误的数据包,但它什么也没得到
- 我使用的套接字来自对套接字(PF_PACKET,SOCK_RAW,ETH_P_ALL)的调用。原始套接字是我最近才知道的,所以我可能会误解它们的工作原理,但我的印象是我可以手工制作第 2 层数据包并直接发送到电线/空气中。
如果你对我为什么要做这样的事情感到好奇,那部分是出于好奇,部分是出于对我正在从事的项目的研究。我想简化/自动化设置 ad-hoc 网络的过程,而我在这里要做的是让笔记本电脑进行一次小型交换,以找出他们将要创建的 adhoc 网络的细节和然后自动建立/加入该网络,而不是由任何一个人明确设置网络或让两个人预先决定网络的名称等,并让两台计算机不断尝试连接到该特定网络。
如果我以正确的方式进行此过程而不是我的代码是否有效,我更感兴趣,如果有人认为我发布我的(非常基本,取自 Stack Overflow 上的另一篇文章)原始套接字代码会有所帮助,我可以。
编辑:如果我能让它工作,我很乐意发布一整套带有说明的代码。我在互联网上找不到关于这个主题的太多有用信息,我很乐意为未来尝试做同样事情的人提供它。
TL; DR我想从一台笔记本电脑发送一个数据包,然后通过某种数据包嗅探器在另一台笔记本电脑上接收它。不涉及 wifi 网络或 ad-hoc 网络。类似于为了发送少量数据而欺骗 AP 的信标帧(或类似帧)的东西。
编辑2:经过一番思考,也许我正在寻找某种原始的802.11使用?直接控制 wifi 收音机?这样的事情可能吗?