用过珊瑚虫的童鞋都知道, 有个叫 "纯真数据库" 的东西, 可以查询 ip 地址对应的物理地址.

纯真数据库是有个名为 QQWry,DAT 的二进制文件, 可以通过纯真数据库自己提供的查询程序进行更新.

有关该数据库格式和解析的内容, 本帖子暂时不讲, 有机会的话, 偶会另行开个新帖子讲讲.

这里讲的是, 不通过官方的查询程序, 如何获取到这个数据库. 通过对官方程序进行抓包, 得出下载此数据库, 主要需要下载

http://update.cz88.net/ip/copywrite.rar

http://update.cz88.net/ip/qqwry.rar

两个文件.

但是很明显,这两个压根不是 rar 文件呀! 别被扩展名迷惑了.

因为要下载两个文件, 所以得出一个很明显的结论, ** 第二个文件需要用到第一个文件里的信息才能正确解开, 获得 qqwry.dat 文件. **

那么, copywrite.rar 里到底有神马东西呢?

我们来打开它

ghex copywrite.rar

好吧,老实说, 根本看不明白嘛!

那咋办?

祭出 IDA !!!!!!

struct copywritetag{

uint32_t sign;// "CZIP"

uint32_t version;//一个和日期有关的值

uint32_t unknown1;// 0x01

uint32_t size;// qqwry.rar大小

uint32_t unknown2;

uint32_t key;// 解密qqwry.rar前0x200字节所需密钥

char text[128];//提供商

char link[128];//网址

};

最新--2016-2-5版本

array(6) {

[1]=> int(1346984515)//时间戳

[2]=> int(42405) //

[3]=> int(1) //未知

[4]=> int(4825373) //文件大小

[5]=> int(783947556) //未知

[6]=> int(205) //key

}

这里,最重要的就是 key 这个整数拉! 接下来要在解码 qqwry.rar 里用到

下载, qqwry.rar 初步断定这个是一个压缩文件. 为啥? 因为比 qqwry.dat 明显小了不少!

别看他是 rar 扩展名, 肯定不是用的 rar 压缩算法. 为啥? 明显会用 zlib 这样的开源库来压缩嘛! 何况这样的压塑 php 都能做,是吧. 初步估计是 inflate 压塑, 对, 就是 zlib 用的那个. 约莫估计用 php 的 compress() 函数直接压塑来的.

但是,用 zlib 将 qqwry.dat 压塑后, 文件大小居然一样! 哈,不过,文件头看着他怎么就是不一样呢?

注意到上面的注释没? key 用来解码 qqwry.rar 的头 0x200 个字节. 也就是说, 先用 key 把开头的  0x200 个字节给解码了, 新的数据就可以 zlib 解压了.

啥? 你问我,这 0x200 偏移量怎么来的 ? 诶,笨, 自己比较去吧, 却是和 zlib 压塑的, 就只有前面 0x200 不一样罢了.

那么,这 0x200 个字节的数据, 到底如何解码呢?

来,再次祭出 IDA !!!!!!

好了,网上已经有了祭出 IDA 然后得出解码算法了, 咱看下

for (int i = 0; i<0x200; i++)     {

key *= 0x805;

key++;

key &= 0xFF;

uint32_t v = reinterpret_cast(qqwry_rar.data())[i] ^ key;

qqwry_rar[i] = v;

}

good 这样就完成了.

接下来把 qqwry_rar 这个数组里的数据喂给 zlib 的 uncompress 函数就完成解压了! bingo

https://github.com/shuax/QQWryUpdate

