Tag: 解析

解析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页)。

是否使用goto?

这个问题可能听起来有些陈词滥调,但我处于这种情况。 我正在尝试实现一个有限状态自动机来解析C中的某个字符串。当我开始编写代码时,我意识到如果我使用标签来标记不同的状态并使用goto从一个状态跳转到另一个案件来了。 在这种情况下使用标准的break和flag变量非常麻烦,很难跟踪状态。 什么方法更好? 最重要的是我担心这会给我的老板留下不好的印象,因为我正在实习。

使用strcpy时打印垃圾

我有一个函数可以解析一些数据。我的问题是在使用strncpy后,当我尝试打印它时会得到一些垃圾。 我尝试使用malloc使char数组具有确切的大小。 码: void parse_data(char *unparsed_data) { char *temp_str; char *pos; char *pos2; char *key; char *data; const char newline = ‘\n’; int timestamp = 0; temp_str = (char*)malloc(strlen(unparsed_data)); g_print(“\nThe original string is: \n%s\n”,unparsed_data); //Ignore the first two lines pos = strchr(unparsed_data, newline); strcpy(temp_str, pos+1); pos = strchr(temp_str, newline); strcpy(temp_str, pos+1); //Split the line in […]

libxml2如何用于解析XML中的数据?

我查看了libxml2代码示例,我很困惑如何将它们拼凑在一起。 使用libxml2从XML文件解析或提取数据时需要执行哪些步骤? 我想抓住并可能存储某些属性的信息。 这是怎么做到的?

C / C ++的选项解析器?

可能重复: C ++有哪些参数解析器库? 我已经做了一些查找,并且有很多用于命令行选项解析的库,但很难区分它们。 有没有人有任何经验? 是否比其他任何人更难/更好/更快/更容易/更好? 或者我应该自己成长?

分析ELF部分和符号大小的工具

我需要一种方法来分析我的GCC编译器的输出文件。 我正在编制裸机,我非常关心尺寸。 我可以使用交叉编译器提供的arm-none-eabi-objdump ,但如果存在用于此任务的工具,则解析输出不是我想要做的事情。 你知道这样的工具存在吗? 我的搜索没有结果。 还有一件事,我自己的代码中的每个函数都在它自己的部分。

从字符串评估数学函数

你能给我一些关于如何在C中创建一个简单的数学表达式解析器的想法吗? 用户在字符串中输入数学函数,并从我想要在C中创建函数的字符串中输入数据函数。 x + sin(2*x) – > return x + sin(2x); 提前致谢。

for循环括号内的两个分号

我定制了一个我在互联网上找到的代码(这是adafruit的推文收据)。 我无法理解代码的许多部分,但最令我困惑的是括号内有两个分号的for循环 boolean jsonParse(int depth, byte endChar) { int c, i; boolean readName = true; for(;;) { //<——— while(isspace(c = timedRead())); // Scan past whitespace if(c < 0) return false; // Timeout if(c == endChar) return true; // EOD if(c == '{') { // Object follows if(!jsonParse(depth + 1, '}')) return false; if(!depth) return true; […]

评估数学表达式

我正在寻找一种可以用来评估数学表达式的算法。 我已经看到了几个关于SO的问题,但是答案是C#/ Delphi或python特有的。 我需要在C中编写算法:) 我试图解决的问题是给用户输入,如 3*(2*x + 1)/x 我可以评估任何x值的表达式。 有哪些算法可以做到这一点? 如果您想建议一个已经执行此操作的库,那么我更喜欢C库 谢谢

在C中解析CSV文件

是否有一个库可用于解析C中的CSV文件。我在Linux系统上。 我知道这个,但它是在C ++中,我需要在C中的东西。如果有人已经完成它,不想经历调试和测试的痛苦。