雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2007-07-07 [長年日記]

ETC車載器取り付け

秋に向け(って使うかどうか分からないんですが)、我が車にもとうとうETCを取り付けることに。当初は安い物をディーラーでつけてもらおうとか考えていたんですが、メーカーのオプションでかっこいいカバーを見つけたり、現在のカーナビがETC連動機能付きというのを知ったあたりで方向性が狂い始め、いろいろ問い合わせたりしているうちに、なぜかトヨタ純正の車載器を買って自分で取り付けることに。

車載器はミクニヤという店から通販で購入。本体とケンウッドナビとの接続ケーブルを購入して、セットアップまでやってもらった状態で配送してもらいました。助成等を使ったのでトータルで約2万円。途中FAXや電話でのやり取りがあったんですが、手馴れたおばちゃんが応対してくれて、なかなか良い印象でした。

取り付けの方はどうしようか悩んだものの、上記ビルトインカバーの取り付け方法が頭を離れず、ディーラーではやってくれそうにないので、自分でやってしまうことに。というわけで朝から作業。

午前中は小物入れを取り出してせっせと穴あけ。このときはまだ写真を撮っておこうとかいう頭が働いてませんでした。

お昼がてら、近所のオートバックスで必要な配線部品をそろえていよいよ作業。

まずは運転席の下のパネルを取り外して車載器のケーブルを裏に回す作業から。

次にピラーのカバーを外し、アンテナ線を上から通す。

視界の邪魔にならないようにアンテナ位置を決めてから、天井から先ほどのピラーへと線を引き、あまった分をまとめてパネルの裏に。これでアンテナ側は終了。

次にETCとカーナビの連動ケーブルの配線。まず助手席と横の泥除けを外して脇からカーペットの下を通す。あやうくシートベルトのセンサーの配線(左下に伸びてるやつ)を切りそうになる。

連動ケーブルをカーペットの穴から引っ張り出してナビと接続したところ。上のほうの灰色のコネクタの付いたケーブルがそれ。

助手席の横づたいに前方に線を引いていき、前方から運転席側まで回す。

コンソール周りをばらすのは大変そうなので、左の写真のように鉄の棒にケーブルを結びつけて通すことでクリア。あまったケーブルは助手席前方脇でまとめておいて、長さ調整ができたら車載器と接続。

この車載器はアクセサリと常時電源の2系統が必要でしたが、買ってきておいたヒューズ電源をシガーソケット用とドアロック用のコネクタにそれぞれつなぎ、テスターをあてて確認したうえで接続。これで配線は完了なので動作確認した後、全て元に戻して完成。

元に戻す作業でとっぷり日は暮れて、作業が終わるころにはすっかり夜に。車載器はこんな感じで小物入れの中にすっきり収納。閉じると完全に収納されてしまうので、邪魔にならない上、外からはまったく見えません。

カーナビにはこんな感じのETCメニューが表示されます。全ての作業が終わったのはF1予選開始の30分前でした。


2007-07-12 [長年日記]

[Ruby] メモ:DNSのSRVレコードを引く

Resolvクラスを拡張してDNSのSRVレコードを引けるようにするためのコード

require 'resolv'
 
class Resolv
   class Resource
      class SRV < Resource
         TypeValue = 33
 
         def initialize(priority, weight, port, target)
            @priority = priority
            @weight = weight
            @port = port
            @target = target
         end
         attr_reader :priority, :weight, :port, :target
 
         def encode_rdata(msg)
            msg.put_pack('n', @priority)
            msg.put_pack('n', @weight)
            msg.put_pack('n', @port)
            msg.put_name(@target)
         end
 
         def self.decode_rdata(msg)
            priority, = msg.get_unpack('n')
            weight, = msg.get_unpack('n')
            port, = msg.get_unpack('n')
            target = msg.get_name
            return self.new(priority, weight, port, target)
         end
      end
   end
end
 
Resolv::DNS.new.getresources("_http._tcp.example.com", Resolv::DNS::Resource::IN::SRV).collect
TypeValue に指定する数値が分かれば他のレコードへの応用も簡単。以下、FreeBSDの/usr/src/include/arpa/nameser.hより抜粋。
/*
 * Currently defined type values for resources and queries.
 */