纯真数据库mysql_纯真数据库下载或自动更新实现相关推荐

  1. 患者数据库mysql_关系型数据库之MySQL基础总结_part1

    一:数据库的操作语言的种类 MySQL 是我们最常使用的关系型数据库,对于MySQL的操作的语言种类又可以分为:DDL,DML,DCL,DQL DDL:是数据库的定义语言:主要对于数据库信息的一些定义 ...

  2. 记录使用scrapy爬取新闻网站最新新闻存入MySQL数据库,每天定时爬取自动更新

    爬取每天更新的新闻,使用scrapy框架,Python2.7,存入MySQL数据库,将每次的爬虫日志和爬取过程中的bug信息存为log文件下.定义bat批处理文件,添加到计划任务程序中,自动爬取. 额 ...

  3. 菜谱数据库 mysql_菜谱数据库.PDF

    菜谱数据库.PDF 10091077-[数据库大作业] 菜谱数据库 新浪博客(2011 年11 月30 日建立,每周更新) 博客名:T-T 胡萝卜(~_~)金针菇T-T 地址:/huhanyanyan ...

  4. 本地链接 云数据库mysql_云数据库本地连接

    开发好一个Django项目后,最终项目和数据库都要迁移到服务器上,但服务器上新建的数据库是没有数据的, 此时我们可以在Navicat工具中将本地数据库中的数据导入到服务器端的数据库中,但是当团队合作开 ...

  5. 解决Spring JPA自动更新数据库的问题

    文章目录 一.背景介绍 二.Spring JPA相关介绍 2.1 JPA中Entity的各种状态 2.2 EntityManager自动update数据库的原因 2.3 关于自动更新的EntityMa ...

  6. Android中通过SeekBar手动控制ProgressBar与模拟下载自动更新进度条

    场景 进度条的常用场景: 通过SeekBar拖动进而更新ProgressBar进度条,比如调整音量效果等. 模拟下载实现自动更新进度条. 注: 博客: https://blog.csdn.net/ba ...

  7. mysql timestamp 自动更新_mysql timestamp自动更新

    最近遇到timestamp的自动更新时间问题,记录如下: 先看mysql官方手册(翻译稿): 在CREATE TABLE语句中,可以用下面的任何一种方式声明第1个TIMESTAMP列: 1.用DEFA ...

  8. Spring Data JPA 禁止自动更新

    公司的项目后台架构是SpringBoot + Spring Date JPA,采用MySQL数据库.在工作刚开始时就遇到了一个奇怪的现象.在采用Date JPA查询完数据库之后,若改变了查询出的对象属 ...

  9. Android 本地时间/时区自动更新 -- NITZ

    NITZ - Network Identity and Time Zone,网络标识和时区,是一种用于自动配置本地时间和日期的机制,同时也通过无线网向移动设备提供运营商信息.NITZ经常被用来自动更新 ...

  10. mysql 唯一索引与插入重复自动更新

    在我们使用mybatis对mysql数据库进行增删改查的时候,可能会碰到比较棘手的情况,如这个问题: 当主键id自增时,同一个订单号下的数据可能经过多次更新,且要保证数据库中订单号唯一不重复,我们只能 ...

最新文章

  1. c语言实现4x4随机字母,求用C++编写一个4x4矩阵运算类(元素float),实现转置和相乘,具体见补充,在线等!谢谢啦~...
  2. linux设备和驱动加载的先后顺序
  3. Lucene教程--Analyzer分析器详解
  4. DYNP_VALUES_READ
  5. 操作系统实验报告9:进程间通信—管道和 socket 通信
  6. flowable背压 取消_使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答...
  7. C语言程序顺序结构1交换变量,如何将c语言中结构体内的所有类型变量的值输出来...
  8. 【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)
  9. 玩 High API 系列之:智能云相册
  10. win7系统的CMD窗口切换目录--小计
  11. 小米MIX4不会采用四曲面屏:结果未必是坏事
  12. windows安装HTK3.4.1
  13. 钉钉直播一键下载(网络抓包入门)
  14. ERR Slot 741 is already busy (Redis::CommandError)
  15. dialog的各类显示方法
  16. POJ 3537.Crosses and Crosses(定义sg函数)
  17. nginx 通过路径分发 网站/端口/服务
  18. 科罗拉多州立大学计算机科学,科罗拉多州立大学的世界排名
  19. tkinter实现页面切换
  20. 基于MPLAB X IDE配置位设置讲解

热门文章

  1. python好玩的代码-python有趣的一行代码
  2. yuzu 使用指南:如何在 PC 上运行 Switch 游戏
  3. coreldraw sp2精简版 x4_coreldraw x4 sp2 精简版
  4. 重磅!腾讯正式开源 Spring Cloud Tencent
  5. Excel函数使用(批量数据导入MySql)
  6. 计算机职业规划作文1000字左右,职业生涯规划_1000字
  7. 流体力学CFD前处理软件-Gambit
  8. Matlab-信号处理工具箱
  9. linux下载和安装activemq
  10. sodp软件如何导入多个工作面信息_如何批量导入数据到手机通讯录