1

我需要编写一个脚本,该脚本将从客户端文件中提取所有数据,而无需启动在其中创建它们的应用程序。该应用程序将所有数据保存到 XML 文件中,在压缩文件之前仅加密所述文件的内容,并且最后更改压缩文件的扩展名,使其“更难”识别。

该应用程序有一个文本查看器,它将显示客户端文件中的部分数据,但不是全部,这使得我和我的同事必须将复制该文本并在我们需要的所有其他区域中的字段中进行切换从中提取数据。尝试使用应用程序本身很慢而且几乎没有用,因为它存在可怕的内存问题,导致它不断崩溃。

无论如何 - 我能够弄清楚一些基础知识,因为加密似乎相当弱,或者至少很容易看到它使用的模式。我将要使用的每台机器上的每个客户的每个客户端文件对于相同的字符都将具有相同的输出。所有文件之间的加密都是相同的。

它更改三个字符的块(在每个三个字符块的开头添加一个字符),从第四个重新开始。=似乎是一个空字符。例如:A成为QQ==AAQUE=AAAQUFBAAAAQUFBQQ==

我已经找到了基础知识,它只是所有已更改的 Unicode 字符的列表,例如QQ==将是AQg==BQc==C,我们移动到RA==for DRQ==for E,然后循环遍历字符表。

当我们在字符串中引入第二个和/或第三个字符时,它开始变得有趣,就像它现在有ITA=for一样!0,并且向前移动四个字母数字字符,如下所示:ITE=for !1ITY=for!6和回滚到ITc=for !7,直到IT8=for!>再移动到第二个位置的下一个字符并像这样重新IUA=开始!?。等等。

无论如何,我会喜欢一些关于这里的一些事情的指示。我如何获取我所知道的并找到算法?从那里,我如何使用它来解密其余数据?

4

1 回答 1

2

那不是加密,那是BASE64编码。它是一种仅使用 64 个可打印 ASCII 字符对二进制数据流进行编码的方法。当通过可能无法正确处理二进制数据(即作为电子邮件附件的二进制文件)的通信通道发送二进制数据时使用它。

每 3 个输入字符(24 位)编码为 4 个输出字符,其中仅使用 64 种可能性(每个字符 6 个有效位 * 4 = 24 位)。尾随=标志是填充。

几乎所有主要语言,甚至 XSLT(谷歌“XSLT base64”)都有一些库方法可以在 BASE64 之间进行转换。

甚至还有一个网站(实际上有几个)可以与 BASE64 相互转换。

于 2013-01-12T08:27:08.123 回答