1

私の最終結果は、私のiPhoneと私のMacの間で送信されているplistを試してみることです(bplist00hexdumpで見ることができるので、plistであることはわかっています)。

bonjour サービスを介して iPhone から Mac にデータを送信するアプリがあります。

tcpdump を使用してトラフィックをキャプチャし、ペイロードの hexdump をバイナリに変換してから、plist テキスト ファイルに変換します。

私の手順は次のとおりです。

  1. iPhoneとMacが接続されていることを確認し、コマンドを送信する準備をしてください
  2. sudo tcpdump -vSs 0 -A -i en1 -w Dump.pcap 'tcp port 57097'ワイヤレス ネットワークでtcp dump: を実行し ( Bonjour Browserを使用して、サービスが登録されているポートを見つけました)、電話で send コマンドを実行します。
  3. pcap ファイルをテキスト ファイルに変換しますtshark -V -r Dump.pcap > Dump.txt(最終結果は次のようになります) 。
  4. テキスト ファイルからヘッダーやその他の情報を手動で削除して、ペイロードだけが残るようにします (これがファイルに含まれています)。
  5. ファイルをバイナリに変換するためにリバース 16 進ダンプを実行します。xxd -r Dump.txt Dump1.txt
  6. バイナリ plist をテキスト ファイルに変換します。plutil -convert xml1 Dump1.txt

ただし、ステップ 6 で問題が発生しますDump1.txt: Property List error: Conversion of string failed. The string is empty. / JSON error: JSON text did not start with array or object and option to allow fragments not set.(ただし、前のステップからの間違いである可能性があります)。また、XML 変換を要求したときに JSON でエラーが報告される理由がわかりません。

この低レベルのネットワーク キャプチャは、通常は似たようなものではありません (通常、私はフィドラーやチャールズで上位にいますが、これが HTTP 経由ではないことを考えると、スタックを下位に移動する必要があります)。

私がやっていることが正しいかどうか、またはこれを行う簡単な方法があるかどうかを誰かに教えてもらえますか?

Mac に送信されている plist をキャプチャするにはどうすればよいですか?

4

1 に答える 1

0

私の推測では、あなたの問題は、リクエストを手動で編集するステップ 4 あたりのどこかにあると思います。tcpdump ではなく Charles を使用して同様のことを試みたところ、plist が含まれていることがわかっているペイロードでまったく同じエラーが発生しました。JSON エラー メッセージが表示された理由がわかりません。

チャールズからのバイナリエンコードされたplistリクエスト本文をファイルに直接保存して(チャールズには「リクエストの保存」メニューオプションがあります)、それを実行plutil -convert xml1 FILENAME -o -することで解決できましたが、うまくいきました。

于 2015-11-06T02:09:10.313 に答える