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':
./base/pcap-snoop.c:207: warning: passing arg 2 of
signal’ from incompatible pointer type
./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的登录时,我没有找到用户名密码的任何蛛丝马迹;我不知道加密算法,更不知道加密是否用到了密钥;虽然我知道他们的加密和流程设计并不神秘,但如果不能给我带来足够大的价值的话,我是不会去破解用户名密码的。
从这件事,我深深地体会到: 我们不是任何时候都需要数学概念上的安全的,只要让用户觉得破解的难度和得到的东西不成比例就差不多了。