Tag: wifi

如何在连接的Wi-Fi用户的C程序中获取IP和MAC地址?

我尝试创建可以安装到Wi-Fi路由器的客户端应用程序(OpenWRT态度调整12.09)应用程序必须用C编写并实现OpenWRT守护进程方法。 当任何访客转向Wi-Fi并连接到我的SSID时,我需要在我的C程序中使用他的IP和MAC地址。 如何为我的C程序中的任何新连接用户(设计)获取IP和MAC地址? 我开始尝试对已经连接到路由器的任何IP使用arp命令: #include #include #include int main() { char* ip = “192.168.1.101”; char output[255]; char command [255]; //system(“arp -a”); sprintf(command,”%s %s %s”,”arp”,”-a”,ip); FILE* arp = popen(command, “r” ); int i = 1; while (fgets(output, sizeof(output), arp) != 0) { i++; if ( i == 2 ) { printf(“%s”,output); char macAddress[18]; int index = […]

如何在没有网络的情况下通过wifi发送原始数据包?

我试图在两个覆盆子pi之间通过wifi发送一些数据,而不用它们连接到网络。 我希望它的工作方式类似于信标和探测请求的工作方式,其中广播可以从无线接口发出。 我要发送的数据将是设备的主机名和数据包发送的时间。 我一直试图在过去几天解决这个问题,但如果没有它们在同一个网络上,我就无法工作。 有人能指出我正确的方向吗? 我对于我使用的语言并不太感兴趣。 我一直在尝试使用python和C,但收效甚微。

解析WiFi数据包(libpcap)

我一直在研究如何让一个OpenWRT路由器记录WiFi探测请求到MySQL数据库(它存储每个探测请求数据包的MAC地址和RSSI信息以及其他特定于路由器的数据)。 在研究了libpcap之后,我已经能够拼凑出一个基本的小程序,只需使用filter表达式(’wlan subtype probe-req’)在监视器接口(mon0)上嗅探数据包,然后输出原始数据包hex 有了libpcap在线提供的信息,这部分相当简单。 现在这里我被困住了: 如何解析WiFi数据包以检索我正在寻找的信息(RSSI和源MAC地址)? 要说清楚,我不是要求代码去做(虽然我不会抱怨,如果你想提供一些:D)。 我只是在寻找某种指导来理解哪个字节是哪个 – 如果你愿意的话,那就是WiFi数据包路线图。 有一些很好的教程可以解析通过以太网进入的数据包,但是我无法找到任何可以帮助解析与WiFi特定相关的标头。 我假设它将是一个非常简单的过程 – 只需抓取RSSI和源MAC的相关字节 – 但同样,我还没有找到任何关于哪个字节的文档。 我知道这已经完成了,但我会说实话:在查看tcpdump的源代码时,我完全迷失了。 那么,有没有人知道如何解析WiFi数据包的良好资源? 干杯 编辑:更具体的答案 RSSI位于RadioTap标题中(嗯,在Linux上)。 使用radiotap-parser.c以及它所依赖的文件(在与我链接的文件相同的目录中找到)将RSSI从数据包中拉出是相当简单的。 如果有人在使用radiotap-parser.c时遇到问题,请随时与我们取得联系。 通过radiotap函数拉出源MAC地址非常容易,因为radiotap头结构包含radiotap头( it_len )的长度,它是可变的。 因为我只解析具有固定长度的探测请求( 在这里查看第17页),所以只需要指向指向packet + it_len + 10的指针(源MAC地址在MAC开始后10个字节开始)框架,从radiotap标头结束的地方开始)。 从该指针开始的6个字节是802.11帧中的addr2 (同样,请参见此处的第17页)。