PicaComic离线文件解密

引言

pica的漫画下载到本地后,文件名全是混乱的,和顺序对不上(不放图了,懂得都懂)。本想一个一个对照着改文件名,但是这个流程太麻烦太繁琐了,比较浪费时间。本文讲解了pica漫画文件自动重命名思路和方法,并提供了一个用java写的自动化执行软件。(如果不想看解说可以直接跳到软件用法那一段)

  1. 警告
    根据个人经验,pica的应用数据库会定时清理,有时会出现数据库与本地文件不能完全对应的情况(如果应用已经使用了较长时间),而且pica的断点续传功能好像有问题,在下载页面过多(150到200页以上)的漫画时可能会意外中断,造成文件丢失,可能和用户的网络有关吧,运气不好的时候可能要多次下载才能获取完整的漫画。比较保险的方式是:在下载本地文件和提取数据库之前先做好备份(比如加个收藏夹什么的),然后在设置界面清空缓存(这会清除你所有的下载记录!!),然后重新登录。
  2. 思路和逻辑
    pica的文件加密从直观上找不到什么规律,根据我的经验应该是某种UUID,而UUID就比较随机了,几乎不可能和文件本身有什么关联,存储UUID和文件的映射最好还是用数据库,所以我们可以从数据库入手。

准备和工具

在开始文件解密前首先要了解一些工具的安装和使用。

1.Java

JRE(Java Runtime Environment) java运行环境或者JDK(Java Development Kit)java开发包,用于运行编译好的jar文件,推荐版本6以上。

2.adb

ADB(Android Debug Bridge)是安卓设备常用的调试工具,通常可以在android-studio安装路径下找到,也可以用于调试安卓模拟器(我只测试过雷神模拟器),但有的模拟器不支持官方的adb,比如夜神模拟器需要用模拟器自带的修改版本。在调试模拟器前最好在设置里把root打开。
Adb连接设备的方式分为有线连接和无线连接,大部分安卓设备处于安全考虑无线连接前需要线连一次。可以在安卓开发者选项中打开adb调试,通过usb线将安卓设备与电脑连接,借助adb工具就可以调试应用或设备了。

可以下载Android-sdk安装包,使用sdk中的adb,或者下载单独的adb。不过低版本的adb可能不能检索到内核版本较高的设备。这里提供一个安卓开发工具的网站,下载其中的sdk-platform-Tools。
https://www.androiddevtools.cn/
也可以下载独立版本
platform-tools_r31.0.3-windows (1).zip 提取码:87nb

2.SQLite1

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。

  1. Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
  2. 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
  3. Android 提供了 SQLiteOpenHelper 创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。

SQLite工具
需要下载一个安卓端的,推荐Sqlite editor。电脑端推荐Sqlite studio。这两款工具都很容易搜到,只是用于查看数据,并不特定。当然也可以下载sqlite3命令行工具,可以更直观地查看表格代码。下图是用sqlite studio打开sqlite数据库。
请添加图片描述

工具和流程

首先在安卓端安装Sqlite editor,选择Pica,查看数据库路径,保存该路径,后面会用到。
在这里插入图片描述

打开该数据库,可以对其进行一个阅览,该数据库有四张表格:DB_COMIC_DETAIL_OBJECT,DB_COMIC_VIEW_RECORD_OBJECT,DOWNLOAD_COMIC_EPISODE_OBJECT,DOWNLOAD_COMIC_PAGE_OBJECT,打开看看就知道表格里面存的是什么,这里就放第四张表的图了,仔细看一下,数据和对应关系是不是一目了然了?请添加图片描述
小伙伴们看到这儿应该明白了,COMIC_PAGE_ID就是加密后的文件名,MEDIA_ORIGINAL_NAME就是加密前的文件名。

接下来,我们需要把数据库文件拷贝到电脑里,这里需要用到adb。获取应用数据库文件的方法有很多,adb适用于模拟器或手机线连电脑直接调试的。
请添加图片描述
需要用到一下基本命令:
adb devices 查看设备
adb shell 终端命令行模式
adb pull 文件或文件夹位置 E:\文件夹名 将设备中的文件保存到本地
cd xxx/xxx 进入文件目录
ls 显示目录下文件
exit 退出终端
比如cd data/data/com.picacomic.fregata/databases,意思是移动到应用数据库文件夹。

这一步是为了测试adb是否能找到设备,能不能找到数据库文件。如果这一步正常实现,后面移动文件就无从谈起了。
无法找到设备,可能是因为你没有在开发者选项打开adb调试。不能找到应用数据库可能是因为设备没有root。

接下来用adb移动数据库文件。首先需要在任意分区新建一个文件夹,比如在E盘建一个叫PICA_SQL的文件夹。执行pull移动文件,如下图所示。请添加图片描述
执行这一步后,应该可以在新建的文件夹中看到数据库文件了。可以写一个批处理文件用于快速拉取,比如保存为copyDB.bat。以后只要运行copyDB.bat就可以了。
在这里插入图片描述
可以用Sqlite Studio打开数据库文件并阅览,对照着数据库一张一张图片重命名,还是过于麻烦。为了节省时间解放双手,顺手写了一个自动解密并重命名文件的工具。

自动解密工具

该工具主要用于读取数据库并自动对漫画加密的文件重命名,纯命令行没有UI界面(也许以后会提供),暂时就叫picaEnc吧,有以下辅助功能:

  1. 指定需要解密的文件夹
  2. 重命名文件夹
  3. 生成pdf(有bug)

使用方法:
将picaEnc.jar和数据库文件com_picacomic_fregata.db移动到漫画文件目录。
开启命令行,执行
java -jar picaEnc.jar com_picacomic_fregata.db -d 文件夹目录 -r

java -jar picaEnc.jar com_picacomic_fregata.db -d 文件夹目录 -r
//-d 指定文件夹,文件夹必须是数据表中存在的COMIC_ID
//-r 重命名
//-f 快速模式,不输出进度条
//-pdf 生成一个pdf 

一个测试用例
请添加图片描述
目前应用只支持一次解密一个文件夹,批量解密功能正在开发,如果您在使用过程中遇到问题或者有好的建议,请私信我或留言。

已经提供下载链接,如有兴趣可自行下载。
picaEnc.jar 提取码: gp9q.


  1. 摘自百度百科 ↩︎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值