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