はじめに
この調査では、モスクワメトロワイヤレスネットワークの運用を一般ユーザーの観点から分析しました。 テストの一環として、Androidフォンが使用されました。 電話がネットワーク上で認証されたことがない場合は、限られた形式で考慮されます。
接続プロセス
WI-FIネットワークに接続すると、次のことが起こります。
デバイスとWIFIポイントの最初の関連付けが行われます。 次に、デバイスはGoogleサーバーとのTCP接続を確立します。
図1:TCP接続の確立次に、Androidスマートフォンは、GoogleサーバーにGETリクエストを送信して、ネットワーク認証の必要性を確認します。 答えが得られた場合-承認が必要でない場合、承認されていない場合-承認が必要であり、承認Webページへのリダイレクトが発生した場合、電話はそれを表示します。
図2:認証の確認次に、ゲートウェイは、要求されたサーバーの応答を許可ページへのリダイレクトに置き換えることにより、http要求に応答します。

図3:ログインページへのリダイレクト次に、「インターネットに入る」ボタンを押します。 パッケージ自体は次のとおりです。プライベートセグメントからアドレスに移動することがわかります。
図4:wi-fi.ru認証要求パケットリクエスト自体は次のとおりです。
GET / HTTP/1.1 Host: wi-fi.ru Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*
分析
デバイスのMACアドレスもパラメーターとして送信されることがわかります。 これは、ケシのアドレスが識別子であることを示唆しており、それによって、ネットワークがインターネットの代金を支払ったかどうかを認識します。 アドレスlogin.wi-fi.ruおよびwi-fi.ruは、パブリックインターネットからも含めて使用できることに注意してください。 これにより、MACアドレスのステータスを確認できます。 次のようになります。
地下鉄になかったMACアドレス:
図5:地下鉄に乗ったことがないMACアドレスインターネットが支払いをしなかったMACアドレス:
図6:MACはインターネットの料金を支払わなかったインターネットが支払ったMACアドレスはエラーページに到達しますが(ネットワーク内にないため)、自動的にwi-fi.ruにリダイレクトされます:
図7:接続エラー
図8:正常な接続承認中に、サーバーはページに接続するMACアドレスのタイプを提供することが判明しました。
図9:MACが属するグループ特に、mosmetro_premiumがグループに登録されている場合、有料インターネットの幸せな所有者であることがわかります。
テスト
さまざまなタイプのMACアドレスの検索を自動化するために、Pythonスクリプトが記述されました:
https :
//bitbucket.org/hollow1/metroその助けにより、いくつかの「有料」アドレスが見つかりました。
図10:有料アドレスまた、実験目的で、地下鉄で直接、テストデバイスのMACは「有料」に置き換えられました。
sudo ifconfig en0 ether xx:xx:xx:xx:xx:xx
そして、登録とSMSなしですべてが正常に起動しました。