【问题标题】:How to decrypt the content of a DLC container file via Powershell?如何通过 Powershell 解密 DLC 容器文件的内容?
【发布时间】:2023-02-04 23:40:21
【问题描述】:

如何使用 Powershell 解码 DLC 容器文件的主体?

【问题讨论】:

    标签: powershell aes jdownloader


    【解决方案1】:

    今天,我设法编写了一个小型 Powershell sn-p 来解密 DLC 容器文件。 它提示输入给定的文件,解密内容并将 URL 放入剪贴板。 对于此处的档案,工作示例代码:

    # script for decoding a DLC-file:
    
    Remove-Variable * -ea 0
    $ErrorActionPreference = 'stop'
    $utf8 = [System.Text.Encoding]::UTF8
    
    # file selector:
    Add-Type -AssemblyName 'System.Windows.Forms'
    $browser = [System.Windows.Forms.OpenFileDialog]::new()
    $browser.Filter = 'DLC files (*.dlc)|*.dlc'
    $browser.InitialDirectory = "$env:USERPROFILEDownloads"
    $null = $browser.ShowDialog()
    $fileName = $browser.FileName
    if (![System.IO.File]::Exists($fileName)) {break}
    
    $dlc = [System.IO.File]::ReadAllText($fileName)
    $len = $dlc.Length
    $key = $dlc.Substring($len-88)
    $data  = $dlc.Substring(0,$len-88)
    $bytes = [System.Convert]::FromBase64String($data)
    
    $aesKey = 'cb99b5cbc24db398'
    $aesIV  = '9bc24cb995cb8db3'
    $url    = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=$key"
    
    $result = Invoke-WebRequest $url
    $rc64 = ([xml]$result.Content).rc
    $rc   = [System.Convert]::FromBase64String($rc64)
    
    $aes = [System.Security.Cryptography.Aes]::Create()
    $aes.Key = $utf8.GetBytes($aeskey)
    $aes.IV  = $utf8.GetBytes($aesIV)
    $aes.Padding = [System.Security.Cryptography.PaddingMode]::None
    $dec = $aes.CreateDecryptor()
    $result = $dec.TransformFinalBlock($rc, 0, $rc.Length)
    $dec.Dispose()
    
    $aes.key = $result
    $aes.IV  = $result
    $dec = $aes.CreateDecryptor()
    $enc = $dec.TransformFinalBlock($bytes, 0, $bytes.Length)
    $dec.Dispose()
    
    $b64  = $utf8.GetString($enc).Trim([char]0)
    $byte = [System.Convert]::FromBase64String($b64)
    $xml  = [xml]$utf8.GetString($byte)
    $urlList = foreach($url64 in $xml.dlc.content.package.file.url) {
        $urlb = [System.Convert]::FromBase64String($url64)
        $utf8.GetString($urlb)
    }
    
    cls
    $urlList | Set-Clipboard
    $urlList
    

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多