【雑感】Fiddlerを使ってHuawei nova liteのパケットをキャプチャした。

結構前からnova liteがBaiduと通信してると話題なのですが、2chのスレを見てもほぼまともな情報が得られないのと、ぐぐっても結局通信内容が不明のままだったので、諦めて自分でキャプチャすることにしました。
飽くまで私の持ってる端末・環境での観測結果なので、ご自身の端末がどのような通信をしているのか知りたい方は、ご自身でパケットキャプチャされることをおすすめします。
Wiresharkを使っても良かったのですが、手元にFiddlerの入ってるマシンしかなかったのでFiddlerを使いました。Androidでのパケットキャプチャ用の設定は以下の記事が分かりやすかったです。
Android端末上のHTTP/HTTPS(SSL)通信内容を傍受・解析する方法

観測対象

Huawei nova lite/PRA-LX2C635B160
(現在地が中国以外だと通信しないという話らしいので、情報を載せておくと、)位置情報設定は「高精度」に設定してあります。高精度じゃないとPokemon GOできなくなるので。

観測方法

1時間程度、スリープしないようにして端末を放置。

結果

1時間内で3回 www.baidu.com 宛にGETでアクセスをしていました。(HTTP宛で、クエリパラメータはなしです。)
あと、端末電源ON時に必ずbaiduと通信する、という話も見かけたので何度か電源ON時のパケットもキャプチャしましたが、いずれもbaidu宛の通信は見つかりませんでした。

以下リクエストのキャプチャ結果(3回とも全部同じでした)

GET http://www.baidu.com HTTP/1.1
Charsert: UTF-8
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded
contentType: utf-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.0; PRA-LX2 Build/HUAWEIPRA-LX2)
Host: www.baidu.com
Connection: Keep-Alive
Accept-Encoding: gzip

ちなみに肝心のレスポンスですが、Fiddlerは504を返してきました。うーん…。

[Fiddler] ReadResponse() failed: The server did not return a response for this request. Server returned 0 bytes.

名前解決用にリクエスト飛ばしてるのかもしれないですが、情報がなさすぎて憶測の域を出ませんね。
(24時間くらいがっつりモニタリングしたら何かわかるかもしれないですが、)1時間程度ではよくわかりません、という感想です。
Baiduと通信してるのは確実なことがわかったので、購入はあんまりおすすめできません。

追記(2017/08/20)

Fiddlerのようにローカルプロキシを挟むとローカルプロキシが解釈できないレスポンスがエラーになるので、Wiresharkを使おうとしたのですが、どう頑張っても家のWi-Fiでモニターモードが使用できなかったため、諦めてtPacketCaptureを使用してキャプチャしました。

3時間キャプチャして10回baidu宛の通信を確認しました。以下リクエストです。10回とも内容は全部同じでした。

# 103.235.46.39 宛に通信。
Hypertext Transfer Protocol
    GET / HTTP/1.1\r\n
    Charsert: UTF-8\r\n
    Accept-Charset: utf-8\r\n
    Content-Type: application/x-www-form-urlencoded\r\n
    contentType: utf-8\r\n
    User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.0; PRA-LX2 Build/HUAWEIPRA-LX2)\r\n
    Host: www.baidu.com\r\n
    Connection: Keep-Alive\r\n
    Accept-Encoding: gzip\r\n
    \r\n
    [Full request URI: http://www.baidu.com/]
    [HTTP request 1/1]
    [Response in frame: 471]

以下レスポンス。値がユニークっぽそうな箇所は念のため伏せました。

Hypertext Transfer Protocol
    HTTP/1.1 302 Found\r\n
    Cache-Control: no-cache\r\n
    Connection: Keep-Alive\r\n
    Content-Type: text/html;charset=utf-8\r\n
    Date: Sun, 20 Aug 2017 14:29:54 GMT\r\n
    Location: https://m.baidu.com/?from=844b&vit=fps\r\n
    P3p: CP=" OTI DSP COR IVA OUR IND COM "\r\n
    Server: apache\r\n
    Set-Cookie: BAIDUID=C438EAAB0EFE52A771xxxxx:FG=1; max-age=31536000; expires=Mon, 20-Aug-18 14:29:54 GMT; domain=.baidu.com; path=/; version=1\r\n
     [truncated]Set-Cookie: H_WISE_SIDS=118416_114550_117615_118309_117044_114744_118507_100100_118270_118057_xxx...
    Set-Cookie: BDSVRTM=42; path=/\r\n
    Tracecode: 1794964229xxxxxx\r\n
    Tracecode: 1794926598xxxxxx\r\n
    Traceid: 1503239394xxxxxxxxxx\r\n
    Content-Length: 0\r\n
    \r\n
    [HTTP response 1/1]
    [Time since request: 0.189395000 seconds]
    [Request in frame: 469]

似たような通信がないかぐぐると2chのg07スレが見つかりました。
goo g07 Part3 [無断転載禁止]©2ch.net

13 SIM無しさん (オイコラミネオ MMf6-0Bqe)2017/03/29(水) 16:32:10.03ID:8pI43FAvM
GPSの関係でBidouにアクセスが発生する端末が
あると聞いたが、広告騒ぎとは関係なさそうだけどこの通信が必要な理由はなんだろう

Source 103.235.46.39  (BAIDU-HK)
Dustination (略)

HTTP/1.1 302 Found
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/html;charset=utf-8
Date: Wed, 29 Mar 2017 05:57:17 GMT
Location: https://m.baidu.com/?from=844b&vit=fps
P3p: CP=” OTI DSP COR IVA OUR IND COM ”
Server: apache
Set-Cookie: BAIDUID=(略):FG=1; max-age=31536000; expires=Thu, 29-Mar-18 05:57:17 GMT; domain=.baidu.com; path=/; version=1
Set-Cookie: H_WISE_SIDS=102569_108266_100043_102435_103300_111882_112106_107313_114130_115245_115110_115055_115244_115044_114797_114513_114998_114330_114535_115031_114276_110085; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=81; path=/

gooのg07ってcovia製ですよね。あるぇー…。
これ以上調べても新しい情報が見つからなさそうなので私は調査を降ります…。まさに「何の成果も!!得られませんでした!!」って感じですね。何のために通信してるのか全くわからん。

追記(2017/09/17)

Huawei nova lite/PRA-LX2C635B170にアップデートしたところ、6時間観測して1度もbaiduとの通信を検出しませんでした。位置情報をOFFにしても検出しなかったのでかなり謎いです。
しれっとバグを直したとか、通信しないようにしたとかそんな感じでしょうか。如何せん公式に発表もないですし、怪しいことには変わりないので、購入はあんまりおすすめできません。BlueBorneのパッチもいつくるかわからないし…

retrorocket.bizのSSL証明書を再発行しました。

SSLサーバ証明書再発行のお願い – さくらのサポート情報
retrorocket.bizも対象なので再発行しました。これから3年間分無料とはありがたいです…。期限ギリギリまで発行を粘ってちょっとでも証明書の有効期限を伸ばそうかと思いましたが、引き伸ばしてるうちに対応を忘れてしまいそうなのでやめました。
nginxの場合、ssl_certificateに中間証明書を設定しないとサーバから中間証明書が送付されないのですが、完っ全に失念してまして30分くらい本気で悩みました。次の移行時にまた忘れそうですね。

再発行に至った背景は以下の記事がとてもわかりやすいです。
Symantecが再びGoogleの信頼を失った件についてのメモ – Technically, technophobic.
個人的に「シマンテックの言い分が大変うんこである」以外の感想はないです。ブラウザベンダー側が拒否らないと改善されないのもひどい。でもお金払っちゃったから使います。

retrorocket.bizのSSL証明書をラピッドSSLに移行しました。
去年くらいにラピッドSSLに移行したものだと思っていたら2年前でビビりました。

とりあえずOCSP Responseが返ってくるかは確認しました。

$ openssl s_client -connect retrorocket.biz:443 -status -servername retrorocket.biz < /dev/null | head
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = GeoTrust Inc., CN = RapidSSL SHA256 CA
verify return:1
depth=0 CN = retrorocket.biz
verify return:1
CONNECTED(00000003)
OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: 04F2100E425F1B9605707A171B87FDED0C1A9B92
    Produced At: Jul 20 09:29:11 2017 GMT
    Responses:
DONE

問題ないですね。

【未解決→解決】WPtouch Mobile Pluginが適用されたモバイルページでContact Form 7が動作しない。

未解決です。このサーバでしか起こらない問題かどうかすらもわかってません…。
Contact Form 7のv4.8とWPtouch Mobile Pluginのv4.3.18を導入している環境で、かつモバイルページからContact Form 7を使用して問い合わせを送信した場合、メールが送信されません。
WordPressのバージョンは4.8です。

最初nginxのキャッシュフラグの設定がおかしいかと思ったのですが、curlコマンドでPOSTした場合は正しく問い合わせが送信できるためWPtouchとの組み合わせが悪いと判断しました。(curlでUAをモバイル系にすると送信されないが、適当な文字列にすると送信できる)

php-fpmのログにもnginxのログにも何も出てないし、POSTを送信すると200OKしか返ってこないのでデバッグが面倒です。いま適用しているテーマはありがたいことにレスポンシブデザインなので、とりあえずWPtouchを無効にしました。

この現象がいつから起こっていたか把握できないため、過去スマホ・タブレット経由でcontactからお問い合わせを送信された方につきましては、お手数ですが再度送信をお願いいたします。すみません…。

追記(2017/08/08)

普通にContact Form 7用のjsがWPtouch用のテンプレートで読み込まれていないからでした。仕方ないので、footerに以下のコードを挿入して解消しました。
js無いと動かないんですね。そりゃそうか。

<script type='text/javascript'>
/* <![CDATA[ */
var wpcf7 = {"apiSettings":{"root":"https:\/\/retrorocket.biz\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"},"recaptcha":{"messages":{"empty":"\u3042\u306a\u305f\u304c\u30ed\u30dc\u30c3\u30c8\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u8a3c\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}}};
/* ]]> */
</script>
<script type='text/javascript' src='https://retrorocket.biz/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.8.1'></script>

ブートループして起動しないnexus5xを電子レンジで直す。

2017/09/17 追記

知人から情報提供していただきました。危ない橋を渡らなくても有志が公開してるパッチあてたら治るかもしれません。私は端末手元になくて試せないですが、知識のある方は試してみてください。
ちなみに知人はこれで修理できたそうです。端末流すんじゃなかった…。
Nexus 5X Bootloop Fix Finally Lets You Boot the Phone
XDAのフォーラムにある通り、パッチを当てるとbig側のコアが止まって4コアで動作させることになります。

Some had thought it was due to the solder they used and that it would eventually crack from heating up and cooling down too many times over the lifespan of the device. Whether that is indeed true, we still don’t know for sure what is behind the issue, but this fix for the Nexus 5X bootloop does seem to work around the issue.

As mentioned, we’ve seen multiple people within the community (over in our official XDA thread for this solution) report that this Nexus 5X bootloop solution does indeed work. However, we’ve also had at least one person say that it didn’t work for them. There could be multiple causes for the Nexus 5X bootloop issue so this guide may not be a fix for everyone.

はっきりとした原因はわからないけれど、パッチ当てて改善された場合もあるってことですね。直らない場合もあるそうですし、パッチ当ててもだめで、もうほかに修理する方法がなくてぶっ壊していいなら、(飽くまで最終手段として)リフローを試してみてください。

2017/10/01 追記

ジャンク品のnexus5xを電子レンジとパッチで直す。
ジャンク品を手に入れてリフローとパッチで直してみました。

追記終わり。


expansysで2016/3/7に購入したnexus5xが2017/3/29にブートループで起動しなくなりました。
保証期間直後にぶっ壊れるなんていい度胸してますね。

症状

  • Googleのロゴがひたすらループする
  • ブートローダーは表示できる
  • リカバリモードには入れない
  • fastbootコマンドは使用できる
  • 使用OSは7.1.1

試したこと

  • 7.0.0 (N5D91L, Nov 2016)のファクトリーイメージを焼く
  • 6.0.1 (MTC20K)のファクトリーイメージを焼く

だめだったのでOSではなくハードがイカれてると判断。
ちなみに、修理の相場くらいは教えてもらえるかと思ってLGジャパンに電話したのですが、
本当にマジで神経逆撫でするようなことばかり言ってきたので、かなりイライラしました。
電話してきた人は全員怒らせるような指示でもされてるのでしょうか。

頭にきたのでもうぶっ壊しても良いやと思い、以下ブログの方法を試してみることにしました。
Nexus5X Android 7.0での再起動ループを直した(失敗) – とある地味なブログ
これ以降に書いてることは、ハードド素人が勘で試した最終手段なので、ぶっ壊してもいいと思った人だけが試してください。

ホットプレートがないのでドライヤーを使おうと思ったのですが「安定して同じ温度を供給できない」と言われたので、電子レンジのオーブンモードを使用します。
シャープ製の電子レンジです。200度が上限なので200度で試すことにしました。

電子レンジ

電子レンジで試したこと(1回目)

  1. Nexus 5X Motherboard Replacement – iFixit を見ながら分解。nexus5に比べて分解しやすすぎて感動しました。
  2. 加熱するのはマザーボードのみなので、マザーボードからSIMトレーを外す
  3. オーブンモードで200度で予熱した後、1分加熱する
  4. 常温に戻るまで放置
  5. 組み立て直す
  6. 電源オン

祈るしかない

やったー!!!起動したー!!!

起動した!

よっしゃ最新のファクトリーイメージ焼こう→ブートループ→やべえ6.0.1 (MTC20K)焼こう→ブートループ

焼きが足りなかったのかも…と判断し、再度電子レンジチャレンジを実施しました

電子レンジで試したこと(2回目)

  1. 200度で予熱した後、2分加熱する
  2. 常温に戻るまで放置
  3. 電源オン

やったー!!!起動したー!!!もう怖いからOSのアップデートはしない!!

起動した!!!

nexus5もブートループ頻発してるし、2chのnexus5xスレはブートループの怨嗟で溢れかえってるし、LG製品は今後遠慮したいですね…。なんでリコールしないんでしょうこれ…。
あと、リフローって単語で調べすぎてりくろーおじさんのチーズケーキが異様に食べたくなりました。宅配で頼もうかと思います。

とりあえず、参考にしたブログを書いた方の端末はGPUが死んだようなので予後を観察しようと思います。

追記(2017/4/16)

またブートループを起こすようになりました。焼いたらもとに戻る→2日くらいしたらまたブートループでもう駄目っぽいので諦めました。救出したいデータとかゲームのデータ移行しなきゃならないとかそういう時は一時的に復旧できるので使えるけど、完全再生は無理ですね。

追記(2017/06/17)

Twitterで調べたらこんなツイートが見つかりました。

アア、オワッタ・・・・・・・・!3万もするものが1年で壊れてしまって直せもしないのはさすがにあり得ないと思うので、今後LG製は遠慮したいです。

ちなみに、リフローは私の場合200度5分で3日持ったのが最高記録でした。もっと温度が高ければ直せるかもしれませんが、ジャンク品として流してしまったのでもうわかりません。
あとリフローするときはSIMカードトレイごとSIMカードを外すのを忘れないようにしましょう。SIMカードトレイ入れっぱなしで電子レンジにインしてカードを溶かしました。(ヤスリで削って無理やり剥がして事なきを得ました)

???「えー、ということで!ですね、本日はふっ飛ばしたDBの復旧をやっていきたいと思います!」

GitLab.com Database Incident – 2017/01/31
読んでて胃が痛くなりましたが、詳細をここまで公開した上で復旧作業ライブストリーミングで配信するとかぶっ飛びすぎててすごいです。
今見てるんですがめっちゃ面白いしコメント欄一体感で溢れてるし悲壮感ないのでエンジニアじゃない方も是非見てほしい!

重大なミスをした時どうすればいいか学びを得られた気がします。問題が起こらないのが一番だけど、何か問題を起こした時にどう対応するかが大切なんですよね。
私はコードホスティングにgithubを使っていますが、たとえgitlab使ってたとしてもきっと笑いながらこの配信見てたと思います。

* Who did it, will they be fired?
Someone made a mistake, they won’t be fired.