Tokyo Cabinet和Tokyo Tyrant安装和调用手记
程序员文章站
2023-10-29 13:36:04
Tokyo Cabinet和Tokyo Tyrant安装和调用手记...
在对网站进行安全检测的过程中,总是会遇到密码破解的问题,破md5总是去www.cmd5.com,但是很多密码都是收费的,无奈囊中羞涩。如果遇到mysql用password加密的密码,更是无从破解,有人会说用爆破工具,那稍微复杂一点密码,就要破死人。于是想自己搞一个密码破解的网站起来,md5,mysql等密码的破解都加进去。
首先选择数据库和web语言,cmd5用的是.net,数据库不得而知(猜测可能是sql server吧),因为不会.net,而我对开源的平台熟一些,所以web语言选用了php。数据库这块,因为想想这样的密码存储数据库是相当大的,而传统的mysql,pgsql或者oracle,虽然功能强大,但是我感觉都不适合,因为我只需要密码和散列一一对应的功能,即key-value的功能。在网上搜寻类似的数据库,结果发现了这个tokyo cabinet。它是日本人平林幹雄(只谈技术,不涉及历史问题)开发的一款 dbm 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 berkeley db 等 dbm 的几倍。利用tokyo tyrant作为tokyo cabinet数据库的网络接口,兼容memcached接口,也支持http协议的数据交换。
一、安装
1、首先编译安装tokyocabinet数据库
编译的时候会提示找不到zlib.h和bzlib.h,那么先安装zlib-devel和bzip2-devel这两个包分别有这两个头文件
代码如下:
2、然后编译安装tokyotyrant
代码如下:
二、配置
1、创建tokyo tyrant数据文件存放目录
mkdir -p /ttserver/
2、启动tokyo tyrant主进程
运行之前要设置lib搜索路径,否则会提示找不到库文件
echo '/usr/local/lib' >> /etc/ld.so.conf
ldconfig -v
1)单机模式
代码如下:
2)互为主辅
注:数据库类型由后缀决定,因为我只需要key-value的功能,所以采用功能简单,速度快的hash database
hash database :.tch
b+ tree database :.tcb
fixed-length database :.tcf
table database :.tct
内存hash database :*
内存b+ tree database :+
服务器 192.168.1.110
ulimit -shn 51200
ttserver -host 192.168.1.110 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 110 -mhost 192.168.1.92 -mport 11111 -rts /ttserver/ttserver.rts /ttserver/database.tch
服务器 192.168.99.111
ulimit -shn 51200
ttserver -host 192.168.1.111 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 111 -mhost 192.168.1.91 -mport 11111 -rts /ttserver/ttserver.rts /ttserver/database.tch
3)参数说明
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [dbname]
-host name : 指定需要绑定的服务器域名或ip地址。默认绑定这台服务器上的所有ip地址。
-port num : 指定需要绑定的端口号。默认端口号为1978
-thnum num : 指定线程数。默认为8个线程。
-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。
-dmn : 以守护进程方式运行。
-pid path : 输出进程id到指定文件(这里指定文件名)。
-log path : 输出日志信息到指定文件(这里指定文件名)。
-ld : 在日志文件中还记录debug调试信息。
-le : 在日志文件中仅记录错误信息。
-ulog path : 指定同步日志文件存放路径(这里指定目录名)。
-ulim num : 指定每个同步日志文件的大小(例如128m)。
-uas : 使用异步io记录更新日志(使用此项会减少磁盘io消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器id号(当使用主辅模式时,每台ttserver需要不同的id号)
-mhost name : 指定主辅同步模式下,主服务器的域名或ip地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。
3、停止ttserver进程
ps aux | grep ttserver | grep -v 'grep' | awk -f ' ' '{print $2}' | xargs kill -term
三、调用
1、使用memcached兼容协议
2、http调用
写 curl -x put http://127.0.0.1:11111/key -d "value"
读 curl http://127.0.0.1:11111/key
删 curl -x delete http://127.0.0.1:11111/key
3、使用c调用
1)直接写文件
例:
我使用的是hash database 所有函数带tch前缀,如果是其他数据库请参考tokyocabinet-1.4.31\doc下spex-en.html的函数接口说明
代码如下:
2)使用网络读写
例:
请参考tokyotyrant-1.1.33\doc下index.html的函数接口说明
代码如下:
四、构建密码破解web平台,自动生成数据
1、构建web平台
web界面上我就采用了cmd5的风格,改了下颜色。。不太熟悉美工方面,只能改成这样。。。http://www.00aq.com/md5.php
关键代码:
代码如下:
2、自动插入密码数据
代码如下:
编译方法:
gcc -i. -i/usr/local/include autoaddnet.c -o autoaddnet -l/usr/local/lib -ltokyotyrant -lz -lbz2 -lrt -lpthread -lm -lc
用法:
./autoaddnet length mode
length为字符长度,mode为字符组合
(全文完)
首先选择数据库和web语言,cmd5用的是.net,数据库不得而知(猜测可能是sql server吧),因为不会.net,而我对开源的平台熟一些,所以web语言选用了php。数据库这块,因为想想这样的密码存储数据库是相当大的,而传统的mysql,pgsql或者oracle,虽然功能强大,但是我感觉都不适合,因为我只需要密码和散列一一对应的功能,即key-value的功能。在网上搜寻类似的数据库,结果发现了这个tokyo cabinet。它是日本人平林幹雄(只谈技术,不涉及历史问题)开发的一款 dbm 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 berkeley db 等 dbm 的几倍。利用tokyo tyrant作为tokyo cabinet数据库的网络接口,兼容memcached接口,也支持http协议的数据交换。
一、安装
1、首先编译安装tokyocabinet数据库
编译的时候会提示找不到zlib.h和bzlib.h,那么先安装zlib-devel和bzip2-devel这两个包分别有这两个头文件
代码如下:
2、然后编译安装tokyotyrant
代码如下:
二、配置
1、创建tokyo tyrant数据文件存放目录
mkdir -p /ttserver/
2、启动tokyo tyrant主进程
运行之前要设置lib搜索路径,否则会提示找不到库文件
echo '/usr/local/lib' >> /etc/ld.so.conf
ldconfig -v
1)单机模式
代码如下:
2)互为主辅
注:数据库类型由后缀决定,因为我只需要key-value的功能,所以采用功能简单,速度快的hash database
hash database :.tch
b+ tree database :.tcb
fixed-length database :.tcf
table database :.tct
内存hash database :*
内存b+ tree database :+
服务器 192.168.1.110
ulimit -shn 51200
ttserver -host 192.168.1.110 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 110 -mhost 192.168.1.92 -mport 11111 -rts /ttserver/ttserver.rts /ttserver/database.tch
服务器 192.168.99.111
ulimit -shn 51200
ttserver -host 192.168.1.111 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 111 -mhost 192.168.1.91 -mport 11111 -rts /ttserver/ttserver.rts /ttserver/database.tch
3)参数说明
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [dbname]
-host name : 指定需要绑定的服务器域名或ip地址。默认绑定这台服务器上的所有ip地址。
-port num : 指定需要绑定的端口号。默认端口号为1978
-thnum num : 指定线程数。默认为8个线程。
-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。
-dmn : 以守护进程方式运行。
-pid path : 输出进程id到指定文件(这里指定文件名)。
-log path : 输出日志信息到指定文件(这里指定文件名)。
-ld : 在日志文件中还记录debug调试信息。
-le : 在日志文件中仅记录错误信息。
-ulog path : 指定同步日志文件存放路径(这里指定目录名)。
-ulim num : 指定每个同步日志文件的大小(例如128m)。
-uas : 使用异步io记录更新日志(使用此项会减少磁盘io消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器id号(当使用主辅模式时,每台ttserver需要不同的id号)
-mhost name : 指定主辅同步模式下,主服务器的域名或ip地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。
3、停止ttserver进程
ps aux | grep ttserver | grep -v 'grep' | awk -f ' ' '{print $2}' | xargs kill -term
三、调用
1、使用memcached兼容协议
2、http调用
写 curl -x put http://127.0.0.1:11111/key -d "value"
读 curl http://127.0.0.1:11111/key
删 curl -x delete http://127.0.0.1:11111/key
3、使用c调用
1)直接写文件
例:
我使用的是hash database 所有函数带tch前缀,如果是其他数据库请参考tokyocabinet-1.4.31\doc下spex-en.html的函数接口说明
代码如下:
2)使用网络读写
例:
请参考tokyotyrant-1.1.33\doc下index.html的函数接口说明
代码如下:
四、构建密码破解web平台,自动生成数据
1、构建web平台
web界面上我就采用了cmd5的风格,改了下颜色。。不太熟悉美工方面,只能改成这样。。。http://www.00aq.com/md5.php
关键代码:
代码如下:
2、自动插入密码数据
代码如下:
编译方法:
gcc -i. -i/usr/local/include autoaddnet.c -o autoaddnet -l/usr/local/lib -ltokyotyrant -lz -lbz2 -lrt -lpthread -lm -lc
用法:
./autoaddnet length mode
length为字符长度,mode为字符组合
(全文完)