news 2026/9/3 15:02:57

Hashcat实战指南:从原理到实践,掌握WPA2、ZIP与NTLM密码恢复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hashcat实战指南:从原理到实践,掌握WPA2、ZIP与NTLM密码恢复

在实际安全测试和密码恢复场景中,hashcat 因其强大的性能和广泛的算法支持,成为渗透测试工程师和系统管理员进行密码强度评估、数据恢复的必备工具。它支持数百种哈希算法的离线破解,从常见的 WiFi WPA/WPA2 握手包、ZIP/RAR 压缩包哈希,到操作系统用户密码哈希,都能通过字典、组合、掩码或暴力破解等模式进行攻击。对于初学者而言,hashcat 的命令行参数繁多,环境配置和攻击模式选择是最大的门槛。本文将围绕 hashcat 的核心使用流程,从环境准备、获取目标哈希、选择攻击模式到实际运行,构建一个清晰、可复现的操作框架。我们强调,所有操作必须在合法授权的范围内进行,例如测试自己的网络设备、恢复自己遗忘的压缩包或系统密码。

通过本文,你将能理解 hashcat 的工作原理,在自己的测试环境中,完成对 WPA2 握手包、ZIP 压缩包哈希以及 Windows NTLM 哈希的破解演练。文章将重点解释每个步骤背后的目的,并提供具体的命令、参数说明和排错思路,确保即使是没有安全背景的开发者也能按图索骥,完成一次完整的密码破解测试。

1. 理解 hashcat:离线密码恢复工具的核心机制

在开始操作之前,必须明确 hashcat 的定位和工作原理,这决定了后续所有步骤的设计。

1.1 hashcat 是什么,不是什么

hashcat 是一个高级的密码恢复工具,它工作在离线模式。这意味着它不需要与目标服务(如 WiFi 路由器、网站登录接口)进行实时交互。它的输入是一个或多个预先提取好的“哈希值”,输出是能够生成这个哈希值的原始密码(明文)。

一个常见的误解是认为 hashcat 能“直接破解 WiFi”或“实时抓包”。实际上,破解 WiFi 密码分为两个独立步骤:

  1. 捕获握手包:使用如aircrack-ng套件中的airodump-ngaireplay-ng工具,在无线网络中有客户端连接或重连时,捕获包含密码哈希(PMKID 或四步握手)的数据包,并将其保存为.cap.hccapx文件。这一步是“抓取”。
  2. 破解哈希:使用 hashcat 加载这个捕获到的文件,对其中的哈希值进行离线破解。这一步是“计算”。

hashcat 的核心价值在于第二步。它通过 CPU、GPU 甚至多种硬件加速,以极高的速度尝试海量密码,并与目标哈希进行比对。

1.2 核心概念:哈希、攻击模式与工作流程

要使用 hashcat,必须理解三个核心概念。

哈希(Hash):一种单向加密函数。它将任意长度的输入(如密码“123456”)通过特定算法(如 MD5, SHA256, NTLM)转换成固定长度的字符串(如“e10adc3949ba59abbe56e057f20f883e”)。理想情况下,无法从哈希值反推出原始密码。hashcat 所做的,就是猜测一个密码,计算其哈希,看是否与目标哈希匹配。

攻击模式(Attack Mode):hashcat 尝试密码的策略。

  • 字典攻击(-a 0):最常见的模式。读取一个密码字典文件(一个包含大量常见密码的文本文件,每行一个密码),依次尝试每个密码。
  • 组合攻击(-a 1):将两个字典中的词进行组合后尝试。
  • 掩码攻击(-a 3):当你对密码格式有大致了解时使用(例如,知道是8位数字,或“大写字母+6位数字”)。你可以定义掩码(如?u?d?d?d?d?d?d)来大幅缩小尝试范围。
  • 混合攻击(-a 6, -a 7):在字典词汇前后添加掩码字符。

工作流程

  1. 准备阶段:获取目标哈希文件,准备强大的密码字典或定义掩码规则。
  2. 识别阶段:确定目标哈希所使用的算法(hashcat 称之为“哈希模式”,用-m参数指定)。
  3. 执行阶段:运行 hashcat 命令,指定攻击模式、哈希文件、字典文件等参数。
  4. 恢复阶段:hashcat 找到密码后,会将其显示在屏幕上,并保存在恢复文件(.potfile)中。

2. 环境准备与工具获取

一个稳定且性能良好的环境是成功运行 hashcat 的前提。以下步骤将引导你完成基础环境的搭建。

2.1 操作系统与硬件选择

hashcat 在 Linux、Windows 和 macOS 上均可运行,但其性能严重依赖 GPU。对于密码破解,GPU(尤其是 NVIDIA 和 AMD 的高性能显卡)的计算能力远超 CPU。

  • 推荐系统:Kali Linux。这是一个专为渗透测试和安全研究设计的 Linux 发行版,预装了 hashcat、aircrack-ng、字典等几乎所有必要工具。对于初学者,在虚拟机(如 VMware, VirtualBox)中安装 Kali 是最快上手的方式。
  • Windows 系统:可以从 hashcat 官网下载预编译的二进制包。但 GPU 驱动配置(特别是 NVIDIA CUDA 或 AMD ROCm)可能比 Linux 更复杂。
  • macOS:可通过 Homebrew 安装,但 macOS 的 GPU 支持有限,性能通常不如同等价位的 Windows 或 Linux 台式机。

注意:在虚拟机中运行 Kali,默认无法直接使用宿主机的物理 GPU 进行加速,破解速度会非常慢,仅适用于学习和轻量测试。要进行高性能破解,需要配置“GPU 直通”(PCI Passthrough),这涉及复杂的硬件和驱动设置。

2.2 安装与验证 hashcat

在 Kali Linux 中,hashcat 通常已预装。可以通过以下命令验证和更新:

# 检查 hashcat 版本 hashcat --version # 更新系统及工具包(可选) sudo apt update && sudo apt upgrade -y

在全新的 Kali 或 Ubuntu/Debian 系统上,如果未安装,可以使用 apt 安装:

sudo apt install hashcat

在 Windows 上,访问 hashcat 官网,下载对应版本的.7z压缩包,解压即可。建议将解压后的目录(包含hashcat.exe)添加到系统的 PATH 环境变量中,方便在任意命令行窗口调用。

安装后,运行一个简单的测试命令,检查基础功能是否正常:

# 在 Linux/macOS 终端或 Windows CMD/PowerShell 中 hashcat -I

这条命令会列出系统检测到的 OpenCL 或 CUDA 平台和设备信息,包括你的 CPU 和 GPU。如果能看到你的显卡信息,说明驱动和环境基本正常。

2.3 准备密码字典

字典是字典攻击(-a 0)的灵魂。字典的质量和大小直接决定了破解的成功率和速度。

  • 常见字典位置(Kali Linux):Kali 自带了多个字典,位于/usr/share/wordlists/目录下。
    • rockyou.txt.gz:一个非常著名的泄露密码集合,需要解压:sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
    • fasttrack.txt:另一个常用字典。
  • 获取更多字典:可以从互联网上获取更庞大、更专业的字典,例如SecLists项目。在 Kali 中可以直接安装:
    sudo apt install seclists
    安装后,字典位于/usr/share/seclists/下。
  • 自定义字典:你可以根据目标信息(如公司名、生日、常用单词)创建自己的字典。一个简单的字典就是一个文本文件(.txt),每行一个密码。

警告:永远不要使用从不明来源下载的所谓“万能 WiFi 密码字典包”。这些文件通常质量低下,包含大量无效或重复条目,甚至可能含有恶意软件。依赖公开、可信的字典库(如 rockyou, SecLists)或自己生成针对性字典是更可靠的做法。

3. 实战演练:破解三种常见场景的密码

我们将通过三个具体场景,演示 hashcat 的完整工作流程。请确保你是在自己的测试环境或已获得明确授权的目标上进行操作。

3.1 场景一:破解 WPA/WPA2 WiFi 握手包

这是最常见的需求。前提是你已经捕获到了一个有效的 WPA2 四次握手包(.cap 文件)。

步骤 1:获取哈希文件 (.hccapx)hashcat 不能直接处理.cap文件。需要先用cap2hccapx工具(hashcat 套件自带)或在线转换工具,将.cap文件转换为.hccapx格式。

# 假设你的握手包文件名为 handshake.cap cap2hccapx handshake.cap handshake.hccapx

转换成功后,handshake.hccapx就是 hashcat 可识别的哈希文件。

步骤 2:确定哈希模式WPA/WPA2 的哈希模式代号是22000(对应 PMKID 方式)或22001(对应 WPA-EAPOL-PBKDF2,即传统的四次握手)。对于大多数.hccapx文件,使用-m 22000。但从 hashcat v6.0.0 开始,推荐使用新的-m 22000模式来统一处理 WPA 哈希。

步骤 3:执行字典攻击使用 rockyou 字典进行尝试。

hashcat -m 22000 handshake.hccapx /usr/share/wordlists/rockyou.txt
  • -m 22000:指定哈希模式为 WPA2。
  • handshake.hccapx:你的目标哈希文件。
  • /usr/share/wordlists/rockyou.txt:使用的密码字典路径。

步骤 4:解读输出与恢复密码命令运行后,hashcat 会开始尝试。如果破解成功,屏幕上会显示STATUS: CRACKED,并在下方直接显示出找到的密码。同时,密码会被自动保存到 hashcat 安装目录下的hashcat.potfile中。下次对同一个哈希运行 hashcat 时,它会瞬间显示结果。

如果字典攻击失败,可以考虑使用掩码攻击。例如,如果你怀疑密码是8位纯数字:

hashcat -m 22000 handshake.hccapx -a 3 ?d?d?d?d?d?d?d?d

-a 3指定掩码攻击。?d代表一位数字(0-9)。这条命令会尝试从 00000000 到 99999999 的所有组合。

3.2 场景二:破解 ZIP 压缩包密码

hashcat 不能直接破解 ZIP 文件,它需要先从 ZIP 文件中提取出密码哈希。

步骤 1:使用 zip2john 提取哈希Kali 中通常自带zip2john工具(属于 John the Ripper 套件)。

# 从 protected.zip 文件中提取哈希,并保存到 zip_hash.txt zip2john protected.zip > zip_hash.txt

查看zip_hash.txt文件,其内容格式类似:protected.zip:$pkzip2$1*2*...*...$pkzip2$开头的那一串就是 hashcat 需要的哈希值。

步骤 2:确定哈希模式ZIP 加密的哈希模式是13600(PKZIP)。

步骤 3:执行破解

# 使用字典攻击 hashcat -m 13600 zip_hash.txt /usr/share/wordlists/rockyou.txt # 或者使用掩码攻击,假设密码是6位小写字母 hashcat -m 13600 zip_hash.txt -a 3 ?l?l?l?l?l?l

?l代表一位小写字母(a-z)。

3.3 场景三:恢复 Windows 系统密码(NTLM Hash)

此操作仅适用于你拥有 Windows 系统(如虚拟机)的 SAM 文件访问权限,例如通过启动到 WinPE 环境复制了C:\Windows\System32\config\SAMSYSTEM文件。

步骤 1:使用 samdump2 或 secretsdump.py 提取哈希在 Kali 中,可以使用samdump2或 Impacket 工具包中的secretsdump.py

# 假设你将 SAM 和 SYSTEM 文件复制到了 Kali 的 /tmp/ 目录 samdump2 /tmp/SYSTEM /tmp/SAM > ntlm_hashes.txt # 或者使用 Impacket(功能更强大) python3 /usr/share/doc/python3-impacket/examples/secretsdump.py -sam /tmp/SAM -system /tmp/SYSTEM LOCAL > ntlm_hashes.txt

输出文件ntlm_hashes.txt中会包含类似Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::的行。其中,冒号分隔的第三部分(aad3b...)是 LM Hash(通常为空或固定值),第四部分(31d6c...)就是 NTLM Hash。

步骤 2:确定哈希模式Windows NTLM 的哈希模式是1000

步骤 3:执行破解创建一个只包含目标 NTLM Hash 的文件,例如target_ntlm.hash,内容为31d6cfe0d16ae931b73c59d7e0c089c0

hashcat -m 1000 target_ntlm.hash /usr/share/wordlists/rockyou.txt

4. 关键参数详解与性能调优

仅仅运行基础命令是不够的。理解并合理使用 hashcat 的参数,可以极大提升破解效率和成功率。

4.1 常用核心参数解析

下表列出了最常用且影响巨大的参数:

参数全称/含义作用与示例注意事项
-mHash-mode指定哈希算法类型。这是必须正确设置的参数。-m 0(MD5),-m 1000(NTLM),-m 22000(WPA2)hashcat --help查看所有支持的-m值。
-aAttack-mode指定攻击模式。-a 0(字典),-a 3(掩码),-a 6(字典+掩码)默认为字典攻击 (-a 0)。
-oOutput file将破解结果输出到指定文件。-o found.txt默认也会写入.potfile
--showShow显示指定哈希文件或.potfile中已破解的密码。hashcat --show cracked_hashes.txt用于查看历史结果。
--forceForce忽略警告(如驱动问题),强制运行。不推荐,应先解决问题。可能造成不稳定或错误结果。
-wWorkload设置工作负载配置文件,平衡性能与系统响应。-w 3(默认),-w 4(全力攻击,可能使电脑卡顿)在专用破解机器上用-w 4
-OOptimized启用优化内核,可大幅提升速度。-O可能增加 GPU 内存使用。
--sessionSession name为任务指定一个会话名,便于暂停 (-s)、恢复 (-r) 或查看进度。--session=my_wifi_crack非常实用,应对长时间任务。
-iIncrement在掩码攻击中启用增量模式。-a 3 ?d?d?d?d -i会尝试1位、2位、3位、4位数字。用于不确定密码长度时。
-1Custom charset定义自定义字符集。-1 ?l?d定义字符集1为小写字母+数字。在掩码中用?1引用。增加掩码灵活性。

4.2 性能调优与硬件利用

hashcat 的性能瓶颈几乎总是在硬件。

  • 使用 GPU 而非 CPU:确保命令运行时使用的是 GPU。运行hashcat -I查看。如果显示有 GPU 设备但 hashcat 默认使用 CPU,可能需要通过-D 2参数强制指定使用 OpenCL GPU 设备。
  • 监控状态:在运行命令时,可以按s键查看当前状态、速度和预计完成时间。
  • 温度与功耗:长时间满载运行 GPU 会导致高温和高功耗。确保机箱通风良好,必要时使用--hwmon-temp-abort=90参数设置温度上限(达到90度自动停止)。
  • 多 GPU 系统:hashcat 默认会使用所有可用的 GPU。你可以通过-d参数指定使用哪个设备(设备ID从hashcat -I中获取)。

4.3 编写高效的掩码

掩码攻击的效率远高于纯暴力攻击。一个好的掩码基于你对密码的“社会工程学”猜测。

  • 常见掩码字符集

    • ?l:小写字母 abc...z
    • ?u:大写字母 ABC...Z
    • ?d:数字 012...9
    • ?s:特殊符号 !@#$%...
    • ?a:所有以上字符(?l?u?d?s
    • ?b:0x00 - 0xff(所有字节)
  • 示例掩码

    • 8位数字密码:?d?d?d?d?d?d?d?d
    • 首字母大写,后跟5个小写字母,以2位数字结尾:?u?l?l?l?l?l?d?d
    • 使用自定义字符集:假设密码由“abc123”这6个字符组成,但顺序位置未知。可以先定义字符集-1 abc123,然后掩码写?1?1?1?1?1?1

5. 常见问题排查与解决思路

运行 hashcat 时,你可能会遇到各种错误。以下是一些典型问题及其解决方法。

5.1 启动与设备问题

问题现象可能原因检查与解决
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHROpenCL 运行时未安装或驱动问题。1.Linux:安装ocl-icd-opencl-dev和显卡驱动(如nvidia-opencl-dev)。
2.Windows:确保安装了最新的 NVIDIA/AMD 显卡驱动,并包含 OpenCL 或 CUDA 组件。
3. 运行hashcat -I看是否能识别到平台和设备。
No devices found/left.hashcat 未检测到可用的计算设备。1. 检查hashcat -I输出。
2. 尝试以管理员/root权限运行。
3. 在虚拟机中,确认是否配置了GPU直通(否则只有CPU)。
ERROR: clGetDeviceIDs(): CL_DEVICE_NOT_FOUND指定了不存在的设备ID。hashcat -I查看正确的设备ID,并在命令中用-d ID指定。

5.2 哈希与文件问题

问题现象可能原因检查与解决
Token length exceptionLine-length exception哈希文件格式错误,或哈希值长度不符合所选-m模式的要求。1. 确认哈希值本身是否正确(无多余空格、换行)。
2.确认-m值是否正确。这是最常见错误。用hashcat --help核对。
3. 对于 WPA,确认.cap文件已正确转换为.hccapx
Unmatched separator哈希文件行格式不符合 hashcat 要求。hashcat 默认期望hashhash:password格式。如果哈希文件包含用户名(如user:hash),需要使用--username参数告诉 hashcat 忽略冒号前的部分。
No hashes loaded.未能从输入文件中加载任何有效哈希。1. 检查文件路径是否正确。
2. 检查文件内容,确保是纯文本格式。
3. 对于 WPA 的.hccapx文件,可能捕获的握手包无效(无完整握手)。用aircrack-ng handshake.cap验证。

5.3 运行与性能问题

问题现象可能原因检查与解决
破解速度极慢(仅几十 H/s)1. 在使用 CPU 而不是 GPU。
2. 哈希算法本身非常慢(如 bcrypt)。
3. 虚拟机中未使用 GPU。
1. 运行hashcat -I确认使用设备。
2. 尝试用-D 2强制使用 GPU。
3. 对于慢算法,考虑使用更强的字典或更精确的掩码,减少尝试次数。
任务意外停止/崩溃1. GPU 过热触发保护。
2. 系统内存不足。
3. hashcat 版本或驱动存在 bug。
1. 监控 GPU 温度,改善散热。
2. 使用--session参数,便于恢复任务。
3. 尝试更新 hashcat 和显卡驱动到最新稳定版。
4. 降低工作负载-w 2
字典攻击很快结束但没找到密码字典中不包含正确密码。1. 使用更大、更针对性的字典。
2. 尝试组合攻击 (-a 1) 或混合攻击 (-a 6,-a 7)。
3. 转为使用掩码攻击 (-a 3)。

6. 最佳实践与安全伦理

使用 hashcat 这类工具时,遵循最佳实践不仅能提高效率,更是法律和职业操守的要求。

6.1 技术最佳实践

  1. 始终使用--session:为任何预计运行时间超过几分钟的任务命名会话。这样你可以随时用Ctrl+C中断,之后通过hashcat --session=会话名 --restore命令恢复,进度不会丢失。
  2. 先测试再猛攻:在开始一个长时间的攻击前,先用一个小字典或一个简短的掩码(如?d?d?d?d)测试整个流程(哈希加载、设备识别、攻击启动)是否正常。这可以避免浪费数小时后才发现基础配置错误。
  3. 利用规则(Rule)增强字典:hashcat 支持规则文件,可以对字典中的每个单词进行大小写变换、添加后缀前缀等智能变形,极大提升字典攻击的覆盖率。Kali 自带规则集在/usr/share/hashcat/rules/下。使用示例:hashcat -m 0 target_hash.txt wordlist.txt -r best64.rule
  4. 合理排列攻击策略:通常的攻击顺序是:已知漏洞/弱密码 -> 大型通用字典 -> 针对性字典 -> 组合/规则攻击 -> 简单掩码 -> 复杂掩码。把最快、最有可能成功的方法放在前面。
  5. 管理好.potfilehashcat.potfile会保存所有破解成功的哈希和密码。定期清理或备份,避免不同项目间的混淆。也可以用--potfile-path指定不同的 potfile 路径。

6.2 安全与法律伦理准则

这是不可逾越的红线。

  1. 仅用于授权测试:只对你拥有书面明确授权的系统、网络、文件或数据进行测试。测试自己的家庭 WiFi、自己创建的压缩包、自己控制的虚拟机是合法的。
  2. 获取明确授权:在企业环境中,必须有管理层签字的渗透测试授权书(Scope of Work)。未经授权攻击他人系统是违法行为。
  3. 保护测试结果:在测试中获取的任何密码、哈希、敏感信息,都必须按照与授权方约定的方式妥善处理(如加密存储、测试后销毁),不得泄露或用于其他目的。
  4. 了解法律边界:不同国家和地区对“黑客工具”的持有和使用法律不同。即使出于学习目的,在某些司法管辖区持有或传播特定工具也可能触犯法律。务必了解并遵守所在地法律法规。
  5. 用于防御:学习 hashcat 的最终目的,应该是为了更好地理解攻击者的手段,从而设计出更强大的密码策略(如强制使用长密码、混合字符、定期更换),评估自己系统的密码哈希存储是否安全(是否使用了加盐的强哈希算法如 bcrypt, Argon2)。

6.3 密码强度与防御建议

从防御者角度看,如何让 hashcat 这样的工具难以奏效?

  • 增加密码长度:每增加一位,暴力破解的难度呈指数级增长。推荐最少12位。
  • 使用密码短语:用一串随机的单词组合(如correct-horse-battery-staple)比短而复杂的密码(如P@ssw0rd!)更安全且易记。
  • 避免常见模式:不要使用生日、姓名、常见单词、键盘序列(如qwerty)或简单变换(如password123)。
  • 启用多因素认证(MFA):即使密码被破解,MFA 仍然是强大的屏障。
  • 使用加盐的强哈希算法:在系统开发中,存储用户密码时务必使用加盐的、计算缓慢的哈希算法(如 bcrypt, Argon2, scrypt),避免使用 MD5、SHA1 或未加盐的哈希。

通过本文的步骤,你应该已经能够在受控环境中运行 hashcat,并理解其基本工作流程。真正的精通来自于持续的实践和对不同哈希算法、攻击策略的深入探索。建议下一步研究 hashcat 的规则(Rule)语法、更高效的掩码生成工具(如statsgenmaskgen),以及如何将 hashcat 与自动化脚本结合,构建自己的密码审计流程。记住,强大的工具意味着重大的责任,始终将你的技能用于建设性的、合法的目的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 15:01:26

我的世界Java版与基岩版特性实测:4K画质、红石与性能差异全解析

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

作者头像 李华
网站建设 2026/9/3 15:00:50

C语言程序设计第五版苏小红学习指南:不找PDF也能高效掌握

在 C 语言相关的热搜词里,经常能看到一排非常完整的长句子:“C语言程序设计第五版 苏小红 教材学习指导 PDF电子版下载”。看到这种搜索,提问者大概率是高校大一学生,或者刚刚准备转行学编程的新手:老师指定了教材&…

作者头像 李华
网站建设 2026/9/3 15:00:47

ComfyUI自定义节点开发:从手写插件到NodeCraftAI一句话生成

当工作流里塞满了一遍遍手工拼出来的过程节点,真正拉开差距的并不是谁更会“画图”,而是谁能让重复劳动沉淀成可复用资产。如果你经常用 ComfyUI 搭工作流,又不想永远停留在“在线找模板、下载节点、排错三小时”的循环里,这台所谓…

作者头像 李华
网站建设 2026/9/3 14:59:51

短篇解谜的Game Jam原型:用状态机实现‘5到1’机制

如果在游戏开发社区里随便问一句:Game Jam 到底最考验什么?很多人会回答“时间管理”“美术产能”或者“体力”。但如果你真的做过一款十几分钟的短篇解谜,你会发现最卡人的往往不是这些,而是一个很基础的判断题:玩家到…

作者头像 李华
网站建设 2026/9/3 14:59:45

689个开源macOS应用:如何构建你的终极生产力工具箱?

689个开源macOS应用:如何构建你的终极生产力工具箱? 在macOS生态系统中,你是否曾为寻找高质量、可定制且完全免费的应用而烦恼?商业应用价格昂贵,订阅制让人望而却步,而开源应用则提供了完全不同的解决方案…

作者头像 李华
网站建设 2026/9/3 14:58:11

竖屏4K视频处理:FFprobe参数分析与FFmpeg转码压缩实战

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

作者头像 李华