使用 Python 创建 WPA 消息完整性代码 (MIC)

2023-12-26

我尝试计算 WPA 握手数据包的 MIC,但不幸的是它失败了。更准确地说,我采用了 802.1x 数据包(如规范所述)。

MIC = HMAC_MD5(MIC Key, 16, 802.1x data)

这是相关代码:

mic = hmac.new(ptk[0:16],data)
print "mic: " + mic.hexdigest()  + "\n"

其中 hmac.new 取自 hmac lib:

import hmac,hashlib,binascii

显然,加密密钥由成对瞬态密钥(所谓的密钥确认密钥)的前 16 个字节组成。 PTK 由名为cowPatty 的程序确认。 所以我可以排除这两个因素是错误的。这是我的 802.1x 数据,由十六进制值 0103 引入:

01030077fe010a001000000000000000
01ae11df37f5fb100665ce0c849f5950
c0e7901da3224ddfc9e9434babad5512
73000000000000000000000000000000
00000000000000000000000000000000
00e8b4b90bfc3fd97b657afeb66262ae
940018dd160050f20101000050f20201
000050f20401000050f202

Wireshark计算的MIC为:

e8b4b90bfc3fd97b657afeb66262ae94

我计算的 MIC 是:

5492624bb538b52d6aa6261c692bd595

不幸的是,无论我做什么,我都无法计算出相同的 MIC。 也许一些专家提供了宝贵的意见,我们将不胜感激!

此致!


以下是 4 次握手中第二条消息的 EAPOL 数据(在逻辑链路控制之后立即开始):

unsigned char eapol[] =
{
    '\x01',        // Version
    '\x03',        // Type
    '\x00','\x77', // Length
    '\xfe',        // Key Descriptor Type
    '\x01','\x0a', // Key information
    '\x00','\x10', // Key length
    // Replay counter
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x01',
    // WPA Key Nounce
    '\x77','\xd6','\x54','\xad','\x0c','\x1f','\xea','\x2f',
    '\x20','\x99','\xf1','\xdd','\x1c','\xae','\xdb','\xd8',
    '\xf7','\xe8','\x86','\xb0','\x81','\x60','\xed','\x7f',
    '\x70','\xdd','\xbb','\x33','\xb6','\xf1','\xd9','\x98',
    // Key IV
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    // Key RSC
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    // Key ID
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    // MIC **************** CHANGE HERE ********************
//  '\x0a','\x62','\x24','\x07','\x11','\x36','\xd5','\x67',
//  '\x87','\xc0','\x7b','\x82','\x6b','\x06','\xf7','\xff',
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00',
    // Key Data Length
    '\x00','\x18',
    // Key Data
    '\xdd','\x16','\x00','\x50','\xf2','\x01','\x01','\x00',
    '\x00','\x50','\xf2','\x04','\x01','\x00','\x00','\x50',
    '\xf2','\x04','\x01','\x00','\x00','\x50','\xf2','\x02'
};

确保将 16 个字节的 MIC 字段替换为“\x00”,这样您就可以准备好根据 Michael 算法进行计算的有效 EAPOL 数据。

另外,请确保您使用基于 WPA 版本的正确算法。 WPA1 使用带有 MD5 哈希函数的 HMAC,WPA2 使用带有 SHA1 哈希的 HMAC,如您在 aircrack-ng 源代码中看到的:

if (ap->wpa.keyver == 1)
    HMAC(EVP_md5(), ptk[j], 16, ap->wpa.eapol, ap->wpa.eapol_size, mic[j], NULL);
else
    HMAC(EVP_sha1(), ptk[j], 16, ap->wpa.eapol, ap->wpa.eapol_size, mic[j], NULL);

我认为Python在HMAC对象中默认使用MD5。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 创建 WPA 消息完整性代码 (MIC) 的相关文章

  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s

