読者です 読者をやめる 読者になる 読者になる

pslaboの日記

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


Delphiで作ったスマホアプリにGoogleAnalyticsを組み込む

RAD Studio Delphi Google Analytics

とりあえず下調べ。

FMXexpress.com にこんなページがあったので、とりあえずメモとして残す。
www.fmxexpress.com

IISのインストールはPowerShellを使って自動化できる

Windows IIS

IISのインストールは PowerShell を使うのが簡単ですねえ。

以下のコマンドは RAD Server 向けの必須機能をインストールするための方法だそうです。もっとも RAD Server は RAD Studio/Delphi/C++Builder のEnterprise以上じゃないと開発できないので、この構成を普段使うことはなさそうだが。

Add-WindowsFeature Web-Server,Web-Mgmt-Console,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-Static-Content


では設定情報を簡単にインストールするにはどうすればよいかというと、これは xml ファイルをコピーすれば設定の複製が作れるようだ。

IISの設定情報の保存先karuakun.wordpress.com

technet にはこういう説明もあります。
IIS 7.0 コンフィギュレーション リファレンス

Softbank回線のMVNOが登場したら、iPhone用、iPad用、その他ソフトバンク用の3種類のサービスメニューになるのだろうな

iPhone iPad Mobile MVNO

Softbank回線のMVNOが登場した時のサービスメニューがどうなるかというと、iPhone用、iPad用、その他のソフトバンク端末向け、の3種類のサービスメニューが必要になるはず。

以前に SoftbankiPad の SIM ロック解除を SIM 下駄で試みた場合に調べた限りでは、ソフトバンクiPhoneiPad 向けの SIM カードは IMSI 番号が以下のように違います。

SIMカード IMSI
SoftbankiPad 4402080
SoftbankiPhone 4402081

このことは以前に書いたこちらの記事に詳しく掲載しています。 pslabo.hatenablog.com

そして iPhone, iPad ともキャリアロックは IMSI 番号ベースで行われているために、相互にSIMを入れ替えても使えないわけです。

また、iPhone/iPad以外のSIMは上記とは異なる IMSI 番号が振られているようです。

ここで、MVNO が顧客ニーズを満たしつつ、もっとも需要が多そうな iPhone/iPad 向けのサービスを提供しようとしたら、少なくとも iPhone 向け、iPad 向けの SIM は別個に出さねばならないはずです。

ここでさらに iPhone 向けにデータ専用、データ+SMS、音声の3種類を提供したり、あるいはiPad向けにデータ専用、データ+SMSを提供するとしたら、とてもカオスな感じになりますね。

日本通信がどういう形でサービス提供を行うのか、非常に気になります。

過去のエンバカデロ・デベロッパーキャンプの内容や資料を整理してみようと思ったらすでにあった

RAD Studio Delphi C++Builder

エンバカデロテクノロジーズのデベロッパーキャンプの過去の内容や資料の一覧がないような気がしたので自分用の資料としてまとめてみようかと思ったけど、ちゃんとあるのですね。

オフィシャルなのはこれ。
http://forms.embarcadero.com/developer-camp-archive

DEKOさんがまとめているのもあった。
http://ht-deko.com/tech044.html

それにしてもオフィシャルのほうの遅さはなんとかならんものか。HTMLページのダウンロードに10秒以上も掛かっておるぞ。

f:id:pslabo:20170204112339p:plain

これでは SEO がアカンやろ。だから検索に引っかかりにくいのかなあ。

ガラポンTVの録画済み動画を視聴中にtcpdumpとrtmpdumpで自動的にイロイロやるテスト

MacOSX ガラポンTV

こういう記事を見つけたので、tcpdump の結果を perlスクリプトに食わせれば自動で rtmpdump できるんじゃないかと思って試してみたら一応動くものができたので忘備録として記す。

自分の動作確認は macOS Sierra でしか行っていないので、他の環境のことは分かりません。またこのスクリプトについての動作を保証するものでもないので、自己責任でどうぞ。

www.yutorism.jp

