web-dev-qa-db-ja.com

AirDropプロトコルの実装

IPadやWindowsコンピューターなどのデバイスにクライアントとしてAirDropを実装することに興味があります。 PythonまたはCのいずれかでAirDropプロトコルを実装するための正しい方向を誰かに教えてもらえますか?これに関する助けをいただければ幸いです。よろしくお願いします。

23
petschekr

あなたまたはAirdropをリバースエンジニアリングして実装しようとする人のために、私が見つけたものと、始めるためにあなたがしなければならないことは次のとおりです。

関係する2つのステップがあり、それらは独立してまたは並行して実行できます。

  1. 物理WLANアドホックネットワークの作成方法と名前の付け方をリバースエンジニアリングする

これを行うには、ここからiStumblerを入手します http://istumbler.net/ そして、airdropの実行中に追加のアドホックネットワークが表示されるかどうかを確認します。簡単に試してみましたが、暗号化されていないアドホック802.11bネットワークがあり、その名前は「H」で始まります。 (しかし、私は間違っている可能性があります。これを自分で試してください。)Airdropがネットワークに名前を付けたり識別したりするために使用するパターンを見つけてください。これを見つけるために複数のMacから試してみてください。

  1. プロトコルをリバースエンジニアリングする

クライアントがWiFiネットワークに参加すると、AirdropはBonjourを使用して他のクライアントを検出します。

まず、 http://osxdaily.com/2011/09/16/enable-airdrop-ethernet-and-unsupported-macs/ で説明されているように、これをターミナルで実行して動作させます隠されたアドホックネットワークなし

デフォルトの書き込みcom.Apple.NetworkBrowserBrowseAllInterfaces 1

次に、Finderを再起動します。

ここからBonjourブラウザを入手してください:tildesoft.com

Airdropを起動すると、Macがサービス「_airdrop._tcp」をアドバタイズしていることがわかります。また、Macがリッスンしているホストとポート(AirdropがFinderで開かれるたびに新しいIPアドレスが作成されます)のさまざまなIPアドレスを公開します。また、コンピューターの名前、2つのキー「ehash」と「phash」、および値が1の1つのキー「flags」も公開します。これらの2つのハッシュがどのように生成され、必要かどうかを確認する必要があります。 。おそらくそうです。利用可能なBonjourライブラリの1つを使用して、2台目のコンピューターで独自のデータを公開し、Airdrop(Finder)に表示されるかどうかを確認してください。

各クライアントによって公開されているTCPサービスがSSL接続を使用していることがわかりました。サーバー証明書はApple IDにリンクされているようです。キーチェーン内の証明書。クライアント証明書もサーバーから要求されます。これはおそらく他のコンピューターからのApple ID証明書です。これを試す必要があります。

そのSSL接続内でどのプロトコルが使用されているのかわかりません。また、現在調査する2台目のMacにアクセスできません。確認するには、接続をMITMする必要があります(CharlesとWiresharkを試してください)。いずれの場合も、ユーザーアイコンの転送、転送のネゴシエーション、場合によっては実際のデータの移動にも使用されます。

これをオープンに実装することは、最終的にApple ID-結局のところ無料です。

幸運を!

58
jroith