〔御 礼〕
無事落札されました。ありがとうございました。(2013年2月12日)
以下の商品を某オークションに出品いたしました。よろしくお願いいたします。
M3 Coupe用のものですが、3シリーズクーペ(E92/93)にも装着することができます。
詳しくは、こちらをご覧ください。
〔御 礼〕
無事落札されました。ありがとうございました。(2013年2月12日)
以下の商品を某オークションに出品いたしました。よろしくお願いいたします。
M3 Coupe用のものですが、3シリーズクーペ(E92/93)にも装着することができます。
詳しくは、こちらをご覧ください。
またも、アヤシイ機器を入手しました。JACKALL(JK-108A)です。
Jack+All、その名のとおり、HDMI信号からHDCPを解除して、キャプチャーを行うためのものです。
オモテ向きは、DVI信号からHDMI信号への“変換/切換機”ということなので、DVI入力が2系統あります。0xF9C7
以前に、HDCPフリーのキャプチャーカード、「Jackall Express」を購入していたのですが、訳あって“変換/切換機”を購入しました。
Jackall Expressでキャプチャーする場合には、先人達が開発されたフリーソフトを使うのですが、コーデックにあまりよろしいのが使えず、けっこう画質が落ちてしまいます。
(圧縮率は高いので、長時間録画向きですが、映像の“鮮鋭さ”が失われてしまいます)
一方、SKNETさんの「Monster X3」などに付属しているソフトでは、H.264圧縮やDR(非圧縮)などが使えますが、いちおう、オモテの製品だけあって、HDCPがきちっと掛かってしまいます。
そこで、オモテのキャプチャーカードを使いつつ、前段にJackallをかましてHDCPを解除し、できるだけ高い画質でキャプチャーしてしまおう、という訳です。0xF9F8
BMWのDTMのワークスドライバー、アウグスト・ファルフス氏が、奥さんをM3 Coupeに乗せて、ニュルブルクリンクを走る映像です。
妻:「あなた! ブレーキ、ブレーキ!」
夫:「ははは、は~。大丈夫だよ~」
妻:「んっもう! スピード出さないって言ったじゃない!」
夫:「大丈夫だって。いつもよりゆっくり走ってるんだから、250km/hぐらいで」
的な会話が交わされています。0xF9C7
奥さんは、本気で怖がっています、可哀想ななくらいです。彼女にとっては、まさに“Green Hell”だったかも知れません。
夫婦仲が悪くならなければ良いのですが・・・。
と思いきや、最後は熱い抱擁でフィニッシュ。0xF994
前回のフォローです。
中国、韓国、その他からのアクセスを、“片っ端から遮断して”気を良くしていたところ、特定のIPアドレス空間からのアクセスが、遮断できていないことが分かりました。
以前にも出てきた、
*.dynamic.163data.com.cn
からのものです。
ダダ漏れでした。0xF9FC
結論からいうと、IPアドレス空間から、CIDRを求める関数に問題がありました。
前回は、IPの開始アドレスと終了アドレスから、ちょ~イイ加減な方法でCIDRを算出していました。また、PHPのオンラインマニュアルにある例題の関数「ip2cidr()」にも、問題があることか分かりました。
いろいろ試行錯誤して分かったことは、「Whoisコマンドを使ってAPNICから得られるIPアドレス空間には、複数のCIDRブロックで構成されているものがある」ということでした。
ということで、さっそく改修です。
上記は、PHPスクリプトの例です。
冒頭の“ダダ漏れリスト”の「218.86.48.48」について、APNICにてIPアドレス空間(inetnum)を求めると、「218.85.0.0 - 218.86.127.255」と出てきます。
これを、上記の関数(1)「ちょ~イイ加減な方法」と、関数(2)「PHPのオンラインマニュアルにある例題」に掛けると、CIDRは、「218.85.0.0/15」と出てきます。
32-15=12bit分のアドレス空間が遮断されるので、一見、合ってそうに思えますが、これでは「218.86.*.*」のアドレス空間が、遮断されていないことになります。
218.85.0.0/16
218.86.0.0/17
正しくは、上記の2つのCIDRブロックを遮断しなければなりません。
ということで、IPアドレス空間から、CIDRを求める正しい関数が、関数(3)「range2cidrlist()」です。
基本的には、PHPのオンラインマニュアルにある例題の関数と同じですが、微妙に修正してあります。(ネットマスクが32だった場合に、正しく計算されないバグを修正)
この関数は、IPアドレスの範囲(開始アドレスと終了アドレス)を与えると、その範囲に含まれるCIDRブロックを、リスト(配列)として返します。
#正しく計算されているかどうかは、ここなどを参照。
この返り値を元に、スパムテーブルと.htaccessとを更新し、なんとか“漏れ”を止めることができました。
ふ~っ、めでたし、めでたし。0xF9C6
それにしても、相変わらず中国からのアクセスが多いです。全体の3分の2近くを占めています。
引き続き、片っ端から遮断していくことにします。0xF9D1
<frame>による画面構成を修正し、アクセスログの集計パターンが変わったところ、捨て置きならない事態が判明しました。
上記は、アクセスログの一部を集計したものですが、昨日の総アクセス10,228回のうち、中国からのアクセスが6,683回と、ほぼ7割近くを占めていることが分かりました。
(今朝も9:00の時点で、すでに2,500を超えています)
これを、映画「マトリックス」のワンシーンに喩えると・・・、
(画像は、ワーナー・ブラザーズ・エンターテインメントさんから拝借)巨大な多足動物(節足動物)のようなワームが、付け入る先を探して、あちこちからウジャウジャ押し寄せてきているようなイメージ。0xF9FC
これまでは、「Movable Type」がスパム認定したコメント(またはトラックバック)のIPアドレスのみアクセス規制していましたが(記事1, 記事2, 記事3)、これを機に、より厳格な対処をすることにしました。
IPアドレスから国名コードを割り出し、中国からのアクセスであった場合には、即座にアクセスを遮断します。
ついでに、中国(CN)の他に、北朝鮮(KP)、韓国(KR)、香港(HK)、台湾(TW)、ロシア(RU)も規制対象としました。
規制する対象は、アクセスのあったIPアドレスのみならず、そのIPアドレスが含まれるサブネット全体を、丸ごと規制します。
#なお、IPアドレスの抽出は、proxy経由のものにも対応しているため、どこかを踏み台にしてアクセスしてきても、大丈夫なようになっています。0xF9D1
上記は、PHPスクリプト(の一部)です。
関数GetCountryCode()にて、IPアドレスから国名コードを得ています。
以前の記事では、IPアドレスから国名コードを得る関数として、内部でwhoisコマンドを実行し、その出力から国名コードを得るものを使っていましたが、実行速度を測ってみると、約800msも掛かっていることが分かりました。
「Movable Type」が認定したスパムテーブルを元に、1日に1回、規制リストを更新する分には、この程度の速度でも構わないのですが、今回のように、即座に規制を掛けるためには、関数自体を高速化する必要があります。
ネット上をいろいろ探したところ、GeoIPというPHPライブラリの中に、geoip_country_code_by_addr()という関数があったため、このライブラリを組み込んで使うことにしました。
whoisのように、常に最新のデータベースに聞きにいく訳ではなく、規定の(ローカルな)データベースをルックアップするだけなのですが、実行速度が約200μs前後(実測参考値)と高速で、これならアクセスが頻発しても十分に使えそうです。
GetCountryCode()にて国名コードを得て、これが中国・香港・台湾、北朝鮮・韓国、ロシアであった場合には、スパムテーブルと.htaccessとを、即座に更新します。
ワームが入ろうとした瞬間、シェルターの防護壁が、一瞬にして(しかも次々と)閉じられていくようなイメージ。0xF9C5
0xF8D8(ガシャン、ガシャン、ガシャ~ン!!)