1 ポイント 投稿者 GN⁺ 2024-07-10 | 1件のコメント | WhatsAppで共有

PySkyWiFi: 完全無料で、信じられないほどばかげた長距離フライトWi‑Fi

  • 飛行機が高度10,000フィートに達したとき、筆者はインターネットを使おうとノートPCを取り出した
  • 機内Wi‑Fiに接続してブラウザを開くと、ネットワークのログインページがクレジットカード情報を要求してきた
  • ログインページに、無料でエアマイルのアカウントへログインしろという表示があり、そこでファイアウォールの抜け穴を発見した
  • JetStreamers Diamond Altitude アカウントにログインしてインターネットへアクセスする方法を見つけた

Prototype 1: インスタントメッセージング

  • エアマイルアカウントの名前フィールドを通じてメッセージをやり取りする方法を考案した
  • 2台のコンピュータで同じエアマイルアカウントにログインし、名前フィールドを更新して読み取ることで簡単なチャットを実装した
  • この過程を自動化するためにコマンドラインツールを書いた

Prototype 2: リアルタイム見出し、株価、サッカーのスコア

  • エアマイルアカウントを通じてリアルタイム情報を送信するプログラムを書いた
  • 地上のコンピュータが定期的にエアマイルアカウントの名前フィールドを確認し、要求された情報を再び機内へ送信する方式で動作する

実装版: PySkyWiFi

  • PySkyWiFi は TCP/IP プロトコルを単純化し、HTTP リクエストをエアマイルアカウント経由で送信するツールである
  • 地上のコンピュータで HTTP リクエストを処理し、レスポンスを再びエアマイルアカウント経由で機内へ送信する

PySkyWiFi の動作原理

  • PySkyWiFi は2つのコンポーネントで構成される:

    • Sky Proxy: 機内でノートPC上で動作するプロキシ
    • Ground Daemon: 地上でインターネット接続されたコンピュータ上で動作するデーモン
  • Sky Proxy は HTTP リクエストを小さなチャンクに分割して、エアマイルアカウントの名前フィールドに記録する

  • Ground Daemon はこのチャンクを読み取り、HTTP リクエストを処理した後、レスポンスを再び小さなチャンクに分割してエアマイルアカウントに記録する

  • Sky Proxy はこれらのレスポンスチャンクを読み取り、元の HTTP レスポンスとして再構成する

PySkyWiFi の通信ロジック

  • PySkyWiFi の通信ロジックは2つのレイヤーに分かれる:

    • Transport Layer: データを小さなチャンクに分割し、送信モードと受信モードを管理する
    • Network Layer: データを実際に送信する役割を担う
  • Transport Layer はデータを小さなチャンクに分割して送信し、受信側がそれを確認すると次のチャンクを送信する

  • Network Layer はエアマイルアカウントの名前フィールドを使ってデータを送受信する

最適化と改善点

  • エアマイルアカウントのフィールド長制限を克服するために base26 エンコーディングを使用した
  • 複数のフィールドを使って帯域幅を増やした

結論

  • PySkyWiFi を使ってブログのホームページを curl で読み込むことに成功した
  • このプロジェクトは、最も生産的でありながら最も非生産的なフライトだった

GN⁺のまとめ

  • PySkyWiFi は機内 Wi‑Fi コストを節約するための創造的な方法を示している
  • エアマイルアカウントの抜け穴を利用してインターネットにアクセスする方式が興味深い
  • このプロジェクトはネットワークプロトコルと通信の基本原理を理解する助けになる
  • 類似機能を持つプロジェクトとしては Tor のようなプロキシサービスがある

1件のコメント

 
GN⁺ 2024-07-10
Hacker News のコメント
  • 数年前、パートナーが Google Voice を使ってテキストメッセージを送っていた。Gmail の受信トレイでメッセージを確認して返信できるので便利だった

    • パートナーは携帯電話が好きではなかったが、無制限 3G データ付きの "Kindle Keyboard" モデルを持ち歩いていた
    • Kindle の簡易ウェブブラウザ経由で Gmail インターフェースを読み込めた
    • 唯一の問題は受信 SMS の通知だった
    • 自宅サーバーでウェブブラウザを自動化し、Amazon アカウント上の Kindle のデバイス名を更新するよう設定した
    • デバイス名を "My Kindle (x)" に更新し、未読の Google Voice メッセージ数を表示していた
    • この方法は何年もうまく機能した
  • イタリアからギリシャへ向かう 20 時間のフェリーで、有料衛星経由のインターネットを使わないようにしていた

    • 決済システム向けに stripe.com にはアクセスできた
    • stripe.com 上のすべてのコンテンツにアクセスでき、それを通じて reddit を閲覧できた
    • HTTP ヘッダーを変更して reddit.com に接続した
    • TLS エラーを無視してログインできた
  • 数週間前、子どもたちをモール内の教室に連れて行ったとき、無料 Wi‑Fi を使おうとした

    • ノート PC でログインしたが、インターネット接続はなかった
    • Cisco モデムの診断ツールで問題を確認した
    • ググってデフォルトの管理者アカウント情報を見つけ、それでモデムに接続した
    • インターネットのボタンをオンにすると 15 秒後に接続された
    • モデムのパスワードを変更した
  • 最近、飛行機の中でグローバル DNS が支払いなしでも普通に動作することを確認した

    • 一般的な iodine トンネルなら動きそうだ
  • 飛行機ではいつも疲れていて、何もできないという意見

    • ノート PC や本を取り出すのさえ面倒だ
    • 騒音が多く、ノイズキャンセリングヘッドホンもないので集中しづらい
    • 空港の不健康な食べ物も問題だ
    • 重いバックパックのせいで汗をかく
  • 飛行機でヘッドホンを充電しておらず、ノート PC のスピーカーで音楽を流した経験

    • 周囲の人は不快だっただろうという意見
  • Google が提供していた SMS 経由の情報提供サービスについての思い出

    • 天気や株価情報などを SMS で受け取れた
    • スマートフォン登場前は便利だった
  • TCP-over-shared-editable-fields という概念が面白いという意見

    • SOCKS プロキシとして使えるツールを想像してみる
  • 役に立たないソフトウェアを書くのは楽しくて有益だという意見

    • もっとこういうプロジェクトを作るべきだと思う
  • 数年前、大学で 10 時以降に LAN ネットワークが遮断されていた経験

    • IPv6 を使った簡単な P2P チャットアプリケーションを作って対処した
    • 友人たちと IPv6 アドレスを共有する必要はあったが、うまく動作した