天天的鸟蛋蛋 发表于 2025-2-11 14:54:50

关于字体加密

本帖最后由 天天的鸟蛋蛋 于 2025-2-11 15:02 编辑

补全关耳的方法前提提要
现在字体只剩两种方法
一种是以废弃的方法
java.queryBase64TTF()
在新版中不可用
第一种方法
找字体编码写替换字典
可以去看关耳的方法 他用的就是这种
ps:只能应对不随机(随机字体这种方法直接废)
第二种方法java.queryTTF()
由 by:洛 搭建的加密网站
https://rain.ink/chapter/index.html
里面用到的就是字体加密,可以拿来参考
这种方法只支持ttf格式的字体 woff2无法支持 ttf改变了字形也无法支持
ps:某个垃圾网站就是woff2随机字体恶心死了
1

有下面特征的都是字体加密
2

3 查看网站源码找特征


4会发现下面有一大长串的Unicode字符 这就是内容来源


5 我们继续看一下 可以看到字体文件在这里


但我们发现这个字体没有准确路径
6点击加载日志看字体准确路径


可以看到字体在这里

然后我们下载这个文件 点一下这个字体



最后我们到识别网站 或者 到分析字体是什么字体的网站
关耳那个只能看字体编码
这个不仅可以看字体编码,也能看源字体是什么
ps:只是有广告,可以开广告屏蔽器,这样没广告
https://www.bejson.com/ui/font/

先导入字体> 把显示出的文字复制到百度搜索
找出他的源字体文件



我们下载同名的文件

下载完后,接下来就是方法
先使用正则匹配拿到字体的参数再拼接链接
然后我们就得到我们想要
我们怎么样获取正文

//正文规则无需开webView
<js>
var JsDom = Packages.org.jsoup.Jsoup;
var Document = Packages.org.jsoup.nodes.Document;
var Element = Packages.org.jsoup.nodes.Element;

// 使用 Jsoup 解析 HTML
var document = JsDom.parse(src);

// 提取 encryptedText 的内容
var contentMatch = src.match(/const encryptedText \= \`(.*)\`/);


if (contentMatch && contentMatch) {
    var encryptedText = contentMatch;

    // 将 Unicode 编码的字符串转换为普通文本
    var decodedText = encryptedText.replace(/\\u([\dA-Fa-f]{4})/g, (_, hex) =>
      String.fromCharCode(parseInt(hex, 16)));

    // 假设 data 是一个 JSON 对象或数组
    var data = {
      decodedText: decodedText,
      
    };

    // 将 data 转换为格式化的 JSON 字符串
    var jsonString = JSON.stringify(data, null, 2); // 使用缩进为2的格式化

    // 输出格式化的 JSON 字符串
    a = decodedText;
}

</js>


// 替换规则
//f1网站字体
//f2原字体
<js>
(function(){
var b64=String(src).match(/src: url\('(\w+.ttf)'\)/);
java.log("https://rain.ink/chapter/"+b64);
if(b64){
    var f1 = java.queryTTF("https://rain.ink/chapter/"+b64);
    var f2 = java.queryTTF("https://f004.backblazeb2.com/file/lineon-resource/uploads/2024/12/%E6%B1%89%E4%BB%AA%E4%B8%AD%E5%AE%8B%E7%AE%80.ttf");
   return java.replaceFont(result, f1, f2);
    //return java.replaceFont(result, f1, f2, true); // 过滤掉f1中不存在的字形
}
return result;
})()
</js>


完全体正文规则
<js>
var JsDom = Packages.org.jsoup.Jsoup;
var Document = Packages.org.jsoup.nodes.Document;
var Element = Packages.org.jsoup.nodes.Element;



// 使用 Jsoup 解析 HTML
var document = JsDom.parse(src);

// 提取 encryptedText 的内容
var contentMatch = src.match(/const encryptedText \= \`(.*)\`\;/);
//提取字体内容。
var fontMatch = src.match(/src\s*:\s*url\('(.+\.ttf)'\)/);
if (contentMatch && contentMatch) {
    var encryptedText = contentMatch;

    // 将 Unicode 编码的字符串转换为普通文本
    var decodedText = encryptedText
      .replace(/\\u([\dA-Fa-f]{4})/g, (_, hex) =>
            String.fromCharCode(parseInt(hex, 16)))
      
    // 输出解码后的文本
    a=decodedText;
    //拼接网站的字体
var f1 = java.queryTTF("https://rain.ink/chapter/"+fontMatch);
          
           // 解析源文件 解析字体
    var f2 = java.queryTTF("https://f004.backblazeb2.com/file/lineon-resource/uploads/2024/12/%E6%B1%89%E4%BB%AA%E4%B8%AD%E5%AE%8B%E7%AE%80.ttf");
    result = a.split("").map(x => java.replaceFont(x, f1, f2, true ))
    result.join("")
   
}
</js>


参与
by另一个书友圈 提供字体替换
by洛 提供加密字体网站
by世界 解决思路
by天天的鸟蛋蛋 正文规则

动脉喝脉动 发表于 2025-2-11 15:05:46

感谢分享

Yaoyuandu 发表于 2025-2-11 15:18:34

感谢分享先看看

天天的鸟蛋蛋 发表于 2025-2-11 15:24:29

你们想看什么内容 ?

sgbngdnd 发表于 2025-2-11 15:38:17

页面中的浏览器是什么浏览器?看着不错

天天的鸟蛋蛋 发表于 2025-2-11 15:40:00

sgbngdnd 发表于 2025-2-11 15:38
页面中的浏览器是什么浏览器?看着不错

m浏览器

活力宝 发表于 2025-2-11 15:51:01

:)全程围观.

晚安丶星期五 发表于 2025-2-11 17:03:56

围观大佬

anyefenghen 发表于 2025-2-11 18:13:51

感谢大佬辛苦了

5456822 发表于 2025-2-11 18:19:00

干货
页: [1] 2
查看完整版本: 关于字体加密