工作的时间越来越多了,学习的时间越来越少了,进步越来越慢了,激情越来越小了;
ssldump
软件简介:
tcpdump是一款很强大、很有用的网络侦听软件,但是对于ssl加密的数据包就无能为力了;ssldump则是一款可以侦听ssl加密的数据包的软件。
下载地址:
wget "http://www.rtfm.com/ssldump/ssldump-0.9b3.tar.gz"
安装:
安装时曾遇到这种错误:
./base/pcap-snoop.c:52:21: net/bpf.h: No such file or directory
./base/pcap-snoop.c: In function main':
signal’ from incompatible pointer type
./base/pcap-snoop.c:207: warning: passing arg 2 of
./base/pcap-snoop.c:329: warning: passing arg 3 of `pcap_loop’ from incompatible pointer type
make: *** [pcap-snoop.o] Error 1
因为该软件依赖libpcap包,下载地址:http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
我的机器上虽然已经按照了libpcap包,但是net/bpf.h 却不存在,但是存在pcap-bpf.h ,于是我就将pcap-bpf.h重命名为bpf.h 放到了net目录下,编译通过。
使用方法:
ssldump -i eth0 -k /etc/ssl/crt/private.key -nn -d port 443
其中:
-k : 私钥文件
-d : 打印应用程序数据,对于https来讲就是打印http的数据信息
wireshark也可以这么干的。
侦听无线网卡需要设置为非混合模式
我经常会使用无线网卡,所以才发现Ethereal抓不到无线网卡的数据包,而且我安装的windows上的tcpdump也抓不到,感觉是我的无线网卡不支持侦听;
后来实在非常需要侦听我的无线网卡,就往上搜了一下,原来侦听无线网卡的时候需要设置非混杂模式。
tcpdump 设置非混杂模式使用 -p选项
Ethereal 设置非混杂模式: capture => options => capture packets in promiscuous mode
凤凰岭游记
又是忙碌的一周过去了,今天2009年10月24号,周六;
和吴城约好本周天气好就去凤凰岭,昨天晚上已经查好了乘车路线,尽早8:30起床,发现天气不错,就赶快洗漱,约好10:30出发,在颐和园北宫门见面,因为去凤凰岭只有一趟车346,从颐和园东门发车,经过颐和园北宫门;
我们11:00 在北宫门坐346开始去凤凰岭,12:36到了凤凰岭(终点站);
我们先在外面吃了点饺子,买票进门时已经13点多了;我们以为很大,先走了中线;
然后走了北线,下山后已经17:00了,我们等公交车等了40分钟,18:00 开始回来,车上人很多,很挤,到颐和园北宫门时是19:20;
凤凰岭是我见过的比较有气势的大山,山体主要是石头的,可能是因为投入的资金不多,景点建设的还非常的简陋。
base64_encode 和 urlencode
base64编码是网络传输的比较被青睐的一种编码,因为base64编码的字符集也是基本的asscii字符,所以经常会被当做安全的编码放在url里面传输,当做urlencode编码使用了,其实我们应该明白一下两点:
1. base64编码里面有一个 “+” 号,在urlecode编码中 “+” 会被解码成空格,urlencode时,"+" 号肯定是由空格编码出来的,但是base64编码的结果中 "+" 不是空格编码出来的,如果将base64编码作为安全的url编码使用,则 “+” 将被解码成空格,这是我们不愿看到的; 所以不要base64编码作为url编码来使用
2. 我们知道http头里面可能会用base64编码来传输一些信息,因为这些信息不会被web服务器默认做url解码的,我们可以得到原始的编码信息,所以http头里面使用base64编码是可以接受的
ocsp 简介
先来一个实际例子吧:
d:>openssl ocsp -issuer issuer.cer -cert login.sina.com.cn.crt -url http://ocsp.verisign.com/
Response Verify Failure
2296:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:.\crypto\ocsp\ocsp_vfy.c:122:Verify error:unable to get local issuer cert
ificate
login.sina.com.cn.crt: good
This Update: Oct 20 14:03:40 2009 GMT
Next Update: Oct 27 14:03:40 2009 GMT
其中,
login.sina.com.cn.crt 是我们要验证的证书
issuer.cer 是颁发login.sina.com.cn.crt的ca的证书
要想看到更加详细的请求和相应的数据的具体内容,可添加 -text 选项,如下:
d:>openssl ocsp -issuer issuer.cer -cert login.sina.com.cn.crt -url http://ocsp.verisign.com/ -text
OCSP Request Data:
Version: 1 (0x0)
Requestor List:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: C0FE0278FC99188891B3F212E9C7E1B21AB7BFC0
Issuer Key Hash: 0DFC1DF0A9E0F01CE7F2B213177E6F8D157CD4F6
Serial Number: 25E692D2645B52CD365386F2424FE9A0
Request Extensions:
OCSP Nonce:
041026AA90D62932AFDE2FFFF5682E3AEDA4
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: O = VeriSign Trust Network, OU = "VeriSign, Inc.", OU = VeriSign International Server OCSP Responder – Class 3, OU = Terms of use at
www.verisign.com/rpa (c)03
Produced At: Oct 20 14:03:40 2009 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: C0FE0278FC99188891B3F212E9C7E1B21AB7BFC0
Issuer Key Hash: 0DFC1DF0A9E0F01CE7F2B213177E6F8D157CD4F6
Serial Number: 25E692D2645B52CD365386F2424FE9A0
Cert Status: good
This Update: Oct 20 14:03:40 2009 GMT
Next Update: Oct 27 14:03:40 2009 GMT
ocsp 的响应是做了ca的签名的,这样保证了响应的数据是可靠的。
相关文章:http://blog.chinaunix.net/u/12066/showart.php?id=491918
aaa
deb http://mirrors.163.com/ubuntu/ intrepid main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-backports main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-proposed main restricted universe multiverse
javascript 中对象与字符串的比较
今天突然想比较一下 new String("a") 与 "a" 的异同; 发现
new String("a") == "a"; 成立
new String("a") === "a"; 不成立
也好理解,前者是一个对象,后者是一个字符串;不过对象是怎么和字符串做模糊比较的呢?
于是想到了toString(); 建了一个对象,重写了toString() 函数,如:
var obj = {
toString:function(){return "b";}
}
obj == "b"; 成立
于是认为对象toString()之后和字符串做比较的,和同事说了以后,同事认为应该是valueOf() 之后比较的,我想也有道理,于是做了下面的测试:var obj = {
toString : function(){
return "a";
},
valueOf : function(){
return "b";
}
};
console.log(obj == "a"); // 不成立
console.log(obj == "b"); // 成立
一般情况下,valueOf() 是对象自身,还是一个对象,和字符串比较时,还是要toString() 的; 但是我让valueOf()返回字符串,就不需要再toString() 了;
比较时确实是通过valueOf比较的
---------------------------
=== 与 == 的区别
前者要求不需是同一个,相同的地址;
后者要求类型转换后相同就行了。
关于安全的一点点感想
对于通行证来讲,安全是非常重要的一个方面;为安全我孜孜以求,就那登录来说,我总是希望登录流程是绝对安全的。
后来分析utg的登录时,我没有找到用户名密码的任何蛛丝马迹;我不知道加密算法,更不知道加密是否用到了密钥;虽然我知道他们的加密和流程设计并不神秘,但如果不能给我带来足够大的价值的话,我是不会去破解用户名密码的。
从这件事,我深深地体会到: 我们不是任何时候都需要数学概念上的安全的,只要让用户觉得破解的难度和得到的东西不成比例就差不多了。
chm 文件打开时定位
chm作为帮助文件,我们一般愿意作为编辑你的一个插件,通过一个快捷键直接启动指定的帮助文件并定位到摸个地方;今天简单研究了一下,发现可以如下使用:
hh /dir/to/chm/php_manual_zh.chm::/fancy/function.md5.html
该命令就可以直接启动php手册并定位到md5函数了。