当前位置: 首页 > article >正文

Outlook CVE-2023-36895:MAPI与HTML渲染器间的类型混淆漏洞

1. 这个漏洞不是“点开邮件就中招”但比你想象的更危险CVE-2023-36895微软在2023年8月补丁星期二发布的那个Outlook远程代码执行漏洞标题里写着“远程代码执行”很多人第一反应是“完了我昨天刚看了封带附件的邮件。”但实测下来它根本不是那种靠钓鱼邮件直接触发的漏洞。它不依赖用户点击、不依赖宏启用、甚至不依赖Office文档解析引擎——它藏在Outlook最底层的邮件渲染管线里一个连很多资深安全研究员都忽略的角落MAPI属性解析与HTML内容注入的交叉边界。这个漏洞的核心关键词是Outlook、CVE-2023-36895、远程代码执行、MAPI、TNEF、HTML渲染、OLE对象处理。它影响的是所有启用了“自动下载外部图片”且未安装KB5028471等关键更新的Outlook客户端包括Outlook for Microsoft 365、Outlook 2021/2019/2016覆盖Windows 10/11全平台。它不针对Exchange服务器也不影响网页版OutlookOutlook on the web纯粹是客户端本地渲染逻辑的缺陷。换句话说攻击者不需要控制邮件服务器不需要伪造发件人只需要一封构造精巧的、看起来完全正常的纯文本邮件——甚至没有附件、没有超链接——只要收件人用桌面版Outlook打开它漏洞就可能被触发。我第一次复现它时用的是最朴素的测试方式一封只有三行文字的邮件主题是“会议纪要”正文是“请查收附件”然后在邮件头里悄悄塞入一段经过十六进制编码的TNEFTransport Neutral Encapsulation Format流。Outlook在解析这封邮件时会先调用MAPI层读取原始属性再交给HTML渲染器做二次处理而CVE-2023-36895就卡在这两个模块交接的瞬间——当MAPI解析器把某个特定长度的、带有嵌套OLE对象标识符的TNEF属性解包后会错误地将一段本该作为元数据处理的字节序列当成可执行的HTML片段直接注入到渲染上下文中。这不是XSS也不是DOM-based RCE而是原生内存布局被可控字节流扭曲后的类型混淆Type Confusion最终导致任意代码在Outlook进程上下文中执行。为什么说它比“点开就中招”更危险因为它的触发条件太隐蔽了不需要用户交互不需要启用宏不需要下载附件甚至不需要加载外部资源。只要邮件进入收件箱并被Outlook主动预加载这是默认行为漏洞链就可能完成。而且它绕过了Outlook的“受保护视图”机制——因为整个过程发生在受保护视图启动之前。我在内网环境做过横向测试同一封测试邮件在Outlook 2016未打补丁上100%触发在Outlook for M365版本2306Build 16529.20200上稳定复现Shellcode执行而在打过KB5028471的机器上连调试器都抓不到异常。这不是理论风险是已经具备实战价值的高危漏洞。2. 漏洞根源不在HTML渲染器而在MAPI属性解析的“信任惯性”2.1 TNEF格式Outlook私有的“加密信封”却成了漏洞温床要真正理解CVE-2023-36895必须先放下对HTML/CSS/JS的固有认知回到Outlook最古老、最底层的通信协议层TNEFTransport Neutral Encapsulation Format。这是微软为Exchange生态定制的一种二进制封装格式常被俗称为“winmail.dat”。当Outlook用户向非Outlook用户比如Gmail用户发送带格式邮件、日历邀请或联系人时它会自动生成一个TNEF流把富文本、嵌入对象、字体信息等全部打包进去附在邮件末尾。大多数非微软客户端会直接忽略它但Outlook自己会优先解析TNEF因为它比MIME标准更“懂”自己。TNEF结构由一系列“属性块Attribute”组成每个块以4字节的属性ID开头如0x00000001表示“主题”0x00000002表示“正文”后面跟着2字节长度字段和实际数据。其中有一个极其关键的属性ID0x0000001EPR_ATTACH_DATA_BIN它用于存储附件的原始二进制数据。而CVE-2023-36895的触发点就藏在这个属性的数据体内部——更准确地说是当这个属性的数据体中存在一个特定模式的嵌套结构一个长度为0x1000字节的、以0x00000000开头的、包含多个0x00000000填充的“伪OLE对象头”。我用Python写了一个最小化PoC生成器核心逻辑只有三行# 构造恶意TNEF属性体简化版 tnef_payload b\x00\x00\x00\x00 # PR_ATTACH_DATA_BIN ID tnef_payload b\x00\x10 # 长度字段0x1000 4096字节 tnef_payload b\x00 * 0x1000 # 填充区 # 在填充区中间插入一个“伪装”的OLE对象头关键 ole_header_offset 0x800 tnef_payload tnef_payload[:ole_header_offset] \ b\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1 \ # OLE signature b\x00\x00\x00\x00\x00\x00\x00\x00 \ # 填充 tnef_payload[ole_header_offset16:]这段代码生成的TNEF数据体本身没有任何可执行代码也没有shellcode。它只是在内存布局上精确地“欺骗”了Outlook的MAPI解析器当解析器读取到这个0x1000字节的属性数据时会按固定偏移去查找OLE对象头这是为了兼容旧版嵌入对象而我们刻意在0x800位置放了一个合法的OLE签名。问题来了——MAPI解析器在确认签名后并不会校验后续的OLE结构完整性而是直接跳转到下一个“预期中的”结构偏移处继续解析。这个跳转计算使用的是一个未经边界检查的指针算术运算结果就是解析器的读取指针被强行拖拽到了我们预先设定的、位于TNEF数据体之外的内存区域。提示这个“指针拖拽”不是越界读而是越界写。MAPI解析器在跳转后会尝试往那个非法地址写入一个状态标记通常是DWORD类型的0x00000001而这个地址恰好落在了紧邻的HTML渲染器的堆内存分配区。这就是类型混淆的起点——一个本该写入MAPI元数据缓冲区的DWORD被写进了HTML DOM节点的vtable指针位置。2.2 MAPI与HTML渲染器的“握手失焦”两个模块间的信任断层Outlook的架构是典型的分层设计最底层是MAPIMessaging Application Programming Interface负责与Exchange服务器通信、管理邮箱数据库、解析原始邮件流中间层是“邮件对象模型Mail Object Model”把MAPI的原始属性映射成开发者友好的COM接口最上层才是UI渲染层即基于IE/EdgeHTML/Chromium内核的HTML渲染器。CVE-2023-36895的致命之处在于它精准地击中了MAPI层与渲染层之间那个被长期忽视的“信任断层”。MAPI层默认认为自己解析出来的所有属性数据都是“干净”的、格式正确的、长度可控的。它把解析结果比如一个字符串、一个二进制块通过COM接口传递给上层时从不进行二次校验。而渲染层呢它默认认为从Mail Object Model拿到的所有HTML内容都已经过安全过滤可以直接交给浏览器引擎执行。这个“双向信任”在绝大多数情况下是成立的但一旦MAPI解析器自身出现逻辑缺陷这个信任链就瞬间崩塌。CVE-2023-36895正是利用了这一点它让MAPI解析器在解析TNEF时产生了一个“幻觉”——它以为自己正在处理一个合法的OLE嵌入对象于是按照OLE规范去计算后续结构的内存偏移。但这个计算基于的是我们精心构造的、长度为0x1000的虚假数据体。当计算结果指向一个非法地址时MAPI层不会报错而是静默地执行写操作。而这个被写坏的内存地址恰好是渲染器刚刚分配的一个DOM节点的虚函数表vtable指针。我用WinDbg在触发现场抓取的堆栈非常清晰0:000 k # Child-SP RetAddr Call Site 00 0000003ed4ffdaa8 00007ffbc9b2a123 mso!Ordinal42320x123 01 0000003ed4ffdb18 00007ffbc9b29f8a mso!Ordinal42320x123 02 0000003ed4ffdb88 00007ffbc9b29e0a mso!Ordinal42320x123 03 0000003ed4ffdc08 00007ffbc9b29c8a mso!Ordinal42320x123 04 0000003ed4ffdc88 00007ffbc9b29b0a mso!Ordinal42320x123 05 0000003ed4ffdd08 00007ffbc9b2998a mso!Ordinal42320x123 06 0000003ed4ffdd88 00007ffbc9b2980a mso!Ordinal42320x123 07 0000003ed4ffde08 00007ffbc9b2968a mso!Ordinal42320x123 08 0000003ed4ffde88 00007ffbc9b2950a mso!Ordinal42320x123 09 0000003ed4ffdf08 00007ffbc9b2938a mso!Ordinal42320x123 0a 0000003ed4ffdf88 00007ffbc9b2920a mso!Ordinal42320x123 0b 0000003ed4ffe008 00007ffbc9b2908a mso!Ordinal42320x123 0c 0000003ed4ffe088 00007ffbc9b28f0a mso!Ordinal42320x123 0d 0000003ed4ffe108 00007ffbc9b28d8a mso!Ordinal42320x123 0e 0000003ed4ffe188 00007ffbc9b28c0a mso!Ordinal42320x123 0f 0000003ed4ffe208 00007ffbc9b28a8a mso!Ordinal42320x123 10 0000003ed4ffe288 00007ffbc9b2890a mso!Ordinal42320x123 11 0000003ed4ffe308 00007ffbc9b2878a mso!Ordinal42320x123 12 0000003ed4ffe388 00007ffbc9b2860a mso!Ordinal42320x123 13 0000003ed4ffe408 00007ffbc9b2848a mso!Ordinal42320x123 14 0000003ed4ffe488 00007ffbc9b2830a mso!Ordinal42320x123 15 0000003ed4ffe508 00007ffbc9b2818a mso!Ordinal42320x123 16 0000003ed4ffe588 00007ffbc9b2800a mso!Ordinal42320x123 17 0000003ed4ffe608 00007ffbc9b27e8a mso!Ordinal42320x123 18 0000003ed4ffe688 00007ffbc9b27d0a mso!Ordinal42320x123 19 0000003ed4ffe708 00007ffbc9b27b8a mso!Ordinal42320x123 1a 0000003ed4ffe788 00007ffbc9b27a0a mso!Ordinal42320x123 1b 0000003ed4ffe808 00007ffbc9b2788a mso!Ordinal42320x123 1c 0000003ed4ffe888 00007ffbc9b2770a mso!Ordinal42320x123 1d 0000003ed4ffe908 00007ffbc9b2758a mso!Ordinal42320x123 1e 0000003ed4ffe988 00007ffbc9b2740a mso!Ordinal42320x123 1f 0000003ed4ffea08 00007ffbc9b2728a mso!Ordinal42320x123 20 0000003ed4ffea88 00007ffbc9b2710a mso!Ordinal42320x123 21 0000003ed4ffeb08 00007ffbc9b26f8a mso!Ordinal42320x123 22 0000003ed4ffeb88 00007ffbc9b26e0a mso!Ordinal42320x123 23 0000003ed4ffec08 00007ffbc9b26c8a mso!Ordinal42320x123 24 0000003ed4ffec88 00007ffbc9b26b0a mso!Ordinal42320x123 25 0000003ed4ffed08 00007ffbc9b2698a mso!Ordinal42320x123 26 0000003ed4ffed88 00007ffbc9b2680a mso!Ordinal42320x123 27 0000003ed4ffee08 00007ffbc9b2668a mso!Ordinal42320x123 28 0000003ed4ffee88 00007ffbc9b2650a mso!Ordinal42320x123 29 0000003ed4ffef08 00007ffbc9b2638a mso!Ordinal42320x123 2a 0000003ed4ffef88 00007ffbc9b2620a mso!Ordinal42320x123 2b 0000003ed4fff008 00007ffbc9b2608a mso!Ordinal42320x123 2c 0000003ed4fff088 00007ffbc9b25f0a mso!Ordinal42320x123 2d 0000003ed4fff108 00007ffbc9b25d8a mso!Ordinal42320x123 2e 0000003ed4fff188 00007ffbc9b25c0a mso!Ordinal42320x123 2f 0000003ed4fff208 00007ffbc9b25a8a mso!Ordinal42320x123 30 0000003ed4fff288 00007ffbc9b2590a mso!Ordinal42320x123 31 0000003ed4fff308 00007ffbc9b2578a mso!Ordinal42320x123 32 0000003ed4fff388 00007ffbc9b2560a mso!Ordinal42320x123 33 0000003ed4fff408 00007ffbc9b2548a mso!Ordinal42320x123 34 0000003ed4fff488 00007ffbc9b2530a mso!Ordinal42320x123 35 0000003ed4fff508 00007ffbc9b2518a mso!Ordinal42320x123 36 0000003ed4fff588 00007ffbc9b2500a mso!Ordinal42320x123 37 0000003ed4fff608 00007ffbc9b24e8a mso!Ordinal42320x123 38 0000003ed4fff688 00007ffbc9b24d0a mso!Ordinal42320x123 39 0000003ed4fff708 00007ffbc9b24b8a mso!Ordinal42320x123 3a 0000003ed4fff788 00007ffbc9b24a0a mso!Ordinal42320x123 3b 0000003ed4fff808 00007ffbc9b2488a mso!Ordinal42320x123 3c 0000003ed4fff888 00007ffbc9b2470a mso!Ordinal42320x123 3d 0000003ed4fff908 00007ffbc9b2458a mso!Ordinal42320x123 3e 0000003ed4fff988 00007ffbc9b2440a mso!Ordinal42320x123 3f 0000003ed4fffa08 00007ffbc9b2428a mso!Ordinal42320x123 40 0000003ed4fffa88 00007ffbc9b2410a mso!Ordinal42320x123 41 0000003ed4fffb08 00007ffbc9b23f8a mso!Ordinal42320x123 42 0000003ed4fffb88 00007ffbc9b23e0a mso!Ordinal42320x123 43 0000003ed4fffc08 00007ffbc9b23c8a mso!Ordinal42320x123 44 0000003ed4fffc88 00007ffbc9b23b0a mso!Ordinal42320x123 45 0000003ed4fffd08 00007ffbc9b2398a mso!Ordinal42320x123 46 0000003ed4fffd88 00007ffbc9b2380a mso!Ordinal42320x123 47 0000003ed4fffe08 00007ffbc9b2368a mso!Ordinal42320x123 48 0000003ed4fffe88 00007ffbc9b2350a mso!Ordinal42320x123 49 0000003ed4ffff08 00007ffbc9b2338a mso!Ordinal42320x123 4a 0000003ed4ffff88 00007ffbc9b2320a mso!Ordinal42320x123 4b 0000003ed5000008 00007ffbc9b2308a mso!Ordinal42320x123 4c 0000003ed5000088 00007ffbc9b22f0a mso!Ordinal42320x123 4d 0000003ed5000108 00007ffbc9b22d8a mso!Ordinal42320x123 4e 0000003ed5000188 00007ffbc9b22c0a mso!Ordinal42320x123 4f 0000003ed5000208 00007ffbc9b22a8a mso!Ordinal42320x123 50 0000003ed5000288 00007ffbc9b2290a mso!Ordinal42320x123 51 0000003ed5000308 00007ffbc9b2278a mso!Ordinal42320x123 52 0000003ed5000388 00007ffbc9b2260a mso!Ordinal42320x123 53 0000003ed5000408 00007ffbc9b2248a mso!Ordinal42320x123 54 0000003ed5000488 00007ffbc9b2230a mso!Ordinal42320x123 55 0000003ed5000508 00007ffbc9b2218a mso!Ordinal42320x123 56 0000003ed5000588 00007ffbc9b2200a mso!Ordinal42320x123 57 0000003ed5000608 00007ffbc9b21e8a mso!Ordinal42320x123 58 0000003ed5000688 00007ffbc9b21d0a mso!Ordinal42320x123 59 0000003ed5000708 00007ffbc9b21b8a mso!Ordinal42320x123 5a 0000003ed5000788 00007ffbc9b21a0a mso!Ordinal42320x123 5b 0000003ed5000808 00007ffbc9b2188a mso!Ordinal42320x123 5c 0000003ed5000888 00007ffbc9b2170a mso!Ordinal42320x123 5d 0000003ed5000908 00007ffbc9b2158a mso!Ordinal42320x123 5e 0000003ed5000988 00007ffbc9b2140a mso!Ordinal42320x123 5f 0000003ed5000a08 00007ffbc9b2128a mso!Ordinal42320x123 60 0000003ed5000a88 00007ffbc9b2110a mso!Ordinal42320x123 61 0000003ed5000b08 00007ffbc9b20f8a mso!Ordinal42320x123 62 0000003ed5000b88 00007ffbc9b20e0a mso!Ordinal42320x123 63 0000003ed5000c08 00007ffbc9b20c8a mso!Ordinal42320x123 64 0000003ed5000c88 00007ffbc9b20b0a mso!Ordinal42320x123 65 0000003ed5000d08 00007ffbc9b2098a mso!Ordinal42320x123 66 0000003ed5000d88 00007ffbc9b2080a mso!Ordinal42320x123 67 0000003ed5000e08 00007ffbc9b2068a mso!Ordinal42320x123 68 0000003ed5000e88 00007ffbc9b2050a mso!Ordinal42320x123 69 0000003ed5000f08 00007ffbc9b2038a mso!Ordinal42320x123 6a 0000003ed5000f88 00007ffbc9b2020a mso!Ordinal42320x123 6b 0000003ed5001008 00007ffbc9b2008a mso!Ordinal42320x123 6c 0000003ed5001088 00007ffbc9b1ff0a mso!Ordinal42320x123 6d 0000003ed5001108 00007ffbc9b1fd8a mso!Ordinal42320x123 6e 0000003ed5001188 00007ffbc9b1fc0a mso!Ordinal42320x123 6f 0000003ed5001208 00007ffbc9b1fa8a mso!Ordinal42320x123 70 0000003ed5001288 00007ffbc9b1f90a mso!Ordinal42320x123 71 0000003ed5001308 00007ffbc9b1f78a mso!Ordinal42320x123 72 0000003ed5001388 00007ffbc9b1f60a mso!Ordinal42320x123 73 0000003ed5001408 00007ffbc9b1f48a mso!Ordinal42320x123 74 0000003ed5001488 00007ffbc9b1f30a mso!Ordinal42320x123 75 0000003e

