SteamのアプリがAndroidでリモートプレイが出来るSteam Linkを試す

20180521_01:05:06-2769

AndroidでSteamのホームストリーミングで遊べるSteam Linkというアプリが公開されていたのでちょっと試してみました.

先ずはPCのSteamでホームストリーミングを有効にしておきます.
20180519_01:05:27-31428

firewallはこの辺りを参考に空けておきます.

ホームストリーミングだけならこの辺?

UDP 27031 and 27036 (incoming, for In-Home Streaming)
TCP 27036 and 27037 (incoming, for In-Home Streaming)

PCでSteamを起動した状態でAndroidのSteam Linkを起動したらPCが見つかりました.しかしネットワークテストがいまいち.Wi-Fiが2.4GHz 11gの54MbpsでHostのPCもClientのAndroidも同じAPなのでこのままでは無理がありますね…….

Screenshot_20180519-015144

とりあえず強行してみるとHostPC側では動いていますが,Androidでは表示が崩れてこんな感じ.

Screenshot_20180519-015239

ちなみにHostPCはCore2DuoかつGPUもCPUのものなのでかなりスペック低いのでそのせいもありそうです.
近いうちに回線は有線1GHz+Wi-Fi 300Mbpsの環境で試してみようと思います.

このアプリケーションはPCのHost側もゲーム画面を表示してそれをAndroidに転送して動いているのでPCで別の作業をするという向けには使いづらい感じです.もし併用するなら仮想画面や別モニタに別のXを動かすとかしないといけないと思います.
とはいえAndroidでSteamゲームが遊べるのは便利そう.それにまだBETAなのでもっと良くなるでしょう.

add 2018-05-26)
iOS版はblockされたようです(◞‸◟)

Androidで通信できなくなってしまい困る

手元の端末(CyanogenMod 11)をいじって使わなさそうなアプリケーションを無効にしていたのですが,再起動したら3G通信ができなくなってしまいました.とりあえずそれっぽい物を有効化していったけど1つを除いて有効化しても通信できない.そしてその残り1つは有効化がグレーアウトして押せないボタンになっています. アプリケーションは「電話/SMS用ストレージ com.adnroid.providers.telephony」というもの.

Screenshot_2018-01-09-19-43-11

これはもしかしてファクトリーリセットしないといけない?と思ったのですが,「設定」->「アプリ」の右上の「︙」->「アプリの設定をリセット」->「アプリをリセット」で元に戻せました.

Screenshot_2018-01-09-19-43-53Screenshot_2018-01-09-19-44-01

またやりそうなのでメモ.

AndroidのIFTTTでFlickrカメラアプレット

IFTTTでFlickrにUpするカメラアプレットの設定メモです.
作成したカメラウィジットで撮影すると即FlickrにUpされます.

IFTTTのレシピを公開すればいいだろうとどうすれば公開できるのだろうと調べようとしたら,

> 調べてみると2016年秋頃から、一般ユーザーはApplet(レシピ)の公開ができなくなっていた

[N] 【IFTTT】ユーザーが作ったApplet(レシピ)は公開(publish)できなくなった]

てことでわかりにくいでしょうが…….

– https://ifttt.com/my_applets にアクセス
– New Applet
– +this -> Camera widget
– Choose trigger -> Any new photo
– that -> Flickr
– Choose action -> Upload public photo from URL
– Complete action fields -> Create action
– Finish

後は,ターゲットのAndroid端末でウィジットの追加を行います.IFTTTのウィジットを選んで,

IFTTT to Flickr

IFTTTのウィジット一覧から作成したウィジットを選択

IFTTT to Flickr

するとFlickrなアイコンが出来ます.

IFTTT to Flickr

後はこのアイコンをタップするとカメラアプリが起動するので撮影して左上の☓をクリックするとFlickrへアップロードされます.
カメラアプリ起動時に複数枚撮影も可能.このときは撮影枚数毎に上の方に半透明の●が表示されます.
バックキーでカメラアプリを終了させても撮影済みだとアップロードされます.

ただこのカメラアプリは設定がフラッシュとリヤフロントのカメラ切り替えしか無いようで解像度選択,画質,EV,ジオタグ付与辺りが欲しいところです.

てことで結局これはあまり使わず他のカメラアプリで撮影後アップロードしています…….

radikoのAndroidアプリが起動しなくて困る

radikoというラジオをPCやスマートフォンで視聴できるサービスがあります.

スマートフォンを初期化したのでAndroid版の公式アプリを導入して起動しようとするとすぐに終了してしまいました.
地域判定中のメッセージのあと終了してしまいます.

FAQに何か載っていないか探してみました.

音声が途切れる、繋がらない(Android) | radiko.jp ヘルプ

一時的な回線の混雑や聴取場所のネットワークの状態(キャリア回線およびWi-Fi)、通信業者のパケット制限の影響等の原因が考えられます。
以下をお試しください。
・端末の再起動
・アプリケーションのバージョンアップ、または削除/再インストール
・地域判定オプションのチェックをすべて外す(変更する)
・バッファの設定時間の変更
・聴取場所やインターネット回線を変えて再接続
上記で解消しない場合は、「設定」→「アプリケーション(アプリ)」→「アプリケーション一覧」→「radiko.jpforAndroid」→「データを消去」をお試しください。

設定変更は設定画面にたどり着けないので無理ですがその他のは全部試しましたがやはりダメです.
こんな動き.

検索するとroot取得端末だとこういう動きになるようです.しかしこの端末はroot取得していません.
ふとアプリケーション一覧を眺めていると SuperSU が.このアプリケーションはroot取得後に利用するアクセス管理ツールなので関係ないだろうと思いながら削除してみるとradikoアプリが利用できるようになりました.
SuperSU – Google Play の Android アプリ

ということで,radikoアプリはroot取得端末じゃなくてもroot関連のアプリがあるとroot取得端末と判断して起動失敗することがあるようです.
恐らく録音などが出来ないようにroot環境で動かないようにしたいんでしょうけどはじめからroot取得済みで売られている端末などもあるし,少なくともPCでは録音は結構簡単に出来る(radigoとか)ので不便になるだけな感じも…….
ちなみにNHKラジオのらじる★らじるはSuperSUのある状態で動作しました.

バージョン情報

  • radikoアプリのバージョン 6.3.0

  • Android OSのバージョン 5.1.1(とてもとても古い……)

Android端末をLinuxのタッチパッド替わりにしたい(Bluetooth利用のBlink)

最近またポインティングデバイスにApple Wireless Trackpadを利用するようになりましたが持ち運びには少し嵩張ります.マウスを持ち運ぶのもかさばります.
Ubuntu TouchでHDMI接続時にタッチデバイスになるというのを見てAndroid端末をタッチデバイスにすることが出来るのでは?それなら荷物増え無いしいいかもと思って少し調べてみました.

BlinkはBluetooth接続かつPC側でデーモンを動かす必要があります.
先ずBluetoothペアリングをしておき,PC側でデーモンを導入します.

  • 必要パッケージの導入

$ sudo apt install bluez python-bluez xdotoolsudo apt-get install bluez python-bluez xdotool
  • デーモンの導入

$ git clone https://github.com/drpain/blink-server.git ~/.blink

以下のようにしてデーモンを起動するのですが,この記事を書いている時点でのDebian stretch testing amd64では以下のようなエラーとなります.

$ sudo ~/.blink/bluetooth_server.py
Traceback (most recent call last):
  File "/home/mk/.blink/bluetooth_server.py", line 25, in <module>
    profiles         = [ SERIAL_PORT_PROFILE ]
  File "/usr/lib/python2.7/dist-packages/bluetooth/bluez.py", line 176, in advertise_service
    raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (2, 'No such file or directory')

GuihubのHELPを参考に*/etc/bluetooth/main.conf*を以下のように修正します.

diff --git a/bluetooth/main.conf b/bluetooth/main.conf
index 372fd8c..2f7cc4a 100644
--- a/bluetooth/main.conf
+++ b/bluetooth/main.conf
@@ -64,6 +64,9 @@
 # 'false'.
 #FastConnectable = false

+# "drpain/blink-server: This is the server you would need to be able to run the Blink Android Application." https://github.com/drpain/blink-server
+DisablePlugins = pnat
+
 #[Policy]
 #
 # The ReconnectUUIDs defines the set of remote services that should try

設定を反映するためにbluetoothdを再起動してサーバを再起動します.

$ sudo service bluetooth restart

サーバは要rootのようです.
この状態でAndroid側からクライアントPCを選択して接続すればok.

$ sudo ~/.blink/bluetooth_server.py
READY FOR CONNECTIONS, RFCOMM channel 1
('INBOUND CONNECTION ', ('68:76:4F:3B:D1:E0', 1))
COMMAND RECEIVED [{"action":"mouse-move","x":null,"y":null}]
['xdotool', 'mousemove_relative', '--', 'None', 'None']
COMMAND RECEIVED [{"action":"mouse-move","x":-1,"y":0}]
['xdotool', 'mousemove_relative', '--', '-1', '0']
COMMAND RECEIVED [{"action":"mouse-move","x":0,"y":0}]
['xdotool', 'mousemove_relative', '0', '0']
COMMAND RECEIVED [{"action":"mouse-move","x":-1,"y":0}]
['xdotool', 'mousemove_relative', '--', '-1', '0']

上の方のモード切替スイッチをタップして規定の「Swipe Area」から「Mouse」にします.「Mouse Area」で操作するとxdotoolのログが大量に出つつ操作できます.

27629912281 e0ba729509 n
27094267013 3fb8577a76 n

操作は少し解りづらくてこんな感じです.

  • タップ→左クリック

  • タップ, ホールド, リリース → 右クリック

中クリックやドラッグは多分未実装で使えません.
カーソル移動はちらつきますがとりあえず使える感じです.

でも導入に要設定変更&要rootなのが面倒ですね.

Linux環境でAndroidアプリを利用できるShashlikを試す

Linuxデスクトップ環境でAndroidアプリを利用できるShashlikを試してみました.
Shashlikを導入してAndroidパッケージの.apkを導入すると通常のLinuxアプリケーションのように呼び出せるというものです.
ただし,.apkはx86サポートのものでないといけないようです.
現在は0.9.1が最新で,Kubuntu(KDE Plasma 5)向けとなっています.

以下はShashlikを使ってFlappy Birdが動いている動画です.

Shashlikの導入

今は.debが配布されているのでこれをダウンロードして導入します.入手場所は以下のページから.140MBと結構大きいです.

$ wget http://static.davidedmundson.co.uk/shashlik/shashlik_0.9.1.deb
$ sudo dpkg -i shashlik_0.9.1.deb

/opt/shashlik以下に導入されます.qemuで動くみたいですね.

$ dpkg -L shashlik
/.
/opt
/opt/shashlik
/opt/shashlik/android
/opt/shashlik/android/emulator-user.ini
/opt/shashlik/android/system
/opt/shashlik/android/system/build.prop
/opt/shashlik/android/config.ini
/opt/shashlik/android/kernel-qemu
/opt/shashlik/android/system.img
/opt/shashlik/android/ramdisk.img
/opt/shashlik/android/userdata.img
/opt/shashlik/bin
/opt/shashlik/bin/aapt
/opt/shashlik/bin/ddms
/opt/shashlik/bin/shashlik-install
/opt/shashlik/bin/bios.bin
/opt/shashlik/bin/constants.py
/opt/shashlik/bin/shashlik-run
/opt/shashlik/bin/adb
/opt/shashlik/bin/vgabios-cirrus.bin
/opt/shashlik/bin/emulator64-x86
/opt/shashlik/data
/opt/shashlik/data/shashlik-apps.directory
/opt/shashlik/data/shashlik.png
/opt/shashlik/lib
/opt/shashlik/lib/libc++.so
/opt/shashlik/lib64
/opt/shashlik/lib64/lib64GLES_V2_translator.so
/opt/shashlik/lib64/lib64EGL_translator.so
/opt/shashlik/lib64/lib64OpenglRender.so
/opt/shashlik/lib64/libGLES_V2_translator.so
/opt/shashlik/lib64/lib64GLES_CM_translator.so
/opt/shashlik/lib64/libGLES_CM_translator.so
/opt/shashlik/lib64/libEGL_translator.so
/opt/shashlik/lib64/libut_rendercontrol_dec.so
/opt/shashlik/lib64/libOpenglRender.so

Androidアプリのパッケージを入手

Shashlikの上で動かすAndroidアプリのパッケージを入手します.

Once installed grab any Android application package (APK) from the net.
For example our favourite app, Flappy Bird, can be found here: http://beste-apps.chip.de/android/app/flappy-bird-apk-android-app,cxo.66885070/

ということでここからFlappy Birdを入手しました.

Androidアプリの導入

shashlik-installコマンドを使ってAndroidアプリを導入します.

$ /opt/shashlik/bin/shashlik-install ~/Downloads/com.dotgears.flappybird.apk
Successfully installed Flappy Bird
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kbuildsycoca4 running...
kbuildsycoca4(19354) VFolderMenu::loadDoc: Parse error in  "/home/mk/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line  1 , col  1 :  "unexpected end of file"
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
Successfully installed Flappy Bird

20160222_17:02:57-19417
これでKDE Plasma 5環境ならスタートメニューに登録されるはずです.

ちなみに,x86じゃない.apkを導入しようとするとこんな感じで怒られました.
20160222_18:02:13-5944

Androidアプリの起動

KDE Plasma 5環境ならスタートメニューに登録されているはずですが,今の環境はawesomeなのでメニューに出てきません.
コマンドラインから起動します.

$ /opt/shashlik/bin/shashlik-run com.dotgears.flappybird FlappyBirds

起動にはそこそこ時間がかかります.

20160222_18:02:35-30707
20160222_18:02:52-31990
20160222_18:02:15-344

起動した後はもたつきなどもなく普通に動く感じです.
ただ,真っ黒な画面のままで起動に失敗することがあります.起動が速くなって安定して動くようになるととても便利そうです.

しかし問題は.apkの入手先ですね.PlayStoreが使えないと苦労しそうです.


Raspberry Piで雑いpodcastサーバを作った

IMGP2678

先日試したpodracer

毎日実行して今日の分をまとめて再生して消してというように使う感じなのかもしれません.

ということで自動取得,自動再生すると家庭内ラジオのようにできるのではと思い試してみました.

環境はRaspberry Pi 1B (512MB)Rasbian jessieを導入したもので有線LAN 利用です.

導入パッケージ

podcast の取得のためにpodracer,プレイリストの配信にboaを利用,音声配信の為にvlc-noxを導入しました.

$ sudo apt install podracer boa vlc-nox

podcast 取得の準備

を参考にpodracerの設定をして下さい.~/.podracer/subscriptionsを用意した後1度catchup modeで実行しておきます.

$ podracer -c

これでRSS Feedをひと舐めして過去のpodcastを取得しないようにします.

VLC での配信テスト

以下の例ではpodracerで作成された今日のプレイリストをそのままhttp 8080ポートで配信して更にloopさせています.

$ cvlc  ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop

この状態で再生したい端末で $ cvlc http://raspberrypi.local:8080/ とか mplayer http://raspberrypi.local:8080/ などとしてアクセスすると再生されるはずです.
1曲毎に停まってしまい再度再生し直す必要がありますがこれは後で解決することにします.

VLC の設定

VLCで配信しますが,コントローラーも利用したいです.--extraintf=http オプションでwebコントローラーが利用できます.規定値では localhost 以外からアクセスできないので家のネットワークのどこからでもコントロールできるように /usr/share/vlc/lua/http/.hosts に利用可能なネットワークを登録しておきます.

192.168.1.0/24
192.168.2.0/24

以下のように実行するとwebコントローラーが8081ポートで起動します.パスワードは raspberry です.適当なブラウザで http://:raspberry@raspberrypi.local:8081/ な感じでアクセスするとコントローラが利用できると思います.

$ cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop

Screenshot_2016-01-31-19-04-03

パスワードを設定しないとパスワードの設定を促す画面が表示されて利用できないようです.

http の設定(プレイリストの作成)

boaの標準では /var/www 以下がDocumentRootになっています.ここにメニュー用の index.html とプレイリストの podcast.m3u を用意しておきます.

権限は www-data.www-data なので,以下のような感じで権限を設定して編集するといいかもしれません.

$ sudo chown www-data.www-data /var/www
$ sudo -u www-data vi /var/www/index.html
   :
  • /var/www/index.html の例
<html>
<body>
<ul>
<li><a href="./podcast.m3u">m3u</a></li>
<li><a href="http://:raspberry@192.168.2.200:8081/">VLC control</a></li>
</ul>
</body>
</html>

※AndroidではAvahiでの名前解決がうまく行かないのでIP アドレスで書いています.環境に合わせて変更して下さい.

  • /var/www/podcast.m3u の例
http://192.168.2.200:8080/
http://192.168.2.200/podcast.m3u

1行目だけだと1番組分で再生が停止してしまうので,2行目で自分自身を呼び出して再起しています.これで2番組以降でも続けて再生されます.
※AndroidではAvahiでの名前解決がうまく行かないのでip アドレスで書いています.環境に合わせて変更して下さい.

自動起動とpodcast更新処理

crontab で起動時に自動的に再生が始まるように&定期的にpodcast更新&再生リスト更新&古いpodcastの削除処理をします.

crontab -e コマンドで編集します.

@reboot cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop
3 */6 * * *     podracer;killall vlc;cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop
10 0 * * *  rm -rf ~/podcasts/`date --date '1 weeks ago' +\%F`

1行目は @reboot で起動時にVLCを自動起動します.
2行目は6時間毎にpodcastを更新してVLCを起動しなおしています.
3行目で1週間前のpodcastデータを削除しています.

利用方法

ウェブブラウザで Raspberry Pi にアクセスします.

http://raspberrypi.local

以下のようなメニューが出て来ます.

Screenshot_2016-01-31-20-49-47

• m3u
• VLC control

m3u をクリックするとプレイリストがダウンロードされます.VLC 等の関連付けられたアプリケーションなどで再生できると思います.
Screenshot_2016-01-31-19-03-53

VLC control をクリックするとVLCのウェブコントローラーが表示されます.URLに認証情報を埋め込んでいるので認証はスキップされます.

問題点や改善点など

  • ブロードキャスト配信の断念. はじめブロードキャスト配信を試したのですが,かなりの頻度でパケットロスしてそのたびに音が途切れました.音が途切れるのはかなりストレスなので諦めました.プレイリストがなくても連続再生可能なのは良かったのですが…….
  • podcast更新時の番組強制終了.更新時にVLCをkillしています.番組の途中で切れてしまうので改善したいです.
  • podcast の音量や音質を揃える.試しにmp3/128kbpsや64kbpsにリアルタイムエンコーディングしつつ配信も試してみましたが Raspberry Pi でもCPU 25%前後なので実用的な感じです.
    帯域を絞ったストリームも同時配信するようにして外で聴きやすくするのもありかもしれません.
  • VLC から他のアプリケーションに変更.今回お手軽なので VLC を利用しましたが Gstreamer や ffmpeg などを試すのもありかもしれません.
  • スピーカーでも再生.環境によっては同時にスピーカーで再生してもいいかもしれません.
  • 番組情報の配信.今は未知のアーティストなどと表示される.アートワークも含めて改善したい.
    Screenshot_2016-01-31-20-50-06
  • 更新間隔の調整.ニュース番組など定時のある番組があるのでそれらに合わせて更新処理を行うようにすると便利かもしれません.
  • 名前解決.AndroidでAvahiが利用できないので家の中のDNSサーバに名前を登録してあげると便利かもしれません.
  • pifmを使ってFMラジオでも視聴.日本だと電波法違反になるので自重しました.


現在は主にAndroidアプリのVLCで再生しています.AndroidとPCはBluetooth A2DPで繋がっていて,PCで聞いています.PCから離れるときはAndroidにイヤホンジャックを差し替えるとシームレスに移動できます.

20160201_01:02:04-5807

Android の Google Authenticator のデータをダンプしてバックアップする

Android の Google Authenticator 色々な認証に使えて便利ですが,以前 Nexus5 を紛失した時や LGL22 でデータが飛んでしまった後復旧が面倒でした.どうにかバックアップが取れないかなと調べてみました.

Android からデータを取得

/data/data/com.google.android.apps.authenticator2/databases/databases がデータが格納されているファイルらしいです.
adb pull で持ってきたいけど権限がないので一旦 /storage/sdcard0/ に cp する

% adb shell
shell@g2:/ $ su
root@g2:/ # cp /data/data/com.google.android.apps.authenticator2/databases/databases /storage/sdcard0/

ローカルPC に退避

% adb pull /storage/sdcard0/databases .

/storage/sdcard0/ に cp したデータを消す.暗号化領域の下のはずだけど一応上書きしてから削除

% adb shell
shell@g2:/ $ su
root@g2:/ # ls -l /storage/sdcard0/databases
-rw-rw---- root     sdcard_r    16384 2015-10-09 22:51 databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # rm /storage/sdcard0/databases
root@g2:/ # ^D
shell@g2:/ $ ^D

データ形式を確認してdump

該当ファイルは file コマンドによると SQLite3 のようなので dump してみる

% file ./databases
./databases: SQLite 3.x database
% sqlite3 ./databases
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE android_metadata (locale TEXT);
INSERT INTO "android_metadata" VALUES('ja_JP');
CREATE TABLE accounts (_id INTEGER PRIMARY KEY, email TEXT NOT NULL, secret TEXT NOT NULL, counter INTEGER DEFAULT 0, type INTEGER, provider INTEGER DEFAULT 0, issuer TEXT DEFAULT NULL, original_name TEXT DEFAULT NULL);
 :

ここで取得した PRIMARY KEY を HOTP TOKEN を割り出す script の "google-authenticator.py に食わせると Android App と同じコードが帰ってくるのを確認しました.勿論普通に認証も可能.

IMG_20151010_012917

ということで要root ですが, /data/data/com.google.android.apps.authenticator2/databases/databases を退避して他の端末に持って行っても動作するかも.少なくとも PRIMARY KEY は入手できるので手動で入力すれば OK ですね.
とはいえ端末紛失時には作りなおしたほうが良いでしょうが.

root が取れない場合は登録時に PRIMARY KEY をメモしておくくらいですかね.QR Code だけしか見えない場合は Google Authenticator に食わせる前に別のリーダーを利用したりすれば可能です
例えば以下のような読み取り内容の場合 6QHI5WW6H3FMJ2ZI が PRIMARY KEY です.

otpauth://t│·········· otp/mk@micro?secret=6QHI5WW6H3FMJ2ZI

Android の所謂Stagefright 問題対応を試す

てことで暫く運用して問題なさそう&思ってたより対応遅そうなのでこちらにもメモ.
所謂Stagefright 問題.

メディアプレイヤーフレームワーク Stagefright に欠陥があり,メディアファイルにより任意のコードが実行可能.対象はAndroid 2.2(Froyo) 以降全てと幅広い.(なお,95%のAndroid が対象らしい.逆に2.1以前が 5% もあるのに驚いたり)
MMS 経由で攻略メディアファイルを送信してユーザの操作なしに乗っ取り可能.日本ではMMS が利用できる環境は少ないけれどこのパターンは気づかないうちに乗っ取られるのがとても怖い.

脆弱性の確認は以下のアプリでも可能.

対策はAndroid 5.1.1_r5 にする,Google が各端末メーカに提供したパッチを配布したのでそれがリリースされるのを待って適用する.
しかし,Nexus でさえやっと8/5 にリリースなので,日本の端末は何時になるだろう……という感じ.

ちなみにCynamonMod は即日対応完了している.

先ずはMMS で勝手にメディアファイルが展開されるのを防げないかと幾つかのアプリを確認してみたがメディアを自動読み込みしないというような設定のあるものは見当たらなかった.

検索したりしていると以下のフォーラムを発見.build.drop でStagefright を無効にしてしまうというもの.

media.stagefright.enable-aac=false
media.stagefright.enable-fma2dp=false
media.stagefright.enable-http=false
media.stagefright.enable-player=false
media.stagefright.enable-qcp=false
media.stagefright.enable-scan=false

build.drop の書き換えは権限さえあれば以下のアプリでお手軽に出来る.

root が無くても書き換えが可能な場合もあるらしいが,AU で契約している端末(KYOCERA URBANO PROGRESSO)はダメだった.

% ./adb pull /system/build.prop
% vim build.prop
% ./adb push ./build.prop /system/build.prop 
failed to copy './build.prop' to '/system/build.prop': Read-only file system
% ./adb shell
shell@android:/$ ls -l /system/build.prop
rw-r--r- root     root         4977 2014-07-29 21:20 build.prop
/dev/block/mmcblk0p12 /system ext4 ro,relatime,user_xattr,barrier=1,nodelalloc,data=journal 0 0

手持ちのAU と契約している端末は2012年5月のものらしい.セキュリティ修正は何時やってくるのか,そもそもやってくるのか…….

可能なら CynamonMod にしてしまいたいところですが,国内端末とかはなかなかですね…….

TeamViewer Linux版 を少し試す & 文字化け対応

[TeamViewer Linux版 あるのか.しらなかった

“Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
(元投稿消えている)

ということでTeamViewer にLinux版があるのを知り試してみました.

導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

% wget http://download.teamviewer.com/download/teamviewer_i386.deb
% sha1sum teamviewer_10.0.41499_i386.deb 
438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
% sha256sum teamviewer_10.0.41499_i386.deb 
0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
% sudo dpkg -i teamviewer_10.0.41499_i386.deb

このとき日本語Linux環境で利用した場合所々文字化けが起こります.
Screenshot from 2015-08-02 08-03-25

TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

  • 修正内容
    /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"

デーモンの再起動

% teamviewer daemon stop
% teamviewer daemon start

次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.