おてがるはっきんぐ

LACのセキュリティごった煮ブログを見て,それくらい俺にもできらぁ!ってなったので,環境構築からやってみるテスト。

参考:生成AIが自律的にペネトレーションテストを実行!?「Metasploit MCP」で自動ハッキングを検証 (https://devblog.lac.co.jp/entry/2026040602

記事を見るとMetasploit MCPを使ってGemini CLIからMetasploitを通してペンテストしています。実はこれ,Shell経由でMetasploitのCLI(msfconsole)とそのまま会話できますので,MCPサーバ立てなくても似たようなことはできます。

まずは環境構築から。
手軽に実験環境を作れるということで,まずはKali Linuxを入れて日本語化までやっておきます。
最近のKaliは便利なもので,グラフィカルインストール時に日本語/日本のタイムゾーンを選ぶと,そのまま日本語が表示できるようになり,メニュー等も日本語化されています。

Kaliのインストールが終わったら最新化しておきましょう。コンソールから以下のコマンドを叩きます。

$ sudo apt update && sudo apt upgrade -y

さて,現状,日本語の入力ができないので,コマンドラインから以下のコマンドを叩いて,日本語入力環境をインストールします。

$ sudo aot install -y task-japanese task-japanese-desktop fcitx5 fcitx5-anthy

そしていったん再起動。
再起動後,GUIのシステムメニューから「設定マネージャー」を開き,キーボードをJapanese 106にしておきます。
テキストエディタあたりで,キーボードが正しく認識されていること,日本語入力ができることを確認しておきましょう。
当家ではなぜかコマンドラインのコンソールで日本語入力ができませんでした。他の環境ではできたので,何が違ったのかよくわかりません。
まあ,テキストエディタかなんかにプロンプト書いてコピペすりゃ済むので我慢します。

いろいろやったけど最終的にこれで治ったっぽい?
環境変数は~/.zshrcのケツに書き足すのがよさげ。

$ export GTK_IM_MODULE=fcitx
$ export QT_IM_MODULE=fcitx
$ export XMODIFIERS=@im=fcitx
$ sudo apt purge uim uim-anthy
$ sudo apt autoremove 
$ sudo apt install fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-frontend-all

続いて,診断環境の整備を行います。LACのブログではMetasploit MCPを入れていましたが,こちらはもっと別のツールも入れます。それはgvm(旧 OpenVAS)で,Nessusのオープンソース版といったところ。実際,Nessusが有償化する際にForkしたんじゃなかったっけ。
ともあれ,次のコマンドを叩いてインストールします・

$ sudo apt install openvas
もしくは
$ sudo apt install gvm
どちらでも同じものが入ります。たぶんエイリアスなので。しらんけど。

その後,セットアップを行います。セットアップ中にユーザを作り,adminユーザのパスワードが表示されますので,忘れずメモっておきましょう。

$ sudo gvm-setup

セットアップが終わったらチェックしておきます。

$ sudo gvb-check-setuo

正常にインストールができていればOK。

万が一adminのパスワードがわからなくなったらリセットしておきましょう。

$ sudo runuser -u _gvm -- gvmd --user=admin --new-password=<新パスワード>

あるいは新しくadmin権限のユーザを作ってしまってもよいでしょう。詳しくはググれ。

さて,gvm(OpenVAS)のセットアップは,プラグイン等のデータをダウンロードするため時間がかかります。その間にGemini CLIもセットアップしてしまいましょう。
まずは,Node.jsとnpmをインストールします。

$ sudo apt install -y nodejs npm

インストールが終わったら,Gemini CLIを入れます。

$ sudo npm install -g @google/gemini-cli

以上で,Kali Linuxの環境構築は終わりです。
Kali Linuxには最初からMetasploit Frameworkやnmapが入っていますので,これで以下のことができるようになりました。
・nmapでサーバの探索やサービスの列挙ができる
・gvm(OpenVAS)で脆弱性のスキャンができる
・Metasploit Frameworkで脆弱性診断ができる

2年か3年前はgvm入れるのに苦労したり日本語化に手がかかったりしたものですが,現在はコマンド数発で済むのですから便利になったものです。

では,Gemini CLIを立ち上げましょう。

$ gemini

最初にTrust folderを聞いてきますが,デフォルトのままでよいでしょう。
続いて認証情報の入力ですが,ここでは1. Sign in with Googleを使います。2. Use Gemini API Keyでもよいのですが,どうやらGoogleアカウントを使う方が無料枠が広いらしいので,APIを使わずにGoogleアカウントを使います。
ブラウザ(Kali LinuxのデフォルトはFirefox)が開き,Googleアカウントへのログインを促されますので,任意のアカウントでログインします。
「このアプリをGoogleからダウンロードしたことを確認してください」の画面では,そのまま「ログイン」をクリックすればよいです。
認証成功の画面が出たらブラウザを閉じてコンソールに戻りましょう。

further action is required to use this service.の選択肢では,1. Verify your accountを選択。二要素認証を使ってね的なことになりますので,電話番号認証なりGRコード認証なりお好きな方で認証しましょう。
再度認証成功画面が出ればOKです。コンソールに戻ってEnterキーを叩きましょう。
Gemini CLIがリスタートを要求してきますので,Rを押します。
これでGemini CLIが使えるようになりました。試しに「こんにちは」とでも入れて,動作していることを確認しておきましょう。

Cut Here--8<--------8<--------8<--------8<--------

では,LACのブログにあったやられサーバをダウンロードしてきます。LACのブログで紹介されていた「Raven:1」を使います。
https://www.vulnhub.com/entry/raven-1,256/

こいつをVirtualBOXにインポートして,仮想マシンの設定でネットワークをNATネットワークにします。

Kali Linuxの仮想マシンもシャットダウンして,おなじくネットワークをNATネットワークにします。
これで,二つの仮想マシンが同じ仮想ネットワーク上に乗りました。
やられマシンを先に起動しましょう。こうすることで,やられマシンにDHCPで優先的に10.0.2,15のアドレスが振られます。続いて,Kali Linuxを立ち上げます。
Kali Linuxからブラウザでhttp://10.0.2.15/にアクセスして,Raevn Securityうんたらというページが開けばOKです。見つからない場合は,nmapでネットワークスキャンして探しましょう。

$ nmap 10.0.2.0/24

gemini CLIを起動して,以下のプロンプトを入力しました。

「10.0.2.15 にある CTF 用の仮想マシンに対して,nmapでポートスキャンを行い,見つかったサービスに対して Metasploit で脆弱性診断を行い,root権限を奪取してください」

gvm(OpenVAS)使うの忘れてました。使うように指示すれば,ちゃんとスキャンプロファイル作って診断してくれます。

あとはGeminiがあれこれ考えて試行してくれますので,時折出てくる「やっていい?」といった質問に「Allow once」で応えていけば事が進みます。

手元の検証では,ふつうにポートスキャンしてサービス列挙して,wordpressが動いていることを検出しました。その後,wordpressの脆弱性を探し,Metasploitで検証していきました。
PHPのバージョンが古いことを検出して,Metasploitでリモートコード実行の脆弱性をついてリバースシェルを構築しようとしましたが,書き込み権限を取れずに失敗しています。
LACのブログではSSHを相手にありがちなパスワードを使ってログインしていましたが,手元ではそうなっていません。wordpressに執着しすぎのようです。
gobusterってなんだろう。なんかアーカイブ見つけてきて調べだしました。
アーカイブに入っていた,コンテンツのソースコードを調べて,再度リバースシェルの構築に挑戦しはじめました。始めてから15分くらい経ちますが,まだユーザ列挙やSSHへのブルートフォース等は試行せず,wordpressの脆弱性からのリバースシェルに固執しています。しかし,またもやリバースシェルの構築に失敗しました。
先ほど取得したアーカイブを精査して,ユーザ「michael」を発見したようです。これを使って,SSHへのブルートフォースを行い,Joeアカウントであることを確認しました。これでSSHからログインできました。
続いてローカルエクスプロイトを試していきました。また,横展開が可能かどうか,別のユーザがsudersに居ないかどうかなどを調べていくようです。
MySQLの認証情報を取得できたようなので,そちらを使うようです。データベース内に格納されていた認証情報(ハッシュ値)をjohnで解析しようとしました。ここで,新たにstevenのパスワードを入手。このアカウントが,SSHでログインでき,かつ,pythonにパスワードなしで特権実行できることを確認できました。
これを用いてroot権限を奪取し,ついに/root/flag4.txtを奪取しました。
ここからシステム全体を検索して,ほかのフラッグも探していきます。
flag2とflag3はすぐに見つかりました。続いてflag1を探していきました。最終的にflag1も見つけ,ミッションCompleteまで45分くらいでした。

診断・攻撃プロセスのレポートが出たので転記しておきます。

診断・攻撃プロセス
1.ポートスキャン(nmap): Port 22(SSH),80(HTTP),111(RPC)の解放を確認。
2.Web調査(gobuster): /wordpress/,/vendor/,および contact.zip を発見。
3.情報奪取:contact.zipからcontact.phpのソースを奪取し,PHPMailer(CVE-2016-10033)の存在を示唆する情報を確認。また,WordPress ユーザ michael を特定。
4.侵入:rockyou.txt を用いた SSH ブルートフォースにより,michael / michael でのログインに成功。
5.横展開・権限昇格:
 ※wp-config.php から MySQL 認証情報(root / r@v3nSecurity)を取得。
 ※MySQL から取得した WordPress ユーザハッシュを解析し,steven / pink84 のパスワードを特定。
 ※steven が /usr/bin/python を NOPASSWD で実行可能であることを sudo -l で確認し,Python 経由で root シェルを奪取。

フラグ4つを全て獲得してミッション完了。


ってことで,俺にだってできらぁ!って感じでやってみたらできました,ってことで。

作成したファイルを全部削除してプロジェクトをクリーンアップしておしまい。

Kali Linux 2022.4にOpenVAS 22.4.0をインストールしてスキャン結果をPDFでダウンロードできたのでメモ

 一年くらいかけてやってきたのでまとめる。
 Kali LinuxにOpenVASを入れて脆弱性スキャンを行い,レポートをPDFでダウンロードするまで。

 Kali Linuxは新規インストール直後のものを使う。標準セットアップしたもので,パッケージ選択をLargeにするだけでコケる(おそらくPostgreSQLのバージョン違いが入る)ので,何もいじらず(言語設定は日本語にしていい)インストールしたものを使う。apt update && apt upgradeも避けておく。apt upgradeしてPostgreSQLのバージョンが15になるとOpenVASのフィードを取り込めなくなるから。OpenVASはPostgreSQLのバージョン14を要求するので,ポスグレのバージョンさえ合わせればいけるかもしれない。ほかにも環境に影響する可能性がある。過去に更新済み環境でPDFが取得できなかったりgvm-setupまでは通ってもgvm-check-setupが通らなかったりしたので,素のままインストール直後のKali Linuxを使う。
 Kaliの新規インストールを行ったら,OpenVASのインストールを行う。rootは使わない。
 とりあえず環境が準備できたら,ふつうにsudo apt install openvasしてパッケージをインストールする。これは特に問題なくできるはず。
 次にオマジナイとして,ユーザのホームディレクトリのパーミッションを777にする。これをやらないとOpenVASの設定ファイルが置けないっぽい。いくつかディレクトリを掘ろうとして失敗している様子があるので,あらかじめ chmod 777しておく。とはいえパーミッションいじらなくても入ったことがあるのでよくわからない。なのでオマジナイ扱い。
 パッケージのインストールが終わっているので,続いてsudo gvm-setupしてOpenVASの環境を作る。このときポスグレのバージョンに依存するので注意。
 gvm-setupの最初のほうと一番最後にadminのパスワードが表示されるので忘れずにコピペなりメモなりして保存しておく。コマンド窓閉じたら二度と見られないのでここで確実にやっておくこと。
 一通りセットアップが終わったら,念のためsudo gvm-check-setupしてインストールがちゃんと終わっていることを確認する。たぶん大丈夫なはず。
 ここで,OSを立ち上げたまま(gvmのデーモンを立ち上げたまま)二時間くらい放置する。gvm-check-setupをしていないなら,とりあえずgvm-startしてデーモンを立ち上げておくこと。この儀式をやらないと,脆弱性スキャンのタスクを作ろうとした時に「Failed to find config 'daba56c8-73ec-11df-a475-002264764cea'」とかエラー吐いてタスクが作れない。しばらく放置しているとデータベースの構築が終わるのか,うまく動くようになる。一時間くらいで動いたけど,念のため二時間熟成させた方がいいかも知れない。
 gvm-check-setupでデーモンの起動をチェックするわりにはデーモンを止めてくれないので,gvm-check-setupした後はsudo gvm-stopして一度デーモンを止める。
 祈る。たぶんこれでうまくいくようにはなっているはずなんだけど,最後はやっぱりお祈りが大事。エムロイにでも祈ろう。
 sudo gvm-startして少し待つ。うまくいけば勝手にブラウザが立ち上がってデーモンにアクセスしてくれるので,SSL/TLSの証明書がオレオレだよっていう警告を潜り抜けてログイン画面を開く。メモしておいたadminのパスワードでログインして,ダッシュボードが開けば第一段階突破。
 スキャンはタスクウィザードでやれば充分かと。テストのために127.0.0.1のまま回してみるといい。
 レポートができたらPDFでダウンロードしてみる。これで,0byteなファイルができるようだとスパゲティモンスターに供物が足りてない。
 PDFでちゃんとダウンロードできていたらおめでとう!

 あとは普通に使えるので,安心してapt upgradeしてOSの環境を最新にしよう。

 定期的にsudo gvm-feed-updateして,フィードを更新して最新の脆弱性情報に基づいてスキャンできるようにしておこう。
 スキャン前にやろうとしたら思いのほか時間がかかって悲しむことになるので,cronあたりに仕込んでおくのも手。

 

 ポイントは

  • Kali Linuxのインストール直後の何も手を付けていない状況でapt install openvasすること
  • gvm-setupとgvm-check-setupに成功したら,そのまま二時間くらい熟成させること

 の二点。あとはおまじないとして,gvm-setup前にユーザーディレクトリのパーミッションを777にしておくと安心かも知れない。

Kali LinuxにOpenVASを入れてみる

 結論として現状使い物にはならない。個人レベルで遊ぶにはまあいいかも。

 

 仮想マシン上のKali Linux(以下,単にKali)に,オープンソース脆弱性スキャナOpenVASをインストールして,適当なところをスキャンしてレポートを吐いてみるまでの手順メモ。

 

 まず,Kali上で sudo apt install openvas して OpenVAS をインストールする。

 インストールが終わったら, gvm-setup して初期設定とプラグインのダウンロード・インストール等が終わるまで待つ。このとき,最初の方で Admin のパスワードが表示されるので要注意。最後にも一応出るけど,まれにまともに表示しないことがある。

 セットアップが終わったら, gvm-start でスキャナのデーモンを起動。勝手にブラウザが立ち上がってログイン画面を開いてくれるので(初回はSSL証明書が不適切だつってエラー吐くので許可して続ける), admin のアカウントでログインする

 タスクウィザードで適当な端末のアドレスを指定してスキャンする。しばらく待つとレポートが出来上がる。

 Result からレポートを参照する。レポートは XML や PDF ,テキストファイル等でダウンロードできる。

 

 ざっと一通り試すだけなら上記の通り。ただし,アカウント周りで不整合を起こすのか, admin のパスワードをくれなかったりしたことがある。理由は不明。

 PDF でレポートをダウンロードできない不具合がある。ダウンロードしようとすると 0byte のファイルができてくる。テキストファイル等ではちゃんと落ちてくる。 Greenbone のフォーラムなんかでも既知なので,そのうち治るかもしれない。

 あと,CVEのデータが参照できない。レポートには脆弱性の概要が出るんだけど,詳細を見ようとしたらデータベースが無いみたいなエラーで情報を参照できない。レポートには CVE の番号等は出ているので,別途ググればだいたいわかるんだけど,その場で参照できないのはすごく不便。これも Greenbone のフォーラムでは既知。治し方が紹介されていたけどウチの環境だと治らなかった。

 

 脆弱性スキャンをして,ざっくり眺めるにはいいかもしれない。

 スキャンして手元で( Web ブラウザ経由で)脆弱性の数や概要を眺める分にはいいけど,詳細情報が直で得られないので,わかってる人が自分の手元で使うだけなら使えるかなあってところか。
 それでも CVE を直で参照できないので不便は残る。
 っつことで,わかってる人が条件を踏まえて小規模に内輪で使う分には使えなくはないといった触感。
 レポートがアレな感じなので規模が大きくなると読むだけで手間がかかりすぎると思う。
 ちょっと規模が大きくなったり,引継ぎが発生する可能性があるなら Nessus 買ったほうがはるかにいい。
 Nessus のほうが使い勝手もレポートの出方もいい。

マザーボードが死んだパソコンからHDDを抜いて仮想化(Physical to Virtual)するまで

 パソコンを新調したら旧パソコンが期限を損ねて起動しなくなったので,この際旧パソコンのOS環境を仮想化して取り込んだ。

 作業そのものは6月にやったんだけど,当時の作業メモが出てきたのと,こっちに記録をしてなかったので,覚えているうちに記録しておくことにする。

 仮想化には Oracle VirtualBOX を使う。旧環境はWindows10,新環境はWindows11。必要なのは VirtualBOX なので,Linux上の VirtualBOX で仮想化するのも手順は大差ない。今回は Windows11 のパソコンに買い替えたら Windows10 のパソコンが拗ねてこじれたのでこうなった。

 旧パソコンから取り外した SATA HDD を認識させるために,SATA-USB変換のアダプタが必要。

 たとえばこんなの。https://pc.watch.impress.co.jp/docs/news/421552.html

 

作業手順

  1. 仮想マシン上でUbuntuをインストール。sambaを追加でインストールして,ファイルアプリ上でWindowsファイル共有ができるよう設定。ホスト上のドライブに接続。
     参考:https://bsj-k.com/ubuntu-access-win-common/
    以下,この環境を「クライアント」として記述。
  2. SATA-USB変換で,旧環境のシステムドライブをホストのWindows11環境に,USB大容量ドライブとして認識させる。
  3. VirtualVoxのUSBデバイスフィルタで,該当のUSBデバイスをクライアントに接続できるよう設定。
  4. クライアントを再起動して,USBドライブを刺しなおすとクライアント側で認識する。
  5. クライアント側の「ファイル」アプリでWindowsファイル共有のドライブを開き,ファイルパスを確認して,コマンド窓でcdして共有ドライブに移動しておく。
  6. ddコマンドでUSB接続したドライブを書き出す。以下のコマンドで,USB接続したHDDの内容をそのまま自分がいるディレクトリ(ここでは先に移動しておいたWindowsファイル共有先)にダンプする。
     dd if=sdb bs=32M > Win10.img
  7. 書き出しが終わったらクライアントに用は無いのでとりあえずシャットダウン。USBドライブも外して構わない。
  8. 6.でダンプした生のディスクイメージをVirtualBox形式に変換。コマンドプロンプトを開いて,ダンプした生ディスクイメージのあるところに移動してから以下のコマンドを使う。
     "C:\program files\Oracle\VirtualBox\vboxmanage" convertfromraw Win10.img Win10.vdi
  9. VirtualBOX仮想マシンを新規で作り,8.の手順で作ったvdiファイルを「既存ドライブ」として使うよう設定。
     メモリ16GB,CPU4個割り当てた。
  10. 起動。初回はデバイスの設定で時間がかかる。
  11. ライセンス認証。仮想マシンのWin10上で「設定」→「更新とセキュリティ」→「ライセンス認証」
  12. トラブルシューティングからライセンスを再認証。「トラブルシューティング」からWindowsアカウントでログインして,「このデバイス上のハードウェアを最近変更しました」を選択。
  13. 仮想マシンのWin10のPC名をもとにライセンス認証するPCを選択,アクティブ化。
  14. 仮想化したWin10環境にVirtualBox Guest Additionsをインストール。
    参考:https://pc-karuma.net/virtualbox-install-guest-additions/

 以上の手順で,旧パソコンのWindows10環境を仮想化して,新パソコン上の VirtualBOX 内で起動できるようになった。

 

 あとで知ったんだけどもっと簡単そうなやり方もあるようで('A`)

datatechlog.com

Unihertz TITANでSMARTalkを使う(GCMタイムアウトをなんとかしてプッシュ通知を受け取る)

やりたいこと

 SMARTalkを実用水準に持っていきたい。あわよくば自宅の@Niftyフォン-Cの番号も持ち歩きたい。

現状

  • 自宅の@Niftyフォン-Cは光回線にぶら下げたWi-Fi経由でGalaxy S2(Android2.3.6)にインストールしてあったSipdroidでレジストして使っている。発着信共に問題なし。
  • Blackberry KEY2にSipdroidを入れてSMARTalkにレジストして使っている。KEY2のマイクの音量が小さすぎて,探し回ったところSipdroidのマイクブーストを最大にすればなんとか音を拾ってくれた。
  • KEY2でレジストしているSMARTalkで着信しない。レジストして10分くらいは着信できるが,スリープに入ると着信しなくなる。復帰しても着信できないまま。

 ということで,最近KEY2のキーボードにも不調が出てきたことなので,予備機として玩具にしていたUnihertz TITANでSMARTalkを使い,あわよくば自宅の@Niftyフォン-Cの番号もまとめて一台にできないかと画策したところ,なかなかうまくいかなかったのでメモを残しておく。
 まずはTITANにSMARTalk標準アプリを入れて設定を行い,ウッキウキで実地試験に臨んだ。

発生した問題

 Unihertz TITANがスリープ状態になると数分~十数分の間のどこかのタイミングでプッシュ通知を受け取れなくなり,SMARTalkの純正アプリで着信ができなくなる。スリープから復帰しても着信できないままになっている。
 この現象自体はBlackberry KEY2でも起きていたのだが,マイクの不調(?)のせいでSMARTalk標準アプリが使えずSipdroidを使っていたので,SMARTalk側が15分くらいでSIPのセッションを切って(プッシュ通知のみにして)留守電に切り替わっているのではないかと思っていた。
 対してTITANではSMARTalk標準アプリならプッシュ通知を受け取れて着信できるだろうと思っていたが,KEY2でSipdroidを使っていたときと同じ現象がおきた。
 さらには着信方式を「通常(セッションを維持したまま着信を待つ)」にしても状況は改善されなかった。
 実際にはどうやらAndroid6から実装されたDozeモードが悪さをしている可能性と,プッシュ通知で使われているGCMがタイムアウトしている可能性,あるいはその両方が考えられる。
 TITANは(この記事の時点で)最新のネットワークアップデートでAndroid10にしてある。

試行したこと

 TITANの省電力機能を片っ端から切っていった。

  1. 設定→アプリと通知→詳細設定→特別なアプリアクセス→電池の最適化 ですべてのアプリを表示させ,SMARTalkが「電池の最適化の使用不可」になっていることを確認した。
  2. 設定→スマートアシスト→アプリ制限 でアプリ制限をオフにした。
  3. 設定→電池→バッテリーセーバー→スケジュールの設定 でスケジュールなしを選択,フル充電で無効をオンにした。
  4. 設定→電池→バッテリーマネージャ でバッテリーマネージャの使用をオフにした。
  5. SMARTalkアプリ側で「スリープ中にWi-Fiを切らない」設定を行った。

参考:

www2.kokoro-navi.com

 これで(おそらく)省電力機能からは解放されたと思われる・・・が,改善してくれなかった。そこで,省電力回りでできることはもう無いと判断。
 スリープモード(Dozeモード)でアプリが切られていなくてもプッシュ通知が取れない,つまりGCMセッションが切れているのではないかと推測。

  • Google Playから「Heartbeat Fixer for GCM」をインストール,上記省電力から除外する手順を踏んで省電力で落ちないように設定。
  • Heartbeat Fixer for GCM の設定で10分毎に設定

play.google.com

 この状態で一時間半放置し,Dozeモードに入っているはずの時間帯で自宅回線から発信し,SMARTalkで着信できることを確認した。

参考:

qiita.com

 ここまではWi-Fi環境での実験だったので,3G(4G)回線でも通用するか試してみる。3G回線はDoCoMoMVNO回線を使っているIIJmioのデータ通信専用格安SIM。これでうまく着信できれば実用上問題はなくなる。
 Wi-Fiを切って一時間半待ち,その後自宅回線から発信して着信を確認。通話品質も問題ない。これでようやくTITANでSMARTalkを持ち運べる。

自宅で使っている番号でも着信したい

 ここまでの手順をSipdroidでも試行して,@Niftyフォンでも発着信できるようになれば,自宅で使っている番号とSMARTalkの番号の両方を一台のすまほに入れられる。ただし,Sipdroidは電話帳機能がなく,SMARTalkを標準の電話アプリの代わりに使っていたらSipdroidを選択して発信できないので,標準の電話アプリを試して発信番号を選択できるかどうかを確認しておきたい。まあ,自宅の番号として使ってきたものを無理やりすまほに突っ込んで持ち歩く必要まではないので,だめならだめでかまわない。
 現在はAndroid2.3.6のGalaxy S2に入れていたSipdroidで@Niftyフォンを使っているため,スリープモードでタスクが死ぬこともなく安定して着信できている。これを一台にまとめて,自宅にいるときは自宅用番号も受けられるようにできれば有難い。
 とはいえそもそも@Niftyフォンは本来自社の回線網(有線)でしか対応していないのを我が家ではWi-Fi環境下のSIPクライアントでつないでいるわけで,そもそもスマートフォンで扱うようにはできていない。

実験1:IIJmioの回線で待ち受けてみる

 Sipdroidに自宅で使っている@NiftyフォンのSIPサーバを登録,別端末でSMARTalkのSIPサーバに登録。上記の省電力機能から除外する設定を一通りSipdroidにも設定しておいて,IIJmioの回線で着信と通話ができることを確認した後,Dozeモードに入ったあたりでSMARTalkから発信。こちらは着信せず。Sipdroidはプッシュ通知を使っていないのでそりゃそうだといったところ。TITANの省電力からは逃げられないのか。

実験2:Wi-Fi環境で待ち受けてみる(本命)

 ということで,Wi-Fiにつないで@Niftyフォンに着信することを確認して,一時間半放置してみる。着信せず。
 どうやらSipdroidは様々な除外設定をしてもDozeモード中に寝てしまうのだろうか。そこで,Doze Busterというアプリを使ってDozeモードに入らないようにしてみる。

play.google.com

 画面を定期的に一瞬点灯させる機能をオンにしてみたが,どうも機能していない。
 ということで画面点灯機能を使わずに試してみたんだけど着信せず。ログを確認してもDozeモードには入っていないので,これはSipdroidとTITANとの相性問題かと思われる。
 自宅番号をTITANに入れて着信させるため,Blackberry KEY2にインストールしたSipdroidでSMARTalkにレジストして,TITANの自宅番号側から発信してみたところ,Doze Busterが生きていれば着信できたので,SipdroidはAndroid8.1ではDoze Busterが生きていれば寝ない。他のSIPクライアントは試していない。
 なお,TITANではAndroid標準の電話アプリからSIPの設定項目自体が消えていた。

結論

 Wi-Fi接続と3G接続(IIJmio)共に以下のような結果となった。

  • Unihertz TITANでSMARTalkを使うためには,各種省電力機能のオフや対象除外の設定と共に,GCMタイムアウトしないように何らかの手当てが必要。
  • GCMタイムアウトを防げれば通常のプッシュ通知着信ができるようになる。これはWi-Fiでも同じことがおきたので,MVNO回線じゃなくても起きると思われる。
  • TITANとSipdroidの相性が悪いのか,スリープに入るとSipdroidで着信できなくなる。

 当面は自宅回線はGalaxy S2のままで誤魔化して,持ち出しは諦める。SMARTalkはUnihertz TITANで持ち出せる。自宅番号の維持にはIP電話対応ルータを入手するのが確実だな。今でも売ってるの?光電話対応ルータあたりでもあればいいんだが。
 入手に難があるなら今のうちにAndroid5.xまでの端末を用意しておいて,Dozeモードの呪縛から逃れる算段をつけておく必要がありそうだ。あるいは,充電中はDozeモードに入らないということなので,自宅番号を着信したい端末は常に充電ケーブルをつないだままにしておいて固定電話のように扱うか。
 (11/27追記)VoIP対応ルータはYAMAHAにある。

network.yamaha.com

 AmazonでもVoIPアダプタはけっこう並んでいた。

www.amazon.co.jp

生存報告

 ギリギリ生きています。

 心臓の手術が2015/12/1だったかと思うのであれから5年半といったところ。冠動脈バイパス手術で左腕の動脈を使って血流を変えたので,広義の改造人間ですよ。

 仮面ライダー THE FIRSTやTHE NEXTの改造人間みたいに定期的にメンテナンスしないと死んじゃうタイプですが。

 そんなもんなので高血糖やらなんやらで入退院を繰り返しつつ,一昨年には心不全での入院もあり,躁鬱に端を発する睡眠障害などでまともな社会生活からは身を引いた状態。

 循環器系の病気が響いて腎臓もヘタってきていて,今もやんわり入院加療を勧められてはいるものの,なるべく自宅にいたいという要望をギリギリ押し通している感じではありながら,なんとか50歳までやってきました。

 腎臓は一線を超えると回復しない臓器なので,いずれは透析でしょうね。それまでの時間を伸ばしている感じ。

 

 おそらくもう戻ることはないだろうと思いつつ,いかにポックリ逝くかを考えています。

 最早健康寿命を終えつつあるというかギリギリ終わったかといったところなので,さあてどうしたものか。QOL低め。楽しめることがほとんどないからねえ。

 これ100年前ならもう死んでる状態ですし。

 残った時間の使い方,けっこう難しい。できることが少ないので。

 できること何が残ってるかな。

2018年04月21日のツイートまとめ