随机推荐

  • 多维数组上的 SetLength

    我想知道如何在 Pascal 中设置多维数组的长度 创建动态多维数组 喜欢SetLength arr len 对于一维数组来说 我找不到答案 var arr array of array of real SetLength arr 10 2
  • 如何合并空字符串和 NULL 值?

    我正在尝试制作最快的 COALESCE 它接受两个或多个参数 并返回第一个非空和非空 值 我正在使用这个 CREATE OR REPLACE FUNCTION coalescenonempty VARIADIC in ordered act
  • Ionic 2 - RC2.0,上传文件(传输)的插件无法工作

    在过去的 2 天里 我一直在努力让我的应用程序将手机摄像头拍摄的图像上传到 PHP 服务器上 服务器上的代码工作得很好 但是 FILES变量为空 我的问题和这里描述的类似 也没有解决方案更新到 ionic 2 RC0 后 Cordova 文
  • 关于索引器和/或泛型的问题

    如何知道一个对象是否实现了索引器 我需要共享 DataRow 和 IDataReader 的逻辑 但它们不共享任何接口 我也尝试过使用泛型 但不知道应该对 where 子句施加什么限制 public class Indexer myObje
  • backbone.js - 从点击事件访问模型

    我有一个包含 CellModels 的 CellCollection 的 BoardView 我从数据库中获取集合 然后创建 CellView 这一切都很顺利 直到我尝试通过 BoardView 上的单击事件访问 CellModel 我根本
  • @Autowired 字段获取 null

    我的类类别有这个属性编辑器 我试图将其自动连接到服务 问题是服务不断获得空值 另外 这似乎是孤立的 或者至少我是这么认为的 因为我在控制器上自动连接了同一类的字段 所以我不知道发生了什么 我已经遇到了这样的错误 但是在那个时候根本就不管用
  • 在 oracle 上的存储过程中返回单行

    我正在使用 php 和 oracle 我如何返回存储过程中的一行以像选择查询一样使用 以便我可以将它们读入 php ini 例如 declare or replace procedure select row bookingid in in
  • 等到 UITableView 完成 reloadData [重复]

    这个问题在这里已经有答案了 可能的重复 当 UITableView 完成请求数据时收到通知吗 https stackoverflow com questions 1483581 get notified when uitableview h
  • 我想让输入字段具有唯一值

    假设页面 A 有 5 个输入字段
  • 在 JBoss 7.1.1 中使用 DEBUG 级别进行日志记录

    目标 我的应用程序应该包含错误和调试级别的消息 日志记录级别必须通过 JBoss 管理控制台设置 切换 日志记录应写入标准 JBoss 日志文件和服务器控制台 我尝试使用 java util logging Logger 但该记录器没有必要
  • Perl - 附加到文件的最后一行(同一行)

    有人可以让我知道如何根据当前值附加输出文件的最后一个条目吗 例如 我正在生成一个输出 txt文件 说 a b c d 10 通过一些处理我得到了价值20现在我希望分配该值并与之前的设置对齐 使其 a b c d 10 20 假设最后一行没有
  • 如何修复我在 AWS 中上传的 Flask 应用程序中的 502 错误?

    我在使用 Elastic beanstalk 将 Flask 应用程序上传到 AWS 服务器时遇到问题 上传代码后 环境中出现 502 bad gateway 错误 这是我花了几个小时解决这个问题并使用 Flask Eb 一年多后的 2 美
  • 如何在 ASP.NET MVC 中基于每个用户删除输出缓存?

    我在用着VaryByCustom在每个浏览器和每个用户的基础上创建输出缓存 OutputCache Duration 6000 VaryByParam VaryByCustom browser userName 我已经重写了GetVaryB
  • MongoDb - 查询数组

    基于 MongoDB 文档https docs mongodb com manual tutorial query arrays https docs mongodb com manual tutorial query arrays 我有这
  • 枚举变量的默认值是多少?

    一个枚举变量 有人知道它是否总是默认为第一个元素 它是枚举中代表值的任何成员0 具体而言 从文档 http msdn microsoft com en us library sbbt4032 aspx 默认值enum E是表达式产生的值 E
  • 触发器什么时候触发,什么时候不触发

    关于 SQL Server 2005 中的触发器的非常普遍的问题 在什么情况下会触发表触发器 什么情况下不会 任何可以演示的代码示例都很棒 我正在编写一个基于审计的数据库 只是想了解任何可能不会触发我为更新 删除和插入表而设置的触发器的情况
  • Android 对话框:删除标题栏

    我有一种奇怪的行为 我无法确定其来源 我有我的经典应用程序 requestWindowFeature Window FEATURE NO TITLE 删除标题 状态栏 然后我创建一个对话框以允许用户输入信息 姓名等 使用物理键盘 没问题 但
  • 将函数应用于 data.table 的每一行

    我正在寻找一种方法来有效地将函数应用于 data table 的每一行 让我们考虑以下数据表 library data table library stringr x lt data table a c 1 3 1 b c 12 13 14
  • 使用 boto3 lib 和 AWS Lambda 从 S3 存储桶中的压缩文件获取数据流

    我正在尝试为我的 cron 作业创建一个无服务器处理器 在这项作业中 我从我的一个客户那里收到了 S3 存储桶中的一个压缩文件 文件在附近50MB大小 但一旦你解压它 它就变成了1 5GB大小 并且 AWS Lambda 上的可用空间存在硬
  • 使用 Python 创建 WPA 消息完整性代码 (MIC)

    我尝试计算 WPA 握手数据包的 MIC 但不幸的是它失败了 更准确地说 我采用了 802 1x 数据包 如规范所述 MIC HMAC MD5 MIC Key 16 802 1x data 这是相关代码 mic hmac new ptk 0