BaiduPCS-Go icon indicating copy to clipboard operation
BaiduPCS-Go copied to clipboard

MD5就没对过,是不是百度自己混淆了MD5值的输出?

Open daiaji opened this issue 2 years ago • 2 comments

baidupcs meta /分享/insyde_bios/\*.7z
[0] - [/分享/insyde_bios/bios-insyde.7z] --------------

  类型              文件                              
  文件路径          /分享/insyde_bios/bios-insyde.7z  
  文件名称          bios-insyde.7z                    
  文件大小          57279661, 54.626142MB             
  md5 (可能不正确)  4847beb6ft6927893d219dadf6b4f047  
  app_id            266719                            
  fs_id             265578393542248                   
  创建日期          2023-01-15 15:21:48               
  修改日期          2023-01-15 15:21:48               

[1] - [/分享/insyde_bios/Exconfidential Insyde NTC.7z] --------------

  类型              文件                                            
  文件路径          /分享/insyde_bios/Exconfidential Insyde NTC.7z  
  文件名称          Exconfidential Insyde NTC.7z                    
  文件大小          105985048, 101.075218MB                         
  md5 (可能不正确)  5c0ce2a51r9858003cc1ca7a1f211108                
  app_id            266719                                          
  fs_id             515127160702882                                 
  创建日期          2023-01-15 15:22:06                             
  修改日期          2023-01-15 15:22:06                             

md5sum Exconfidential\ Insyde\ NTC.7z
e22ff2ff0435108fce0c62c009ec4735  Exconfidential Insyde NTC.7z

md5sum bios-insyde.7z
42beb6862a7db659cea33a2698143100  bios-insyde.7z

daiaji avatar Jan 15 '23 07:01 daiaji

是混淆了, 解密函数如下(typescript): # 注意, 解密之后md5仍有可能错误

function decryptMd5(md5: string): string {
  if (
    !(
      (parseInt(md5[9]) >= 0 && parseInt(md5[9]) <= 9) ||
      (md5[9] >= "a" && md5[9] <= "f")
    )
  )
    return decrypt(md5);
  else return md5;

  function decrypt(encryptMd5: string): string {
    let key = (encryptMd5[9].charCodeAt(0) - "g".charCodeAt(0)).toString(16);
    let key2 = encryptMd5.slice(0, 9) + key + encryptMd5.slice(10);
    let key3 = "";
    for (let a = 0; a < key2.length; a++)
      key3 += (parseInt(key2[a], 16) ^ (15 & a)).toString(16);
    let md5 =
      key3.slice(8, 16) +
      key3.slice(0, 8) +
      key3.slice(24, 32) +
      key3.slice(16, 24);
    return md5;
  }
}

mengzonefire avatar Jan 20 '23 03:01 mengzonefire

注意, 解密之后md5仍有可能错误

没能蚌埠😓

daiaji avatar Jan 20 '23 03:01 daiaji