2013/08/15

powershell true

PowerShell でコマンドで boolean 指定したくなって
True とか TRUE とか true とかやってもダメでした。
でも 1 なら True で 0 だと False なの。まじで!!

で何が正解なのか知りたくてググりました。
Boolean Values and Operators - Windows PowerShell Blog - Site Home - MSDN Blogs
Boolean values (which can be either 1 or 0) are defined in PowerShell using the....

まじで!! と思ったら $True とかも使えるみたいだったんだけど
っていうか $True!! と $True にビビったーので記念に記しておきます。
言葉が変われば何でも変わりますね。

2013/08/13

"Blocked loading mixed active content"

Firefox の Version Up のスピードに既に追いつけなくなっています。
23.0 って何だよ!! と思ってたら正常に表示されないページが出てしまいました。
JavaScript がページを取ってこれていないようだったので Ctrl+Shift+K 押して
コンソールを開いてリロードしてみたら
Blocked loading mixed active content "http....
何だこれは。

ということでググりました。が、良く分からない。
"Blocked loading mixed active content" in FireFox - WebFaction Community
MITM ねぇ、ふむ。

で mixed と言われて http/https の混在を思いついたのですが
about:config を確認するとありました!
security.mixed_content.block_active_content
これが true が default だったので false にしてみたら見れました。
よかったよかった。

でも、いいのかなこの設定...。

2013/08/12

golang certificate ssl handshake

2013/08/14 追記
Go界のジェフ・ベゾスが勝手にウンコードを添削してくれたよ!! みんな、こっち見てね!

ヒャッハー、証明書好きのオレ様が帰ってきたぜ!!!というわけで遅延証明書よりも在留証明書よりも公開鍵証明書を愛する私が Go を使ってサーバから証明書をゲットするその日がやってきました。Go には crypto/tls という素敵パッケージもあるので何の心配もありません。Config としてサーバ認証を真面目にしない InsecureSkipVerify を true としてあげればどんな IP address, port のペアに対してだって証明書を取ってくることが可能なのです。実行するとこんな:
$ go run get_cert.go www.google.com
i=0
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]
2013-07-31 11:40:49 +0000 UTC
2013-10-31 23:59:59 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 7] Mountain View}] [{[2 5 4 8] California}] [{[2 5 4 3] www.google.com}]]
i=1
[[{[2 5 4 6] US}] [{[2 5 4 10] Equifax}] [{[2 5 4 11] Equifax Secure Certificate Authority}]]
2012-12-12 15:58:50 +0000 UTC
2013-12-31 15:58:50 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]
OpenSSL みたいな pretty な感じに出してくれるのはとりあえず見つからなかったけど頑張れば自分で書けるぜ!!
package main

import (
        "crypto/tls"
        "crypto/x509"
        "fmt"
        "log"
        "os"
)

func main() {
        if len(os.Args) < 1 {
                log.Fatal("You must input a hostname")
        }
        peerCertificates, err := GetCert(os.Args[1])
        if err == nil {
                for i, Cert := range peerCertificates {
                        fmt.Printf("i=%d\n", i)
                        fmt.Println(Cert.Issuer.ToRDNSequence())
                        fmt.Println(Cert.NotBefore)
                        fmt.Println(Cert.NotAfter)
                        fmt.Println(Cert.Subject.ToRDNSequence())
                }
        } else {
                log.Fatal(err)
        }
}

func GetCert(host string) ([]*x509.Certificate, error) {
        config := &tls.Config{InsecureSkipVerify: true}
        conn, err := tls.Dial("tcp", host+":443", config)
        var peerCertificates []*x509.Certificate
        if err == nil {
                connectionState := conn.ConnectionState()
                peerCertificates = connectionState.PeerCertificates
        }
        return peerCertificates, err
}
ポートは決め打ちだぜ!!

2013/08/02

python debug "imported modules"

Python で利用されるモジュールを全部みつけてこれないかな〜、と思いました。そのものずばりがありました。

30.4. modulefinder — Find modules used by a script — Python v3.3.2 documentation


例えば
$ python -m modulefinder /usr/lib/python2.7/SimpleHTTPServer.py | head

  Name                      File
  ----                      ----
m BaseHTTPServer            /usr/lib/python2.7/BaseHTTPServer.py
m SocketServer              /usr/lib/python2.7/SocketServer.py
m StringIO                  /usr/lib/python2.7/StringIO.py
m UserDict                  /usr/lib/python2.7/UserDict.py
m __builtin__               
m __future__                /usr/lib/python2.7/__future__.py
m __main__                  /usr/lib/python2.7/SimpleHTTPServer.py
何か一杯出てきました。これは便利!!

こんなことまで標準ライブラリでできる Python は素敵ですね。