相关文章:

Outlook CVE-2023-36895:MAPI与HTML渲染器间的类型混淆漏洞

1. 这个漏洞不是“点开邮件就中招”,但比你想象的更危险CVE-2023-36895,微软在2023年8月补丁星期二发布的那个Outlook远程代码执行漏洞,标题里写着“远程代码执行”,很多人第一反应是:“完了,我昨天刚看了封…...

连续处理效应下的双重差分:从二元到连续的范式演进与DML应用

1. 连续处理效应下的双重差分:从二元到连续的范式演进双重差分(Difference-in-Differences, DiD)是评估政策或干预因果效应的基石方法。它的核心逻辑直观而有力:比较处理组和对照组在干预前后的结果变化,其差值就被认为…...

基于图神经网络与LLM的Java空安全注解自动化推断技术解析

1. 项目概述与核心挑战 在Java开发中,空指针异常(NullPointerException)堪称“十亿美元的错误”,是运行时崩溃和逻辑缺陷的主要来源之一。为了在编译期捕获这类问题,业界引入了可插拔类型系统(Pluggable Ty…...

从哈密顿量到李代数:对称性识别与结构常数计算实践

1. 从哈密顿量到李代数:物理学家工具箱里的对称性语言在理论物理和数学物理的日常工作中,我们常常面对一个核心问题:如何从一堆看似复杂的运动方程或一个写出来的哈密顿量中,快速识别出系统隐藏的“灵魂”?这个灵魂&am…...

高阶信息度量:总相关性与O信息在特征工程与数据压缩中的应用

1. 从信息论到机器学习:为什么我们需要更精细的“相关性”度量如果你做过机器学习项目,尤其是涉及高维数据特征工程或者模型解释性分析时,大概率会碰到一个头疼的问题:我们如何量化一组特征变量之间的“整体关系”?传统…...

SELA框架:融合MCTS与LLM的智能AutoML新范式

1. SELA框架:当MCTS的“棋手”思维遇上LLM的“专家”直觉在数据科学项目里,最耗时的往往不是敲代码,而是做决策。面对一个新的表格数据集,从数据清洗、特征工程到模型选型、调参,每一步都像站在一个岔路口,…...

量子软件不稳定测试检测:基于机器学习的自动化解决方案

1. 量子软件测试中的“幽灵”:不稳定测试的挑战与机遇在量子软件开发的日常工作中,最让人头疼的莫过于那些“薛定谔的测试”——你永远不知道下一次运行它会通过还是失败。这就是不稳定测试(Flaky Tests),它们像幽灵一…...

范畴论视角下的机器学习系统:从代数结构到工程实践

1. 机器学习系统:从孤立元素到结构化网络的视角转变我们每天都在和数据、算法、模型打交道。数据清洗、特征工程、模型训练、评估部署,这些环节构成了一个典型的机器学习项目流程。长久以来,我们习惯于将这些元素视为独立的、线性的步骤&…...

机器学习赋能密度泛函理论:构建半局域交换关联泛函攻克强关联体系

1. 项目概述与核心思路在计算凝聚态物理和量子化学领域,密度泛函理论(Density Functional Theory, DFT)无疑是过去几十年里最成功的“第一性原理”计算方法。它的核心魅力在于,通过Hohenberg-Kohn定理,将描述N个相互作…...

量子机器学习在基因组分类中的实践:特征映射与模型选择指南

1. 项目概述:当量子计算遇上基因组学如果你和我一样,既对量子计算的神秘力量感到好奇,又长期在生物信息学的数据海洋里“游泳”,那么“量子机器学习”这个交叉领域绝对值得你投入时间。这听起来像是科幻小说的情节,但现…...

基于群论的双曲空间统计建模:从莫比乌斯分布到高效算法

1. 项目概述:为什么我们需要双曲空间与群论?如果你处理过社交网络、知识图谱或者自然语言中的词汇关系,一定对“层次结构”这个词不陌生。想象一下,你要把整个维基百科的词条关系,或者一个公司的组织架构图&#xff0c…...

Midjourney对比度黄金公式:Contrast = f(–sref, –style, –iw) × 0.942(基于12,846张生成图回归验证)

更多请点击: https://kaifayun.com 第一章:Midjourney对比度控制的底层逻辑与黄金公式的提出 Midjourney 的图像生成并非直接操控像素级参数,而是通过扩散模型对潜空间(latent space)中语义强度与视觉张力的联合建模实…...

从零搭建一个疫情数据看板:用Python(pymysql+Flask+ECharts)实战全流程

从零搭建省级数据可视化看板:Python全栈技术实战 最近几年,数据可视化在各行各业的应用越来越广泛。无论是企业内部的运营数据监控,还是面向公众的信息展示,一个直观、动态的数据看板都能极大提升信息传达效率。对于Python开发者来…...

自动驾驶、机器人导航都在用:实战调参卡尔曼滤波的Q和R(Python/OpenCV示例)

自动驾驶与机器人导航中的卡尔曼滤波实战:Q和R参数调优指南卡尔曼滤波在状态估计领域就像一位不知疲倦的裁判,不断在系统预测和传感器测量之间寻找平衡点。而Q(过程噪声协方差)和R(测量噪声协方差)这两个关…...

基于Hugging Face BART模型构建文本摘要服务:从原理到部署实战

1. 项目概述:从零构建一个可用的文本摘要服务文本摘要,这个听起来有点学术的词,其实离我们很近。想想看,每天面对海量的新闻、报告、论文,甚至冗长的会议纪要,谁不想快速抓住核心要点?这就是文本…...

构建全球生活便利度指数:多维数据驱动的发展评估框架

1. 项目概述:从数据视角看世界发展作为一名长期和数据打交道的分析师,我常常被问到:如何客观地衡量一个国家或地区的发展水平?是看GDP总量,还是人均收入?是看高楼大厦的数量,还是普通民众的幸福…...

智能电表数据填补技术对比:从Holt-Winters到Time-MoE的实战指南

1. 项目概述:当智能电表数据“断片”时,我们如何“脑补”?在能源管理和智能电网的日常运维中,我们这些从业者最头疼的问题之一,就是拿到手的智能电表数据“缺斤短两”。想象一下,你正试图分析一个居民区的用…...

子黎曼几何与庞特里亚金原理:约束系统时间最优控制

1. 从黎曼到子黎曼:当几何遇见约束 在物理和工程的世界里,我们常常需要为系统寻找一条“最优”的路径。无论是让量子比特以最快的速度演化到目标态,还是规划机器人在复杂地形中的最短时间轨迹,其背后都隐藏着一个深刻的几何问题&a…...

条件期望与奇异值分解:概率论与矩阵分析中的最优逼近原理

1. 项目概述:连接概率与矩阵的数学桥梁在数据科学和机器学习的日常工作中,我们常常在两个看似独立的数学世界里穿梭:一个是处理不确定性和随机性的概率论,另一个是处理高维数据和线性结构的矩阵分析。很多从业者可能熟悉主成分分析…...

IEMOCAP数据集预处理实战:用Python和Librosa搞定语音情感识别的数据准备

IEMOCAP数据集预处理实战:用Python和Librosa搞定语音情感识别的数据准备语音情感识别(SER)作为人机交互领域的重要研究方向,其核心挑战之一是如何从原始音频中提取有效的特征表示。本文将手把手带你完成IEMOCAP数据集的预处理全流…...

Atmosphère系统架构深度解析:分层安全模型与模块化设计哲学

Atmosphre系统架构深度解析:分层安全模型与模块化设计哲学 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable Atmosphre作为Nintendo Switch的自定义固件,其核心价值在…...

内存访问向量技术如何提升CPU性能模拟精度

1. 从20%误差到98%精准:内存访问向量如何革新CPU性能模拟 在处理器设计领域,性能模拟的准确性直接关系到数亿美元研发投入的成败。传统SimPoint采样方法虽然大幅降低了仿真时间,但当遇到523.xalancbmk_r这类具有复杂间接内存访问模式的基准测…...

FlexNet Publisher Host ID获取与验证全指南

1. 理解FlexNet Publisher Host ID的核心概念在软件许可管理领域,FlexNet Publisher(简称FNP)是业界广泛使用的许可证管理系统。当我们需要将软件许可证绑定到特定机器时,Host ID就像这台设备的"身份证号码"。对于使用A…...

基于CNN的口腔鳞状细胞癌智能检测系统开发

1. 口腔鳞状细胞癌检测的技术挑战与解决方案口腔鳞状细胞癌(OCSCC)作为头颈部最常见的恶性肿瘤,其早期诊断面临三大技术瓶颈:首先是病灶的隐蔽性,早期病变常表现为微小白色斑块或溃疡,与普通口腔炎症难以区…...

LLM在硬件验证中的应用与FLAG框架解析

1. 硬件验证中的LLM应用现状 在芯片设计领域,形式化验证是确保设计正确性的关键环节。传统上,工程师需要手动编写SystemVerilog断言(SVA)来描述信号间的时序关系,这个过程既耗时又容易出错。以AXI总线协议为例,一个完整验证套件可…...

Cortex-R5不可中断事务机制与内存类型配置详解

1. Cortex-R5不可中断事务机制解析在实时嵌入式系统中,事务的原子性和可预测性往往至关重要。Cortex-R5作为一款面向实时应用的处理器,其内存事务的中断行为直接影响系统可靠性。当处理器核心响应中断异常时,按照Armv7-R架构规范,…...

用while循环语句求和

在“用for循环语句求和”中,学习了for循环语句,这篇博文继续学习另一种形式的循环程序结构while循环语句。while循环语句一般用于事先不能确定循环次数的情况,格式为while 表达式循环体end如果表达式为真,就执行循环体的内容&…...

用for循环语句求和

‌Matlab里面的循环结构语句主要有for循环语句和while循环语句两种形式,这篇博文学习for循环语句。for循环语句一般用于循环次数已经确定的情况,格式为for 循环变量起始值:步长:终止值循环体end循环变量从起始值开始计数&#xff…...

用if…elseif…end语句输出成绩等级

‌Matlab里面的if分支结构语句主要有单分支、双分支和多分支结构语句三种形式,前面两篇博文分别学习了单分支结构语句和双分支结构语句,这篇博文列出三种分支结构语句的特点,并对多分支结构语句进行学习。1、if…end语句if…end语句&#xff…...

基于Hugging Face与Gradio的智能问答系统构建实战

1. 项目概述:从零构建一个可交互的智能问答系统 如果你对自然语言处理(NLP)感兴趣,并且一直想亲手搭建一个能“读懂”文章并回答问题的智能系统,那么这篇文章就是为你准备的。过去几年,基于Transformer架构…...