从一个西红柿小说的网站说起
有一天你想看小说 然后你找到了 一个web网站 某茄小说 你点进去发现看的不过瘾,你想使用魔法把他下载成一个完整txt继续看。于是你默默点开了审查元素 发现 发现你看到的字体怎么和web展示的字体不一样
于是你复制了一段话 像下面这样 然后你将这个序列在python打印序列
阴沉沉,易冷坐江办室,冰冷,脸模糊,漂浮九霄云。
执行这段文本的队列
打印结果
注意:编辑器可以渲染这些字体 但是浏览器无法渲染 所以就会打印成方块
charsets = '阴沉沉,易冷坐江办室,冰冷,脸模糊,漂浮九霄云。'
index = 0
for char in charsets:
index += 1
print(char, ord(char), end='\t')
if index%10==0:
print()
对字体进行重新编码
找字体文件的链接地址
woff2是给浏览器渲染字体用的
使用fontforge 打开woff2的字体 然后建立一个数字序列和字体图像的映射表
然后对字体进行一个新的序列映射 这种字体混淆的套路一般都是 将常用的一些字序列进行重新编码 然后渲染图像写入一个新的字体文件混淆 让我们抓不到正确数据。
比如映射表‘任’的正常unicode 16进制序列是4efb 十进制 20307
而在映射表中 任的编码序列被映射到了 58716,至于具体是什么字就不研究了。
最重要的就是还原字体的映射表 还原小说内容就好了
运行下面代码就可以得到被混淆小说的正确内容了
# -*- coding: utf-8 -*-
encrpted_tables = '''D在主特家军然表场4要只v和_6别还g现儿岁__此象月3出战工相o
男直失世F都平文什VO将真T那当_会立些u是十张学气大爱两命全后东
性通被1它乐接而感车山公了常以何可话先pi叫轻M士w着变尔快l个说
少色里安花远7难师放t报认面道S_克地度I好机U民写把万同水新没书
电吃像斯5为y白几日教看但第加候作上拉住有法r事应位利你声身国问马
女他Y比父xAHNsX边美对所金活回意到z从j知又内因点Q三定8R
b正或夫向德听更_得告并本q过记L让打f人就者去原满体做经K走如孩
cG给使物_最笑部_员等受k行一条果动光门头见往自解成处天能于名其
发总母的死手入路进心来h时力多开已许d至由很界n小与Z想代么分生口
再妈望次西风种带J_实情才这_E我神格长觉间年眼无不亲关结0友信下
却重己老2音字m呢明之前高PB目太e9起稜她也W用方子英每理便四数
期中C外样a海们任------------------------'''
start = 58344
id_to_char = dict()
for v in encrpted_tables.split('\n'):
for character in v:
print(character, start)
id_to_char[start] = character
start += 1
print(id_to_char)
import json
v = '阴沉沉,易冷坐江办室,冰冷,脸模糊,漂浮九霄云'
characters = []
for i in v:
if ord(i) in id_to_char:
decode_character = id_to_char[ord(i)]
else:
decode_character = i
characters.append(decode_character)
novel_content = ''.join(characters)
print(novel_content)
运行结果如下
最后小说内容就被还原啦 关于请求小说的一些例子 还有加密参数 以后另外写一篇博客进行分析 这次就到这里