1

我正在尝试为有线广播 (.wsct) 生成配置文件。我想为输出设置用户名和密码。问题是密码以某种方式编码。

我可以在下面手动编码字符串示例

text       unknown-encoded  base64-encoded
a          og==             YQo=
password   Pp/nD+RP/WU=     cGFzc3dvcmQK
test123    t5RSTbhuCg==     dGVzdDEyMwo=

<output ... output_username="asd" output_password="t5RSTbhuCg==" ... />

有任何想法吗?

4

2 回答 2

0

密码是否有可能首先加密,然后 b64 编码?鉴于密码存储在磁盘上,这似乎是一件合理的事情。从给出的样本来看,它看起来不像一个简单的异或或类似的东西。它看起来也不像块密码,因为a映射到单个编码字符。

应用程序是用什么写的?也许您可以相当容易地拆卸该部分(在.net / java / ...的情况下)。

编码可能是base64,因为末尾的填充匹配(至少在您提供的示例中)。

于 2013-07-03T11:59:21.653 回答
0

你不一致,“a”编码为0x83还是0xA2?“og==”被解码为0xA2,而在评论中你说一对a的编码为0x83 ...

如果你知道密文和明文,你可以尝试使用这个程序:

import struct
import base64

# data to decrypt
todecrypt = base64.b64decode('t5RSTbhuCg==')

# known plaintext and its encrypted equivalent
known_encrypted = base64.b64decode('Pp/nD+RP/WU=')
known_plaintext = b'password'

# determine an encryption key
key = b''.join([struct.pack('B', known_encrypted[i] ^ known_plaintext[i]) for i in range(len(known_encrypted))])

# decrypt data
decrypted = b''.join([struct.pack('B', todecrypt[i] ^ key[i]) for i in range(len(todecrypt))])
print('key', key)
print('decrypted', decrypted)

如果解密的数据不匹配(假设为 test123),这意味着使用了像 RC4 这样的流密码

于 2021-10-21T10:33:13.527 回答