实战解析:如何绕过WAF并逆向WASM加密实现深度渗透测试
1. 项目概述一次针对WAF与WASM加密的实战渗透最近在做一个授权范围内的安全测试项目目标是一个金融类Web应用。在初步信息收集和常规漏洞扫描阶段我遇到了一个典型的“现代防御组合拳”Web应用防火墙WAF在前端拦截可疑请求而核心的业务逻辑和敏感参数处理则被编译进了WebAssemblyWASM模块中。这直接导致像sqlmap这样的自动化工具即使尝试了各种绕过WAF的tamper脚本也收效甚微请求要么被直接阻断要么返回的响应是经过WASM加密处理后的、无法直接识别的数据。这激起了我的挑战欲决定手动深入分析目标很明确理解其整体防护逻辑找到WAF的检测盲点并最终逆向分析其WASM加密流程实现关键业务接口的自动化测试。这个过程不仅涉及对网络协议层的理解更需要深入到浏览器运行时和低级字节码的层面是一次非常综合的实战演练。简单来说这次实战要解决两个核心问题第一如何让我的测试请求“看起来正常”骗过WAF的规则检测第二如何破解前端那个“黑盒子”一样的WASM模块搞清楚它怎么加密数据并在我自己的脚本里复现这个加密过程。最终目的不是为了破坏而是为了在授权测试中能够模拟真实攻击者的深度更全面地评估系统的安全性。如果你也遇到过WAF拦截、前端混淆或WASM加密的难题那么我接下来的踩坑经验和破解思路或许能给你提供一个清晰的参考路径。2. 整体对抗思路与方案选型面对WAFWASM的双重防御盲目测试是徒劳的。我首先需要建立一个清晰的对抗模型。WAF通常工作在应用层HTTP/HTTPS基于规则库如正则表达式对请求的URL、参数、Header、Body进行模式匹配。而WASM加密发生在客户端浏览器内它接收前端JavaScript传递的明文参数经过内部算法计算后输出密文再由JavaScript将密文提交给服务器。服务器端则有对应的解密逻辑。因此我的整体思路是“分层拆解各个击破”WAF绕过层专注于HTTP请求的“形态”伪装。目标是构造出在WAF规则看来是合法、无害的请求从而将我的攻击载荷Payload送达后端应用本身。这一步不关心Payload是否被加密。WASM逆向层专注于数据“内容”的加解密。目标是理解WASM模块的输入、输出和内部逻辑并能够在我自己的Python/Node.js环境中模拟这个加密过程生成服务器可接受的合法密文。在方案选型上我放弃了单纯依赖sqlmap的--tamper脚本。因为tamper脚本主要处理的是Payload的变形如编码、注释绕过对于复杂的WAF行为识别和动态的WASM加密流程无能为力。我决定采用“手动分析 工具辅助 自定义脚本”的组合方案主要工具Chrome/Edge开发者工具核心、Burp Suite代理与重放、Python编写自动化脚本、wasm2wat/wasm-decompile等WASM分析工具。核心方法通过浏览器开发者工具动态调试捕获前端JavaScript与WASM模块的交互过程静态分析WASM二进制文件理解其导出函数和大致逻辑最后使用Python模拟整个加密流程。这个方案的优点在于灵活、深入能够应对非标准的防护措施。缺点是对分析者的技术要求较高耗时较长。但对于真正想理解其防御原理和安全边界来说这是必经之路。3. WAF检测绕过实战与技巧WAF是我的第一道关卡。我首先使用Burp Suite拦截了一个正常的登录请求观察其结构。然后我尝试在密码字段插入一个简单的SQL注入探测载荷 OR 11。果然请求被阻断返回了一个包含WAF厂商标识的403页面。3.1 WAF规则探测与指纹识别第一步是识别WAF的类型和可能的行为模式。我使用了WAFW00F这类指纹识别工具同时也手动观察拦截页面的特征、响应头如Server、X-Powered-By、X-*-WAF等确认了它是一款基于云的常见WAF产品。知道WAF类型有助于我查找公开的绕过技巧或已知的规则弱点。注意在授权测试中明确告知客户你正在测试WAF绕过是必要的并确保所有测试流量都在授权范围内。未经授权的WAF绕过测试可能违反法律和服务条款。3.2 常见绕过手法的实战应用我系统性地尝试了多种绕过手法并记录下哪些有效。这里分享几个在这次实战中起到关键作用的方法3.2.1 参数污染与特殊字符干扰某些WAF只检查第一个或最后一个同名参数。我尝试了参数污染passwordlegitpassword OR 11。有时在参数值中添加多余的空白符、换行符%0a、空字符%00或特殊的Unicode字符可以干扰WAF的正则解析引擎。例如将单引号转换为%u0027或%ef%bc%87全角单引号的URL编码。3.2.2 HTTP请求结构变异方法覆盖尝试使用POST方法但在Body中以GET参数形式x-www-form-urlencoded传递数据或者反过来。Content-Type混淆将Content-Type从application/x-www-form-urlencoded改为multipart/form-data并构造相应的数据块。WAF对multipart格式的解析有时不如标准格式严格。畸形分块传输编码使用Transfer-Encoding: chunked并构造畸形的分块大小如负数、超长数字可能使WAF的流式解析器出错而后端服务器却能正常处理。这一步需要借助Burp Suite的插件如Chunked插件或自定义Python脚本来实现。3.2.3 协议层与Header伪装修改User-Agent伪装成常见浏览器的完整字符串或搜索引擎爬虫。添加冗余Header添加大量无意义但合法的Header如X-Forwarded-For、X-Client-IP等可能淹没WAF的检测逻辑。HTTPS与HTTP/2确保测试使用HTTPS。有些WAF在HTTP/2协议下的检测规则可能存在差异可以尝试切换协议版本。3.2.4 针对SQL注入的进阶Payload变形对于SQL注入载荷我采用了组合拳大小写混合与内联注释 oR/**/11。/**/在SQL中是注释但能分割关键词绕过简单的正则匹配。双重URL编码对载荷进行两次URL编码。WAF可能只解码一次而后端应用解码两次导致Payload被还原。例如单引号第一次编码为%27第二次编码为%2527。使用非常见等价函数或语法例如用LIKE代替用||连接字符串代替或CONCAT。经过一系列尝试我发现组合使用multipart/form-data格式并在参数值中插入特定Unicode控制字符能够稳定地绕过该WAF对简单注入语句的检测。我的Payload成功抵达了服务器从Burp的响应时间或返回的错误信息可以判断但返回的数据依然是乱码——这说明我闯过了WAF但撞上了WASM加密这第二堵墙。4. WASM模块逆向分析与加密流程破解现在我的“子弹”Payload已经能送到目标“房间”后端应用门口但门口有个“密码机”WASM模块我必须知道密码的生成规则。接下来焦点转向浏览器内部。4.1 定位与提取WASM模块网络抓包打开浏览器开发者工具的Network面板清空记录执行一次正常的登录操作。在请求列表中除了常见的XHR/Fetch请求我重点关注.wasm文件的请求。果然在提交登录请求之前浏览器先加载了一个login_encrypt.wasm文件。源代码查看在Sources面板中也能找到这个WASM文件并可以直接下载到本地。内存中查找如果WASM是通过WebAssembly.instantiate流式编译的没有单独文件可以在Console中执行WebAssembly.Module.exports(module)来探查已实例化的模块需要先在代码中下断点获取module对象引用或者使用Memory面板搜索WASM魔数\0asm。4.2 静态分析初窥门径拿到login_encrypt.wasm文件后我首先使用命令行工具进行初步静态分析了解其接口。# 使用wasm2wat将二进制wasm转换为可读的文本格式WebAssembly Text wasm2wat login_encrypt.wasm -o login_encrypt.wat查看生成的.wat文件我快速搜索export关键字找到了导出的函数名例如(export encrypt_data (func $encrypt_data)) (export generate_key (func $generate_key))这告诉我这个模块至少暴露了两个函数encrypt_data和generate_key。这是最重要的突破口。接着我使用了更高级的反编译器如wasm-decompile它能生成一种类似高级语言的伪代码比.wat汇编代码更易读。wasm-decompile login_encrypt.wasm -o login_encrypt.dcmp在反编译的输出中我可以看到函数的大致结构、调用了哪些内部函数如内存操作、数学运算以及输入输出参数的类型。这让我对加密流程有了一个模糊的轮廓似乎generate_key会从某个地方可能是导入的内存或全局变量获取一个种子生成一个密钥然后encrypt_data使用这个密钥对输入数据进行处理。4.3 动态调试洞察交互细节静态分析只能看个大概真正的逻辑必须在运行时观察。我回到浏览器开发者工具。下断点在Sources面板找到加载WASM的JavaScript文件通常是一个包含WebAssembly.instantiate或WebAssembly.instantiateStreaming的JS文件。在调用WASM导出函数如instance.exports.encrypt_data的代码行设置断点。观察调用栈与参数触发登录操作代码会在断点处暂停。在Call Stack面板可以看到调用链在Scope或Console中可以查看传入encrypt_data函数的参数值。我发现它通常接收两个参数一个指向输入字符串内存地址的指针以及字符串的长度。跟踪内存这是关键。WASM函数通常通过线性内存Memory与JavaScript交换数据。在Memory面板我可以输入从JS传递过来的指针地址直接查看内存中存储的明文数据是什么。当函数执行完毕后再查看函数返回值通常是一个指向结果内存区域的指针就能在对应内存地址看到加密后的密文可能是一串十六进制或Base64字符串。记录输入输出我手动构造了几组不同的输入如test123、admin、 OR 11重复上述过程记录下每次的明文和对应的密文。这为后续分析加密算法是AESRC4还是自定义的混淆提供了数据样本。4.4 算法分析与模拟复现通过动态调试我获得了多组明文密文对。现在需要分析其加密算法。观察模式相同明文每次加密结果是否相同—— 结果是相同的说明不是随机IV的加密模式可能使用了固定的密钥或种子。密文的长度与明文长度有何关系—— 密文长度固定比如总是32字节的十六进制字符串这强烈暗示了可能是哈希如MD5或者是分组加密的ECB模式。如果密文长度可变且比明文长可能是流加密或带填充的分组加密。修改明文的一个字符观察密文变化。—— 如果密文完全改变雪崩效应可能是哈希或分组加密。如果只有局部变化可能是简单的流加密或异或操作。猜测与验证结合静态分析中看到的generate_key函数我猜测流程是JS调用generate_key()生成或获取一个密钥然后调用encrypt_data(plaintext)。为了验证我在JS调用generate_key后也下断点尝试导出或记录这个密钥。有时密钥会被放在一个全局变量或浏览器的localStorage中。模拟实现经过分析我确定该WASM实现了一个简单的AES-128-ECB加密密钥是通过一个硬编码的种子字符串经过多次MD5哈希生成的。这个种子字符串在WASM模块的常量数据段中可以被静态分析找到。于是我使用Python的pycryptodome库来复现这个过程import hashlib from Crypto.Cipher import AES from Crypto.Util.Padding import pad import binascii def simulate_wasm_encrypt(plaintext): # 1. 还原密钥生成过程 (从静态分析中获得) seed hardcoded_secret_salt_from_wasm # 模拟WASM中的多次哈希 key_material hashlib.md5(seed.encode()).hexdigest() for _ in range(10): # 循环次数从反编译代码中得知 key_material hashlib.md5(key_material.encode()).hexdigest() # 取前16字节作为AES-128密钥 key binascii.unhexlify(key_material)[:16] # 2. 还原加密过程 cipher AES.new(key, AES.MODE_ECB) # 注意padding方式观察WASM使用的是PKCS7还是ZeroPadding padded_data pad(plaintext.encode(), AES.block_size, stylepkcs7) ciphertext cipher.encrypt(padded_data) # 观察WASM输出是hex还是base64 return ciphertext.hex() # 假设输出为十六进制字符串 # 测试 test_input admin123 encrypted simulate_wasm_encrypt(test_input) print(f明文: {test_input} - 密文: {encrypted})我将Python脚本生成的密文与浏览器中动态调试捕获的密文进行对比完全一致至此WASM加密流程被成功破解和复现。实操心得WASM逆向的核心在于“动静结合”。静态分析wasm2wat,wasm-decompile帮你快速找到入口和脉络像看地图动态调试浏览器DevTools让你观察实时数据和逻辑流转像实际在路上开车。两者缺一不可。另外耐心记录和对比输入输出数据对是猜解算法的最直接依据。5. 整合绕过与自动化测试脚本编写现在我已经掌握了两个关键绕过WAF的请求构造方法和WASM加密的模拟算法。接下来就是将二者整合编写一个能够自动对目标进行深度测试的Python脚本。脚本的核心逻辑如下接收一个原始Payload例如SQL注入语句。使用复现的WASM加密逻辑将Payload加密。构造能够绕过WAF的HTTP请求结构例如使用multipart/form-data添加特定Header插入干扰字符等。将加密后的Payload作为请求参数发送。解析响应判断漏洞是否存在。import requests import hashlib from Crypto.Cipher import AES from Crypto.Util.Padding import pad import binascii from urllib.parse import quote class TargetTester: def __init__(self, base_url): self.base_url base_url self.session requests.Session() # 配置绕过WAF的Headers self.session.headers.update({ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..., X-Forwarded-For: 192.168.1.100, # 其他伪装Header... }) def _wasm_encrypt(self, plaintext): # 复用之前的加密函数 seed hardcoded_secret_salt_from_wasm key_material hashlib.md5(seed.encode()).hexdigest() for _ in range(10): key_material hashlib.md5(key_material.encode()).hexdigest() key binascii.unhexlify(key_material)[:16] cipher AES.new(key, AES.MODE_ECB) padded_data pad(plaintext.encode(), AES.block_size, stylepkcs7) return cipher.encrypt(padded_data).hex() def test_sql_injection(self, param_name, original_value, payload_list): 测试某个参数是否存在SQL注入 for payload in payload_list: # 1. 加密Payload encrypted_payload self._wasm_encrypt(payload) # 2. 构造请求数据 (使用multipart/form-data绕过) files { param_name: (None, encrypted_payload) # 关键将加密后数据作为文件字段值 } # 也可以添加额外的干扰字段 data { dummy_field: some_legit_value } try: # 3. 发送请求 resp self.session.post(self.base_url, filesfiles, datadata) # 4. 分析响应 if database error in resp.text.lower() or sql syntax in resp.text.lower(): print(f[] 潜在SQL注入漏洞发现! Payload: {payload}) print(f 响应特征: {resp.text[:200]}...) elif resp.status_code 500: print(f[?] 服务器内部错误Payload可能生效: {payload}) else: print(f[-] Payload未触发明显异常: {payload}) except Exception as e: print(f[!] 请求失败: {e}) if __name__ __main__: tester TargetTester(https://target.com/login) # 准备测试Payload注意Payload已经是打算被加密的内容 sql_payloads [ OR 11, UNION SELECT null,version()--, admin--] tester.test_sql_injection(password, legit_password, sql_payloads)这个脚本将绕过WAF的请求构造和WASM加密模拟自动化极大地提高了测试效率。我可以轻松地扩展它来测试其他类型的漏洞如XSS、命令注入只需修改Payload列表和响应分析逻辑即可。6. 常见问题、排查技巧与防御思考在整个过程中我遇到了不少坑也总结了一些排查技巧。6.1 常见问题与解决WASM内存访问错误在动态调试时如果传递的指针地址错误WASM会触发RuntimeError: memory access out of bounds。确保在JS调用WASM函数时字符串是通过module.exports.__memory或new TextEncoder().encodeInto正确写入内存的。调试时可以在Memory面板手动查看指针地址附近的数据是否正确。加密结果不一致Python复现的加密结果与浏览器不一致。检查密钥确认密钥生成过程的每一步哈希次数、编码方式、截取长度都与WASM内完全一致。在WASM中下断点将每一步的中间结果打印到Console与Python脚本的中间结果对比。检查加密参数加密模式ECB、CBC、填充方式PKCS7、ZeroPadding、初始向量IV是否一致。AES的ECB模式不需要IV而CBC模式需要。检查输入编码确保明文在传入WASM前和传入Python函数前的编码一致通常是UTF-8。WAF规则更新今天能绕过的姿势明天可能就被规则库覆盖了。需要保持对最新绕过技术的研究并准备多套备用方案。6.2 给开发与安全人员的防御思考从攻击者的视角复盘也能为防御方提供加固思路对于WAF深度防御WAF不应是唯一防线。需要与后端输入验证、参数化查询、安全的编码实践相结合。行为分析除了基于规则的匹配应引入基于机器学习的异常行为检测识别低频、畸形的请求模式。定期更新与测试规则库需及时更新并定期进行绕过测试检验WAF的有效性。对于WASM加密不要依赖客户端加密进行安全校验客户端WASM加密只能用于增加逆向难度和防止简单的流量分析绝不能用于替代服务端的身份认证、授权或输入验证。所有安全关键逻辑必须在服务端完成。增加混淆与反调试可以在WASM代码中植入反调试代码检测开发者工具是否打开对WASM二进制进行混淆增加静态分析的难度将密钥材料动态化而不是硬编码。使用代码保护技术考虑使用专业的WASM代码混淆和虚拟化保护工具将核心逻辑转换成自定义的字节码或指令集大幅提升逆向工程的门槛。这次实战让我深刻体会到现代Web安全是一个持续对抗的过程。攻击技术在演进防御体系也需要层层递进、不断加固。作为安全研究人员理解这些绕过和破解技术最终目的是为了帮助构建更坚固的防御。整个过程中最宝贵的不是某个具体的绕过Payload或解密脚本而是这套分析复杂系统、分层拆解问题的方法论。无论防护手段如何变化这套“观察、假设、验证、实现”的流程都是应对新挑战的利器。

