【发布时间】: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