ちなみにガラポンTVというのは、地上デジタル放送を最大で同時8チャンネルまで全部録画できるレコーダーで、2TB程度のHDDを使えばだいたい3ヶ月分くらいの番組を全部録画してくれるシロモノです。

実行例

sudo tcpdump -A -s 0 'host [ガラポンTVのIPアドレス] and tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | ./test.pl 

macOS で上記の処理を実行しておくと、あとは適当なブラウザでガラポンTV端末自体に接続して番組視聴するか、またはガラポンTVサイトで動画視聴するだけで、裏で rtmpdump が自動的に起動するはず。使用するコマンド自体は汎用的なものだから Debian/Ubuntu/CentOS でもイケるだろうし、あるいは Windows10 上の Ubuntu on Windows でも動くとは思う。


そして上記のコマンドのうち test.pl というのは以下のスクリプトです。rtmpdump は apt-get などで別途インストールしておく必要があります。

perlスクリプト

最低限のコメントは入っているので、解説は特に不要ですよね。ただしいくつかの箇所は初期値を入れておく必要があることに注意が必要です。

#!/usr/bin/perl

use strict;
use warnings;

$| = 1;

# garapon_deviceid はTVサイトとの通信から取れるけど、、
# 端末に直接ログインした場合に取得できるかどうかは未検証。
my $garapon_deviceid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-n";

# ここは初期値を正しく設定せねばならない。
my $garapon_host     = "192.168.254.1";
my $moviepath        = "~/Garapon";

# これは通信中の内容から自動的に取得決定する値。
my $garapon_gtvid    = "";
my $garapon_authkey  = "";
my $garapon_rtmp_cmd = "";
my $garapon_sessionid="";

while( <STDIN> ) {
    if ( $_ =~ /V([A-Z0-9]{18})-([A-Za-z0-9]{32})-([A-Za-z0-9]{32})-([A-Za-z0-9])/ ) {
        # garapon.tv サイトへのアクセスからイロイロ取得する。
        $garapon_gtvid=$1;
        $garapon_authkey=$2;
        $garapon_deviceid="$3-$4";

        $garapon_sessionid="$garapon_gtvid-$garapon_authkey-$garapon_deviceid";
    } elsif ( $_ =~ /gtvid=([A-Za-z0-9]{18})/ ) {
        # ガラポンに直接ログインしているときの取得方法
        $garapon_gtvid=$1;
        print "garapon_gtvid=$garapon_gtvid\n";
    } elsif ( $_ =~ /GaraponAuthKey=([A-Za-z0-9]{32})/ ) {
        # ガラポンに直接ログインしているときの取得方法
        $garapon_authkey=$1;
        print "garapon_authkey=$garapon_authkey\n";
    }

    if ( $_ =~ /GET \/viewer\/player\.garapon/ ) {
        if (
            length($garapon_gtvid)    > 0 &&
            length($garapon_authkey)  > 0 &&
            length($garapon_deviceid) > 0 ) {

            $garapon_sessionid="$garapon_gtvid-$garapon_authkey-$garapon_deviceid";
        }
    }


    # gtvid, authkey, deviceid が揃っていたら、メインの処理を行う
    if ( length($garapon_sessionid) > 0 ) {
        my $moviefile = "$moviepath/$garapon_gtvid.flv";

        # ファイルがない場合は rtmpdump を実行してファイルを取得する
        if ( ! -f $moviefile ) {
            $garapon_rtmp_cmd="rtmpdump -n $garapon_host -l 0 -y '$garapon_sessionid' -o '$moviefile'";
            print "$garapon_rtmp_cmd\n";
            system( "$garapon_rtmp_cmd &" );

            # 同じファイルに対する多重処理発生防止のための時間調整
            sleep 5;
        } else {
            print "$moviefile is exist.\n";
        }
        # セッション情報(番組情報)を空にする。
        $garapon_sessionid="";
    }
}

Macbook pro 2016を出先のプロジェクター等につなぐためのVGA/HDMI変換ケーブルを探す

Macintosh

Macbook pro 2016で困ることの一つは出先でのプロジェクター接続。

以前のモデルならHDMIを標準装備していたから、あとはminiDisplayport→VGAな変換ケーブルだけを持参していればよかった。

でも 2015 以降の Macbook と 2016 以降の Macbook pro は USB-C だけなので、出先のプロジェクターの使用を考えるとUSB-C→HDMIとUSB-C→HDMIの2種類の接続を準備しておくことが必要です。

1つで全て済ませるか、それとも2つ買うか?

できれば1つのアダプタがHDMIVGAの両方の出力に対応しているとありがたいです。持ち運ぶ機器が減ります。

しかし all in one なアダプタはディスプレイ出力以外の機能(電源アダプタ接続用のUSB-C、周辺機器接続用のUSB-A、LANアダプタなど)も含まれていることが多いので割と大きめの周辺機器になってしまいます。

さらに all in one なアダプタは選択肢が少なく、しかも高価です。このためケーブルの断線等が起きると非常にイタいですね。

ならば単機能のアダプタを2つ持ち歩くほうがよいかもしれません。

Macbook pro 2016 に使えそうなマルチアダプタでVGAが出せる製品は?

ざっと探してみると、手頃な価格で入手できそうなのは下記2製品ですね。ほかにもいくつかありそうなのですが、Macbook Pro 2016 への対応状況を調べるのが面倒くさいのです。。。

デル製アダプタ - USB-C - HDMI / VGA / イーサネット / USB 3.0 (DA200)

Amazon のユーザーレビューを見ていると Macbook pro 2016 で使えたという話が出ていました。マルチアダプタにしてはコンパクトなので持ち運びには良さげです。

ただし本体に直付けのUSB-Cが断線しやすいというレビューもあるので、取り扱いには要注意かも。頻繁に抜き差しする場合には向かない感じです。


USB-C to HDMI / VGA / Ethernet / USB Multiport 4K UHD Adapter (Thunderbolt 3 Port Compatible)

こちらも Amazon のレビューなどを見ていると Macbook pro 2016 で使えたという話がでています。価格は手頃だけどモノは大きめ。持ち歩き用には若干憚られるサイズかも。

またHDMIは30Hzということなので、画面の書き換えが煩雑な処理には向かないですが、通常のオフィスワークなら問題なさげ。

LANアダプタ機能はドライバのインストールが必要だそうです。


単機能のアダプタにはどんなものがあるか?

単機能のアダプタはたくさんありますので、あえてリストアップしなくても良さげです。いずれも2000円前後で買えるようです。

mitmproxy をBASIC認証付きで利用する

Security

mitmproxyはブラウザとウェブサーバの通信内容を調査するときにとても便利なツールですよね。手元の環境で自由に上げ下ろしできるので、とても助かります。

さて、とあるHTTPクライアントアプリ(ネイティブアプリ)を試験するときに認証付きのHTTPプロキシとの組み合わせを検証する必要が出てきました。こういう試験のために squid とかをまじめにセットアップするのは工数が見合わないので、もっと楽にやりたい。というわけで、これを mitmproxy でやってみることにします。

準備するもの

mitmproxy

mitmproxy はこのページの release のリンク先からダウンロードできます。macOSLinux 向けの場合は python が必要ですけど、Windows の場合はリンク先から installer や zip をダウンロードするだけでOKです。installer と zip の違いはファイルを自動で配置してくれるかどうか、だけです。だから通常は zip で良いのではと思います。私の場合はこの手の類のポータブルなバイナリは Google Drive に放り込んでおき、どの作業環境からでもすぐに使えるようにしてます。
mitmproxy - home

htpasswd ファイル

一応真面目に検証したいので、htpasswd ファイルを作ります。原則的には apache の htpasswd コマンドで作るのですけど、ウェブサービスで htpasswd が作れるものがあるようですから、そういうのを使ってもよいとは思います。ただしウェブサービスを使う場合は、普段使いのパスワードとは違う文字列を用いることは必須ですね。

なお、パスワードファイルを作らなくても良い方法もあるにはあります。認証は要求されるけれど、何を入れても通る認証、というモードです。ただしこれは私の目的には合わないのでスルーします。

実行方法

Windows の方は mitmweb.exe --htpasswd パスワードファイル と指定すればOKです。これで mitmproxy が認証付きで動作します。