某课本阅读器内课本档案解密
本帖最后由 Ishisashi 于 2022-9-7 17:15 编辑虽说破译加密方式的工作是本人在 2021 年 12 月 20 日完成的,但因昨日开放注册时才注册账号,所以今日姑且在本坛炒炒冷饭。
这个阅读器本身是从某 Android 平板提取出来的,自然会因调用非通用的组件而无法在其它设备正常使用。而我并没有持有该平板,这样就无法调试实机来得知加密方法。
但也不能轻易放弃,总还是要反编译看看的。
课本档案本身的副档名是 hmh,那么就搜一下提到 hmh 的代码。
……很遗憾,并没有看到加密代码,似乎调用的是系统组件。但也没关系,至少知道是 PDF 了。
现在就只能观察加密后的档案了。
扑面而来的大量 7D 似乎表明很可能是逐位元组使用相同的方法加密。运气不错。
另一个档案就显得没那么整齐了,但是开头是一样的。也许不会随档案变化。
考虑到 PDF 的魔数是「%PDF-[版本号]」,盲猜 B5 7B BB 9B B4 75 9C 是 25 50 44 46 2D 31 2E(%PDF-1.)。
25 50 44 46 2D 31 2E
B5 7B BB 9B B4 75 9C
看一下二进制形式。
00100101 01010000 01000100 01000110 00101101 00110001 00101110
10110101 01111011 10111011 10011011 10110100 01110101 10011100
看不出甚么关联,至少不是反位。
不过,原文有 35 个 0、21 个 1,而密文有 21 个 0、35 个 1。进一步发现每个位元组内部也有这样的规律,恐怕是反位后打乱了顺序罢。
11011010 10101111 10111011 10111001 11010010 11001110 11010001
10110101 01111011 10111011 10011011 10110100 01110101 10011100
得到这个之后,就有位群友猜出顺序是 46718235 了。如果观察力(或运气)不是那么强,倒可以用一种比较笨的方法:
(少女列表中……)
「列出可能的位置然后取交集就好了呢,是不是很简单呢?」
……还是别人工列了,交给机器算了。
'use strict';
const samples = [['00100101', '10110101'], ['01010000', '01111011'], ['01000100', '10111011'], ['01000110', '10011011'], ['00101101', '10110100'], ['00110001', '01110101'], ['00101110', '10011100']];
let map = new Map();
let offset = 0;
while (offset < 8) {
map.set(offset, );
offset += 1;
};
for (let of samples) {
let offset = 0;
while (offset < 8) {
let num = parseInt(source);
let pos = encrypted.indexOf(num);
while (pos !== -1) {
map.get(offset) = false;
pos = encrypted.indexOf(num, pos + 1);
};
offset += 1;
};
};
console.log(map);
这样一看,仅凭藉开头七个位元组还真的足以确定是 46718235。而且考虑到该置换的逆置换为其本身,以及反位与置换交换复合顺序不改变结果的事实,加密算法即解密算法本身。
'use strict';
const fs = require('fs');
const byt = ;
let files = ['物理 - 第1中學校 5'];
for (let file of files) {
let buf = fs.readFileSync(`${file}.hmh`);
let offset = 0;
while (offset < buf.length) {
buf = byt];
offset += 1;
};
fs.writeFileSync(`${file}.pdf`, buf);
};
It works well.
只是这课本居然是用 Word 排的,真是太不可思议了( iceabs 发表于 2022-3-16 02:43
目测像q华w泉电子书。
当然不是,某学堂不都是图片吗(
另外这是个离线阅读器。 膜拜大佬,欢迎到吾爱安家! 谢谢大佬分享! 学到了,感谢! 谢谢分享,好好消化 非常感谢,学习了。学习 目测像q{:1_905:}华w泉电子书。 感谢,大神分享~~ 讲得真好{:301_1003:} 感谢楼主分享!!!
页:
[1]
2