typedef enum __ns_type {
   ns_t_a = 1,    /* Host address. */
   ns_t_ns = 2,      /* Authoritative server. */
   ns_t_md = 3,      /* Mail destination. */
   ns_t_mf = 4,      /* Mail forwarder. */
   ns_t_cname = 5,      /* Canonical name. */
   ns_t_soa = 6,     /* Start of authority zone. */
   ns_t_mb = 7,      /* Mailbox domain name. */
   ns_t_mg = 8,      /* Mail group member. */
   ns_t_mr = 9,      /* Mail rename name. */
   ns_t_null = 10,      /* Null resource record. */
   ns_t_wks = 11,    /* Well known service. */
   ns_t_ptr = 12,    /* Domain name pointer. */
   ns_t_hinfo = 13,  /* Host information. */
   ns_t_minfo = 14,  /* Mailbox information. */
   ns_t_mx = 15,     /* Mail routing information. */
   ns_t_txt = 16,    /* Text strings. */
   ns_t_rp = 17,     /* Responsible person. */
   ns_t_afsdb = 18,  /* AFS cell database. */
   ns_t_x25 = 19,    /* X_25 calling address. */
   ns_t_isdn = 20,      /* ISDN calling address. */
   ns_t_rt = 21,     /* Router. */
   ns_t_nsap = 22,      /* NSAP address. */
   ns_t_nsap_ptr = 23,  /* Reverse NSAP lookup (deprecated). */
   ns_t_sig = 24,    /* Security signature. */
   ns_t_key = 25,    /* Security key. */
   ns_t_px = 26,     /* X.400 mail mapping. */
   ns_t_gpos = 27,      /* Geographical position (withdrawn). */
   ns_t_aaaa = 28,      /* Ip6 Address. */
   ns_t_loc = 29,    /* Location Information. */
   ns_t_nxt = 30,    /* Next domain (security). */
   ns_t_eid = 31,    /* Endpoint identifier. */
   ns_t_nimloc = 32, /* Nimrod Locator. */
   ns_t_srv = 33,    /* Server Selection. */
   ns_t_atma = 34,      /* ATM Address */
   ns_t_naptr = 35,  /* Naming Authority PoinTeR */
   ns_t_opt = 41,    /* OPT pseudo-RR, RFC2761 */
   /* Query type values which do not appear in resource records. */
   ns_t_ixfr = 251,  /* Incremental zone transfer. */
   ns_t_axfr = 252,  /* Transfer zone of authority. */
   ns_t_mailb = 253, /* Transfer mailbox records. */
   ns_t_maila = 254, /* Transfer mail agent records. */
   ns_t_any = 255,      /* Wildcard match. */
   ns_t_max = 65536
} ns_type;
gposなんてのもあるんですね。locってのもあるけど、何が違うんだろう?

2007-07-24 [長年日記]

[SSL][個人情報保護] トップレベルドメインのメールアドレスを安易に配布することの危険性

スラッシュドットジャパンにあった ライブドア、WebメールサービスをGmailベースにリニューアルという記事を読んでちょっと引っかかることが。Gmailベースとかいうのはどうでもよいんですが、今後メールアドレスが「livedoorID@livedoor.com」という形式になるんだそうです。で、気になってちょっと確認してみると、案の定というかとんでもない状況に…

ここでも何度か話題に挙げていますが、特定のアドレスにメールが届くだけでSSL証明書を発行するという認証局は実際に存在します。例えばある認証局の場合、次のようなアドレスが使えるようです。

admin, administrator, hostmaster, root, ssladmin, sysadmin, webmaster, postmaster
で、所有するドメインのトップレベルのメールアドレスを第3者に使わせる場合、気をつけないとそれらのアドレスを取得されてしまいます。実際、このエントリを書いている時点でのlivedoorの登録画面では「ssladmin」というIDが取得可能と表示されました。

あと、意外と見落としがちなのかもしれませんが、仮にライブドアでVerisign等の認証局からSSL証明書を取得済みだとしても、他の認証局がそうした取得済みのCN(サーバ名)に対する証明書を発行できなくなるといった仕組みは残念ながらこの世にはありません。たぶん。

そうすると何が起こるかというと、誰かが「ssladmin」というlivedoor IDを取得して、そのアドレスを使ってlivedoor.comドメインの任意のサーバに対する「本物の」SSL証明書を、上記のような条件の緩い認証局から取得できちゃうといった事態が生じるわけです。その後に何が起こるかは説明するまでもないでしょう。

livedoorには連絡したのでサービスイン前に何らかの措置が取られると思いますが、同様のサービスを予定/展開中のドメイン、特に同じドメイン名で金融とかショッピングモールなど複数のサービスを行っている所には同様の危険性があります。サブドメインの場合でも範囲は限定されますが同様の問題が当然出ます。SSL証明書が「本物」でベースのドメインが一致すればけっこう騙されそうな気がしますが…

というわけで、自ドメイン(特にトップレベル)のメールアドレスを不特定多数の人間に使わせる際は注意が必要というお話でした。