首页 > 其他分享 >JS逆向实战14——某小说网站 小说字数 和月票字体加密

JS逆向实战14——某小说网站 小说字数 和月票字体加密

时间:2023-05-17 11:36:26浏览次数:62  
标签:小说 加密 14 映射 mapping number 月票 dict font

本文地址: https://www.cnblogs.com/zichliang/p/17408064.html

本网站不算严格意义的逆向,只是爬虫的一个小手段。

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标网站

68747470733a2f2f7777772e71696469616e2e636f6d2f616c6c2f

爬取目标


获取如上图所示的数字 以及标题简介 小说名 和小说地址 以及作者名和作者URl

网站分析

这个网站我们只爬取首页,也不对详情页做分析。

所以我们只需要分析这个链接
得到其中的对应链关系 即可得到数字
字体TTF加密流程分为

  1. 下载相应的包
  2. 对包进行解析获取其中的映射关系(当然其实这个有逻辑的可以解密解出来 太复杂了我就不说了)
  3. 获取数字

对应的月票也是同理

解决方法

首先我们通过FontCreator 上文的字体文件。

fontCreator官网: https://fontcreator.com.cn/ 点击免费下载 下载即可 有免费试用权限


如图所示映射关系如上图
然后我们通过代码把两者对应起来。
下面展示部分代码

    def font_encode(self, encrypted_number, font_obj):
        """
        :param encrypted_number: 加密后的数字
        :param font_obj: fontTools对象
        :return:
        """
        # 获取映射表
        mapping_dict = font_obj.getBestCmap()
        # print("字体加密映射表", mapping_dict)
        for index, i in enumerate(encrypted_number):
            new_font_list = re.findall(r'\d+', i)  # 去掉特殊符号 &#  &# ;
            encrypted_number[index] = new_font_list
        dict_e_a = {
            "one": '1', "two": '2',
            "three": '3', "four": '4',
            "five": "5", "six": '6',
            "seven": "7", "eight": '8',
            "nine": '9',
            "zero": '0', 'period': "."
        }
        for i in mapping_dict:
            # 遍历dict_e_a
            # print(i)
            for j in dict_e_a:
                # dict_的值等于dict_e_a的键
                if mapping_dict[i] == j:
                    mapping_dict[i] = dict_e_a[j]
        # print("替换成数字后的关系映射表", mapping_dict)
        return mapping_dict

然后通过匹配response去掉特殊符号的值 和 改成阿拉伯数字后的关系映射表,把密文改成明文 100196 =》 3


这样就能得到完整的数字。

爬取成功!!!

本文地址: https://www.cnblogs.com/zichliang/p/17408064.html

标签:小说,加密,14,映射,mapping,number,月票,dict,font
From: https://www.cnblogs.com/zichliang/p/17408064.html

相关文章

  • SQL优化改写案例14(OB数据库SQL优化,把你的脑袋当成CBO)
    OB一哥们找我优化条SQL,反馈在OceanBase存储过程执行时间很慢,需要626秒才能出结果,安排。--原SQL:INSERTINTOinsurance_stat_sx(id,stat_date,cal_num,underwrite_num,veh_num,effect_num,effect_money,unit_code,life_......
  • 爬虫爬取在线小说阅读网站详解
    前言环境:python安装、requests安装、BeautifulSoup安装爬取目标:笔趣看网站的《校花之贴身高手》,以下是第一章链接https://www.biqukan.com/11_11499/4260511.html开始爬取1.打开链接,打开检查窗口通过审查Elements,能定位到小说的文本内容在<divid="content"class="showtxt">......
  • Educational Codeforces Round 148 (Rated for Div. 2) A-D2
    EducationalCodeforcesRound148(RatedforDiv.2) A.NewPalindromemap<int,int>mp;voidsolve(){strings;mp.clear();cin>>s;for(inti=0;i<s.size()/2;i++){mp[s[i]]++;}puts(mp.size()>=2?"YES......
  • Codeforces 1423C - Dušan's Railway(树分块)
    首先\(k>3\)当\(k=3\)做,也就是说题目等价于找不超过\(10n\)条路径使得任意两点间的路径都可以表示为选定的这些路径中不相交的三者的并。先考虑链怎么做,关于这个\(3\),很自然的想法是取若干关键点,关键点之间两两连边,其余点再像相邻两关键点连边,因此考虑分块,每\(B\)个点设......
  • .NET周报 【5月第2期 2023-05-14】
    国内文章XUnit数据共享与并行测试https://www.cnblogs.com/podolski/p/17388602.html在单元或者集成测试的过程中,需要测试的用例非常多,如果测试是一条一条过,那么需要花费不少的时间。从V2开始,默认情况下XUnit自动配置并行(参考资料),大大提升了测试速度。本文将对ASP.NETCOR......
  • P1433 吃奶酪-状压dp
    P1433吃奶酪-状压dp这是5.15晚自习的题目预习直接上题逝一逝吧放心,是对的代码P1433吃奶酪-洛谷|计算机科学教育新生态(luogu.com.cn)记录详情-洛谷|计算机科学教育新生态(luogu.com.cn)我真喜欢记忆化搜索(嘿嘿嘿)记忆化搜索的话,更容易理解dp[x][zt]设定为走到......
  • 力扣---1448. 统计二叉树中好节点的数目
    给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X定义为:从根到该节点X所经过的节点中,没有任何节点的值大于X的值。 示例1:输入:root=[3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点(3)永远是个好节点。节点4->(3,4)是路径中......
  • 5.8-5.14
    C1.PokémonArmy(easyversion)Problem-1420C1-Codeforces线性dp呃啊啊啊啊啊啊啊太久没写dp了,下周开始要把重点放到算法上意识到是个dp后就很简单了,状态转移方程也很好写出\[\begin{cases}f[i][0]\=\max(f[i-1][0],\f[i-1][1]+num[i]\\f[i][1]\=\max(f[i-1][......
  • LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。往期回顾:LeetCode双周赛第104场·流水的动态规划,铁打的结构化思考周赛概览T1.找出转圈游戏输家(Easy)标签:模拟、计数T2.相邻值的按位异或(Medium)标签:模拟、数学、构造T3.矩阵中移动的最......
  • web自动化14--读取excel文件
    1、安装xlrd模块,pipinstallxlrd,成功后2、打开exlce表格data=xlrd.open_workbook('test.xlsx')table=data.sheets()[0]          # 通过索引顺序获取sheettable=data.sheet_by_index(0)    # 通过索引顺序获取table=data.sheet_by_name(u'She......