1
fgwmlhdkkkw 2021-08-24 17:25:41 +08:00
用无头浏览器截图之后 orc……
|
2
lneoi 2021-08-24 17:27:29 +08:00
python 的话网上也有教程,有相关的库可以处理字体文件提取相应的数据
|
3
xiangyuecn 2021-08-24 17:29:41 +08:00
ocr 简单省事
如果他们字体文件只有一个,那就简单手动建一个映射,几行代码的事。要是有很多个字体文件 是随机取的一个字体文件来显示,那就稍微复杂点,要多点人工配合 |
4
rationa1cuzz OP @fgwmlhdkkkw 这。。。有其他的方法吗?
@lneoi 没找到啊,找不到映射关系 @xiangyuecn 应该是有多个,每次请求都是不同的中文,只能手动创建映射吗?感觉工作量很大 主要找不到映射关系 |
5
ZAXON 2021-08-24 17:35:23 +08:00
主要看是动态的还是静态的吧, 要是那种刷新一次换一个字体文件的可以梭哈 OCR, 静态的写匹配规则效率更高一点
|
6
ZAXON 2021-08-24 17:41:40 +08:00
https://github.com/zxjlm/Poirot 也许可以看看这个, 我以前写的一个小玩具, 虽然很久没维护了不过应该还能用.
|
7
ClericPy 2021-08-24 18:37:38 +08:00
刚下班就看到这么好玩的帖子
随手打开看了下, 字体文件每次请求都换, 然后数字位置实际上是汉字的 unicode 做 key 去字体文件里读就行了, 没太大难度 比如某一次请求, 社 => \u793e 然后在字体文件里取 $793e 位置那个, 也就是 1. 然后考虑 woff 转个 xml 通过索引确认数字是什么, 因为索引 1 到 10 貌似就是数字 0 到 9 纯理论太具体的没实操, 就看了下编解码后的 unicode 和 woff 文件猜的 |
8
huai 2021-08-24 18:45:34 +08:00
7 楼 貌似可以,之前试过 ocr,不过鉴别的准确度有点低。可能需要校准,这个不会了
|
9
songjiaxin2008 2021-08-24 18:52:03 +08:00
|
10
crab 2021-08-24 20:33:36 +08:00
https://cjting.me/2020/07/01/douyu-crawler-and-font-anti-crawling/
直接看尾部的内容。大概就是下载字体渲染 OCR 。 |
11
rationa1cuzz OP @ZAXON 待会看一下
@ClericPy 我的思路也是这样,第一次做,汉字 unicode 后,取后面几位,就可以在 woff 里面找到对应的真实数据 @songjiaxin2008 感谢,我看看 @crab 是的,下载字体后渲染 后面还发现汉字里带数字的,吐了。。。再找找规律 |
12
cpstar 2021-08-25 14:51:11 +08:00
我怎么感觉就是一个凯撒加密呢?
1 也 2 苏 3 局 4 界 5 二 6 生 7 湖 8 乐 9 和 0 打 但是页面刷新之后就变了。但是仍然是个凯撒加密。 那么考虑字体如何对应的,每个字都一个编码,而字体库就是某个编码如何渲染成可展示的东西。那这就好办了,0-9 是个数字,把字体库逆向一下,这样就是一堆 key-value,key 是编码,value 是 0-9 。 如果其中能够发现一些规律当然是好的,key 就可以少很多了;如果找不到规律,那就只能枚举了。 同 @ClericPy 7# |
13
cpstar 2021-08-25 15:02:51 +08:00
好吧,每次的字体文件好像都不一样,那也就是说服务器动态生成的字体文件,所以,继续逆向吧。加勒个油。
但是思路没问题,肯定是通过 unicode 的一定编码机制,生成密文和密码本,然后恺撒加密 |
14
rationa1cuzz OP @cpstar 搞出来了,每次都拿最新的字体文件,然后解析出 map,中文-》 unicode 16 后,去 map 中找就好,特意搜一下凯撒加密,应该是没有偏移,直接可以在字体文件中找到对应结果
|
15
cpstar 2021-08-25 16:35:01 +08:00
恺撒密码,如果把原文的字符和密文的字符理解为两种字符,那就不是偏移了。只不过当时他们没有第二种字符来表示。
|