在笔记本电脑之间建立直接的点对点Wi-Fi通信

时间:2012-03-20 20:38:02

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

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收音机?这样的事情有可能吗?

2 个答案:

答案 0 :(得分:2)

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

我能够通过调整找到here, courtesy of someone named Evan Jones的示例代码来实现这一点,除了我不需要使用基于Atheros的卡或Madwifi驱动程序,一切都可以使用aircrack-ng创建的mon0接口。< / p>

答案 1 :(得分:1)

我确信Apple Mac会这样做。 Apple将其称为“bonjour”。它可能有适当的IETF规范。这是Article on Bonjour这是Wikipedia on an open component of bonjour,可能会让您感动。

相关问题