Sep 27 2012

Bug改好了。。。

Category: 技术ssmax @ 16:10:49
  • 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)

恩,中午的烧排骨真不错。


Aug 31 2012

找bug的日子。。。

Category: 技术ssmax @ 20:07:43

最近几天很郁闷,给何总搞了台新的resin,但是一直出问题,纠结了2个星期,终于都被我找出来了。。。

给官方提了两个bug

http://bugs.caucho.com/view.php?id=5202
http://bugs.caucho.com/view.php?id=5203

写程序越来越不注意细节了,每个请求都经过这段代码,都没有好好的检查。唉。


Jul 20 2012

Google Chrome 允许使用过期插件

Category: 技术ssmax @ 17:19:05

今天更新了一下chrome,发现旧的flash插件一直弹出提示,说已经过期,但是由于项目需要,必须 10.3 的flash版本来测试,又不想每次都要点运行一次。。。

找了一下,发现加上命令行参数:
–allow-outdated-plugins

就可以允许使用了。

下面是全部命令行参数的列表:
http://peter.sh/experiments/chromium-command-line-switches/

 


Mar 02 2012

高负载的rsyslog设置

Category: 技术ssmax @ 12:49:30

准备做一个较高负载的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

&nbsp;

$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

vsftpd 虚拟用户设置

Category: 技术ssmax @ 12:17:47

今天迁移一个老服务,用的是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

mysql java驱动 访问latin1编码数据时候乱码的问题

Category: 技术ssmax @ 14:23:10

由于以前偷懒的原因,很多数据库都是使用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

允许scp传输文件,但不允许ssh登录

Category: 技术ssmax @ 20:10:30

以前在上海做过一次,那次是只允许sftp,但是不允许登录,我记得是用新版openssh的chroot来做的,今天也碰到同样情况,这次是允许scp,不允许登录,查了一下baidu,找到一个非常淫荡的方法,分享一下:

更改用户目录下面的.profile 文件(bash就改 .bash_profile)

第一行插入 exit

用户登录以后就自动执行该脚本并退出。。。一般用用就够了,哈哈。果然非常淫荡啊!


Dec 30 2011

转载:穷举PIN码——是Wi-Fi保护技术WPS的软肋吗?(修3)

Category: 技术ssmax @ 14:30:33

泰国归来,继续投入网络战争中。。。

原文地址: http://blog.ibeini.com/archives/513.html

 

什么是PIN码?
印在无线路由器设备标签上的一组8位数字字符串,无线路由器管理界面中当然也会存在并可更改。

PIN码有什么用?
在无线网卡的配套管理软件(如TP-LINK的QSS软件)里输入无线路由器设备上的那8位数字字符串就可以成功登录该已被加密的无线路由器。

穷举PIN码是什么意思?
既然知道了无线路由器PIN值的范围(8位纯数字),且目前大部分设备的WPS是呈开启状态的,那么穷举PIN码以攻破无线路由器的安全防护这一暴力行为就有了*理论*可行性,但实际上效果如何呢……

图1 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的评论。

图8 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:

图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

发现一个有潜力的dns

Category: 技术ssmax @ 15:45:53

今天在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

手动创建 /dev/null 和 /dev/zero

Category: 技术ssmax @ 17:28:09

某些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一下,呵呵。


« Previous PageNext Page »