python爬虫实战:Oculus VR

帮朋友写的一个爬虫,爬一个网站的所有VR游戏。在这之前我都还不知道还有这个VR(虚拟现实)游戏。我也是通过写这个爬虫才学会pycurl+BeautifulSoup 的用法。

安装模块

我使用的是第三方模块pycurl+BeautifulSoup。需要另外安装这两个模块,不然脚本无法运行,会报错。

BeautifulSoup:中文文档 pycurl:下载地址选择对应的版本下载安装。

开始编写爬虫

开始之前我们先分析下我们需要爬的内容。我们要的是每个游戏的真实下载地址。

既然是下载所有的游戏,我们就得知道每一页的网址,在这里 http://d.87870.com/xiazai-2-0603-1_.html , xiazai-2 这里的2是页数,知道了总页数我们就可以爬出所有页的每个游戏点击立即下载后跳转到的游戏下载页面。

如上图,点击游戏下载就可以下载游戏。但是没有登录的话是不让你下载的,这就要我们写脚本时要用到cookie。

大概思路就是这样了。开始写代码。

pwnable.kr mistake

分析源码,发现下面这段代码有点可疑。

fd=open("/home/mistake/password",O_RDONLY,0400) < 0

熟悉Linux的童鞋都知道文件描述符是不可能小于0的。计算得fd等于0,因为"<"比"="优先级高,先计算等式右边,打开的文件描述符不可能小于0,因此右边等式等于0,最后fd=0; 文件描述符为0是标准输入,也就是说这个程序实际上并没有读取password文件,而是从标准输入中读取数据。

继续往下看,有个比较,两个buff相等则输出flag。

1
2
3
4
if(!strncmp(pw_buf, pw_buf2, PW_LEN)){
printf("Password OK\n");
system("/bin/cat flag\n");
}

这样,我们只要构造一个满足条件的buffer通过管道传给mistake。buffer满足下面这个条件就能成功拿到key。

1
pw_buf = pw_buf2^0x1111111111

执行如下命令。

1
(python -c "print '\x12'*10 + '\x13'*10 ") | ./mistake

安卓游戏资源解密

安卓游戏资源解密

一个同学在群里发了个游戏,要解密游戏的资源。反编译看了下源码,没看出什么,用Android Killer看了下资源,发现在res/raw目录下有个文件比较大,t0.zip解压后有t0.pak;文件有点大,3M多,并且是以PAK格式的文 件,通过搜索得知这个格式为PAK格式——是一种文件打包的格式。

图片说明

在网上搜了下 打开PAK文件的软件,发现都不能打开。  搞不定就不搞了。

这几天看了 <<揭秘数据解密的关键技术>>,下面图片框框内的像文件名,我们可以知道这个文件是一种文件打包的格式。具体是什么结构不知道。

pypcap模块安装

最近需要用python写一个数据包分析的工具,需要用到pypcap。在Linxu可以直接用pip install pypcap直接安装成功,但是在windows一直提示缺少pcap.h头文件。在网上找了很多资料,终于编译成功了。

编译之前

在编译之前我们需要准备如下

  • pypcap源码 https://github.com/dugsong/pypcap
  • WinPcap源码 https://www.winpcap.org/devel.htm
  • 安装pyrex http://brl.thefreecat.org/python-pyrex/
  • MiniGw http://www.mingw.org/

pycurl如何安装在https://github.com/dugsong/pypcap/blob/master/INSTALL 的Building under Windows也有详细说明。

注册表介绍

如下图,打开注册表编辑器,注册表有5个根键,

一个键和它的子键以及值统称为Hive

注册表的键有两种类型:volatile和 nonvolatile。后者在将数据保存在本地硬盘;前者则在本地硬盘没有相关的文件,系统在内存中内存中创建和管理,是临时性的,系统每次启时都会创建volatile hives;

1
2
HKEY_LOCAL_MACHINE\HARDWARE : Volatile hive
HKEY_LOCAL_MACHINE\SYSTEM\Clone : Volatile hive

只有两个根键被保存在系统硬盘中且是nonvolatile类型的,数据在主内存中处理:HKEY_LOCAL_MACHINE和HKEY_USERS,其他的根键要么是这两个根键子建,要么就是volatile hive类型。

不同Windows版本的注册表文件

versionFilescontents
3.1xreg.datcomplete windows 3.?? registry
95system.datsystem-values (hkey_local_machine)
user.datuser-values (hkey_users)
NT
system32\config\sam用户及密码的数据库
system32\config\software安装的软件信息(hkey_local_machine\software)
system32\config\system存储计算机硬件和系统的信息(hkey_local_machine\system)
profiles\%username%\ntuser.dat存储用户参数选择的信息(此文件放置于用户个人目录,和其他注册表文件是分开的)(hkey_current_user\{s-1-xxx...})
profiles\%username%\ntuser.manlike ntuser.dat but a mandatory-profile

Python取证技术(3): Windows 事件日志分析

Windows的事件日志都存放在C:\Windows\System32\winevt\Logs目录下。以evtx后缀结尾。 事件日志是在windows上记录重要事件发生的特殊文件,当用户登录系统或者程序报错时,就会被记录。对我的电脑右键菜单管理→事件查看器可以查看

安装python_Evtx

直接使用如下命令安装即可。

1
pip install python-evtx

如果没有安装pip,下载get-pip.py运行后,在python安装目录有个script目录,里面有安装好后的脚本,将该目录设为环境变量,就可以直接使用pip命令。

Python取证技术(2): hash生成

在计算机取证中,经常会对文件计算hash,常用的hash有md5、sha256等等。pyhon中提供了hashlib库,让我们可以很方便的使用hash函数。

先通过一个实例来让大家了解怎样使用python的hashlib库。

1
2
3
4
5
6
7
8
9
10
11
12
import hashlib #导入hash库
Text = "This is Test"
md5 = hashlib.md5()
sha256 = hashlib.sha256()
# 输出生成的hash
md5.update(Text)
sha256.update(Text)
print "md5:" + md5.hexdigest()
print "sha256" + sha256.hexdigest()

输出结果:

1
2
md5:ba5e658e8787abe7f6bc473169e566aa
sha256:c0944b5a36476a91b39dee68df2432eae4565c315cfe870a9f951ca643abfb61
|