Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
wave-share — サーバーレス、ピアツーピア、音声によるローカルファイル共有 | Kitploit
ツール/GitHubGitHub/ggerganov/wave-share
データ流出ワイヤレスセキュリティユーティリティとフレームワーク学習と教育
GitHubggerganov/wave-share

wave-share

サーバーレス、ピアツーピア、音声によるローカルファイル共有

リポジトリを見るウェブサイト
2.3k1485年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

wave-share

WebRTCシグナリングを音で行うための概念実証です。マイクとスピーカーを備えたすべてのデバイスで動作します。ブラウザ上で実行します。

近くのデバイスは、一連のオーディオトーンを介して必要なSession Description Protocol (SDP)データを交換することで、WebRTC接続をネゴシエーションします。ネゴシエーションが成功すると、ブラウザ間でローカルのWebRTC接続が確立され、LAN経由でデータを交換できるようになります。

動作の様子(2分の動画):

CG++ Data over sound

自分で試す: ggerganov.github.io/wave-share

最新ニュース:
データオーバーサウンドのアルゴリズムを ggwave というスタンドアロンライブラリに抽出しました。
他のプロジェクトに簡単に組み込むことができます。

仕組み

WebRTC 技術により、異なるデバイス上で動作する2つのブラウザが互いに接続し、データを交換できます。プラグインのインストールやアプリケーションのダウンロードは必要ありません。接続を開始するために、ピアは連絡先情報(IPアドレス、ネットワークポート、セッションIDなど)を交換します。このプロセスを「シグナリング」と呼びます。WebRTC仕様ではシグナリングの標準は定義されておらず、連絡先の交換は任意のプロトコルや技術で実現できます。

このプロジェクトでは、シグナリングを音を使って行います。シグナリングのシーケンスは次のようになります:

  • ピアAがWebRTC接続のオファーを、セッションデータをオーディオトーンにエンコードしてブロードキャストします
  • 近くのピアがピアAの音を取り込み、WebRTCセッションデータをデコードします
  • ピアAとの接続を確立したいピアBが、音声による応答を返します。応答にはピアBの連絡先情報がエンコードされています。さらに、ピアBはピアAへの接続を試み始めます
  • ピアAがピアBからの応答を受信し、送信された連絡先データをデコードしてピアBの接続を許可します
  • 接続が確立されます

説明したシグナリングシーケンスにはシグナリングサーバーは関与しません。そのため、例えば音によるシグナリングを使用するアプリケーションは静的なWebページで提供できます。唯一の要件は、オーディオ出力/キャプチャデバイスを制御できることです。

現在のアプローチの明らかな制限(機能)は、近くのデバイス(例:同じ部屋の中)どうしでしか接続を確立できないことです。さらに、NATが利用できないため、デバイスは同じローカルネットワークに接続されている必要があります。

音声Tx/Rx

音で通信されるデータには、WebRTC接続を初期化するために必要な連絡先情報が含まれています。このデータは Session Description Protocol (SDP) 形式で保存されます。データオーバーサウンドには帯域幅と堅牢性の点で大きな制限があるため、送信するデータはできるだけ少なくすることが望ましいです。そのため、SDPからは無関係な情報をすべて取り除き、接続の確立に必要なデータのみを送信します。現在、最小限のSDPデータを含むサウンドパケットは以下の形式です:

音声パケットの合計サイズは112バイトです。現在のオーディオエンコーディングアルゴリズムでは、SDPパケットは5〜10秒で送信できます(使用するTxプロトコルに依存)。低速なプロトコルを使用すると、ノイズの多い環境や通信デバイスが離れている場合により信頼性の高い送信が可能です。

データから音声へのエンコーディング

現在のアプローチでは、マルチ周波数 Frequency-Shift Keying (FSK) 変調方式を使用しています。送信するデータは最初に4ビットのチャンクに分割されます。各時刻において、6つのトーンを使用して3バイトが送信されます — 各4ビットチャンクに対して1トーンです。6つのトーンは、96の等間隔の周波数に分割された4.5kHzの範囲で発せられます:

すべてのプロトコルで: dF = 46.875 Hz。非超音波プロトコルでは: F0 = 1875.000 Hz。超音波プロトコルでは: F0 = 15000.000 Hz。

ローカルIPアドレスの取得

利便性のため、シンプルなWebRTCハック を使用してマシンのローカルIPアドレスを自動検出しているため、手動で指定する必要はありません。ただし、最新のWebRTC仕様ではセキュリティ上の理由からこれが不可能になっているため、いずれこの「機能」はすべてのブラウザで動作しなくなります。例えば、Safariではすでに動作しません。

ビルド

Web Assemblyモジュール wave.wasm

Emscriptenコンパイラが必要です。compile.sh スクリプトを実行してください。

CLIツール wave-share


重要: このCLIツールは、現在スタンドアロンライブラリである ggwave のプロトタイプでした。このデータオーバーサウンド通信方式の応用に関する最新の例が含まれているので、ぜひチェックしてください。


これは、説明した wave-share サウンドTx/Rxプロトコルを使用してデータを受信および送信するシンプルなツールです。標準入力にテキストを入力してEnterキーを押すと送信されます。

root@kitploit:~
# ビルド
git clone https://github.com/ggerganov/wave-share
cd wave-share && mkdir build && cd build
cmake ..
make

# 実行
./wave-share

CLIツールの使用方法を示す短い動画:

Wave-share: command line tool

既知の問題 / 改善点

  • 以下では動作しません: IE、IE Edge、iOS版Chrome/Firefox、macOS版Safari
  • 超音波音声送信はほとんどのデバイスで動作しません。おそらくハードウェアの制限?
  • 複数のローカルネットワークが存在する場合、現在どれを使用するか選択できません。常に最初のものが使用されます
  • 送信中に音声が時々割れます。Txコードの最適化が必要です
  • emscriptenで生成された.jsのサイズが大きすぎます(約1MB)。純粋なJSで書き直す?
  • モバイル版Firefoxでは、タブを閉じた後もページがバックグラウンドで実行され続けることがあります
ツールをダウンロード
サイズ [B]説明
1SDPのタイプ - オファーまたはアンサー
1パケットサイズ(バイト単位、ECCバイトは含まない)
4送信ピアのIPアドレス
2通信に使用するネットワークポート
32セッションデータのSHA-256フィンガープリント
40ICE認証情報 - 16バイトのユーザー名 + 24バイトのパスワード
32送信時のエラー訂正に使用するECC訂正バイト
周波数 [Hz]値 [ビット]周波数 [Hz]値 [ビット]...周波数 [Hz]値 [ビット]
F0 + 00*dFチャンク0: 0000F0 + 16*dFチャンク1: 0000...F0 + 80*dFチャンク5: 0000
F0 + 01*dFチャンク0: 0001F0 + 17*dFチャンク1: 0001...F0 + 81*dFチャンク5: 0001
F0 + 02*dFチャンク0: 0010F0 + 18*dFチャンク1: 0010...F0 + 82*dFチャンク5: 0010
.....................
F0 + 14*dFチャンク0: 1110F0 + 30*dFチャンク1: 1110...F0 + 94*dFチャンク5: 1110
F0 + 15*dFチャンク0: 1111F0 + 31*dFチャンク1: 1111...F0 + 95*dFチャンク5: 1111