2009/08/11

自転車盗難 その後

自転車が2週間くらい経っても一向に見つかる気配がなかったので新しい自転車を購入。
その翌日に自転車屋に行って、ギアの調整なんかをしてもらっている最中に電話が。受けとると警察からで、自転車が見つかったから早く引き取ってほしいとのことでした。

笑

iPhone 3GS 買った


ホーム画面。デフォルトが一番綺麗と思っているので、特にカスタマイズはしていません。

最近猫も杓子もiPhone持ってるので別に珍しくないんですが、とりあえずiPhone買ってみました。
旧ボーダフォンのプランだったので、逆に切り替えたほうが安いことになるんですよね。前は月に8-10kくらいかかってましたし。

とりあえず数週間使ってみての感想としては、『パソコンをあまり使わない人は、持っている意味が殆どない』という感じです。
Googleカレンダーで予定を管理していたので、iPhoneとの同期はすごく役立ちますし、当たり前のようにGmailアカウントを追加できるのも便利。「産経新聞」アプリのおかげで新聞が気軽に読めるようになりましたし(*1)、「weathernews」で各地の天気も気軽、かつ詳細に調べられるようになりました。なぜ今までの携帯ができなかったのか不思議に思うくらいです。
逆にそういうサービスをまったく使わない人たちは特に買う利点は見当たらないので、ちゃんとした日本の携帯を買ったほうが幸せなような気がします。

キーボードについては長短あり。フリック入力だと入力が通常の携帯よりも早いのでとても便利なのですが、デバイス上結構ミスが連発するのでなんともいえません。早いけれどタイプミスでちょっとストレスがたまるようなかんじです。

jailbreakについては別にあまり重要でないから、やんなくてもいいのではという意見が多数を占めていますが、自分はむしろ逆だと思います。jailbreakしないiPhoneなんて初めっから完成されているプラモを買うようなもんです。

例えば辞書の追加。現状のiPhoneは単語の追加登録ができないです。そうなると追加するためには辞書のファイル(sys.dic)を直接いじることになります(*2)。これにはjailbreakと、最小限のコマンドライン知識が必要となってくるわけです。
linuxなどを使っている方ですと、iPhoneの中身はまんまunixで知識が流用できるので結構楽しいです(*3)。Open SSH入れて遠隔操作したり、通信を偽装して3G通信でskypeができるようになったり、vlcやmplayerを入れてflvの動画を再生できたりとか。インストーラのCydiaも.debパッケージを使っているので、リポジトリを追加して自由に自作のアプリケーションを承認なしで入れることもできます。

そーゆー抜け道が色々あるところが一番面白いんじゃないかなーと。
でも気をつけないと個人情報が駄々漏れになるんで、そこらへんは気をつけないといけないですね(特にOpenSSH関連)。

*1 自分は一番この「産経新聞」がキラーアプリなんじゃないかと思うほど気に入ってます。なんせ無料で新聞が読めるというところがデカい。
*2 別にいじんなくても他の方法はいくらでもあるんですが、どれもスマートじゃありません。
*3 iPhoneのハッカー文化がここまで大きくなった理由の一つだと思います。

2009/07/22

自転車が盗まれました

1時間くらい目を離していたらいつのまにか消えてしまいました。
バイクはぶっ壊れるし自転車は盗まれるし踏んだり蹴ったりでさすがにキツいです。

2009/07/18

クレジットカードと脆弱性

「クレジットマスター」か? VIPルーム宿泊男を逮捕 警視庁

他人のクレジットカード番号を割り出してインターネット決済し宿泊代金の支払いを免れたとして、警視庁と北海道警が電子計算機使用詐欺などの疑いで、指定暴力団山口組系元組員、瓜生誠被告(35)=覚せい剤取締法違反罪(使用)で起訴=を逮捕していたことが15日、同庁への取材で分かった。同庁などは、不正に入手した他人のIDとパスワードを使ったとして、14日に不正アクセス禁止法違反の疑いで追送検した。

眠れないのでとりあえず記事を更新することにしよう。

さてと、最近なんかクレジットマスター関連の犯罪が増えているような気がします。「クレジットマスター」自体はもう10年くらい前から登場している、古典的な手法らしいんですが、なんで最近になってこんなに頻出しているんでしょうか?謎です。

まず、世界中でよく使われているVISAのクレジットカードだと、桁数は16桁となっています。このままですととりうるカード番号の数は10^16通りであり、とてもじゃないですが実際に使われているカード番号にはたどり着けなさそうです。

ですが、実は全てのクレジットカード番号の最初の6桁は銀行のID番号になっていますので、容易に推測可能です。さらに最後の1桁はチェックサムであり、これも残りの数値から算出することが可能である*1)ため、16-7=9で残りは10^9通りとなりました。
この値が一体どれくらいの多さなのかというと、会員数が多いであろう三井住友VISAカードを例にとりますと、会員数は1641万人(平成20年3月末日)であるので、割合は0.01641。なんとランダムに数値を取っただけで100回につき1、2回は本物のカード番号に突き当たってしまうという計算になってしまいます。これはひどい。


(クレジットマスターの例。アルゴリズムは非常に簡単なので、こんな感じで容易にキージェネが作れてしまいます。一応問題ないとは思いますがモザイク入れておきますね。)

後の残る問題は有効期限なんですが、せいぜい3〜5年以内ですし試行はスクリプトなりなんなりを使えば容易に自動化できますから、1晩か2晩くらい回せばある程度の量の有効なクレジットナンバーが手に入りそうです。

まぁ名義が違ったら目をつけられますし、本物の住所を書くとすぐにお縄になってしまうので、容易さの割に非常にリスクが高い手法なんですが、自分が言いたいのはそんなことじゃなく、ここまで容易に割り出せてしまうクレジットカードの制度自体に問題があると思うのです。今時ナンバーと有効期限だけで認証が通ってしまうシステムってどうなのさっていう話で。

*1) どうやって算出するのかというと、『MOD10』アルゴリズムを用いて算出します。これについては他のサイトをご覧になったほうが容易に理解できると思います。このアルゴリズムの致命的な問題としては、残りの数値からチェックサムの値が一意に推測できてしまうという点でしょうか。これによって桁が1つ少なくできてしまうので。

2009/07/15

Pythonistaのための2chライブラリ"twopy"


"Beautiful Kuwait 2" by creativesam

概要

さて、実は以前からちょっと2chの文章を利用して、いろいろ弄くることができないかなぁとは思っていたんですが、残念な事に2ch用のpythonライブラリなんてマニアックなものは作っている人は誰もいない。
それじゃあ自分でなんとかしようの精神で作ってみようと。正直使う人が居るのかどうかは甚だ疑問なライブラリですが、損するわけじゃないので一応公開してみます。

というわけで、Pythonistaのための2chライブラリ"twopy"をリリースしました。
現在のところ単純なスレッド一覧の取得、スレッド上のコメント取得、コメント書き込みや新規スレッド機能に対応しておりますが、まだ完全に動作確認しているわけではないので使用は自己責任で。ちなみにライセンスはMITライセンスなんで、比較的自由に扱えると思います。改良はこれから始まる期末テストに飽きたらやると思います。

インストール方法

インストールに必要な環境は以下の通りです。
Python 2.5 or higher
2.6.2での環境で動作を確認。外部ライブラリに依存していないので、もしかしたらそれより前のヴァージョンでも動作するかもしれません。

インストール方法はCodeReposに上げておきますので、

$ svn checkout http://svn.coderepos.org/share/lang/python/twopy/trunk

なりなんなりでチェックアウトしてください。

簡単な使い方

スレッド一覧の取得
import twopy
b = twopy.Board("http://takeshima.2ch.net/news4vip/")
b.retrieve()

スレッドごとのタイトル、レス数、速度(res/h)を取得することができます。
for t in b:
print u"%s (%i) %.4f" % (t.title, t.res, t.velocity)

配列のように呼び出すことも可能です。
print b[0].title
print b[0].since


スレッドの内容の取得
t = b[0]
t.retrieve()

で一番上にあるスレッドの内容を取得します。
t = twopy.Thread(b, "1247375844.dat")
t = twopy.Thread.initWithURL("http://takeshima.2ch.net/test/read.cgi/news4vip/1247375844/")

として、datファイルあるいはURLから直接初期化することも可能です。

コメントを出力するには以下のようにループさせます。また、特定のコメントのみを取り出すこともできます。
for c in t: print c.render()
print t[1].render()

ただし、その場合の引数は実際のレス番号を指定する必要があります(0から始まるわけではない)。

コメントの抽出
特定のコメントのURLやレスポンスを抜き出すことができます。
for c in t: print c.extractResponses(returnType="comment")
for c in t: print c.extractUrls()

追記: 10/07/22
returnType引数は廃止され、メソッドとして分割されることになりました。
for c in t:
    print c.extractResponses()
    print c.extractResponsesAsInteger()
    print c.extractResponsesAsComment()

コメントの書き込み
特定のスレッドに対して、コメントを書き込むことができます。

t.post(name=u"", mailaddr=u"", message=u"")

ただし、2ch側の仕様により必ずしも書き込まれるとは限らず、確認が求められる場合がありますので、実際には以下のようにします。
r = t.post(name=u"", mailaddr=u"", message=u"")
if r[0] == twopy.STATUS_COOKIE:
    t.post(name=u"", mailaddr=u"", message=u"", hidden=r[2])

すべての確認作業を自動的に行うメソッドも存在します。

t.autopost(name=u"", mailaddr=u"", message=u"")

ただし、上2つのコードは2ch側の確認をユーザに見せることなく書き込みを行っていますので、実際にはユーザーに文章を見せてから、同意を行なわせる必要があるでしょう。

他にもスレッド作成機能などのいろいろ細々したのもありますが、それはソースコード見ればだいたい理解できると思います。行数そんな多くないですし。
もし正常に動かないなどのバグがありましたらご連絡お願いします。暇があれば対処したいと思います。それでは。