- mod_caucho: linux timeout issue millis vs sec in read timeout (#5203, rep by ssmax)
- http: sendfile needs to open file using O_RDONLY (#5202, rep by ssmax)
恩,中午的烧排骨真不错。
Sep 27 2012
恩,中午的烧排骨真不错。
Aug 31 2012
最近几天很郁闷,给何总搞了台新的resin,但是一直出问题,纠结了2个星期,终于都被我找出来了。。。
给官方提了两个bug
http://bugs.caucho.com/view.php?id=5202
http://bugs.caucho.com/view.php?id=5203
写程序越来越不注意细节了,每个请求都经过这段代码,都没有好好的检查。唉。
Jul 20 2012
今天更新了一下chrome,发现旧的flash插件一直弹出提示,说已经过期,但是由于项目需要,必须 10.3 的flash版本来测试,又不想每次都要点运行一次。。。
找了一下,发现加上命令行参数:
–allow-outdated-plugins
就可以允许使用了。
下面是全部命令行参数的列表:
http://peter.sh/experiments/chromium-command-line-switches/
Mar 02 2012
准备做一个较高负载的rsyslog udp接收服务器,今天配置了一下,不知道能不能顶住,先记录下来
</pre> $PrivDropToGroup nobody $PrivDropToUser nobody $EscapeControlCharactersOnReceive off $OMFileAsyncWriting on $OMFileFlushOnTXEnd off $OMFileFlushInterval 30 $OMFileIOBufferSize 64k $template MyFileFormat,"%timegenerated:::date-rfc3339% %fromhost-ip% %rawmsg%\n" $template DynFile,"/home/rsyslog/test.%$now%.%$hour%.%$minute%.log" $Ruleset remote10514 $RulesetParser rsyslog.rfc3164 *.* -?DynFile;MyFileFormat & ~ # UDP Syslog Server: $ModLoad imudp.so # provides UDP syslog reception $InputUDPServerBindRuleset remote10514 $UDPServerRun 10514 # start a UDP syslog server at standard port 514 $UDPServerTimeRequery 1000 $ModLoad ommysql.so $template JustSQL,"insert into qn_report_log (create_time, ip, message) values ('%timegenerated:::date-mysql%', '%fromhost-ip%', '%rawmsg%')",SQL $Ruleset remote10515 $RulesetParser rsyslog.rfc3164 *.* : ommysql:dbhost,dbname,dbuser,dbpass;JustSQL & ~ $InputUDPServerBindRuleset remote10515 $UDPServerRun 10515 # start a UDP syslog server at standard port 514 $UDPServerTimeRequery 1000 <pre>
两种输出,不同负载
DynFile 按分钟输出,负载较高
mysql的输出是另外一个应用,负载较低,如果被影响的话就另外开一个实例来启动
基本rsyslog的基础功能都用了一遍。。。
启动脚本记得关掉dns解释
/home/rsyslog/sbin/rsyslogd -x -4 -f /home/rsyslog/etc/rsyslog.conf -i /home/rsyslog/rsyslogd.pid
Feb 01 2012
今天迁移一个老服务,用的是windows 上面的serv-U ,自从大学以后都没用过这个东东了,迁移到linux下面的vsftpd
设置了一下虚拟用户,记录一下配置过程
yum install vsftpd
安装好
修改配置文件:/etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES idle_session_timeout=120 data_connection_timeout=60 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO tcp_wrappers=YES local_root=/home/ftp/$USER chroot_local_user=YES user_sub_token=$USER virtual_use_local_privs=YES hide_ids=YES guest_enable=YES
记得touch 一下 /etc/vsftpd/chroot_list
这个东东在 chroot_local_user=YES 的时候,表示不需要chroot的用户,空文件即可
local_root=/home/ftp/$USER
把虚拟用户限制在自己的目录中,记住建立 ftp目录,并且ftp用户可写,更复杂的逻辑可以通过 user_config_dir 来定义。
local_enable=YES
这里表示使用非匿名用户,默认是用系统用户的,详细逻辑其实是在pam验证里面指定的。
guest_enable=YES
由于我们使用虚拟用户,不是系统里面存在的实际用户,所以这里设置所有访客其实都是使用ftp用户来映射
具体的用户可以通过 guest_username 指定,默认是用户 ftp
userlist_enable=YES
userlist_deny=NO
这两个加起来,表示只有在 /etc/vsftpd/user_list 里面的用户才能登录
/etc/vsftpd/user_list 里面记得加上你自己增加的虚拟用户,或者把userlist_deny设置为YES,都可以,否则在输入用户名后就会断开连接。
虚拟用户登录最重要的就是这里了:
pam_service_name=vsftpd
使用pam服务,默认的是用系统的登录用户,我们先建立虚拟用户的数据库:
echo ‘user1 pass1’ > /etc/vsftpd/passwd
明文密码,空格分隔,一行一个用户,
然后使用以下程序转换成bdb格式:
use DB_File; my $database = $ARGV[0]; die "Use: create.pl <database>\n" unless ($database); print "Using database: $database\n"; my %lusers = (); tie %lusers, 'DB_File', $database, O_RDWR|O_CREAT, 0644, $DB_HASH ; while (<STDIN>) { my ($user, $pass) = split; $lusers{$user} = $pass; } untie %lusers;
保存成 create.pl
执行:
cat /etc/vsftpd/passwd | perl /etc/vsftpd/create.pl /etc/vsftpd/passwd.db
就可以转换成bdb格式的文件了。
生成了用户数据文件以后,修改/etc/pam.d/vsftpd
原来的验证方式就是使用系统的用户名密码,把原来的记录注释掉
加上两行:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/passwd
这里要注意两点,第一个是全路径,如果是64位的系统就用/lib64 ,32的就是 /lib
第二个指定的db文件不需要带后缀,会自动加上的。
都修改好以后就可以
/etc/init.d/vsftpd start
启动服务,测试一下,是不是都正常了。
Jan 19 2012
由于以前偷懒的原因,很多数据库都是使用latin1作为字符编码,这样可以原样保留数据的字节流,但是最近发现新版的mysql驱动,包括345各版本的最新驱动,用characterEncoding=latin1 参数去访问数据,都会出现问号乱码的问题。
在网上查了一下,有人说是驱动里面自带强制转换,所以出了问题,根据提示看了一下代码,果然在
ResultSetRow在getString的时候,会使用 SingleByteCharsetConverter 来强制转码,发生了问题。
网上说要修改驱动,我自己尝试了一下,既然强制转码里面选择了使用cp1252,那这个字符集应该也是单字符全集,所以我直接尝试用该字符集来连接,问题就解决了。。。。
有两种解决方案:
1. 使用ResultSet中的getBytes方法,直接获取原始bytes数组,自己按照录入时候的编码new String即可。
2. 如果用了框架结构,写了必须获取String的,那么连接参数可以写
characterEncoding=cp1252
程序使用的时候
rs.getString(1).getBytes(“cp1252”)
即可获取原始字节数组,然后也是按照录入编码进行 new String 即可。
注意这种方法可能会引起问题,由于cp1252对一些字节的处理并不是我们理解的那样,比如
MySQL translates 0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.
如果汉字里面刚好有着3中字节的,就会出问题,显示问号。。。
研究了一下,发了一个bug帖,http://bugs.mysql.com/bug.php?id=64071
估计也是没人理会的了,呵呵,就当练练英文。
Jan 18 2012
以前在上海做过一次,那次是只允许sftp,但是不允许登录,我记得是用新版openssh的chroot来做的,今天也碰到同样情况,这次是允许scp,不允许登录,查了一下baidu,找到一个非常淫荡的方法,分享一下:
更改用户目录下面的.profile 文件(bash就改 .bash_profile)
第一行插入 exit
用户登录以后就自动执行该脚本并退出。。。一般用用就够了,哈哈。果然非常淫荡啊!
Dec 30 2011
泰国归来,继续投入网络战争中。。。
原文地址: http://blog.ibeini.com/archives/513.html
什么是PIN码?
印在无线路由器设备标签上的一组8位数字字符串,无线路由器管理界面中当然也会存在并可更改。
PIN码有什么用?
在无线网卡的配套管理软件(如TP-LINK的QSS软件)里输入无线路由器设备上的那8位数字字符串就可以成功登录该已被加密的无线路由器。
穷举PIN码是什么意思?
既然知道了无线路由器PIN值的范围(8位纯数字),且目前大部分设备的WPS是呈开启状态的,那么穷举PIN码以攻破无线路由器的安全防护这一暴力行为就有了*理论*可行性,但实际上效果如何呢……
图2 TP-LINK的QSS软件
更多关于WPS和PIN的知识请Google,以上仅做简单介绍。
就在8个小时之前,@devttyS0公布了他的开源免费软件Reaver,这是一个可以穷举PIN码的程序,并声称还有一个商业版本。
图3 Google Code上的Reaver代码
地址:http://code.google.com/p/reaver-wps
使用的方法貌似很简单:
# reaver -i mon0 -b 00:01:02:03:04:05
mon0是进入监听模式下的网卡名称,后边则是目标AP的MAC地址。
图4 Reaver程序的介绍:
原文地址:
http://www.tacnetsol.com/products
Reaver程序的作者@devttyS0写的一篇博文:10小时内搞定WPA加密……好像还流露出有点儿无奈:
图5 《Cracking WPA in 10 Hours or Less》
原文地址:
http://www.devttys0.com/2011/12/cracking-wpa-in-10-hours-or-less
在这篇博文中提到了一个人的名字:Stefan,一个澳大利亚人,他在2011年12月27日写了一篇关于暴力破解PIN码的文章:
图6 《Wi-Fi Protected Setup PIN brute force vulnerability》
原文地址:
http://sviehb.wordpress.com/2011/12/27/wi-fi-protected-setup-pin-brute-force-vulnerability
图7 文中提到的《Brute forcing Wi-Fi Protected Setup》文档
该PDF文档下载地址:
http://sviehb.files.wordpress.com/2011/12/viehboeck_wps.pdf
结果此文一发,各路英雄就都出来,有兴趣的朋友可以去看看评论,但在这里,我只给大家看一条:Keith Reynolds的评论。
我的个人观点:
我曾经做过的一个测试,在3K/sec的计算机上穷举8位全数字的WPA密码需要8个小时才能完成。如果PIN码是随机的8位,考虑信号不佳,噪声过大,设备负载过重,还有那恐怖的等待PIN认证结果的合理延迟(如果PIN码验证失败,程序会等待很长一段时间才会提示,这里特指QSS软件,Reaver还未测试)等等因素……10小时内搞定WPA加密我觉得不大现实,除非——某设备厂商的PIN码会固定在一个范围内且被人所知。也许说到这里会有反对我的人站出来,说:10小时搞不定,我可以100小时搞定!好吧,自己去跑跑看吧。或许一个对你有重大意义的AP值得你去这样做,况且比穷举WPA密码来说现实得多(至少8位的字符串),只能祝你好运了。作为用户,安全起见,还是把WPS功能关闭吧……
Reaver程序我还未做测试,以上只是我现有知识所述的一面之词,抛砖引玉,欢迎批评指教,谢谢!
修1:
刚才看了一下《Brute forcing Wi-Fi Protected Setup》,发现穷举PIN这一暴力行为现在具有了可行性,参看图9:
由于8位纯数字的穷举量为:10的8次方,即:100.000.000,这是一个很庞大的数字,穷举会耗费很长时间。现在,PIN信息可以分为两组来看,1st和2st,分别发送M4和M6信息,以验证1st和2st是否正确,这样,穷举量变成:10的四次方+10的四次方,即:20.000,不仅仅是这样,PIN的8位数字是最后一位是校验值,那么穷举量最终变成了:10的四次方+10的三次方,即:11.000……
修2:
目前Reaver程序已经成功编译并已在测试当中,见下图10,准备开一晚上计算机,看看能否找到我AP的PIN码……
图10
修3
昨天跑了一晚上PIN码,因网卡意外停止工作未果。
今天有两个重要新闻:
1:@devttyS0更新了Reaver,版本号为:1.1:
http://code.google.com/p/reaver-wps/downloads/list
图11
2:Stefan(@sviehb)发布了他用Python写的wpscrack,声称比Reaver要快一些,但有些兼容性问题:
http://dl.dropbox.com/u/22108808/wpscrack.zip
图12
09.00 2011-12-30——修3
22.46 2011-12-29——修2
16:20 2011-12-29——修1
14:24 2011-12-29
Oct 10 2011
今天在hostloc发现一个不错的dns解释服务器
地址比较牛
114.114.114.114 / 114.114.115.115
114电话人工查号,嘿嘿
是不是有点像google的味道,哈哈
8.8.8.8 / 8.8.4.4
官网:http://www.114dns.com
不过最怕国内的域名挟持啊,先观望一下,哈哈。
Sep 19 2011
某些vps会屏蔽了/dev/null 和/dev/zero 两个很有用的设备,我们可以通过mknod的方法手动创建它们
linux的创建方法如下:
mknod /dev/zero c 1 5
mknod /dev/null c 1 3
unix下面的有点区别,主要追对不一样的系统
mknod [OPTION]… NAME TYPE [MAJOR MINOR]
后面两个数字会有一些 区别,具体含义等以后再查下文档才清楚,呵呵。
linux 的major.h
#define UNNAMED_MAJOR 0 #define MEM_MAJOR 1 #define RAMDISK_MAJOR 1 #define FLOPPY_MAJOR 2 #define PTY_MASTER_MAJOR 2 #define IDE0_MAJOR 3 .............
The best overview of all the major and minor numbers is in the /usr/src/linux/Documentation directory. The devices.txt is considered the “authoritative” source for this information.
具体的含义就要去上面翻阅了,一般发行版都没有安装文档,最好自己yum或者apt一下,呵呵。