ShadowsocksでURI検閲HTTPプロキシを越える

中南海による言論統制システム金盾を越える為にいろんなVPNソフトウェアがありますが、その一つにSOCKSv5プロトコルを暗号化して飛ばすShadowsocksがあります。最近では開発者の家に警察がやってきてソースコードgithubから消すのを強要される事件がありましたが、既にもりもりforkされていました。サーバもpipに残ってるしOSSって強いね。作者さんは無事でしょうか、、、、

さて、日本でもネットワークによっては検閲プロキシなどの壁が存在するので当然壁を壊しにゆきます。昼休みぐらい艦これさせろ。

HTTPプロキシを越える手段としては、CONNECTメソッドがあります。この手で壁を超える際に使うのはstoneが有名です。CONNECTメソッドの詳細はRFC 2817あたりですが、簡単に言うと「指定のホストへの通信を中継する機能がある」わけです。なんに使うかって言うとRFCにあるようにSSL通信で、SSL通信はバイナリデータをサーバとクライアントの間でやりとりする必要があります。

CONNECTメソッドの動きは簡単で、CONNECTでリクエストを投げると、HTTPレスポンスが返ってきた後にリクエストで指定したホスト:ポートへのtcp接続を中継してくれます。stone使った場合のはこんな感じ。

Shadowsocksと一緒にstone起動してもいいんですが、せっかくソース公開してるので改造してCONNECTリクエスト投げて、HTTPレスポンスを無視する機能をTCPリレー部分に突っ込んでみました。これだと単にShadowsocks.exeを起動するだけで壁を越えてくれます。やったね。

ソースはforkしたgithubに突っ込んでバイナリもreleaseしてみた*1しれっとレゾルバがIPv6アドレス無視するようにしてありますが、これはデバッグ中にpolipo使ってたけど127.0.0.1でしかbindしてくれなくてlocalhostで解決した際に最初に::1が返ってくるとコネクション貼れない場合があったんですが最高に馬鹿っぽい感じがしますねこれ。

これで晴れて壁を越えて世界の知にアクセスできるヤッターとか思ってたけど、出口設置したさくらVPS2ch.netからブロック*2されてるオチもあったり。

*1:Tag打たないとDraftから先に進まないって知らなくて暫くハマった。

*2:分裂騒動の影響ですね。

HttpListenerを使ってFiddlerCoreを代替してみた

今年の春先にFiddlerCore艦これの専ブラに使うのはライセンス的にダメなんちゃうって話が出たので、KCBrで使っていた部分だけを代替するものを.NET Frameworkが持ってるHttpListenerを使ってさくっと作って取っ替えました。

最初はTcpListnerでも少し書いてたけど、既に十分検証されていて使用可能なコードがあるのに自分で書くのは馬鹿すぎるので止めました。

続きを読む

表をOCRで処理する

この業界、頭が異様に悪くて何故か表をAutoCADで描いたりします

構造をもった電子データであるという認識を捨てて単なる画像として処理することを考えて手段を探すと色々と術が見つかってきました。紙で渡されるのとほとんど同じ処理をするハメになるわけですね。ひたすらOCROCROCR,,,,,

で、AutoCADで描かれた表を手打ちしたら死ぬのでOCRです。

続きを読む

クソPDF戦記

解析結果が書かれたPDFををplaintextに変換しようとして一週間もかかってしまってほんまクソ、ということでメモを残しておく。

そもそも何でPDFなのか?


ミッション:plaintextがedocument library pdf filterとかいうウンコライブラリでPDF化された5000ページぐらいあるPDFから、100ページぐらいの表組みをplaintextに戻し、手元での解析結果とWinMergeで比較。

試した順に書いていきます。

続きを読む

YAPC::Asia Tokyo 2015行ってきた

YAPC初参加ですよプロデューサーさん!!!!!!!チケット買った時は札幌配属だったけど本社に転属したので前夜祭から参加できて*大勝利*。

チケット買って有給取りに行こうと事務所行ったら社長の現場訪問と被ってることが発覚*1してギャピーってこともありましたが、本社に転属してそれもなくなってサビ残騒動起きて本社に転属したお陰です。


まぁそれはそれとして「blog書くまでがYAPCですよ」ということでつらつらと聞いてきたトークについて。

ほんとは自分でメモ取りたかったんですが、ノートマシンの充電器ケーブルが腐って*2充電できなくなってしまったのでスマホガラケーで戦う羽目になってしまって悲しみ。様々な方面で知的刺激を受ける三日間でした。

*1:社長来るのに有給とか狂ってるって言われたんですね。うんk

*2:9年目突入したレッツノートなので本体ぶっ壊れててもおかしくないんですが、充電器新調したら復活してなにより。マダマダイクヨー!!!!!!!!!

続きを読む

Control.Invoke() と Control.BeginInvoke() での例外処理

はじめに

C#のWinForms*1はUIスレッドを一つしか持てず*2、そのUIスレッドに対して他のスレッドからちょっかいをかけようとするとSystem.InvalidOperationException例外が飛びます。

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "[開始]";

    Task.Factory.StartNew(() => {
        Thread.Sleep(5000);

        textBox1.Text += "[5秒経ったよ!]"; // ここで例外が発生する
    });

}

そこで、Control.InvokeないしControl.BeginInvokeを使ってUIスレッドに該当の処理をさせなさい、というのは有名な話。

今回はControl.Invokeを使ってハマった話。

*1:WPF使ったことなし。

*2:普通にWindows APIでウィンドウを作ると、メッセージポンプを回すスレッドはワーカーでも回せます。例えばMFCのCWinThreadクラスはUIスレッドを作ることが出来ます。

続きを読む

後期高齢者医療広域連合WebサイトURI一覧を眺めてみる

最近話題になることが少ない後期高齢者医療制度ですが、これの事務は各都道府県ごとに全市町村が所属する広域連合を結成して処理することになっています*1。つまり48の広域連合が設置されたことになります。

最近はどんな組織もWebサイトを持つ例が多く、この後期高齢者医療制度を処理する広域連合は全てWebサイトを持っています。厚労省Webサイトの制度ページに各都道府県の後期高齢者医療広域連合Webサイト一覧があったのでドメインが分かるように列挙してみた。

都道府県 URL
北海道 http://iryokouiki-hokkaido.jp/
青森県 http://www.aomori-kouikirengou.jp/
岩手県 http://www.iwate-iryokouiki.jp/
宮城県 http://www.miyagi-kouiki.jp/
秋田県 http://www.akita-kouiki.jp/
山形県 http://yamagata-kouiki.jp/
福島県 http://fukushima-kouikirengou.lineup.jp/
茨城県 http://www.kouiki-ibaraki.jp/
栃木県 http://www.kouikirengo-tochigi.jp/
埼玉県 https://www.saitama-koukikourei.org/
千葉県 http://www.kouiki-chiba.jp/
群馬県 http://www.gunma-kouiki.jp/
東京都 http://www.tokyo-ikiiki.net/
神奈川県 http://www.union.kanagawa.lg.jp/
山梨県 http://www.yamanashi-iryoukouiki.jp/
福井県 http://www.fukui-kouiki.or.jp/
新潟県 http://www.niigata-kouiki.jp/
長野県 http://www.koukikourei-nagano.jp/
富山県 http://www.toyama-iryou.jp/
石川県 http://www.ishikawa-kouiki.jp/
岐阜県 http://www.gikouiki.jp/
静岡県 http://www.shizuoka-ki.jp/
愛知県 http://www.aichi-kouiki.jp/
三重県 http://mie-kouiki.jp/
滋賀県 http://www.shigakouiki.jp/
京都府 http://www.kouiki-kyoto.jp/
大阪府 http://www.kouikirengo-osaka.jp/
兵庫県 http://www.kouiki-hyogo.jp/
奈良県 http://www.nara-kouiki.jp/
和歌山県 http://kouiki-wakayama.jp/
鳥取県 http://www.koureikouiki-tottori.jp/
島根県 http://www.shimane-kouiki.jp/
岡山県 http://www.kouiki-okayama.jp/
広島県 http://www.kouiki-hiroshima.jp/
山口県 http://yamaguchi-kouiki.jp/
徳島県 http://www.koukikourei-tokushima.jp/
香川県 http://wwwa.pikara.ne.jp/kouiki37-1/
高知県 http://www.kochi-kouiki.or.jp/
愛媛県 http://www.ehime-kouiki.jp/
福岡県 http://www.fukuoka-kouki.jp/
佐賀県 http://saga-kouiki.jp/
長崎県 http://www.nagasaki-kouiki.jp/
熊本県 http://www.kumamoto-kouikirengo.jp/
大分県 http://www.oita-kouiki.jp/
宮崎県 http://www.miyazaki-kourei-kouiki.jp/
鹿児島県 http://www.kagoshima-kouiki.jp/
沖縄県 http://www.kouiki-okinawa.jp/

圧倒的な汎用JPドメイン率に震える。


埼玉と東京がgTLDで、福島はASP会社のサブドメ、香川は地元ISPのホームページサービス上に存在してます。広域連合は特別地方公共団体*2なので、LG.JPドメインの登録資格があって、実際神奈川県だけはLGドメイン取ってます*3


何かの弾みで後期高齢者医療制度が改廃されて都道府県単位の広域連合が消滅したら、汎用jpやらgTLDのドメインは適当にexpireして業者に買われるんだろーなぁと。


かつて存在した国会事故調こと東京電力福島原子力発電所事故調査委員会のWebサイト、途中から http://www.naiic.go.jp/ になったけど当初は http://www.naiic.jp/ という汎用ドメインで、このドメインは2014/03/01に無関係の他人が登録してて国会事故調とは別のWebサイトになってます。ちなみに国会事故調のWebサイト、当初はwww.ican.go.jpだったようで、Wikipedia履歴見てたら2012/7/6に書き換えられてた


公的機関はlgドメインとかgoドメインをちゃんと使ってほしいと思うんですが。。。


あと、埼玉県だけsslなんだけど証明書が他ドメインといっしょくた*4でなんかアレ。

*1:高齢者の医療の確保に関する法律 第四十八条

*2:地方自治法第三編 特別地方公共団体で広域連合に関する条文がある。

*3:kanagawa.lg.jpのサブドメっぽく見えますが、union.kanagawa.lg.jpでwhois叩くと神奈川県後期高齢者医療広域連合で登録してると出てきます。

*4:証明書はDNS名 www.asahi-com.net www.dhm7882.co.jp www.gojo-saitama.jp www.larrange.jp www.mamuro-yoho.com www.omy-net.co.jp www.saitama-jinjacho.or.jp www.saitama-koukikourei.org が並んでた