从防御规避到加密流量检测:AES-256-GCM下的安全运营实战
之前和一些同行聊“免杀”这个话题大家的反应往往两极分化有人觉得它神秘有人觉得它就是恶意软件对抗杀毒的手段没什么好聊的。我自己的看法其实不同——在安全运营和检测工程这个视角里“免杀”并不是一个孤立的技术名词它本质上对应着ATTCK框架里的“防御规避TA0005”战术。而真正让我觉得值得深入研究的不是某个样本怎么过了引擎而是攻击者手里的加密技术比如AES-256-GCM是如何让传统基于特征和明文的检测手段集体失效的。这篇文章我从防守方实操的角度出发结合AES-256-GCM在加密通信里的应用讲清楚防御规避战术怎么被建模、加密流量怎么被观测、检测规则又该怎么落地。不教你怎么写免杀样本只聊安全运营者做威胁狩猎和检测设计时真正会用到的思路、工具和避坑经验。适合正在入门威胁狩猎的蓝队同学也适合那些发现自家设备“全是加密流量但什么都看不见”的检测团队参考。1. 从ATTCK视角重新理解“免杀”和“防御规避”大家平时说的“免杀”通常指的是恶意程序通过加壳、混淆、修改特征码、动态加载之类的方式让静态扫描引擎扫不出来。这个词容易让人盯着“文件”和“查杀”看但在实际攻击中规避动作远远不止文件层这一件事。ATTCK把防御规避定义为“攻击者用来逃避检测和其他防御的技术集合”它覆盖了从执行、持久化、横向移动到命令控制的几乎所有环节。换句话讲真正麻烦的对手不是只会在文件上动手脚而是会用各种组合拳让你在网络侧、端点侧、日志侧都看不见他。1.1 为什么防守方要研究防御规避战术很多团队做检测体系建设一开始是“规则堆量”比如把公开的Sigma规则、Snort规则直接灌进IDS灌完发现大量误报或者根本没法解释命中记录。为什么因为规则多半是针对某个已知样本或已知行为的快照而对手换一个实现方式就能绕过去。我在实操里的体会是应该先把防御规避战术当作一个“待检测能力清单”来研究而不是追着样本跑。什么叫待检测能力清单举个例子攻击者在一台机器上要长期存活他至少得做几件事把自己的工具伪装成常见软件或者放到不惹眼的位置尽量不触发端点上的行为检测比如通过内存执行而不是落地文件把命令控制的流量伪装成正常的HTTPS避免网络侧直接看到明文控制指令拿到权限后清掉日志或者抹掉落地文件避免被发现痕迹。这些事情在ATTCK里分别对应T1036伪装、T1620反射代码加载、T1573加密信道、T1070痕迹清除。你在攻防演练里感受到的“麻烦”几乎都能在这些技术点里找到影子。作为防守方如果先把这些能力点了名再去设计检测逻辑思路就会清晰很多——你不是在猜“哪个样本有问题”而是在检查“我们有没有能力看见这种规避动作”。1.2 “防御规避”在攻击链中的位置很多人误会防御规避只是攻击链的某一个环节其实它更像一个“横切面”。攻击者从初始访问开始就可能在做规避钓鱼邮件里的文档用宏混淆规避网关这个过程属于T1027混淆文件或信息拿到权限后用进程注入跑代码对应T1055连接外部控制端时用合规的TLS加密对应T1573。把防御规避简单地当成“攻击链条里的一步”容易忽略它的贯穿性。这就引出一个非常关键的实操思路当你在设计检测工程时不要只盯着某一个阶段而是要从“攻击者从进入到离开要做哪些规避动作”这个角度去倒推数据源。我曾经把一个模拟攻击过程拆成时间轴每一步都标注它可能触发的规避技术再对照我们已有的日志和告警。结果发现我们在“命令控制”环节几乎是失明的因为当时所有流量检测都只做明文特征匹配加密流量没有任何覆盖。这个发现直接改变了后续检测体系的设计优先级。2. AES-256-GCM加密为什么让检测变难聊完框架和战术我们把视线收回到具体技术上。标题里用了AES-256-GCM这个加密算法它不是攻击者发明的东西而是业界最主流的加密标准之一。恰恰因为它太主流所以让检测变得特别困难——恶意流量的“长相”和正常流量几乎没有区别。2.1 GCM模式的安全与性能特性AES-GCM不是一种简单的加密模式它把计数器模式CTR和伽罗瓦认证GHASH结合在一起属于带关联数据的认证加密AEAD算法。AES-256表示密钥长度是256比特分组长度是128比特GCM模式在加密的同时会生成认证标签能够保证密文在传输过程中没有被篡改。一般会使用12字节的随机IV加密后的输出是由密文和认证标签组成的。为什么那么多网络协议都选择了GCM两个原因性能和安全。CTR模式支持并行计算硬件加速指令比如AES-NI可以在很低的CPU开销下完成加解密这在TLS握手、隧道流量等场景里非常划算同时认证标签解决了过去“只加密不认证”的很多安全隐患。无论你访问一个电商网站还是用协作工具传输文件流量都可能跑在AES-GCM或类似AEAD算法上。这就是问题的起点恶意程序如果直接复用系统TLS库把C2通信封装成标准HTTPS先不管它的内容是什么单看“密码算法”这个维度你和正常网站的流量几乎没有差别。攻击者根本不需要自研加密算法他只要“随大流”就够了。2.2 攻击者眼中的标准加密和正常流量“长得一样”站在攻击者视角考虑问题你会发现选择标准加密算法是性价比最高的规避手段。如果自己实现一个自定义加密协议流量特征可能表现在固定熵值、异样的握手结构、特殊的载荷首部等这些都是检测规则的潜在告警点。而用系统自带的TLS库和AES-GCM密文本身就是高熵的流量包长度分布也和普通HTTPS相近NIDS基本没有能力在不解密的情况下直接判断“这个HTTPS是不是恶意的”。但“长得一样”不等于“无法检测”。我常说一个比喻快递盒里的东西你看不到但快递盒上的寄件人、包装尺寸、胶带痕迹、发货频率都是有信息的。TLS加密了应用数据却没有加密握手阶段的元数据。客户端Hello、证书信息、SNI、支持的密码套件、扩展列表都清清楚楚摆在网络流量里。防守方的机会就在这些元数据里。2.3 加密不等于匿名TLS握手中的明文线索具体到TLS元数据我最常用的几个“线索”如下TLS版本和支持的密码套件如果某台内网服务器平时只被老系统访问突然出现一个支持最新TLS 1.3套件的客户端而且系统版本很旧就值得怀疑。SNI字段很多自定义C2会设置SNI有些甚至把SNI留空或填一个乱写的域名。正常浏览器几乎一定会填SNI而且填的域名和证书要匹配。证书信息攻击者如果使用自签名证书或者证书名称特别像一个随机串或者有效期长得离谱这些都能成为低门槛的告警条件。ClientHello扩展顺序和长度不同的TLS实现会生成不同的扩展排列即使不是特意做指纹也会留下“实现特征”。JA3/JA4指纹就是基于这些特征算出来的后面我会展开讲。你可能会有疑问这些线索太“软”了不能单独定罪。没错安全检测本身就是多个弱信号叠加的过程任何一个元数据特征都不该被当作“绝对恶意”但它们组合起来能帮你快速把几十万条会话缩小到几十条重点会话后续再交给专家做深入分析效率完全不同。3. 落地实战检测加密隧道与可疑TLS指纹理论讲完了我们来点能直接用的东西。这一节我以“检测可疑加密隧道”为目标拆解一套从流量采集到规则输出的实操流程重点放在JA3/JA4指纹、证书画像和ATTCK Navigator覆盖分析上。3.1 用JA3/JA4和证书信息缩小范围JA3是过去几年非常流行的TLS指纹方案它把ClientHello中的版本、密码套件、扩展、椭圆曲线、椭圆曲线点格式等字段拼接后做MD5哈希得到一个32位指纹。同一个TLS库或同一个恶意工具生成的环境JA3指纹通常高度稳定。后来社区又推出了JA4改进了JA3的一些问题比如支持按策略区分TLS版本、抗重放、更好地兼容TLS 1.3等。在实际检测工程里我不建议你只依赖某一种指纹而是应该把它们组合起来。一个简单有效的做法是在全网流量出口镜像处采集TLS ClientHello和ServerHello。计算每个会话的JA3或JA4并同时记录证书主题、证书签发者、SNI、目标IP、目标端口。建立“已知合法指纹库”。做法很简单连续采集两周正常流量把出现频次最高的指纹加入白名单不只是浏览器指纹还包括内部业务系统、办公软件更新服务、云服务商SDK等。对不在白名单里、且满足“外部目标自签名证书新域名”等条件的会话直接生成中优先级告警。这里有一个容易踩的坑JA3指纹会被TLS库的版本更新改变同一个软件升级后指纹就变了而且很多SAAS产品、云服务的指纹并不固定。所以白名单不能做得太死否则两周之后就是告警风暴。我的经验是白名单做“指纹目标域名”的组合而不是单纯指纹。比如指纹A访问某云厂商域名放行指纹A访问一个陌生IP则继续看证书和行为。3.2 一段可复用的流量分析脚本如果你有pcap文件可以先用脚本做一轮快速筛选。下面这段Python代码用pyshark读取pcap提取TLS握手类型为1或2的数据包并保存关键元数据字段。它不会解密任何内容只是整理网络上的明文元数据。import pyshark import json def extract_tls_meta(pcap_path, pkt_limit5000): cap pyshark.FileCapture( pcap_path, display_filtertls.handshake.type1 || tls.handshake.type2, keep_packetsFalse ) records [] for i, pkt in enumerate(cap): if i pkt_limit: break try: tls_layer pkt.tls handshake_type getattr(tls_layer, handshake_type, None) if handshake_type 1: records.append({ ts: pkt.sniff_time.isoformat(), src: pkt.ip.src, dst: pkt.ip.dst, sport: pkt.tcp.srcport, dport: pkt.tcp.dstport, tls_version: getattr(tls_layer, handshake_version, None), sni: getattr(tls_layer, handshake_extensions_server_name, None), ja3: getattr(tls_layer, handshake_ja3, None), }) elif handshake_type 2: records.append({ ts: pkt.sniff_time.isoformat(), src: pkt.ip.src, dst: pkt.ip.dst, sport: pkt.tcp.srcport, dport: pkt.tcp.dstport, tls_version: getattr(tls_layer, handshake_version, None), subject: getattr(tls_layer, handshake_certificate_subject, None), issuer: getattr(tls_layer, handshake_certificate_issuer, None), }) except AttributeError: continue return records if __name__ __main__: meta extract_tls_meta(capture.pcap) with open(tls_meta.json, w) as f: json.dump(meta, f, indent2) print(fextracted {len(meta)} tls handshake records)这个脚本的定位是“快速摸底”并不是一个完整的检测产品。实际场景里应该考虑更高性能的采集方案但在分析一个几十MB的pcap时它完全够用。拿到结果后我一般会按目标IP和JA3分组计数出现次数高、又没有SNI的会话是重点出现次数低、但证书subject完全不可读、目标IP是一个云服务商地址段的会话也值得手动看一遍。3.3 从ATTCK Navigator生成检测覆盖清单检测规则不能东一榔头西一棒子我强烈建议团队用ATTCK Navigator把“检测能力覆盖情况”可视化。这个工具是免费的网页应用可以在矩阵上按技术高亮、标记并添加数据来源说明。具体操作思路新建一个“检测现状”图层。找到T1573加密信道、T1070痕迹清除、T1027混淆文件或信息等与加密规避相关的技术。对每项技术标记当前状态无检测、仅数据源、部分检测、已检测。在“已检测”的注释里写清楚依赖什么数据源、什么规则ID、由谁负责。每个月复查一次跟最近的告警和攻防演练结果对照看哪些技术点还处于“裸奔”状态。这样做的最大好处是能把“检测体系”从模糊的感觉转成一张具体的覆盖矩阵。有朋友问我“你们检测覆盖到什么程度”我直接截图矩阵给他看比讲一堆设备清单清楚多了。而且当攻击者通过新路径突破时你也可以快速判断这次用到的是我们已经有数据源、但没有检测规则的技术还是完全没有数据源的技术前者可能是规则质量问题后者则是数据采集盲区整改思路完全不同。3.4 把弱信号组合成可用告警一条示例思路为了帮你更直观地理解“弱信号组合”我列一个简化版检测思路假装我们要写一条规则逻辑条件A目标IP是国家流量库标注的“低信誉”地址或者不是常见云厂商。条件BTLS证书是自签名且证书subject不匹配SNI。条件C这个会话在非工作时间出现且连接持续时间超过10分钟。条件D会话发起方的JA3指纹不在白名单中。当A、B、C、D同时满足时才生成高危告警只满足A和B生成低危线索进入分析师人工确认队列。这个思路不一定能立刻抓到真正的高级威胁但它能把误报压到可控范围。检测工程里“降噪”往往比“发现”更先决定一个体系能不能跑起来。4. 常见问题与排查技巧实录我在实际做流量分析和检测规则设计时遇到不少问题整理几个比较典型的供你排查时参考。4.1 加密流量全盲区怎么办现在很多企业的网络流量里HTTPS占比超过80%如果不做任何解密网络侧检测基本形同虚设。但我不建议一上来就全量解密中间人解密涉及证书管理、隐私合规、稳定性风险很大。我建议分级处理第一层先用TLS元数据做粗筛找出“看起来不像正常应用”的会话第二层针对少数高置信可疑会话在合规和授权允许的前提下单独做定向抓包、单独解密第三层把网络侧线索和端点侧证据关联起来。如果EDR报告某台主机频繁启动非常见进程同时网络侧也有可疑TLS会话这时候再考虑全流量解密也不迟。4.2 规则命中率低、误报高怎么调整先问自己三个问题这个检测信号是否容易被攻击者改变这个信号在本环境里是不是足够稀有这个信号有没有和上下文关联举例来说很多人喜欢把“JA3不在白名单”直接设为告警结果每天都会收到大量新安装软件的流量告警因为任何一个新软件都可能有一个你未见过的JA3。正确的做法是不把JA3作为唯一条件而是把它和行为、目标、证书进行组合。我自己调整规则最主要的经验是先做一段时间的离线历史数据回放观察这个规则的“日命中量基线”。如果基线波动太大就先别上线把条件收紧或者增加辅助信号等到命中量稳定再部署在线告警并且设置单独的告警队列避免打扰值班分析师。4.3 日志保存不全时还能查什么很多企业没有持续保存PCAP这是现实。好消息是即便没有原始流量你依然有东西可以查NetFlow或流量日志只有五元组、字节数、包数、时间但从中能看到连接频次、上下行比例、会话时长这些用于发现周期性心跳很有用。DNS日志C2域名即使不固定也会在DNS查询记录里留下痕迹。某个内部主机反复查询低信誉域名就是强线索。证书日志企业如能记录TLS证书出现时间和来源IP可回溯性会大幅提高。这个数据比PCAP便宜太多也是我极力建议保留的一类日志。EDR端点侧能看到的进程网络连接信息往往比网络设备完整得多别只看网络侧要把两者拼起来。最后给一个具体建议如果你预算有限优先保存“DNS日志 TLS证书相关信息 NetFlow”这三样它们对分析加密流量和防御规避行为覆盖率最高成本却比全量PCAP低一个数量级。我踩过坑之后现在给任何团队做日志选型都会把这三样放在最前面。4.4 数据字段对不上脚本跑出来全是Nonepyshark依赖系统安装的tshark而tshark的字段命名在不同版本里有差异。比如handshake_ja3在旧版本里可能是tls.handshake.ja3到了新版本又变成tls.handshake.ja3_full。遇到全空值时在Wireshark里打开一帧TLS包看“Protocol Hierarchy”和具体字段名再用pkt.tls.field_name访问。这个过程虽然烦琐但能把你的脚本调到可用状态。如果你只是临时分析最简单的方式是用tshark导出CSV再丢进数据处理脚本绕过pyshark的字段映射问题。5. 写在最后检测工程的真实体会做加密流量和防御规避这条线的检测做了这么久我最深的一个感受是检测工程到最后拼的其实是“你知道什么算正常”。规则可以抄平台可以买但“这个网络环境里什么才是正常”这个问题只能靠你自己的数据积累和运营沉淀。AES-256-GCM这样的标准加密算法让攻击者很容易把自己埋进海量正常流量里但反过来正常业务也会在一定时间内形成稳定的访问模式。你越了解自己网络里的“正常”就越容易看出异常的那一个。还有一点别追求单点告警一个规则覆盖不了整个攻击链。加密通信只是防御规避的冰山一角流量分析、EDR取证、日志审计要联动起来才能形成闭环。我现在每次设计新的检测逻辑都会先问一遍如果它告警了我们能定位到主机吗能回溯到完整会话吗能执行阻断吗如果这些答案都是否我会先去补响应能力再谈检测规则。这个习惯让我少走了很多弯路也建议你尝试——把每一步检测工程都放到“能不能安全地响应”这个大前提下来判断方向一般不会错。

相关新闻

昆仑通态触摸屏与台达温控器Modbus RTU联调:寄存器映射与报警批量配置

昆仑通态触摸屏与台达温控器Modbus RTU联调:寄存器映射与报警批量配置

1. 联调前必须捋清楚:接线、通信参数与485总线的坑1.1 最小系统怎么搭:从硬件接线开始做项目这些年,最怕的不是工艺逻辑复杂,而是上位机和仪表的“通信语言”对不上。前阵子接手一套加热设备改造,现场是25台台达DT330温…

2026/10/19 6:03:37 阅读更多 →
React 18并发渲染实战:自动批处理、startTransition与Suspense优化搜索筛选页

React 18并发渲染实战:自动批处理、startTransition与Suspense优化搜索筛选页

前段时间我接手一个搜索筛选页的重构,数据量不算夸张,两千多条记录、六七个筛选条件,但旧实现里每敲一个字,键盘都明显发沉。页面后来变流畅,靠的就是React 18的并发渲染能力,重点落在Suspense、Transition…

2026/10/19 6:02:37 阅读更多 →
用Python自动生成几何纹样:从旋转对称到SVG输出

用Python自动生成几何纹样:从旋转对称到SVG输出

做设计这一行,最怕的不是没有灵感,而是灵感出现之后,被“画重复图形、调尺寸、换配色”这种琐碎劳动消磨干净。有一段时间我频繁需要几何纹样素材——包装盒上的重复花边、网页首屏的装饰底纹、文创产品上的连续图案。手工画过的人应该都懂&a…

2026/10/19 6:02:37 阅读更多 →

最新新闻

光伏组件智能清洁机器人:路径规划与全覆盖算法设计实战

光伏组件智能清洁机器人:路径规划与全覆盖算法设计实战

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

2026/10/19 6:41:56 阅读更多 →
无线摄像头辐射发射超标整改实战:从240MHz倍频定位到排线与接口滤波

无线摄像头辐射发射超标整改实战:从240MHz倍频定位到排线与接口滤波

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

2026/10/19 6:41:56 阅读更多 →
超长对话卡顿破解:StreamingLLM与SwiftInfer组合优化实战

超长对话卡顿破解:StreamingLLM与SwiftInfer组合优化实战

大模型做超长对话,越聊越卡,几乎是每个做应用落地的人都会撞上的墙。前几分钟还流畅,聊到后面每蹦一个字都要等半天,显存看着涨,速度看着掉。这篇就针对这个痛点,把当前社区里讨论最多的两个解法——Stream…

2026/10/19 6:41:56 阅读更多 →
从拆题到调试:嵌入式蓝莓采摘机器人的视觉与运动控制实战

从拆题到调试:嵌入式蓝莓采摘机器人的视觉与运动控制实战

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

2026/10/19 6:41:56 阅读更多 →
大模型工程落地五段路线:从应用集成到部署优化

大模型工程落地五段路线:从应用集成到部署优化

2026年了,如果你还站在"大模型学习路线"这个词面前犹豫,说明你已经意识到一个问题:单纯刷短视频和零散教程,永远拼不出能上手的技能体系。我见过太多工程师朋友,上半年还在跟我聊怎么把模型接进项目&#xf…

2026/10/19 6:41:56 阅读更多 →
三端口固态变压器MPDPC全栈控制架构逆向与实战演训

三端口固态变压器MPDPC全栈控制架构逆向与实战演训

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

2026/10/19 6:40:56 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →