航空网络安全实战:从Wi-Fi入侵看客舱网络隔离与防御
在实际航空网络安全事件中Wi-Fi入侵是一个被严重低估的风险领域。一架从拉斯维加斯飞往亚特兰大的航班在降落时被联邦执法人员接机原因是机上有人涉嫌在飞行途中入侵了飞机的Wi-Fi系统。这类事件并非孤例它揭示了一个关键问题现代航空器上日益复杂的客舱娱乐系统和乘客Wi-Fi网络如果安全防护不足可能成为攻击者接近关键航电系统的潜在跳板。对于从事网络安全、嵌入式开发或航空软件相关工作的工程师而言理解这类攻击的原理、潜在影响以及防御思路是构建更安全系统的基础。本文将从技术角度拆解“机上Wi-Fi入侵”可能涉及的攻击面、技术原理和防御策略。我们将不讨论任何具体的攻击工具或利用细节而是聚焦于航空网络安全架构、常见的脆弱点以及工程师在设计和评估类似系统时应遵循的安全实践。通过构建一个模拟的客舱网络环境并演示如何通过配置和代码加固来提升其安全性你将能更深刻地理解为何一个看似普通的乘客Wi-Fi漏洞会惊动联邦执法人员以及在你的项目中如何避免类似的设计缺陷。1. 理解航空客舱网络架构与安全边界要分析Wi-Fi入侵的风险首先必须清楚现代客舱网络的基本构成。它绝不是一个简单的无线路由器。1.1 典型的分区架构乘客域与关键系统隔离现代飞机的网络通常遵循严格的“分区”或“域隔离”原则。最核心的模型是将网络划分为至少两个逻辑或物理隔离的区域航空电子设备域此域包含飞行控制系统、导航系统、发动机控制等关乎飞行安全的关键系统。这些系统通常使用如ARINC 429、AFDX等专用的、封闭的航空总线协议与现代IP网络物理隔离。客舱娱乐与服务域此域包括乘客使用的座椅靠背娱乐系统、客舱Wi-Fi接入点、乘务员使用的平板电脑等。该域通过客舱网络设备提供互联网接入、电影流媒体等服务。这两个域之间理论上存在一个安全网关进行隔离。这个网关是安全的核心它只允许预先定义好的、必要的、经过严格过滤的数据流通过并阻止任何从客舱域发往航电域的未经授权的访问尝试。graph TD subgraph “航空电子设备域 (安全关键)” A[飞行管理系统] -- B[航电数据总线] C[导航系统] -- B end subgraph “客舱服务域 (非关键)” D[乘客Wi-Fi AP] -- E[客舱服务器] F[座椅娱乐系统] -- E G[乘务员终端] -- E end E -- “严格控制的单向/受限数据流” -- H[安全网关/防火墙] H -- “仅允许特定数据如状态报告” -- B style A fill:#f9f,stroke:#333 style C fill:#f9f,stroke:#333 style D fill:#ccf,stroke:#333 style F fill:#ccf,stroke:#333上图展示了理想状态下的隔离模型。攻击者的初始立足点永远在右侧的客舱服务域。1.2 攻击者的潜在路径跳板与横向移动攻击者连接上客舱Wi-Fi后其目标往往是突破上述安全边界。攻击路径可能包括攻击客舱网络设备本身Wi-Fi接入点、客舱服务器或网络交换机如果存在未修补的漏洞如默认密码、已知的固件漏洞可能被直接攻破获得设备控制权。攻击其他乘客设备通过客舱Wi-Fi攻击者可能尝试入侵其他乘客的笔记本电脑或手机将其作为进一步攻击的跳板。攻击客舱娱乐系统座椅背后的娱乐系统通常基于嵌入式Linux或Android可能包含软件漏洞。攻破一台后可能尝试在内网中横向移动。探测并攻击安全网关这是最危险的步骤。如果安全网关的配置存在错误或者其本身存在软件漏洞攻击者可能从客舱域找到通往航电域的路径。例如网关错误地开放了某个管理端口或者其过滤规则存在逻辑缺陷。为什么这会惊动联邦执法人员因为成功跨越安全边界的尝试无论是否影响到飞行控制都被视为对航空运输安全的严重威胁。执法机构需要介入调查攻击意图、所用工具、攻击者身份并评估是否存在更广泛的系统性风险。2. 构建一个用于安全分析的模拟客舱实验环境为了理解防御措施我们需要一个可控的环境。我们将使用虚拟机和容器技术模拟一个简化的客舱网络。注意本环境仅用于合法的安全研究与学习严禁对任何真实的航空或运输系统进行测试。2.1 环境准备与工具清单我们将在本地使用VirtualBox或VMware创建隔离的网络环境。宿主机 任意现代操作系统Windows/macOS/Linux。虚拟化软件 VirtualBox 6.1 或 VMware Workstation/Fusion。虚拟机镜像Kali Linux 作为攻击者模拟机。包含各种安全评估工具。Ubuntu Server 22.04 LTS 作为客舱服务器/网关模拟机。网络配置 在虚拟化软件中创建一个新的“内部网络”例如命名为CabinNet将所有虚拟机接入此网络使其可以相互通信但与宿主机及外部互联网隔离。所需主要软件包在Ubuntu客舱服务器上安装# 更新系统 sudo apt update sudo apt upgrade -y # 安装网络与安全基础组件 sudo apt install -y net-tools iptables iptables-persistent nginx openssh-server # 安装容器运行时用于模拟服务 sudo apt install -y docker.io docker-compose # 安装无线工具模拟AP功能实际中由专用硬件提供 sudo apt install -y hostapd dnsmasq2.2 配置模拟客舱服务器与脆弱服务我们的Ubuntu虚拟机将扮演多个角色客舱Wi-Fi的网关、内部服务器、以及一个存在漏洞的模拟服务。首先配置一个简单的脆弱Web应用。我们创建一个存在SQL注入漏洞的PHP页面仅为演示。安装PHP及MySQLsudo apt install -y php-fpm php-mysql mysql-server创建漏洞示例代码 在/var/www/html/vuln_app目录下创建login.php?php // 警告此代码存在严重安全漏洞仅用于教学演示严禁在生产环境使用 $servername localhost; $username test_user; $password weak_password; $dbname test_db; // 创建连接使用易受攻击的旧式连接方式以突出漏洞 $conn mysqli_connect($servername, $username, $password, $dbname); if (!$conn) { die(Connection failed: . mysqli_connect_error()); } $user $_POST[username]; $pass $_POST[password]; // 存在SQL注入漏洞的查询语句 $sql SELECT * FROM users WHERE username$user AND password$pass; $result mysqli_query($conn, $sql); if (mysqli_num_rows($result) 0) { echo Login successful! (模拟); } else { echo Login failed.; } mysqli_close($conn); ?初始化数据库sudo mysql -e CREATE DATABASE test_db; sudo mysql -e CREATE USER test_userlocalhost IDENTIFIED BY weak_password; sudo mysql -e GRANT ALL PRIVILEGES ON test_db.* TO test_userlocalhost; sudo mysql -e FLUSH PRIVILEGES; sudo mysql test_db -e CREATE TABLE users (id INT, username VARCHAR(100), password VARCHAR(100)); sudo mysql test_db -e INSERT INTO users VALUES (1, admin, admin123);这个服务模拟了客舱内可能存在的陈旧后台管理系统。攻击者一旦接入客舱网络扫描发现此服务后便可利用SQL注入漏洞尝试获取数据或进一步渗透。3. 从攻击者视角常见的内部网络侦察与渗透手法切换到Kali Linux虚拟机。假设它已成功连接到模拟的客舱Wi-Fi在我们的实验中即连接到CabinNet网络。3.1 网络侦察发现目标攻击的第一步是绘制网络地图。发现存活主机 使用nmap进行ARP扫描快速找出同一网段内的活跃设备。# 假设客舱网络是 192.168.10.0/24 sudo nmap -sn 192.168.10.0/24输出会列出所有在线主机的IP地址。我们的Ubuntu客舱服务器可能位于192.168.10.10。端口扫描与服务识别 针对发现的IP进行详细扫描找出开放端口和运行的服务。sudo nmap -sV -sC -O -p- 192.168.10.10-sV 探测服务版本。-sC 使用默认脚本扫描。-O 尝试识别操作系统。-p- 扫描所有65535个端口。 扫描结果可能显示开放了22(SSH)、80(HTTP)、3306(MySQL)等端口。发现80端口的Web服务就是我们部署的脆弱应用。3.2 漏洞利用以SQL注入为例攻击者发现http://192.168.10.10/vuln_app/login.php后会尝试测试其安全性。手动探测漏洞 在用户名输入框尝试输入admin OR 11密码任意。如果应用返回“Login successful!”则证实存在SQL注入漏洞。背后的原理是构造的输入改变了SQL查询的逻辑原查询 SELECT * FROM users WHERE username[输入] AND password[输入] 注入后 SELECT * FROM users WHERE usernameadmin OR 11 AND passwordxxx由于11永远为真这条查询很可能返回用户表中的数据从而绕过认证。自动化工具利用 使用sqlmap这类工具可以自动化完成漏洞利用和数据提取。sqlmap -u http://192.168.10.10/vuln_app/login.php --datausernameadminpasswordpass --risk3 --level5 --dbs此命令会尝试自动识别注入点并最终列出数据库中的所有库名。获取数据库访问权限后攻击者可能窃取用户凭证、内部信息等。3.3 横向移动尝试访问隔离区域假设攻击者通过漏洞获得了Ubuntu服务器的某种shell权限例如通过利用Web应用的远程代码执行漏洞。他的下一个目标可能是探索网络寻找通往“航电域”的路径。内部信息收集# 查看网络配置寻找其他网卡或路由 ifconfig -a ip route show # 查看ARP缓存发现其他内部主机 arp -a # 查看主机文件、历史命令、进程列表 cat /etc/hosts history ps aux探测安全网关 如果客舱服务器有第二张网卡例如eth1连接到一个疑似“安全网关”或内部管理网络如172.16.0.0/24攻击者可能会尝试从这台被控服务器向那个网络发起扫描。# 在被控服务器上执行 nmap -sn 172.16.0.0/24如果发现了其他主机并且存在未受保护的脆弱服务攻击链就可能向纵深发展。4. 防御策略加固客舱网络与安全网关防御的核心思路是最小化攻击面、实施深度防御、严格监控审计。4.1 客舱服务器安全加固清单针对我们模拟的Ubuntu服务器必须进行以下加固及时更新与补丁管理# 配置自动安全更新 sudo apt install -y unattended-upgrades sudo dpkg-reconfigure --prioritylow unattended-upgrades防火墙严格策略 使用iptables或ufw只开放必要的端口。sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp comment SSH for management sudo ufw allow 80/tcp comment HTTP service # 特别注意禁止从客舱网络直接访问数据库端口 sudo ufw deny from 192.168.10.0/24 to any port 3306 sudo ufw enable服务安全配置SSH 禁用密码登录使用密钥认证修改默认端口。# /etc/ssh/sshd_config Port 2222 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yesWeb服务 移除示例代码、禁用目录列表、使用安全的HTTPS。数据库 绑定到本地回环地址禁止远程访问。# /etc/mysql/mysql.conf.d/mysqld.cnf bind-address 127.0.0.1漏洞代码修复 将存在SQL注入的代码改为使用参数化查询预处理语句。// 修复后的代码片段 $stmt $conn-prepare(SELECT * FROM users WHERE username? AND password?); $stmt-bind_param(ss, $user, $pass); $stmt-execute(); $result $stmt-get_result();4.2 安全网关配置核心原则安全网关可以是专用硬件或配置了严格规则的Linux服务器是隔离的关键。其配置应遵循默认拒绝所有 所有未明确允许的流量均应被丢弃。仅允许白名单流量 只开放客舱域向航电域发送特定协议、特定端口、特定格式的数据如飞行状态信息上报。绝对禁止反向连接航电域主动连接客舱域。深度包检测 对允许通过的流量进行应用层检查防止利用合法通道传递恶意载荷。网络地址转换与日志记录 所有通过网关的连接都应被详细记录包括源/目的IP、端口、时间、数据量用于事后审计。一个简化的网关iptables规则示例概念性# 假设 eth0 连接客舱域 (192.168.10.0/24) eth1 连接航电域 (172.16.0.0/24) # 1. 清空所有规则 iptables -F iptables -X iptables -t nat -F # 2. 设置默认策略为丢弃 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 3. 允许本地回环 iptables -A INPUT -i lo -j ACCEPT # 4. 允许已建立的连接和相关的返回流量 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # 5. 【关键规则】仅允许客舱域向航电域特定IP的特定端口发送UDP状态数据 iptables -A FORWARD -i eth0 -o eth1 -p udp -d 172.16.0.100 --dport 5000 -m state --state NEW -j ACCEPT # 6. 记录所有被拒绝的转发尝试用于监控警报 iptables -A FORWARD -j LOG --log-prefix FW_DENY: 4.3 网络监控与入侵检测在客舱网络内部部署网络入侵检测系统用于识别可疑活动。部署Snort或Suricata 在客舱网络的核心交换机上做端口镜像或将IDS传感器接入网络。# 安装Suricata sudo apt install -y suricata # 配置网络接口和规则集 sudo suricata -c /etc/suricata/suricata.yaml -i eth0定制规则 编写规则以检测针对客舱服务器、SQL注入、端口扫描等行为的流量。# 示例Suricata规则检测简单的SQL注入尝试 alert tcp $CABIN_NET any - $CABIN_SERVERS 80 (msg:SQL Injection Attempt; flow:to_server,established; content:POST; http_method; content:username; http_client_body; pcre:/(\%27)|(\)|(\-\-)|(\%23)|(#)/i; sid:1000001; rev:1;)集中日志与分析 将服务器日志、防火墙日志、IDS警报统一发送到安全的日志服务器进行分析便于关联分析安全事件。5. 事件响应与取证当入侵发生时如果监测到入侵迹象如IDS频繁告警、服务器出现异常文件需要启动应急响应流程。隔离与遏制 立即将受影响的主机从网络中断开但不要关机以保留内存中的证据。在防火墙上封锁攻击源IP。证据保全内存取证 使用LiME或AVML工具转储内存。# 在受影响主机上如果可能 insmod lime.ko path/tmp/memory_dump.lime formatlime磁盘镜像 使用dd或dcfldd对硬盘创建完整镜像。dc3dd if/dev/sda of/evidence/server_image.img hashsha256 log/evidence/imaging.log网络流量捕获 如果事先有全流量捕获立即备份相关时间段的pcap文件。分析与根因确定 在隔离的分析环境中对镜像和内存进行分析确定漏洞点、入侵路径、攻击者留下的后门和工具。恢复与加固 在彻底清除威胁并修补漏洞后使用干净的备份恢复服务并实施前文所述的加固措施防止同一漏洞被再次利用。6. 针对航空系统的特殊安全考量与最佳实践航空系统的安全要求远超普通IT系统需遵循如DO-326A/ED-202A航空网络安全适航要求等标准。物理与逻辑隔离 确保客舱网络与航电网络之间是物理单向隔离或通过经认证的安全数据二极管通信确保数据只能从航电域向客舱域单向流动。供应链安全 对所有软硬件组件进行严格的安全审查确保没有后门或已知高危漏洞。威胁建模与渗透测试 在系统设计阶段就进行威胁建模识别所有潜在攻击面。定期由具备航空背景的专业安全团队进行渗透测试。安全开发生命周期 在软件开发中集成SDL包括安全需求、安全设计、代码安全审计、漏洞扫描等环节。持续监控与更新 建立针对机载网络的持续安全监控能力并制定安全的无线软件更新机制确保漏洞能被及时修补。回到DL591航班的事件联邦执法人员介入的调查很可能就涵盖了上述的取证、根因分析以及评估攻击是否对更广泛的机队构成威胁。对于工程师而言这个案例是一个强烈的警示任何连接到公共接口的系统无论其最终业务是什么都必须以“假定被入侵”的心态进行设计和防护通过层层设防的深度防御策略将安全风险控制在可接受的范围内。在你的下一个涉及网络隔离的项目中不妨从绘制一张清晰的网络分区图开始严格定义每一道边界和访问规则这是构建坚固安全体系的起点。