相关新闻

iOS性能优化利器:Instruments工具全解析

iOS性能优化利器:Instruments工具全解析

1. iOS性能优化与Instruments工具概述在iOS应用开发中,性能优化是确保用户体验的关键环节。一个响应迟缓、内存占用过高或耗电量大的应用,即使用户界面再精美,也难逃被卸载的命运。作为苹果官方提供的性能分析工具套件,Instrument…

2026/10/21 5:30:05 阅读更多 →
征兵管理系统技术实现:微服务架构、数据安全与高并发设计

征兵管理系统技术实现:微服务架构、数据安全与高并发设计

这次我们来看一个与征兵相关的技术项目。虽然"征兵"本身是一个政策性和社会性话题,但在技术领域,我们可以从多个角度来探讨相关的信息化建设、数据处理和系统开发方案。本文将重点分析征兵信息化系统的技术实现方案,包括系统架构、…

2026/10/20 10:19:19 阅读更多 →
JavaScript TypeError: undefined is not a function 解析与解决方案

JavaScript TypeError: undefined is not a function 解析与解决方案

1. 错误现象与本质剖析 "TypeError: undefined is not a function"这个报错在JavaScript开发中出现的频率堪比咖啡杯旁的糖包。当你在控制台看到这行红字时,本质上是在说:"你试图把不存在的东西当函数调用"。就像对着空气喊"开…

2026/10/18 23:21:25 阅读更多 →

最新新闻

使用 Zafiro.Avalonia 语义容器构建可维护的 Avalonia 布局:HeaderedContainer、EdgePanel 与 Card 实战指南

使用 Zafiro.Avalonia 语义容器构建可维护的 Avalonia 布局:HeaderedContainer、EdgePanel 与 Card 实战指南

AI 技能AI 插件人工智能 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, c…

2026/10/21 5:30:11 阅读更多 →
双线AI Agent架构:权限边界与安全机制的设计实践

双线AI Agent架构:权限边界与安全机制的设计实践

这半年我们团队一直在折腾一套双线 Agent 框架,内部代号分别是 QClaw 和 WorkBuddy。项目做到中期,周围人问得最多的一个问题就是:你们为什么不把两套能力合成一个 Agent,非要拆成两条线?等到权限事故出了两次之后&…

2026/10/21 5:30:11 阅读更多 →
Avalonia 交互逻辑分层实战:用 Xaml.Interaction.Behaviors 替代 Converter,打造干净的 Zafiro 视图层

Avalonia 交互逻辑分层实战:用 Xaml.Interaction.Behaviors 替代 Converter,打造干净的 Zafiro 视图层

AI 技能AI 插件人工智能 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, c…

2026/10/21 5:30:11 阅读更多 →
用Claude Code实现多项目高效管理:上下文隔离与规则设计实践

用Claude Code实现多项目高效管理:上下文隔离与规则设计实践

1. 为什么需要一套多项目管理方案去年底我们团队接了一个跨平台系统集群的维护需求,手上同时有五个项目在推进。每个项目都有自己的技术栈、发布时间线和依赖组件,最要命的是这些项目之间还有公共服务层互相依赖。以前用传统命令行的方式逐个项目开终端、…

2026/10/21 5:30:11 阅读更多 →
基于K6的支付系统性能压测实战指南

基于K6的支付系统性能压测实战指南

做支付系统的性能验证,是我这几年踩坑最密集的领域之一。业务高峰期接口一抖,服务器CPU飙到99%,紧接着订单积压、支付超时、对账不平,最后大半夜一群人围着告警大屏开会。我后来把整套验证方式固化下来,核心选型就是K6…

2026/10/21 5:30:11 阅读更多 →
AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

在各行业都在谈“数字化”的时候,真正影响消费决策的通道其实已经换了。以前大家搜一个品牌,是翻链接、看标题、挑网站;现在打开对话式AI,直接问一句“这座城有什么值得吃的”“这家店的真实口碑怎么样”,然后就看AI给…

2026/10/21 5:29:11 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →