Amazon Kindleで書籍が購入できなくて困る

川尻こだま(@kakeakami)さん の本が出たってことで普段あまり使わないKindleアプリを起動して読もうと思ったのですが,以下のメッセージが表示されて購入処理(無料だけど)できません.

続きを読む

PCでAndroid端末の画面転送と操作が出来るscrcpy

Debian sid amd64環境ではパッケージがあるので簡単です,armhf/amd64/i386環境ではsnap版が存在します.その他幾つかのLinuxディストリビューションではパッケージがあったり,WindowsやmacOSでも動作するようです.

手元ではDebian sid amd64で動作しました.(Raspberry Pi OS armhfにsnap版を入れた環境ではエラーが発生.内容は未だ未確認)

Debian sid amd64環境だと以下のような感じで導入できました.このときAndroid端末は「開発者向けオプション」が有効になっていて,「USBデバッグ」が有効になっている状態でUSB接続されている必要があります.

Debian sid amd64環境での導入例
$ sudo apt install adb scrcpy (1)
$ lsusb (2)
  :
Bus 002 Device 013: ID 05c6:9024 Qualcomm, Inc. SDM439-MTP _SN:472BF8D8
  :
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="05c6" ATTR{idProduct}=="9024", MODE="0660", GROUP="plugdev", SYMLINK+="android%n"' \
| sudo tee -a /etc/udev/rules.d/51-android.rules (3)
$ sudo udevadm control --reload (4)
$ adb devices (5)
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
976d6a56        device
  1. 必要パッケージの導入
  2. AndroidのVID/PIDを確認(ここでは 05c6:9024 )
  3. adbコマンドが利用できるようにAndroid端末をudev roureに登録
  4. udev ruleを反映する
  5. adbコマンドで認識出来るのを確認

この状態で,scrcpy を実行することでAndroidの画面転送が出来ました.普通に操作も出来ます.
スリープ状態のときは画面が真っ黒ですが,マウス右クリックで解除されます.

$ scrcpy
INFO: scrcpy 1.14 <https://github.com/Genymobile/scrcpy>
/usr/share/scrcpy/s...93 bytes in 0.008s)
[server] INFO: Device: TINNO C330 (Android 9)
INFO: OpenGL shaders: ENABLED
INFO: Created renderer: opengl
INFO: Renderer: opengl
INFO: OpenGL version: 3.0 Mesa 20.2.4
INFO: Trilinear filtering enabled
INFO: Initial texture: 720x1280

20201210 21:12:59 2112960.resized20201210 21:12:31 2113779.resized20201210 21:12:30 2115127.resized

導入も簡単だしこれは便利.しかしメイン端末ではPCにUSB接続するとすぐに充電しなくなってしまうので長時間は使えません.

adb のワイヤレス接続の設定をすると別の端末や充電器で充電しながら利用できそうなので試してみました.

対象のAndroid端末をPCにUSB接続した状態で tcpip コマンドでリモート接続できるようにします.

$ adb tcpip 5555
restarting in TCP mode port: 5555

この状態でPCからAndroid端末を取り外し,Wi-Fi接続のIPアドレスを確認します.

PCでadbコマンドでAndroid端末に接続します.

$ adb connect <ANDROID_IP>>:5555

この状態で scrcpy コマンドを実行すると画面が表示され操作できます.充電器などに接続した状態でも利用できます :)

scrcpy には幾つかオプションがあります.便利そうなものとしては最大解像度を指定する -m, --max-size value で解像度を下げて表示できます,
-n, --no-control で表示だけで操作できなくします.
-r, --record file で画面を録画します.
-w, --stay-awake でscrcpyを実行中Android画面をロック,消灯しません.
-S, --turn-screen-off Android端末のスクリーンを消したまま操作できます.

ショートカットでは
Ctrl + h, マウス中キー でホームボタン,
Ctrl + r でAndroid画面回転,
Ctrl + s でアプリケーション切り替え,
辺りが便利そうです,

Ctrl + c でクリップボードのコピーなのですが,一旦Android側でコピーした後に Ctrl + c でPCへのクリップボードコピーのようです,Ctrl + v の貼り付けもAndroid感での貼り付けで,PCからAndroidのクリップボード貼り付けは Ctrl + Shift + v でした.

詳細は scrcpy --help を参照してください.

これでElectronアプリでPCで動かしているアプリをスマホで……とも思ったのですが日本語入力などはちょっと面倒.もう少し様子見しようと思います.

LinuxとAndroidで動作するGoogle Keep代替を探す

Google Keepはメモアプリです.Evernoteに似ていますがもう少し機能が少ない感じ.

自分は主にTodoや買い物リストなどにKeepを利用しています.PCやAndroidで買い物をメモしてお店でAndroidのメモを見ながら買い物してチェックボックスをチェックしていく感じです.
メモの数もまだ少ないし使っている機能も少ないので代替になるものがあるのではと探してみました.

要件としてはこんな感じ

  • OSS
  • サーバ側はWebDAVなどでセルフホストが利用可能
    • 若しくはクラウドサービスを使うけどE2EEが利用可能
  • LinuxとAndroidで動作する
    • Android版では買い物メモをデスクトップウィジットで表示したい

Joplin

現在EvernoteとZim Wikiから乗り換えて作業メモなどに利用しています.サーバはNextcloudなどWebDAVが利用でき,単体でE2EEが可能です.
LinuxではAppimageやnodeでのcli版もあり,cli版はarmなどでも動作します.

既にあるノートを全部同期するのは大変,同期ディレクトリを分けることは出来ますがクライアントは1箇所しか登録できないので難しい.ノートブック単位で同期できればいいのですが今の所出来ないようです

それとAndroidでのウィジットはフレームワークでサポートされていないので今の所サポートされないようです(◞‸◟)

とりあえず見送りです.

Carnet

Google Keep代替のアプリのようです.Linux,Android,Webで利用でき,デスクトップ版はElectron製のAppimageが用意されていてGoogle Keepからのインポート機能も付いています.これはGoogle TakeoutでExportして展開したものを指定することでインポートできるようです.
同期先サーバはNextcloudかCarnetのサービスの https://carnet.live です.

今の所暗号化は未対応.

AndroidでのウィジットはIssueに上がっています.

Linux armで動作しない&暗号化未対応だけれどelectronではないLinuxアプリを開発中だし暗号化もウィジェットもIssueにあがっているので将来に期待しつつGoogle Keepをインポートして試してみようと思います.(Takeout待ち……)

add)
Web版はhttps://carnet.live だけかと思っていたのですが,NextcloudアプリのCarnetを導入することでNextcloudでWeb版が利用できます.

add)
インポートしてみました.

termux-APIのTermux-usbを少し試す

Androidでdeb系ぽいLinux環境を実現できるTermuxからAndroidを操作するAPIのTermux-APIのupdateがありました.

termux api usb 01

Add a USB API compatible with libusb – see https://wiki.termux.com/wiki/Termux-usb for more information.

なんだか気になる更新内容です.

早速試してみます.

まずはパッケージを最新にして関連パッケージを導入
$ pkg update
$ pkg install root-repo
$ pkg install termux-api
$ pkg install libusb
$ pkg install clang
termux-usb コマンドでデバイスを確認してアクセス許可を与える(ここではUSBメモリ)
$ termux-usb -l
[
  "/dev/bus/usb/001/004"
]
$ termux-usb -r /dev/bus/usb/001/004
Access granted.

アクセスの許可はAndroidの画面で操作が必要です.

termux api usb 02

ちなみに,USB Keyboardは認識できませんでした(Androidでは利用できているのに!)

lsusb的にusb情報を表示するプログラムのサンプルをコンパイルして実行
$ cat << __EOF__ > usbtest.c
> $ cat usbtest.c
> #include <stdio.h>
> #include <assert.h>
> #include <libusb-1.0/libusb.h>
>
> int main(int argc, char **argv) {
>     libusb_context *context;
>     libusb_device_handle *handle;
>     libusb_device *device;
>     struct libusb_device_descriptor desc;
>     unsigned char buffer[256];
>     int fd;
>     assert((argc > 1) && (sscanf(argv[1], "%d", &fd) == 1));
>     assert(!libusb_init(&context));
>     assert(!libusb_wrap_sys_device(context, (intptr_t) fd, &handle));
>     device = libusb_get_device(handle);
>     assert(!libusb_get_device_descriptor(device, &desc));
>     printf("Vendor ID: %04x\n", desc.idVendor);
>     printf("Product ID: %04x\n", desc.idProduct);
>     assert(libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, buffer, 256) >= 0);
>     printf("Manufacturer: %s\n", buffer);
>     assert(libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, 256) >= 0);
>     printf("Product: %s\n", buffer);
>     assert(libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, buffer, 256) >= 0);
>     printf("Serial No: %s\n", buffer);
>     libusb_exit(context);
> }
> __EOF__
$ gcc usbtest.c -lusb-1.0 -o usbtest
$ termux-usb -e ./usbtest /dev/bus/usb/001/004
Vendor ID: 13fe
Product ID: 3600
Manufacturer:
Product: USB DISK 2.0
Serial No: 07AC10081C16381A

てことでTermuxからlibusbが使えるようになったようです.

ちなみに,lsusbを実行するとこんな感じです.rootedな端末だと使えるんでしょうけど.

$ lsusb
lsusb: /sys/bus/usb/devices: Permission denied
$ tsudo lsusb
/data/data/com.termux/files/usr/bin/tsu: 146: exec: : Permission denied
環境
$ dpkg-query -W termux-api libusb clang
clang   8.0.1-4
libusb  1.0.23-rc1-1
termux-api      0.47
$ adb shell dumpsys package com.termux.api | grep -E 'versionCode|versionName'
    versionCode=38 minSdk=21 targetSdk=28
    versionName=0.38
$ adb shell dumpsys package com.termux | grep -E 'versionCode|versionName'
    versionCode=75 minSdk=21 targetSdk=28
    versionName=0.75
$ getprop ro.bootimage.build.fingerprint
essential/mata/mata:10/QP1A.190711.122/420:user/release-keys
$ getprop ro.build.version.security_patch
2019-09-05
$ getprop ro.product.cpu.abilist
arm64-v8a,armeabi-v7a,armeabi

ffmpegでgifからmp4に変換した動画がInstagramに投稿できない

先日のttygifで作成したanimation gifをInstagramに投稿しようとしたところ,animation gifは投稿できるけどanimationせず1枚目の画像が表示されるだけです.ffmpegでmp4に変換するだけで良さそうだけど投稿できません.白い動画でプログレスがずっと表示され,「次へ」を押すとアプリ自体が落ちてしまいます.動画は同端末のvlcなどでは問題なく再生できています.

IMG 20191005 195714

$ ffmpeg -i tty.gif tty.mp4

音声がないのがいけないのかな?と anullsrc フィルタで無音の音声トラックを追加してみても変わらず.

$ ffmpeg -f lavfi -i anullsrc -i tty.gif -shortest tty.mp4

手詰まりになって検索してみると以下のページを発見.

このページによると以下の条件で投稿できないようです.

  • 3秒以下の動画
  • Instagramが受け付けないカラーエンコーディングの利用

今回の動画は20秒ほどなので長さは問題無さそうです.

うまく行っていなかった動画を確認すると元記事と同様 yuv444p を使っているようです.

$ ffprobe tty.mp4 2>&1 | grep -E "Stream.*Video"
    Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 802x750, 73 kb/s, 4.17 fps, 4.17 tbr, 12800 tbn, 8.33 tbc (default)

てことで,以下のようにカラーエンコーディングに yuv420p を指定して変換すると投稿できました.(音声トラックはあってもなくてもどちらでもOKだった)

$ ffmpeg -i tty.gif -pix_fmt yuv420p -filter_complex "scale=trunc(iw/2)*2:trunc(ih/2)*2" tty.mp4
$ ffprobe tty.mp4 2>&1 | grep -E "Stream.*Video"
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1058x750, 97 kb/s, 16.08 fps, 16.08 tbr, 12352 tbn, 32.17 tbc (default)

この投稿をInstagramで見る

pfetch logo #unix

matokenさん(@matoken)がシェアした投稿 –

公式の文章があればいいんですが見つからず.以下が少し近い?

変換環境
$ dpkg-query -W ffmpeg
ffmpeg	7:4.1.4-1+b2
$ lsb_release -dr
Description:	Debian GNU/Linux bullseye/sid
Release:	unstable
$ uname -m
x86_64
投稿環境
$ adb shell dumpsys package com.instagram.android | grep -E 'versionCode|versionName'
    versionCode=175574628 minSdk=23 targetSdk=28
    versionName=113.0.0.39.122
$ adb shell getprop ro.bootimage.build.fingerprint
essential/mata/mata:10/QP1A.190711.122/420:user/release-keys
$ adb shell getprop ro.build.version.security_patch
2019-09-05
$ adb shell getprop ro.product.cpu.abilist
arm64-v8a,armeabi-v7a,armeabi

OsMo.mobiがDownしたのでPhoneTrackを使う

近頃はOsMoで検索すると,DJIのドローンやジンバルが出てくるようになっていますがOsMoはそういうものではなく,位置情報共有サービスです.スマートフォンにアプリを導入して共有URLで今自分の居る場所を共有できます.Glympseなどが類似サービスになると思います.

このOsMoですが,最近サーバがダウンして利用できなくなりました.(一応オフラインでローカルにログを取得することは可能)
OsMoのアプリ(OsMoDroid)を導入していると,telegramに誘導するメッセージが表示されるようになりました.

IMG 20190821 235148

20190824 20:08:03 4249

このチャンネルを覗くとサーバが(物理的に?)失われて,更にバックアップが05/15のものしか無いようで,そのデータで復旧を試みようとしているけど未だホスト先を探している状態のようです.
復旧までにはまだまだ掛かりそうなです.

Константин Гам, [22.08.19 02:57]
Что произошло? Сервер приложения OsMo и сайта повреждён, сгорел диск. Потеряны все данные пользователей. Из-за несработавшего бекапа, последняя полная копия проекта датируется 15 мая 2019 года.
Диск заменили, но требуется много работы по запуску проекта с нуля и дальнейшее накатывание копии от мая…​

Собираем на восстановление сервера осмо (часы + сервера + тонна кофе), 5200/60000 руб

VISA: 4083 9720 5573 2954
QIWI: +7 (921) 426-74-00

В комментарий указывайте email аккаунта, если есть или будущего. Всем кто донатит 1500+ рублей, максимальный PRO пожизненно.
Если комментарий недоступен, кидайте время и место платежа в почту osmo.mobi@gmail.com

OsMoが使えない間の代替サービスを探そうと思いましたが,そういえば以前PhoneTrackというアプリケーションを導入していたのを思い出しました.

PhoneTrackはNextcloudのアプリケーションとして導入して,位置情報アップロード用のURLを発行して各種アプリケーションで位置情報をアップロード,この情報を共有URLで共有することも出来ます.
対応アプリケーションも色々あります.私はOsmAnd+,Uloggerを利用しています.
以下はOsmAnd+での設定例です.

IMG 20190827 084323
IMG 20190827 084402

位置情報共有用のURLは長いのですが,QRcodeで読み取ることも出来ます :)

20190827 08:08:46 30083

長時間動かすことが多いので消費電力の少ない設定やアプリを探そうと思います.

Android で Wi-Fi 経由の adb を有効にして backup

Android 端末側でUSB デバッグを有効にしてUSB接続する.
デバイスが認識されているか確認.

$ adb devices
List of devices attached
PM1LHMA861102833        device

no permissions と言われた場合

$ adb devices
List of devices attached
PM1LHMA861102833        no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html]

は以下のようにして udev のルルーを追加する.VID/PID(以下の例では2e18, c032)部分はdmesgやlsusbで確認して自分の端末のIDに書き換える.

$ echo '# Essential PH-1
> SUBSYSTEM=="usb", ATTR{idVendor}=="2e17", ATTR{idProduct}=="c032", MODE="0666", GROUP="adbandy"' | sudo tee /etc/udev/rules.d/51-android.rules
# Essential PH-1
SUBSYSTEM=="usb", ATTR{idVendor}=="2e17", ATTR{idProduct}=="c032", MODE="0666", GROUP="adbandy"

その後USB を接続し直して確認し直す.

HostPC の adb コマンドで tcpip コマンドで接続できるようにして,connect コマンドで Android 端末の ip を指定して接続します.
5555 はポート番号で 5555 が規定値.既定値から変更した場合は,connect コマンドの ip の後ろにポート番号の指定が必要になります.

$ adb tcpip 5555
$ adb connect 192.168.1.200
connected to 192.168.1.200:5555

この状態でusb 接続を解除して devides コマンドに居ます :)
後は普通に使えます.

$ adb devices
List of devices attached
192.168.1.200:5555      device
$ adb logcat|head -1
--------- beginning of crash
^C

そして本命のバックアップ.

$ time adb backup -f ./PH-1.ab -all
Now unlock your device and confirm the backup operation...

real   26m2.104s
user    0m0.171s
sys     0m5.725s

用事が終わったら切断しておいたほうが安心ですね.

$ adb disconnect 192.168.1.200
disconnected 192.168.1.200
$ adb devices
List of devices attached
環境(Android)
mata:/ $ getprop ro.bootimage.build.fingerprint
essential/mata/mata:9/PQ1A.190105.058/496:user/release-keys
mata:/ $ getprop ro.build.version.security_patch
2019-05-05
mata:/ $ getprop ro.product.cpu.abilist
arm64-v8a,armeabi-v7a,armeabi
環境(HostPC)
$ dpkg-query -W adb
adb     1:8.1.0+r23-5
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

プライバシーやセキュリティが守られるprotonVPNの無料プランを少し試す

セキュアなメールサービスの ProtonMail と同じ Proton Technologies AGの VPN サービスの ProtonVPN を少し試してみました.
存在は知っていましたが接続するには専用アプリのみが必要だと思いこんでいました.openVPN で接続できるようなので試してみました.

ここでの VPN は拠点間などではなくスマートフォンやPCを公衆無線LANなどで接続したとき向けの個人向けVPNとしての話です.

無料VPNサービスはいろいろ見つかりますが,無料の代わりに個人情報を収集して販売していたりプライバシーポリシーでそういうことをしないとしつつも実際は行っていたりと怪しいものが多いです.

知識のある人であれば自宅にSBCなどで低価格,低消費電力でVPNサーバを用意したり,VPNサービスより安い価格のVPSサービスにセットアップして利用するなどといったことが可能ですが,知識のない人にサーバを立ててもらうのは難しいです.(一旦設定した後も使い続ける間はOSやサービスのアップデートなども必要だし……)

ProtonVPN は有料プランの他に無料プランがあり,無料プランでもプライバシーやセキュリティが守られるとなっています.無料はお試し版という扱いですね.無料プランでは接続できるサーバが限られており,無料プランで接続できるサーバは事に比べて利用率が高くなっています.時間帯によっては100%になっているので速度は低下すると思います.

実際にプライバシーやセキュリティが守られるのかが不安ですが,もともとジャーナリストや活動家を守るために作られたものであったり,MozillaがFirefoxに向けてのVPNサービスにProtonVPNを選ぶなどそれなりに信頼できそうな気がします.(少なくとも今の時点では)

ProtonVPN アカウントの作成

ProtonVPN を利用するためにアカントを作成します.
手順は以下に書かれています.メールアカウントが別途必要です.また,ProtonMail のアカウントを使ってProtonVPN のアカウントを作成するとこも出来るようなので私は ProtonMail でアカウントを作成しました.

Network Manager を利用して ProtonVPN に接続

お手軽にNetwork Manager の openVPN プラグインを利用して接続します.
以下に手順があるので真似します.

(GUIのNetwork Manager 以外にも command-line や IKEv2 での接続方法もあるようです.)_

必要なパッケージを導入します.

$ sudo apt install openvpn network-manager-openvpn-gnome resolvconf

ProtonVPN の設定ファイルを入手します.

  • ProtonVPN のサイトでログイン
  • Download ページに移動
  • plathome で「Linux」を選択
  • protocol はそのまま「UDP」
  • 無料プランでは「Secure Core configs」,「Country configs」は利用できないので「Server configs」を選択.
  • 後は任意の接続でダウンロード
    • 今回は「Japan」の「Japan Free#2」をダウンロードした

続いてNetwork Manager の設定をします.

  • Network Manager のアイコンをクリックして,「VPN 接続(V)」->「VPN を設定(C)」を選択
  • 「接続の種類を選んでください」というウィンドウで,「保存した VPN 設定をインポートする…」を選んで「作成(R)…」を押す
    20190306-22-03-15-15118.jpg
  • ProtonVPN のページでダウンロードした設定ファイルを指定してインポートする
  • 次の設定画面のVPN タブで「ユーザ名」,「パスワード」を入力する.ユーザ名,パスワードは protonVPN のページで確認できる.(protonVPNサービスのものとは別で自動生成されている)
    20190306-22-03-21-8927.jpg
    20190306-22-03-05-17942.jpg

接続してみます.

  • Wi-Fi などのネットワークに接続した状態でNetwork Manager のアイコンをクリックして,「VPN 接続(V)」->設定したprotonVPN をクリック

リモートアドレスなどを確認するとVPN のものに変わっていました.

$ curl ifconfig.me/ip
185.242.4.204
$ dig | grep -i server:
;; SERVER: 10.8.8.1#53(10.8.8.1)
$ /sbin/ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.3.2  netmask 255.255.255.0  destination 10.8.3.2
        inet6 fe80::642a:6858:4f6:403  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (不明なネット)
        RX packets 11489  bytes 8367918 (7.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11204  bytes 2610990 (2.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ whois 185.242.4.204
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See -ripe.net - www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '185.242.4.0 - 185.242.4.255'

% Abuse contact for '185.242.4.0 - 185.242.4.255' is 'abuse@m247.ro'

inetnum:        185.242.4.0 - 185.242.4.255
netname:        M247-LTD-TOKYO
descr:          M247 LTD Tokyo Infrastructure
country:        JP
geoloc:         35.622214 139.7455763
admin-c:        GBXS24-RIPE
tech-c:         GBXS24-RIPE
status:         LIR-PARTITIONED PA
mnt-by:         GLOBALAXS-MNT
remarks:        ---- LEGAL CONCERNS ----
remarks:        For any legal requests, please send an email to
remarks:        ro-legal@m247.ro for a maximum 48hours response.
remarks:        ---- LEGAL CONCERNS----
created:        2018-01-17T11:32:30Z
last-modified:  2018-11-29T11:54:41Z
source:         RIPE

role:           GLOBALAXS TOKYO NOC
address:        2 Chome-1-17 Higashishinagawa, Shinagawa
address:        Tokyo 140-0002, Japan
abuse-mailbox:  abuse@m247.ro
nic-hdl:        GBXS24-RIPE
mnt-by:         GLOBALAXS-MNT
created:        2017-10-17T16:49:19Z
last-modified:  2018-07-18T11:04:41Z
source:         RIPE # Filtered

% Information related to '185.242.4.0/24AS9009'

route:          185.242.4.0/24
origin:         AS9009
mnt-by:         GLOBALAXS-MNT
created:        2018-01-17T11:33:29Z
last-modified:  2018-01-17T11:33:29Z
source:         RIPE

% This query was served by the RIPE Database Query Service version 1.92.6 (WAGYU)

速度については確認した回線がADSL で元々細いせいかVPN利用時,非利用時であまり変わりませんでした(400kB/s程).公衆無線LAN などでも試してみたいところです.

ちなみに,AndroidスマートフォンのProtonVPN を携帯回線で利用した状態で Wi-Fi 接続したら VPNのセッションは張り直されず Wi-Fi を利用しているつもりで携帯回線を使い続けていたということがありました.ちゃんと検証していないですが気をつけたほうが良さそうです.
OpenVPN Connect のほうがいいかも

Android環境

Android のバージョン:9
セキュリティパッチレベル: 2019年3月5日

Linux環境1

$ dpkg-query -W openvpn network-manager-openvpn-gnome resolvconf
network-manager-openvpn-gnome   1.8.10-1
openvpn 2.4.7-1
resolvconf      1.79
$ lsb_release -dr
Description:    Debian GNU/Linux buster/sid
Release:        unstable
$ uname -m
x86_64

Linux環境2
$ dpkg-query -W openvpn network-manager-openvpn-gnome resolvconf
network-manager-openvpn-gnome 1.8.10-1
openvpn 2.4.6-1ubuntu3
resolvconf 1.79ubuntu10
$ lsb_release -dr
Description: Ubuntu Disco Dingo (development branch)
Release: 19.04
$ uname -m
x86_64

Android 4.0 以降を DNS-over-HTTPS 対応にする Intra を少し試す

Alpabet の技術インキュベータのJigsawというところが作った Intra という Android アプリをリリースしました.

通常の DNS は暗号化されず改ざんが可能です.Intra は DNS を暗号化する DNS-over-HTTPS を Android 4.0 以降で利用できるようにするアプリです.

31226501238 7a637260f1
31226501848 d563502159
31226502538 db0efcae0a

VPN接続の確認がされる

31226505068 5cc4feeeb4

DNS保護状態

31226508208 857594ce32
31226510648 7047e8ef20

DNS-over-HTTPS サーバの既定値はGoogleで,Cloudflareも選択できる.その他のサーバも手動で指定できる

31226511688 8b413ac9b8

DNS は 8.8.8.8 の Google を見に行っているのがわかる

31226512688 975b1b6655

VPNが有効になっているが,IPはそのまま

45100103761 d9692f0075

ダッシュボード画面で最近のクエリの確認も出来る

30162180647 1f64018b79

試した環境は仮想環境のAndroid 8.1.0(x86_64), Intra 1.0.0

44189409735 9ecf88c2c2
44380132464 4d9cbeacae

自分は基本的に出先では VPN を利用しているので必要ないかなと思うのですが,お手軽に無料でかつ古いデバイスにも対応しているので良さそうですね.ちなみにこの機能は Android Pie には標準搭載されているそうです.

#Wi-FiなんかでDNS改ざんして認証画面に飛ばしたりするようなのはどういう動きになるんだろう?

ObscuraCamで顔写真に自動的にモザイクをかける(Android)

この記事で紹介されていたObscuraCamを試してみたところいい感じです.

画像の中の顔を認識してモザイクをかけてくれます.認識率は思ったよりも良さそうです.認識に漏れても簡単に手動でモザイクをかけることも出来ます.手動の場合,モザイクの他に黒塗りやマスク(ヒゲメガネ,スマイリー,マスクマン)も選べます.

New photo added to gallery
Screenshot_2018-07-13-21-22-14

イラストにも試してみましたがやはりあまり認識しません.でもおじさんは認識して以下の今井哲也(@imaitetsuya)さんのイラストだとそれぞれ蔵六と内藤だけモザイクに.

イベントとかで写真を撮ってすぐ投稿というときに良さそうです.

環境

  • LGL22
  • Android 4.4.2
  • ObscuraCam v4.0.1-alpha-1