相关新闻

Java instanceof 关键字深度解析:从类型检查到模式匹配实战

Java instanceof 关键字深度解析:从类型检查到模式匹配实战

1. 项目概述:为什么 instanceof 值得深究? 在Java的世界里, instanceof 这个关键字,就像是你工具箱里那把最常用、也最容易被误解的螺丝刀。乍一看,它简单得不能再简单——不就是用来判断一个对象是不是某个类的实…

2026/10/11 22:23:35 阅读更多 →
LaTeX表格加粗排版难题:从原理到实战的完整解决方案

LaTeX表格加粗排版难题:从原理到实战的完整解决方案

1. 项目概述:从“加粗”到“精准控制”的LaTeX表格排版进阶 在LaTeX的世界里,给表格里的文字加个粗,听起来就像在Word里点一下“B”按钮那么简单。但当你实际操作时,尤其是涉及到论文、报告这类对格式有严苛要求的文档时&#xff…

2026/10/10 19:30:23 阅读更多 →
AMD Ryzen调试工具全攻略:用SMU Debug Tool解锁处理器底层控制能力

AMD Ryzen调试工具全攻略:用SMU Debug Tool解锁处理器底层控制能力

AMD Ryzen调试工具全攻略:用SMU Debug Tool解锁处理器底层控制能力 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…

