如何通过PowerShell解密/解码JDownloader *.DLC容器文件内容?
用PowerShell处理JDownloader DLC文件
一、解密DLC容器文件
DLC文件本质是采用AES-256-CBC加密的XML内容,加密密钥为固定字符串jd://dlc/decode(需转成哈希后使用),文件前16字节为初始化向量(IV),剩余部分是加密数据。以下是具体实现代码:
# 替换为你的DLC文件路径 $dlcPath = "C:\files\example.dlc" $dlcBytes = [System.IO.File]::ReadAllBytes($dlcPath) # 分离IV(前16字节)与加密数据 $iv = $dlcBytes[0..15] $encryptedData = $dlcBytes[16..($dlcBytes.Length - 1)] # 生成AES密钥:固定字符串转UTF8后做SHA256哈希 $keyString = "jd://dlc/decode" $keyBytes = [System.Text.Encoding]::UTF8.GetBytes($keyString) $sha256 = [System.Security.Cryptography.SHA256]::Create() $aesKey = $sha256.ComputeHash($keyBytes) # 初始化AES解密器 $aes = [System.Security.Cryptography.Aes]::Create() $aes.Mode = [System.Security.Cryptography.CipherMode]::CBC $aes.Key = $aesKey $aes.IV = $iv # 执行解密并转成XML字符串 $decryptor = $aes.CreateDecryptor() $decryptedBytes = $decryptor.TransformFinalBlock($encryptedData, 0, $encryptedData.Length) $decryptedXml = [System.Text.Encoding]::UTF8.GetString($decryptedBytes)
运行后,$decryptedXml变量即为解密后的原始XML内容。
二、解码DLC主体内容
解密后的XML中,<content>标签内的内容是Base64编码格式,包含真实的下载链接、文件名等核心信息,解码代码如下:
方法1:用正则快速提取内容
$contentMatch = [regex]::Match($decryptedXml, '<content>(.*?)</content>', [System.Text.RegularExpressions.RegexOptions]::Singleline) if ($contentMatch.Success) { $encodedContent = $contentMatch.Groups[1].Value # Base64解码 $decodedBytes = [System.Convert]::FromBase64String($encodedContent) $decodedContent = [System.Text.Encoding]::UTF8.GetString($decodedBytes) Write-Host "解码后的主体内容:`n$decodedContent" } else { Write-Host "未找到有效的<content>标签" }
方法2:用XML解析器规范提取(推荐)
$xmlDoc = New-Object System.Xml.XmlDocument $xmlDoc.LoadXml($decryptedXml) $encodedContent = $xmlDoc.SelectSingleNode("//content").InnerText $decodedBytes = [System.Convert]::FromBase64String($encodedContent) $decodedContent = [System.Text.Encoding]::UTF8.GetString($decodedBytes) Write-Host "解码后的主体内容:`n$decodedContent"
解码后的内容为XML格式,可从中提取<links>标签下的下载地址、<package>标签内的文件名等信息。
注意事项
- 该方法仅适用于标准JDownloader生成的DLC文件,自定义加密的DLC可能不兼容
- 若解密后出现乱码,可尝试将
UTF8替换为Unicode重新转换字符串
内容的提问来源于stack exchange,提问作者Carsten
相关产品推荐
相关产品推荐

