- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开始一个与 WiFi 相关的研究项目,这需要我分析在连接设置期间 WiFi 客户端和 AP 之间的帧交换。
实验设置:我有一台笔记本电脑 M,在监控模式下使用 Wireshark 捕获 WiFi 流量,一台设备 A(运行 Linux)通过 802.1x 身份验证连接到 WiFi 网络,特别是使用 EAP- PEAP 协议(protocol)。
我只控制笔记本电脑 M 和设备 A,但不控制 AP 或网络(包括 RADIUS 服务器)。
目标: 我想解码笔记本电脑 M 上 Wireshark 捕获的 WiFi 数据帧。根据 this Wireshark how to ,我需要以某种方式提取在网络和设备 A 之间交换的 PMK(成对主 key )。
因为我只控制设备 A,所以我需要从中提取 PMK。
问题:我不知道如何从设备 A(假设是 Linux 操作系统)中提取 PMK,特别是考虑到我们正在谈论 EAP-PEAP session ,而且我还没有在网络上搜索时未能找到任何确凿的提示。
我可以找到 this discussion ,这意味着 PMK 直接存储在 WiFi NIC 或驱动程序中。
问题:
P.S.:我想指出,我不认为这是一个“黑客”问题(因此与 stackoverflow.com 的政策不一致),因为我控制客户端设备(不仅是监控设备)。
最佳答案
我找到了两种让 wpa_supplicant
输出 PMK 的方法:
-K
选项调用wpa_supplicant
,以及一些调试选项(例如-dd
).这将在调试输出中包含 key (密码等)。wpa_supplicant
的代码输出 key 。考虑到 -K
选项存在,这种方式不必要地困难,但这是我尝试的第一件事(不要问)。我在下面总结了我是如何做到这一点的,这对于希望更改 wpa_supplicant
代码的人来说可能会很有趣。2) 困难的方法:改变wpa_supplicant
代码
我能够通过更改wpa_supplicant
的代码找到答案,使其在身份验证期间输出 PMK。在我的例子中,客户端设备是 Raspberry Pi 型号 B+,V1 2,运行 Raspbian GNU/Linux 7 (wheezy),它使用旧版本的 wpa_supplicant
,即 v1.0, 2012-05-10 .
对于任何想知道的人,我已经改变了源文件src/rsn_supp/wpa.c
,函数wpa_supplicant_key_neg_complete()
,输出PMK,如下:
static void wpa_supplicant_key_neg_complete(struct wpa_sm *sm,
const u8 *addr, int secure)
{
// pass the pmk (pairwise master key) to a hex string.
int i;
// hex str to hold pmk. 1024 bit
// should be enough (the pmk is supposed to be 256 bit, thus 32 byte, thus
// 64 hex chars)
char pmk_str[1024] = {'\0'};
char * pmk_ptr = pmk_str;
// use os_snprintf() (as used by other methods in wpa.c)
for (i = 0; i < sm->pmk_len; i++) {
// wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
// "WPA: pmk[%d]: %02X", i, sm->pmk[i]);
pmk_ptr += sprintf(pmk_ptr, "%02X", sm->pmk[i]);
}
*(pmk_ptr + 1) = '\0';
wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
"WPA: Key negotiation completed with "MACSTR": \
\n\tPMK=%s \
\n\t[PTK=%s GTK=%s]",
MAC2STR(addr),
pmk_str,
wpa_cipher_txt(sm->pairwise_cipher),
wpa_cipher_txt(sm->group_cipher));
(...)
}
此定制可用on my github .
关于linux - 在 EAP-PEAP 身份验证下从 WiFi 客户端提取 PMK,用于 Wireshark 分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037197/
Wireshark 何时对数据包加时间戳?完全接收一帧后?或者已经在接收帧的第一个字节?我阅读了以下关于 Wireshark timestamps 的描述但该文本仅说明:“在捕获数据包时,每个数据包在
在我们的团队中,我们有一个标准化的开发设置,我们有一个 Win8 工作站,在 Hyper-V 上运行各种虚拟机。所有开发都在虚拟机上进行。 我遇到了一个问题,我无法使用 VS2012 从 Team F
我对 Wireshark 中的抖动计算方法有疑问。 Wireshark 根据 RFC3550 (RTP) 计算抖动: 如果 Si 是数据包 i 的 RTP 时间戳,Ri 是数据包 i 在 RTP 时间
我正在尝试使用以下选项从 cli 启动 wireshark... wireshark -k -i eth2 -a filesize:1000000 -f 我遇到的问题是我想使用预定义的wiresha
我们通过 WireShark 使用 JN5148EK010 节点捕获流量。收到的数据包显示在提供的屏幕截图中。 我想知道如何解码数据 捕获几个数据包后发生错误,还提供了屏幕截图。如何解决此错误? 列表
我正在尝试自动化我使用 WireShark 的重复手动过程: 1) 加载给定的 pcap 文件 2) 为给定协议(protocol)应用一个简单的过滤器 3) 使用导出对话框将显示的数据包导出为 CS
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
有没有办法清除 Wireshark 中的捕获窗口,而无需重新启动捕获或重新应用过滤器?如果不仔细查看时间戳,很难区分一组流量和另一组流量。 最佳答案 我没有找到清除窗口的方法,但点击“重新启动正在运行
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
我想知道wireshark 是如何工作的。可以监听给定机器所有端口上的流量的应用程序的设计是什么?这样的应用程序会产生什么样的窃听?编写一个监控流量的应用程序的好方法是什么? 谢谢 最佳答案 Wire
我想构建一个自己的 Wireshark 数据包解析器,并按照https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html中给出的
假设我有这样的模式 01:02:(anything):04:05 如何在wireshark中构造一个显示过滤器来过滤掉它? 我必须这样做吗? data[0:2]==01:02 and data[3:2
我想构建一个自己的 Wireshark 数据包解析器,并按照https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html中给出的
假设我有这样的模式 01:02:(anything):04:05 如何在wireshark中构造一个显示过滤器来过滤掉它? 我必须这样做吗? data[0:2]==01:02 and data[3:2
是否可以在 Wireshark 中重新编号。例如,我已将数据包过滤到一侧: 所以数字是(由于过滤它们没有按顺序排列): 416,419,420,423,424,426,427。 但我想像这样一行一行地
我想使用 Opus-48 编解码器捕获和解码 VoIP 对话。我正在使用 Wireshark 来捕获数据包。网上有免费的解码器吗?? Wireshark 不保存双向对话,因为它适用于 G-729 等其
tshark中的-Y、-2和-R选项让我困惑了很久。 看了说明书,我知道-Y用在单通滤波,-2用在2通滤波(万一我们不能在第一遍过滤器结束之前获取一些信息) 但我还是不明白 -2 -Y 'blabla
如果我想编写一个使用 Wireshark 功能的脚本,我会使用 tshark。我听说还有一个 libwireshark 可以在用 C 编写程序时使用,但是,就我的一生而言,我找不到任何文档!我尝试隔离
我有一个正在分析的 Wi-Fi 捕获 (.pcap),并且遇到了在我看来 802.11 规范与 Wireshark 对数据的解释之间的不一致之处。具体来说,我想要拆分的是 2 字节的 802.11 帧
有没有办法过滤或关注 TCP/SSL使用 Wireshark 基于特定进程 ID 的流? 最佳答案 以防万一您正在寻找替代方法并且您使用的环境是 Windows,Microsoft 的 Network
我是一名优秀的程序员,十分优秀!