2026/10/7 7:34:29 阅读更多 →

最新新闻

MATLAB常用信号处理函数清单:从FFT到滤波器实战指南

MATLAB常用信号处理函数清单:从FFT到滤波器实战指南

1. 项目概述:为什么要单独整理一份信号处理函数清单做信号处理这几年,我最大的感受就是:MATLAB的功能强大到让人眼花缭乱,但真正高频使用的函数翻来覆去就那么几十个。很多初学者最容易犯的毛病,是一上来就抱着几百页的…

2026/10/15 17:18:28 阅读更多 →
拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

简介:这份资源面向拓扑优化初学者与结构优化方向的学生、研究人员,提供一套可直接运行的MATLAB入门程序,涵盖优化准则法(OC)与移动渐近线法(MMA)两种主流求解思路,帮助读者理解如何在…

2026/10/15 17:18:28 阅读更多 →
Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

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

2026/10/15 17:18:28 阅读更多 →
开题报告写到崩溃?这份“保姆级”通关攻略请收好

开题报告写到崩溃?这份“保姆级”通关攻略请收好

每到毕业季,无数本科生的第一道坎往往不是毕业论文答辩,而是开题报告。选题不知道从哪下手,研究思路理不清,格式改了又改还是被导师打回重写,不少同学一提到“开题报告”四个字就头皮发麻。其实,过来人都清…

2026/10/15 17:18:28 阅读更多 →
CANopen协议栈源码拆解:从对象字典到PDO映射的嵌入式实现

CANopen协议栈源码拆解:从对象字典到PDO映射的嵌入式实现

简介:CANopen完整源码是一套面向嵌入式控制开发者的开源协议栈实现,基于CAN总线构建,适合从事工业自动化、运动控制、汽车电子等领域的工程师与学习者研究和使用。资源包共77个文件,以C语言源文件与头文件为主体(28个.…

2026/10/15 17:18:28 阅读更多 →
STM32驱动MAX6675测温:SPI时序解析与避坑实战

STM32驱动MAX6675测温:SPI时序解析与避坑实战

简介:这份资源是面向嵌入式初学者与STM32开发者的MAX6675测温驱动测试例程,基于STM32F103与K型热电偶专用芯片MAX6675搭建,重点解决SPI通信配置、冷端补偿读取与温度数据解析等实际问题,适合用于温度采集类课程设计、实验验证或工…

2026/10/15 17:17:27 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →