用过珊瑚虫的童鞋都知道, 有个叫 "纯真数据库" 的东西, 可以查询 ip 地址对应的物理地址.
有关该数据库格式和解析的内容, 本帖子暂时不讲, 有机会的话, 偶会另行开个新帖子讲讲.
这里讲的是, 不通过官方的查询程序, 如何获取到这个数据库. 通过对官方程序进行抓包, 得出下载此数据库, 主要需要下载
http://update.cz88.net/ip/copywrite.rar
和
两个文件.
但是很明显,这两个压根不是 rar 文件呀! 别被扩展名迷惑了.
那么, copywrite.rar 里到底有神马东西呢?
我们来打开它
ghex copywrite.rar
好吧,老实说, 根本看不明白嘛!
那咋办?
祭出 IDA !!!!!!
struct copywritetag{
uint32_t sign;// "CZIP"
uint32_t version;//一个和日期有关的值
uint32_t unknown1;// 0x01
uint32_t unknown2;
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
}
别看他是 rar 扩展名, 肯定不是用的 rar 压缩算法. 为啥? 明显会用 zlib 这样的开源库来压缩嘛! 何况这样的压塑 php 都能做,是吧. 初步估计是 inflate 压塑, 对, 就是 zlib 用的那个. 约莫估计用 php 的 compress() 函数直接压塑来的.
啥? 你问我,这 0x200 偏移量怎么来的 ? 诶,笨, 自己比较去吧, 却是和 zlib 压塑的, 就只有前面 0x200 不一样罢了.
那么,这 0x200 个字节的数据, 到底如何解码呢?
来,再次祭出 IDA !!!!!!
好了,网上已经有了祭出 IDA 然后得出解码算法了, 咱看下
for (int i = 0; i<0x200; i++) {
key *= 0x805;
key++;
key &= 0xFF;
}
good 这样就完成了.