アップデート一覧に戻る
New releaseSep 2, 2026

bitbang-cli v0.5.0

エンドツーエンド暗号化されたピアツーピアWebRTCを介して、インタラクティブシェル・ファイル転送・Webプロキシを備えたマシンへの安全なリモートアクセスを確立します。ブラウザまたはCLIを使用し、ポートフォワーディングやアカウントは不要です。

共有

BitBang CLI

Tests License

bitbang は、単一の静的バイナリで動作するリモートアクセス多機能ツールです。任意のブラウザから、リモートマシンへの対話型シェルとファイルブラウザアクセスを提供します。また、そのマシンのネットワーク上のWebアプリにもアクセスできます。ブラウザ以外にも、TCPポートフォワーディング、ファイルコピー、ターミナル共有に対応しています。アカウントや設定は不要で、そのまま動作します。

bitbang をインストールし、bitbang serve を実行し、表示されたURLをブラウザで開くと、シェル、ファイルブラウザ、マシンのネットワークへのプロキシが利用できます

アクセスしたいマシン上で:``` curl -sSfL bitba.ng/install | sh bitbang serve

`serve` は URL を出力します。任意のブラウザで開くと、ターミナル、ファイルブラウザ、そのマシンのネットワークへのプロキシが表示されます。あるいは、別のターミナルから `bitbang connect <url>` で同じマシンに到達でき、ポートフォワーディング (`-L`) とファイルコピー (`bitbang cp`) が追加されます。接続はエンドツーエンドで暗号化され、ピアツーピアです。`bitba.ng` サーバーは両端を紹介するだけで、その後は関与しません。

`bitbang` は単一の静的 Go バイナリです。[BitBang プロジェクト](https://github.com/richlegrand/bitbang) の一部であり、この[ホワイトペーパー](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) で設計が詳しく説明されています。

## 比較

|                                | ngrok                  | Tailscale                      | `bitbang`           |
| ------------------------------ | ---------------------- | ------------------------------ | ------------------- |
| 初回使用前のセットアップ         | アカウント + authtoken | 各デバイスでアカウント + ログイン | **コマンドを 1 つ実行** |
| 何かを共有するために実行するもの | Web サーバー + ngrok   | 両方のマシンでクライアントを実行 | **`bitbang serve`** |
| 遠端のブラウザが受け取るもの     | すでに実行していた Web サーバー | なし -- クライアントが必要 | **リモートネットワーク上のターミナル、ファイルブラウザ、Web アプリ** |
| データ経路                      | 自社サーバー           | P2P (リレーフォールバック)      | **P2P (リレーフォールバック)** |
| エンドツーエンド暗号化           | デフォルトではなし     | あり                            | **あり**             |

## クイックレシピ

**自宅のサービスにアクセス**

- [どこからでも自宅の NAS をマウント (SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [どこからでもメディアライブラリを視聴 (Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [どこからでも独自の LLM を使用 (Ollama、Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [防犯カメラを確認 (Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [ホームオートメーションを公開せずにアクセス (Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [自宅のプリンターに印刷 (IPP、CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)

**マシンにアクセス**

- [NAT の背後にあるマシンでシェルを取得](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [スマートフォンからシェルを取得](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [Windows マシンにリモートデスクトップ接続 (RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [Linux または Mac のデスクトップにアクセス (VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [ポートを開いていないマシンに SSH 接続 (OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [ヘッドレス Raspberry Pi をセットアップ](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)

**他の人と共有**

共有とは、単にアクセスを許可する一意の URL または QR コードを誰かに渡すことです。権限は調整でき、数分、数時間などで期限切れに設定できます。

- [ファイルをどこにもアップロードせずに共有](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [プロジェクトを誰かに見せる](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [期限付きのアクセスを誰かに付与](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [スマートフォンからエージェントセッションを確認 (Claude Code、tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [他の人のルーターを修理](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)

**開発とデバイス**

- [開発マシンからデータベースにアクセス (Postgres、MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [互いを見つけられないデバイスを同期 (Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [ブラウザからロボットを監視 (ROS、Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)

**テクニック**

- [フォワーディングリスナーが公開するもの](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [LAN 上の他のマシンにフォワードを使用させる](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [動作しないことが判明しているもの](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)

## `bitbang` の使用

すべての接続には 2 つの端があります。**リスナー** (到達されるマシン上で実行される `bitbang serve`) と**コネクター** (到達するマシン上のブラウザ、または `bitbang` CLI) です。1 つのリスナー URL が両方の種類のコネクターにサービスを提供します。

### リスナー: `bitbang serve````
bitbang serve                    # everything: shell + proxy + files + forward
bitbang serve shell              # just a terminal
bitbang serve files ~/share      # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080       # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80    # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22       # just TCP, for `connect -L`

bitbang serve shell files ~/share proxy nas.lan:8096   # any combination

各モードはQRコード、URL、ペアリングコードを出力します。モードによってリスナーが実行できることが決まります。serve shell には付与する転送がなく、転送専用リスナーはシェルを起動しないため、権限昇格の対象となるものはありません。

知っておくべきデフォルトの1つ: 転送とプロキシは、リスナーが到達できる任意のホスト:ポートに到達します。意図したホストだけではありません。そのため、データベース用に配布したリンクは、そのネットワークの他の部分にも到達します。ターゲットを単語で指定すると範囲が狭まります -- forward db.internal:5432 はそのホストにのみ到達し、他には到達しません。

実行中のセッションを共有: bitbang share

serve shell は新しいシェルを起動します。share はすでに実行中のtmuxセッションを公開します:``` bitbang share # publish the current tmux session bitbang share --read-only # publish without a control URL bitbang share status|stop|rotate

コマンドは公開後に戻るため、進行中のタスクには`Ctrl-Z`、`bitbang share`、`fg`が機能します。ホスティングにはUnixまたはWSL上のtmux 3.2+が必要です。ネイティブWindowsクライアントはURLを開けますが、シェアをホストすることはできません。

デフォルトでは、コマンドは2つのベアラURLを出力します:

- **コントロールURL**は、ローカルキーボードと同じ権限で入力できます。一度に接続できるコントローラは1つです。
- **ビューURL**は閲覧専用です。入力はtmuxに到達する前に破棄され、最大`--max-viewers`人のビューアが同時に接続できます(デフォルトは16)。

`--read-only`はコントロール資格情報を完全に省略します。ビューアとコントローラの制限は、シェルを開く前であっても、各接続の存続期間中保持されます。

シェアはデフォルトで停止されるまで実行されます。`--ttl`は存続期間を設定します(例: `--ttl 1h`)。シェアURLは一時的なもので、`devices.json`に保存されることはありません。`share stop`、TTLの期限切れ、またはソースセッションの削除により、ソースセッションを停止せずにリモートピアが切断されます。

`bitbang share`を再実行すると、実行中のシェアのURLが再表示されます。実行中の設定と矛盾するフラグを渡した場合(たとえば、コントロールURLを持つシェアに対して`--read-only`を指定した場合)、古いURLを返すのではなく、その旨が通知されます。`bitbang share rotate`は、新しいフラグを使用するシェアに置き換えます。

バックグラウンドワーカーは、デタッチされた`_bbshare_*` tmux管理セッションで実行されるため、管理するデーモンやPIDファイルはありません。

共有によってtmuxオプションが変更されることはありません。tmuxのデフォルトの`window-size latest`では、ウィンドウはアクティブな読み書きクライアントに追従します。単独のビューアでも、利用可能な唯一のサイズが提供されます。`window-size`が上書きされている場合、`share`はそれを報告しますが、ユーザーの設定は変更しません。

### 制限付きアクセスの配布: `bitbang link`

リスナー1つ、URL1つ、そして必要な数の**アクセスリンク**。それぞれは同じURL上の別々のコードであり、リスナーが提供する機能のサブセットを付与し、オプションで固定時刻に失効します:```
bitbang link edit                # add entries in $EDITOR
bitbang link ls                  # what you have handed out
bitbang link rm <label>          # revoke one
bitbang link qr <label>          # its URL and QR code

エントリは ~/.bitbang/bitbang/links.json 内のJSONの1行です。コードなしで1つ書き込み、リスナーをそのコンソールでリロードすると、1つが発行されます:```json [ {"label": "ana", "grant": "files", "expires": "2026-09-01T00:00:00Z"}, {"label": "ben", "grant": "files /srv/photos"}, {"label": "dev", "grant": "shell forward 127.0.0.1:5432"} ]

I need the actual content of chunk 11 to translate it. Please provide the Markdown text you want translated.```
  0) owner  files forward proxy shell
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#_vtQ0JCPe7s
  1) ana    files  expires in 6d
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#T-Ty_HhvLfY
  2) ben    files /srv/photos
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#L6La8OzBO74
  3) dev    forward 127.0.0.1:5432 shell
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#8kmI3LYzB7E

owner はそのアイデンティティ自身のコードであり、リスナーが提供するすべてを許可します。代わりに他のいずれかを送ってください。コンソールはラベルまたはその横の番号のどちらも受け付けるため、rm 2rm ben は同じ動作をします。

grantserve が受け取る語句で記述され、リスナーがすでに提供している内容を狭めることしかできません。つまり、リンクはケイパビリティの選択に限定されず、共有フォルダのサブディレクトリ、転送先のサブセット、または shell の単一コマンドを指定できます。grant を省略すると、リンクはリスナーが提供するすべてを許可します。リスナーの範囲外のものを要求すると、コンソールは serve が返すのと同じメッセージで拒否します。

ラベルはリンクを識別するものであり、その条件ではありません。そのため、2人が同一の grant と有効期限を持つリンクを保持していても、一方だけを失効させて他方には影響を与えないことができます。

失効と有効期限は、すでに開いているセッションにも到達します。接続は閉じられ、保持者には理由が通知され、黙って切断されることはありません。また、期限切れのコードは一時停止ではなく破棄されます。エントリを更新すると新しいコードが発行されるため、すでに送信した URL は無効のままです。

6桁コードによるペアリング

URLを貼り付けたりQRコードをスキャンしたりできない場合(電話中や声が届く距離にいる場合など)、bitbang serve は短いペアリングコードも表示します。相手は bitba.ng/<code> を開くか(または bitbang connect <code> を実行し)、相手の画面に2つ目の6桁の数字が表示されるので、その数字を読み上げてあなたに伝えます。あなたがそれを入力して承認します。中間者攻撃では2つの数字を一致させることはできず、ペアリングは次回のためにデバイス接続資格情報を保存します(例: bitbang connect nas1)。Magic Wormhole をご存知なら、形状は似ています。2台のマシンを安全に紹介する、読み上げるコードです。

サーバーが5分間のペアリングコードを表示し、相手がbitba.ngでそれを入力すると、相手の画面に読み上げ用の6桁のチャレンジが表示され、それをサーバー側のマシンで入力すると接続が承認されます

独自のTURNを利用する

ほとんどの接続は直接ピアツーピアで行われます。両端がホールパンチングできないNATの背後にある場合、トラフィックはリレーを必要とし、デフォルトではそれが当社のものになります。-ice-servers はリスナーを独自のものに向けます:``` bitbang serve -ice-servers ~/turn.json

リスナーは登録時にシグナリングサーバーへ設定を渡し、サーバーは接続してきた相手にそれを渡します。つまり、両端があなたのリレーを使用し、私たちのリレーは一切関与しません。任意のcoturn、またはCloudflareやTwilioのようなホスト型プロバイダーでも動作します。

ファイルはJSONで、プロバイダーから渡された以下の3つの形式のいずれかになります。```json
[{"urls": ["turn:turn.example.net:3478"], "username": "user", "credential": "pass"}]

The -p flag is used to specify the port number. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string. The -w flag is used to specify the wordlist file. The -z flag is used to specify the payload file. The -y flag is used to specify the proxy type. The -g flag is used to specify the regex pattern. The -j flag is used to specify the JSON data. The -h flag is used to display the help menu. The -v flag is used to enable verbose output. The -t flag is used to specify the target IP address or hostname. The -f flag is used to specify the file containing the list of targets. The -o flag is used to specify the output file for the results. The -c flag is used to specify the number of concurrent threads. The -d flag is used to specify the delay between requests. The -r flag is used to specify the number of retries. The -s flag is used to specify the timeout in seconds. The -u flag is used to specify the user agent string. The -x flag is used to specify the proxy server. The -k flag is used to specify the cookie string. The -a flag is used to specify the authentication credentials. The -e flag is used to specify the encoding type. The -i flag is used to specify the input format. The -l flag is used to specify the log level. The -m flag is used to specify the method of the request. The -n flag is used to specify the number of requests to send. The -b flag is used to specify the body of the request. The -q flag is used to specify the query string```json {"ice_servers": [{"urls": "stun:stun.example.net:3478"}]}

The `-p` flag is used to specify the port number, and the `-h` flag is used to specify the hostname or IP address. The `-t` flag is used to specify the timeout value in seconds. The `-v` flag is used to enable verbose output. The `-q` flag is used to enable quiet mode, which suppresses all output except for the final result. The `-o` flag is used to specify the output file for the results. The `-f` flag is used to specify the format of the output file, which can be either `txt` or `json`. The `-c` flag is used to specify the number of concurrent connections to use. The `-r` flag is used to specify the number of retries for each connection attempt. The `-d` flag is used to specify the delay between connection attempts. The `-s` flag is used to specify the source IP address for the connections. The `-i` flag is used to specify the network interface to use for the connections. The `-e` flag is used to specify the proxy server to use for the connections. The `-a` flag is used to specify the user agent string to use for the connections. The `-b` flag is used to specify the cookie string to use for the connections. The `-k` flag is used to specify the SSL certificate file to use for the connections. The `-l` flag is used to specify the SSL key file to use for the connections. The `-n` flag is used to specify the SSL CA certificate file to use for the connections. The `-m` flag is used to specify the HTTP method to use for the connections. The `-x` flag is used to specify the HTTP headers to use for the connections. The `-y` flag is used to specify the HTTP body to use for the connections. The `-z` flag is used to specify the HTTP parameters to use for the connections. The `-w` flag is used to specify the HTTP cookies to use for the connections. The `-u` flag is used to specify the HTTP authentication credentials to use for the connections. The `-g` flag is used to specify the HTTP authentication type to use for the connections. The `-j` flag is used to specify the HTTP authentication realm to use for the connections. The `-h` flag is used to specify the HTTP authentication domain to use for the connections. The `-v` flag is used to specify the HTTP authentication host to use for the connections. The `-q` flag is used to specify the HTTP authentication port to use for the connections. The `-o` flag is used to specify the HTTP authentication path to use for the connections. The `-f` flag is used to specify the HTTP authentication query to use for the connections. The `-c` flag is used to specify the HTTP authentication fragment to use for the connections. The `-r` flag is used to specify the HTTP authentication scheme to use for the connections. The `-d` flag is used to specify the HTTP authentication token to use for the connections. The `-s` flag is used to specify the HTTP authentication username to use for the connections. The `-i` flag is used to specify the HTTP authentication password to use for the connections. The `-e` flag is used to specify the HTTP authentication client certificate to use for the connections. The `-a` flag is used to specify the HTTP authentication client key to use for the connections. The `-b` flag is used to specify the HTTP authentication server certificate to use for the connections. The `-k` flag is used to specify the HTTP authentication server key to use for the connections. The `-l` flag is used to specify the HTTP authentication CA certificate to use for the connections. The `-n` flag is used to specify the HTTP authentication CA key to use for the connections. The `-m` flag is used to specify the HTTP authentication CRL to use for the connections. The `-x` flag is used to specify the HTTP authentication OCSP to use for the connections. The `-y` flag is used to specify the HTTP authentication timestamp to use for the connections. The `-z` flag is used to specify the HTTP authentication nonce to use for the connections. The `-w` flag is used to specify the HTTP authentication signature to use for the connections. The `-u` flag is used to specify the HTTP authentication digest to use for the connections. The `-g` flag is used to specify the HTTP authentication algorithm to use for the connections. The `-j` flag is used to specify the HTTP authentication encoding to use for the connections. The `-h` flag is used to specify the HTTP authentication language to use for the connections. The `-v` flag is used to specify the HTTP authentication charset to use for the connections. The `-q` flag is used to specify the HTTP authentication content type to use for the connections. The `-o` flag is used to specify the HTTP authentication content length to use for the connections. The `-f` flag is used to specify the HTTP authentication content encoding to use for the connections. The `-c` flag is used to specify the HTTP authentication content language to use for the connections. The `-r` flag is used to specify the HTTP authentication content location to use for the connections. The `-d` flag is used to specify the HTTP authentication content disposition to use for the connections. The `-s` flag is used to specify the HTTP authentication content range to use for the connections. The `-i` flag is used to specify the HTTP authentication content MD5 to use for the connections. The `-e` flag is used to specify the HTTP authentication content SHA to use for the connections. The `-a` flag is used to specify the HTTP authentication content HMAC to use for the connections. The `-b` flag is used to specify the HTTP authentication content MAC to use for the connections. The `-k` flag is used to specify the HTTP authentication content key to use for the connections. The `-l` flag is used to specify the HTTP authentication content IV to use for the connections. The `-n` flag is used to specify the HTTP authentication content salt to use for the connections. The `-m` flag is used to specify the HTTP authentication content padding to use for the connections. The `-x` flag is used to specify the HTTP authentication content mode to use for the connections. The `-y` flag is used to specify the HTTP authentication content cipher to use for the connections. The `-z` flag is used to specify the HTTP authentication content hash to use for the connections. The `-w` flag is used to specify the HTTP authentication content MAC algorithm to use for the connections. The `-u` flag is used to specify the HTTP authentication content key derivation function to use for the connections. The `-g` flag is used to specify the HTTP authentication content key exchange to use for the connections. The `-j` flag is used to specify the HTTP authentication content key agreement to use for the connections. The `-h` flag is used to specify the HTTP authentication content key wrap to use for the connections. The `-v` flag is used to specify the HTTP authentication content key unwrap to use for the connections. The `-q` flag is used to specify the HTTP authentication content key encryption to use for the connections. The `-o` flag is used to specify the HTTP authentication content key decryption to use for the connections. The `-f` flag is used to specify the HTTP authentication content key signing to use for the connections. The `-c` flag is used to specify the HTTP authentication content key verification to use for the connections. The `-r` flag is used to specify the HTTP authentication content key generation to use for the connections. The `-d` flag is used to specify the HTTP authentication content key storage to use for the connections. The `-s` flag is used to specify the HTTP authentication content key retrieval to use for the connections. The `-i` flag is used to specify the HTTP authentication content key deletion to use for the connections. The `-e` flag is used to specify the HTTP authentication content key rotation to use for the connections. The `-a` flag is used to specify the HTTP authentication content key revocation to use for the connections. The `-b` flag is used to specify the HTTP authentication content key renewal to use for the connections. The `-k` flag is used to specify the HTTP authentication content key backup to use for the connections. The `-l` flag is used to specify the HTTP authentication content key restore to use for the connections. The `-n` flag is used to specify the HTTP authentication content key recovery to use for the connections. The `-m` flag is used to specify the HTTP authentication content key destruction to use for the connections. The `-x` flag is used to specify the HTTP authentication content key erasure to use for the connections. The `-y` flag is used to specify the HTTP authentication content key sanitization to use for the connections. The `-z` flag is used to specify the HTTP authentication content key purge to use for the connections. The `-w` flag is used to specify the HTTP authentication content key wipe to use for the connections. The `-u` flag is used to specify the HTTP authentication content key clear to use for the connections. The `-g` flag is used to specify the HTTP authentication content key reset to use for the connections. The `-j` flag is used to specify the HTTP authentication content key initialize to use for the connections. The `-h` flag is used to specify the HTTP authentication content key finalize to use for the connections. The `-v` flag is used to specify the HTTP authentication content key terminate to use for the connections. The `-q` flag is used to specify the HTTP authentication content key abort to use for the connections. The `-o` flag is used to specify the HTTP authentication content key cancel to use for the connections. The `-f` flag is used to specify the HTTP authentication content key interrupt to use for the connections. The `-c` flag is used to specify the HTTP authentication content key pause to use for the connections. The `-r` flag is used to specify the HTTP authentication content key resume to use for the connections. The `-d` flag is used to specify the HTTP authentication content key continue to use for the connections. The `-s` flag is used to specify the HTTP authentication content key proceed to use for the connections. The `-i` flag is used to specify the HTTP authentication content key advance to use for the connections. The `-e` flag is used to specify the HTTP authentication content key progress to use for the connections. The `-a` flag is used to specify the HTTP authentication content key status to use for the connections. The `-b` flag is used to specify the HTTP authentication content key state to use for the connections. The `-k` flag is used to specify the HTTP authentication content key condition to use for the connections. The `-l` flag is used to specify the HTTP authentication content key situation to use for the connections. The `-n` flag is used to specify the HTTP authentication content key circumstance to use for the connections. The `-m` flag is used to specify the HTTP authentication content key environment to use for the connections. The `-x` flag is used to specify the HTTP authentication content key context to use for the connections. The `-y` flag is used to specify the HTTP authentication content key background to use for the connections. The `-z` flag is used to specify the HTTP authentication content key foreground to use for the connections. The `-w` flag is used to specify the HTTP authentication content key surface to use for the connections. The `-u` flag is used to specify the HTTP authentication content key interface to use for the connections. The `-g` flag is used to specify the HTTP authentication content key boundary to use for the connections. The `-j` flag is used to specify the HTTP authentication content key edge to use for the connections. The `-h` flag is used to specify the HTTP authentication content key limit to use for the connections. The `-v` flag is used to specify the HTTP authentication content key threshold to use for the connections. The `-q` flag is used to specify the HTTP authentication content key ceiling to use for the connections. The `-o` flag is used to specify the HTTP authentication content key floor to use for the connections. The `-f` flag is used to specify the HTTP authentication content key base to use for the connections. The `-c` flag is used to specify the HTTP authentication content key foundation to use for the connections. The `-r` flag is used to specify the HTTP authentication content key root to use for the connections. The `-d` flag is used to specify the HTTP authentication content key source to use for the connections. The `-s` flag is used to specify the HTTP authentication content key origin to use for the connections. The `-i` flag is used to specify the HTTP authentication content key beginning to use for the connections. The `-e` flag is used to specify the HTTP authentication content key start to use for the connections. The `-a` flag is used to specify the HTTP authentication content key end to use for the connections. The `-b` flag is used to specify the HTTP authentication content key finish to use for the connections. The `-k` flag is used to specify the HTTP authentication content key complete to use for the connections. The `-l` flag is used to specify the HTTP authentication content key done to use for the connections. The `-n` flag is used to specify the HTTP authentication content key over to use for the connections. The `-m` flag is used to specify the HTTP authentication content key through to use for the connections. The `-x` flag is used to specify the HTTP authentication content key across to use for the connections. The `-y` flag is used to specify the HTTP authentication content key beyond to use for the connections. The `-z` flag is used to specify the HTTP authentication content key past to use for the connections. The `-w` flag is used to specify the HTTP authentication content key future to use for the connections. The `-u` flag is used to specify the HTTP authentication content key present to use for the connections. The `-g` flag is used to specify the HTTP authentication content key current to use for the connections. The `-j` flag is used to specify the HTTP authentication content key actual to use for the connections. The `-h` flag is used to specify the HTTP authentication content key real to use for the connections. The `-v` flag is used to specify the HTTP authentication content key true to use for the connections. The `-q` flag is used to specify the HTTP authentication content key false to use for the connections. The `-o` flag is used to specify the HTTP authentication content key yes to use for the connections. The `-f` flag is used to specify the HTTP authentication content key no to use for the connections. The `-c` flag is used to specify the HTTP authentication content key on to use for the connections. The `-r` flag is used to specify the HTTP authentication content key off to use for the connections. The `-d` flag is used to specify the HTTP authentication content key enable to use for the connections. The `-s` flag is used to specify the HTTP authentication content key disable to use for the connections. The `-i` flag is used to specify the HTTP authentication content key activate to use for the connections. The `-e` flag is used to specify the HTTP authentication content key deactivate to use for the connections. The `-a` flag is used to specify the HTTP authentication content key trigger to use for the connections. The `-b` flag is used to specify the HTTP authentication content key release to use for the connections. The `-k` flag is used to specify the HTTP authentication content key fire to use for the connections. The `-l` flag is used to specify the HTTP authentication content key launch to use for the connections. The `-n` flag is used to specify the HTTP authentication content key start to use for the connections. The `-m` flag is used to specify the HTTP authentication content key stop to use for the connections. The `-x` flag is used to specify the HTTP authentication content key halt to use for the connections. The `-y` flag is used to specify the HTTP authentication content key cease to use for the connections. The `-z` flag is used to specify the HTTP authentication content key quit to use for the connections. The `-w` flag is used to specify the HTTP authentication content key exit to use for the connections. The `-u` flag is used to specify the HTTP authentication content key leave to use for the connections. The `-g` flag is used to specify the HTTP authentication content key depart to use for the connections. The `-j` flag is used to specify the HTTP authentication content key go to use for the connections. The `-h` flag is used to specify the HTTP authentication content key come to use for the connections. The `-v` flag is used to specify the HTTP authentication content key arrive to use for the connections. The `-q` flag is used to specify the HTTP authentication content key reach to use for the connections. The `-o` flag is used to specify the HTTP authentication content key attain to use for the connections. The `-f` flag is used to specify the HTTP authentication content key achieve to use for the connections. The `-c` flag is used to specify the HTTP authentication content key accomplish to use for the connections. The `-r` flag is used to specify the HTTP authentication content key fulfill to use for the connections. The `-d` flag is used to specify the HTTP authentication content key satisfy to use for the connections. The `-s` flag is used to specify the HTTP authentication content key meet to use for the connections. The `-i` flag is used to specify the HTTP authentication content key match to use for the connections. The `-e` flag is used to specify the HTTP authentication content key fit to use for the connections. The `-a` flag is used to specify the HTTP authentication content key suit to use for the connections. The `-b` flag is used to specify the HTTP authentication content key adapt to use for the connections. The `-k` flag is used to specify the HTTP authentication content key adjust to use for the connections. The `-l` flag is used to specify the HTTP authentication content key modify to use for the connections. The `-n` flag is used to specify the HTTP authentication content key change to use for the connections. The `-m` flag is used to specify the HTTP authentication content key alter to use for the connections. The `-x` flag is used to specify the HTTP authentication content key vary to use for the connections. The `-y` flag is used to specify the HTTP authentication content key differ to use for the connections. The `-z` flag is used to specify the HTTP authentication content key contrast to use for the connections. The `-w` flag is used to specify the HTTP authentication content key compare to use for the connections. The `-u` flag is used to specify the HTTP authentication content key relate to use for the connections. The `-g` flag is used to specify the HTTP authentication content key connect to use for the connections. The `-j` flag is used to specify the HTTP authentication content key link to use for the connections. The `-h` flag is used to specify the HTTP authentication content key join to use for the connections. The `-v` flag is used to specify the HTTP authentication content key unite to use for the connections. The `-q` flag is used to specify the HTTP authentication content key merge to use for the connections. The `-o` flag is used to specify the HTTP authentication content key combine to use for the connections. The `-f` flag is used to specify the HTTP authentication content key blend to use for the connections. The `-c` flag is used to specify the HTTP authentication content key mix to use for the connections. The `-r` flag is used to specify the HTTP authentication content key fuse to use for the connections. The `-d` flag is used to specify the HTTP authentication content key integrate to use for the connections. The `-s` flag is used to specify the HTTP authentication content key incorporate to use for the connections. The `-i` flag is used to specify the HTTP authentication content key include to use for the connections. The `-e` flag is used to specify the HTTP authentication content key contain to use for the connections. The `-a` flag is used to specify the HTTP authentication content key hold to use for the connections. The `-b` flag is used to specify the HTTP authentication content key carry to use for the connections. The `-k` flag is used to specify the HTTP authentication content key bear to use for the connections. The `-l` flag is used to specify the HTTP authentication content key support to use for the connections. The `-n` flag is used to specify the HTTP authentication content key sustain to use for the connections. The `-m` flag is used to specify the HTTP authentication content key maintain to use for the connections. The `-x` flag is used to specify the HTTP authentication content key preserve to use for the connections. The `-y` flag is used to specify the HTTP authentication content key keep to use for the connections. The `-z` flag is used to specify the HTTP authentication content key retain to use for the connections. The `-w` flag is used to specify the HTTP authentication content key save to use for the connections. The `-u` flag is used to specify the HTTP authentication content key store to use for the connections. The `-g` flag is used to specify the HTTP authentication content key cache to use for the connections. The `-j` flag is used to specify the HTTP authentication content key buffer to use for the connections. The `-h` flag is used to specify the HTTP authentication content key queue to use for the connections. The `-v` flag is used to specify the HTTP authentication content key stack to use for the connections. The `-q` flag is used to specify the HTTP authentication content key heap to use for the connections. The `-o` flag is used to specify the HTTP authentication content key pool to use for the connections. The `-f` flag is used to specify the HTTP authentication content key list to use for the connections. The `-c` flag is used to specify the HTTP authentication content key array to use for the connections. The `-r` flag is used to specify the HTTP authentication content key vector to use for the connections. The `-d` flag is used to specify the HTTP authentication content key matrix to use for the connections. The `-s` flag is used to specify the HTTP authentication content key grid to use for the connections. The `-i` flag is used to specify the HTTP authentication content key table to use for the connections. The `-e` flag is used to specify the HTTP authentication content key chart to use for the connections. The `-a` flag is used to specify the HTTP authentication content key graph to use for the connections. The `-b` flag is used to specify the HTTP authentication content key tree to use for the connections. The `-k` flag is used to specify the HTTP authentication content key node to use for the connections. The `-l` flag is used to specify the HTTP authentication content key leaf to use for the connections. The `-n` flag is used to specify the HTTP authentication content key branch to use for the connections. The `-m` flag is used to specify the HTTP authentication content key root to use for the connections. The `-x` flag is used to specify the HTTP authentication content key stem to use for the connections. The `-y` flag is used to specify the HTTP authentication content key trunk to use for the connections. The `-z` flag is used to specify the HTTP authentication content key core to use for the connections. The `-w` flag is used to specify the HTTP authentication content key center to use for the connections. The `-u` flag is used to specify the HTTP authentication content key middle to use for the connections. The `-g` flag is used to specify the HTTP authentication content key heart to use for the connections. The `-j` flag is used to specify the HTTP authentication content key soul to use for the connections. The `-h` flag is used to specify the HTTP authentication content key spirit to use for the connections. The `-v` flag is used to specify the HTTP authentication content key essence to use for the connections. The `-q` flag is used to specify the HTTP authentication content key nature to use for the connections. The `-o` flag is used to specify the HTTP authentication content key character to use for the connections. The `-f` flag is used to specify the HTTP authentication content key quality to use for the connections. The `-c` flag is used to specify the HTTP authentication content key property to use for the connections. The `-r` flag is used to specify the HTTP authentication content key attribute to use for the connections. The `-d` flag is used to specify the HTTP authentication content key feature to use for the connections. The `-s` flag is used to specify the HTTP authentication content key trait to use for the connections. The `-i` flag is used to specify the HTTP authentication content key aspect to use for the connections. The `-e` flag is used to specify the HTTP authentication content key facet to use for the connections. The `-a` flag is used to specify the HTTP authentication content key side to use for the connections. The `-b` flag is used to specify the HTTP authentication content key angle to use for the connections. The `-k` flag is used to specify the HTTP authentication content key perspective to use for the connections. The `-l` flag is used to specify the HTTP authentication content key viewpoint to use for the connections. The `-n` flag is used to specify the HTTP authentication content key standpoint to use for the connections. The `-m` flag is used to specify the HTTP authentication content key position to use for the connections. The `-x` flag is used to specify the HTTP authentication content key stance to use for the connections. The `-y` flag is used to specify the HTTP authentication content key posture to use for the connections. The `-z` flag is used to specify the HTTP authentication content key attitude to use for the connections. The `-w` flag is used to specify the HTTP authentication content key approach to use for the connections. The `-u` flag is used to specify the HTTP authentication content key method to use for the connections. The `-g` flag is used to specify the HTTP authentication content key technique to use for the connections. The `-j` flag is used to specify the HTTP authentication content key procedure to use for the connections. The `-h` flag is used to specify the HTTP authentication content key process to use for the connections. The `-v` flag is used to specify the HTTP authentication content key operation to use for the connections. The `-q` flag is used to specify the HTTP authentication content key function to use for the connections. The `-o` flag is used to specify the HTTP authentication content key action to use for the connections. The `-f` flag is used to specify the HTTP authentication content key activity to use for the connections. The `-c` flag is used to specify the HTTP authentication content key task to use for the connections. The `-r` flag is used to specify the HTTP authentication content key job to use for the connections. The `-d` flag is used to specify the HTTP authentication content key work to use for the connections. The `-s` flag is used to specify the HTTP authentication content key labor to use for the connections. The `-i` flag is used to specify the HTTP authentication content key effort to use for the connections. The `-e` flag is used to specify the HTTP authentication content key endeavor to use for the connections. The `-a` flag is used to specify the HTTP authentication content key attempt to use for the connections. The `-b` flag is used to specify the HTTP authentication content key try to use for the connections. The `-k` flag is used to specify the HTTP authentication content key test to use for the connections. The `-l` flag is used to specify the HTTP authentication content key trial to use for the connections. The `-n` flag is used to specify the HTTP authentication content key experiment to use for the connections. The `-m` flag is used to specify the HTTP authentication content key investigation to use for the connections. The `-x` flag is used to specify the HTTP authentication content key research to use for the connections. The `-y` flag is used to specify the HTTP authentication content key study to use for the connections. The `-z` flag is used to specify the HTTP authentication content key analysis to use for the connections. The `-w` flag is used to specify the HTTP authentication content key examination to use for the connections. The `-u` flag is used to specify the HTTP authentication content key inspection to use for the connections. The `-g` flag is used to specify the HTTP authentication content key review to use for the connections. The `-j` flag is used to specify the HTTP authentication content key evaluation to use for the connections. The `-h` flag is used to specify the HTTP authentication content key assessment to use for the connections. The `-v` flag is used to specify the HTTP authentication content key appraisal to use for the connections. The `-q` flag is used to specify the HTTP authentication content key estimation to use for the connections. The `-o` flag is used to specify the HTTP authentication content key calculation to use for the connections. The `-f` flag is used to specify the HTTP authentication content key computation to use for the connections. The `-c` flag is used to specify the HTTP authentication content key measurement to use for the connections. The `-r` flag is used to specify the HTTP authentication content key quantification to use for the connections. The `-d` flag is used to specify the HTTP authentication content key qualification to use for the connections. The `-s` flag is used to specify the HTTP authentication content key classification to use for the connections. The `-i` flag is used to specify the HTTP authentication content key categorization to use for the connections. The `-e` flag is used to specify the HTTP authentication content key grouping to use for the connections. The `-a` flag is used to specify the HTTP authentication content key sorting to use for the connections. The `-b` flag is used to specify the HTTP authentication content key ordering to use for the connections. The `-k` flag is used to specify the HTTP authentication content key ranking to use for the connections. The `-l` flag is used to specify the HTTP authentication content key grading to use for the connections. The `-n` flag is used to specify the HTTP authentication content key scoring to use for the connections. The `-m` flag is used to specify the HTTP authentication content key rating to use for the connections. The `-x` flag is used to specify the HTTP authentication content key valuing to use for the connections. The `-y` flag is used to specify the HTTP authentication content key pricing to use for the connections. The `-z` flag is used to specify the HTTP authentication content key costing to use for the connections. The `-w` flag is used to specify the HTTP authentication content key budgeting to use for the connections. The `-u` flag is used to specify the HTTP authentication content key financing to use for the connections. The `-g` flag is used to specify the HTTP authentication content key funding to use for the connections. The `-j` flag is used to specify the HTTP authentication content key investing to use for the connections. The `-h` flag is used to specify the HTTP authentication content key spending to use for the connections. The `-v` flag is used to specify the HTTP authentication content key saving to use for the connections. The `-q` flag is used to specify the HTTP authentication content key earning to use for the connections. The `-o` flag is used to specify the HTTP authentication content key gaining to use for the connections. The `-f` flag is used to specify the HTTP authentication content key winning to use for the connections. The `-c` flag is used to specify the HTTP authentication content key losing to use for the connections. The `-r` flag is used to specify the HTTP authentication content key failing to use for the connections. The `-d` flag is used to specify the HTTP authentication content key succeeding to use for the connections. The `-s` flag is used to specify the HTTP authentication content key achieving to use for the connections. The `-i` flag is used to specify the HTTP authentication content key accomplishing to use for the connections. The `-e` flag is used to specify the HTTP authentication content key fulfilling to use for the connections. The `-a` flag is used to specify the HTTP authentication content key satisfying to use for the connections. The `-b` flag is used to specify the HTTP authentication content key meeting to use for the connections. The `-k` flag is used to specify the HTTP authentication content key matching to use for the connections. The `-l` flag is used to specify the HTTP authentication content key fitting to use for the connections. The `-n` flag is used to specify the HTTP authentication content key suiting to use for the connections. The `-m` flag is used to specify the HTTP authentication content key adapting to use for the connections. The `-x` flag is used to specify the HTTP authentication content key adjusting to use for the connections. The `-y` flag is used to specify the HTTP authentication content key modifying to use for the connections. The `-z` flag is used to specify the HTTP authentication content key changing to use for the connections. The `-w` flag is used to specify the HTTP authentication content key altering to use for the connections. The `-u` flag is used to specify the HTTP authentication content key varying to use for the connections. The `-g` flag is used to specify the HTTP authentication content key differing to use for the connections. The `-j` flag is used to specify the HTTP authentication content key contrasting to use for the connections. The `-h` flag is used to specify the HTTP authentication content key comparing to use for the connections. The `-v` flag is used to specify the HTTP authentication content key relating to use for the connections. The `-q` flag is used to specify the HTTP authentication content key connecting to use for the connections. The `-o` flag is used to specify the HTTP authentication content key linking to use for the connections. The `-f` flag is used to specify the HTTP authentication content key joining to use for the connections. The `-c` flag is used to specify the HTTP authentication content key uniting to use for the connections. The `-r` flag is used to specify the HTTP authentication content key merging to use for the connections. The `-d` flag is used to specify the HTTP authentication content key combining to use for the connections. The `-s` flag is used to specify the HTTP authentication content key blending to use for the connections. The `-i` flag is used to specify the HTTP authentication content key mixing to use for the connections. The `-e` flag is used to specify the HTTP authentication content key fusing to use for the connections. The `-a` flag is used to specify the HTTP authentication content key integrating to use for the connections. The `-b` flag is used to specify the HTTP authentication content key incorporating to use for the connections. The `-k` flag is used to specify the HTTP authentication content key including to use for the connections. The `-l` flag is used to specify the HTTP authentication content key containing to use for the connections. The `-n` flag is used to specify the HTTP authentication content key holding to use for the connections. The `-m` flag is used to specify the HTTP authentication content key carrying to use for the connections. The `-x` flag is used to specify the HTTP authentication content key bearing to use for the connections. The `-y` flag is used to specify the HTTP authentication content key supporting to use for the connections. The `-z` flag is used to specify the HTTP authentication content key sustaining to use for the connections. The `-w` flag is used to specify the HTTP authentication content key maintaining to use for the connections. The `-u` flag is used to specify the HTTP authentication content key preserving to use for the connections. The `-g` flag is used to specify the HTTP authentication content key keeping to use for the connections. The `-j` flag is used to specify the HTTP authentication content key retaining to use for the connections. The `-h` flag is used to specify the HTTP authentication content key saving to use for the connections. The `-v` flag is used to specify the HTTP authentication content key storing to use for the connections. The `-q` flag is used to specify the HTTP authentication content key caching to use for the connections. The `-o` flag is used to specify the HTTP authentication content key buffering to use for the connections. The `-f` flag is used to specify the HTTP authentication content key queuing to use for the connections. The `-c` flag is used to specify the HTTP authentication content key stacking to use for the connections. The `-r` flag is used to specify the HTTP authentication content key heaping to use for the connections. The `-d` flag is used to specify the HTTP authentication content key pooling to use for the connections. The `-s` flag is used to specify the HTTP authentication content key listing to use for the connections. The `-i` flag is used to specify the HTTP authentication content key arraying to use for the connections. The `-e` flag is used to specify the HTTP authentication content key vectoring to use for the connections. The `-a` flag is used to specify the HTTP authentication content key matrixing to use for the connections. The `-b` flag is used to specify the HTTP authentication content key gridding to use for the connections. The `-k` flag is used to specify the HTTP authentication content key tabling to use for the connections. The `-l` flag is used to specify the HTTP authentication content key charting to use for the connections. The `-n` flag is used to specify the HTTP authentication content key graphing```json
{"iceServers": [{"urls": ["turn:turn.example.net:3478"], "username": "u", "credential": "p"}]}

urls は文字列またはリストを受け取ります。usernamecredential は TURN 用で、STUN のみのエントリでは省略できます。パスは絶対パス、相対パス、~ で始まるパスのいずれでも構いません。パースできないファイルがあると、リスナーは静かにフォールバックするのではなく、起動時に停止します。

セッションが要求されていないのにリレー経由になった場合、bitbang connect はその旨を表示し、なぜ遅く感じるのか疑問に思わせることはありません。リスナーはどちらの場合でもログに記録します(via RELAY 経由)。また、-relay / -norelay を使用すると、経路を診断する際にその問題を強制的にどちらかに確定できます。

言っておく価値があるのは、これは誰がバイトを運ぶかという話であり、誰がそれを読めるかという話ではないということです。リレーは常に DTLS 暗号文のみを参照します(当社のものも含みます)。当社が提供できる以上の TURN が必要な場合は、自分でリレーを実行してください(現在は時間を制限しています)。

ブラウザからの接続

URL を開きます。提供される内容に応じて、以下が得られます:

  • Shell -- ページ内の完全なターミナル(色、リサイズ、コピー/ペースト)。
  • Files -- 閲覧、プレビュー、ダウンロード、アップロード。
  • Proxy -- LAN アドレス(nas.local192.168.1.10:8080localhost:3000/admin)を入力し、ローカルにいるかのようにアプリを使用します。ログイン、Cookie、アップロード、ストリーミングはすべて機能します。

CLI からの接続```

bitbang connect # interactive shell bitbang connect -- tail -f /var/log/syslog # one-shot command bitbang connect -L 15432:db.internal:5432 # local TCP forwarding bitbang connect -L 14450:nas.local:445 -L 15900:[fd00::20]:5900 bitbang cp :/var/log/app.log ./app.log # copy files, scp-style bitbang cp - :/tmp/firmware.bin < firmware.bin # stdin/stdout work too

`-L` は **TCP のみ** を転送します(`ssh -L` と同様)。`-L` は `-g` を渡さない限り `127.0.0.1` にバインドします。`-g` を渡すと、転送されたポートがローカルネットワークから到達可能になり、そこに到達した誰もがトンネルが到達するものにアクセスできます。その際、BitBang の認証情報は前面にありません。

リスナーには `bitbang serve forward` または `bitbang serve` が必要です。デフォルトでは、`forward` リンクは意図したホスト:ポートだけでなく、**リスナーが到達できる任意のホスト:ポート** に到達します。そのため、データベース用に配布されたリンクは、そのネットワークの他の部分にも到達します。到達可能な対象を指定して絞り込みます:```
bitbang serve forward db.internal:5432        # this link reaches one service

接続またはペアリングが成功するたびに ~/.bitbang/devices.json に保存されるため、以降は短い名前だけで十分です: bitbang connect nas1

プラットフォーム対応

プラットフォームごとに1つのバイナリで、ランタイム依存関係はありません。以下で明記されている2行を除き、すべての環境で動作します。

LinuxmacOSWindows
シェル、ファイル、プロキシ (bitbang serve)yesyesyes
TCP 転送 (-L)yesyesyes
アクセスリンク -- 付与、期限、失効yesyesyes
独自の TURN を使用yesyesyes
6桁のコードによるペアリングyesyesyes
リスナーコンソール (Enter)yesyesyes
bitbang connect, bitbang cpyesyesyes
共有セッションの表示yesyesyes
共有のホスト (bitbang share)yesyesno *
接続中のターミナルサイズ変更yesyesno **

* bitbang share は tmux セッションを公開するため、ホストには tmux が必要です -- Linux、macOS、または WSL。ネイティブ Windows でも bitbang connect で共有 URL を開くことはできます。

** Windows のコネクタはターミナルのサイズ変更を認識しないため、リモートシェルは再接続するまで開始時のサイズを維持します。Unix は SIGWINCH からこれを取得しますが、Windows にはそれに相当するものはありません。

セキュリティ

  • 自己証明型アイデンティティ。 初回実行時に、bitbang~/.bitbang/<program>/ の下に RSA 鍵ペアを生成します。デバイス UID は公開鍵から導出されるため、デバイスを偽装するには UID の第二原像を見つける必要があります。
  • シークレットはサーバーに触れません。 アクセスコードは URL フラグメント (#…) に存在し、ブラウザはこれを送信しません -- bitba.ng は、それを承認する認証情報を見ることなく接続を仲介します。
  • エンドツーエンド暗号化。 すべてのトラフィックは WebRTC の DTLS を利用します。シグナリングサーバーは公開鍵、導出された UID、接続メタデータのみを確認します -- データは決して確認しません。必要に応じて TURN リレーは暗号文のみを確認します。
  • 検証済みペアリング。 コードペアリングの読み上げ番号は短い認証文字列 (SAS) であり、交渉された DTLS フィンガープリントと2つのコミット済みノンスから両端で独立に計算されます -- フィンガープリントが必然的に異なる中間者攻撃者は、2つの番号を一致させることができません。
  • URL はベアラ認証情報です。 それを保持する人は誰でも、あなたが提供することを選択したもの -- serve shell を実行した場合はシェル -- を取得できます。それに応じて共有してください。
  • オプションの PIN (--pin) は、常設またはヘッドレスセットアップ用で、使い捨てモード (-ephemeral) は実行ごとに新しいアイデンティティを提供します。
  • サーバーが依然として確認するもの。 何も確認しないわけではありません。紹介を仲介するため、両端の IP アドレス、接続時刻、交換量を観察します。エンドツーエンド暗号化によりデータからは守られますが、その周囲のメタデータからは守られません -- 最小限の信頼信頼不要 よりも正確な説明です。
  • ブラウザは読み込んだページを信頼します。 ブラウザクライアントはシグナリングサーバーが提供する JavaScript であるため、URL を開くことは、そのサーバーが誠実なコードを提供することを信頼することを意味します。bitbang connect にはそのような依存関係はありません。これはインストールしてチェックサムを検証したバイナリです。その違いが重要であれば、CLI で接続してください。

シグナリングサーバーが接続に割り込めないように、両端が互いにどのように認証するかについては、こちらで詳しく説明されています: 信頼不要のシグナリング: 中央機関なしの認証

なぜ?

  • 開くものや設定するものはありません。 NAT、CGNAT、または制限されたネットワークの背後でも動作します -- ルーターの変更、VPN、トンネルデーモンは不要です。
  • 接続側にインストールするものはありません。 ブラウザだけで十分です。スクリプト、パイプ、ファイルコピーが必要な場合は CLI があります。
  • 設計上プライベート。 トラフィックは WebRTC/DTLS で、ピアツーピアです。シグナリングサーバーはそれを確認しません。直接パスが不可能な場合、TURN リレーは暗号文のみを運びます。
  • アカウント不要、テレメトリなし。

なぜ SSH や Tailscale を使わないのか?

簡単に言うと: すでに SSH で接続できるマシン、またはインストールできる自分のデバイスのフリートがある場合は、現在のものを使い続けてください。bitbang は、遠端がデバイスではなく人である場合、または座っている場所に何もインストールできない場合に使用します。両方の質問には FAQ で詳しく回答しています。

インストール```

curl -sSfL bitba.ng/install | sh

LinuxおよびmacOS。OSとアーキテクチャ(Linuxでは`amd64`、`arm64`、`armv7`)を検出し、最新の[GitHubリリース](https://github.com/richlegrand/bitbang-cli/releases)からバイナリをダウンロードして、リリースの`checksums.txt`に対してSHA-256を検証し、`~/.local/bin/bitbang`にインストールします。

Windowsビルドは`bitbang-windows-amd64.exe`および
`bitbang-windows-arm64.exe`として公開されています。Releasesから適切なバイナリをダウンロードし、
`bitbang.exe`にリネームして、`PATH`に配置してください。
**ソースからのビルド:** [下記](#building-from-source)を参照してください。

**macOSとGatekeeper。** 上記のインストール用ワンライナーは影響を受けません。`curl`は
`com.apple.quarantine`属性を設定しないため、取得したバイナリは正常に実行されます。
代わりにReleasesページからブラウザで`bitbang-darwin-arm64`をダウンロードした場合、
macOSはそれを隔離し、リリースバイナリが公証(notarized)されていないため、開くことを拒否します。次のいずれかで解除してください:```
xattr -d com.apple.quarantine ./bitbang-darwin-arm64

or right-click the file in Finder and choose Open, which offers a one-time override. Alternatively, build from source, which never quarantines.

Windows and SmartScreen. The same thing happens on Windows, for the same reason. A browser download attaches Mark-of-the-Web, so the first run shows "Windows protected your PC" -- choose More info, then Run anyway. The release binaries are not code-signed, so this is expected rather than a sign anything is wrong. Fetching the .exe with curl or PowerShell's Invoke-WebRequest does not attach it, and neither does building from source.

インストールオプション

バージョンを固定する、場所を変更する、または実行前にスクリプトを読む:``` curl -sSfL bitba.ng/install | sh -s -- --version 0.5.0 curl -sSfL bitba.ng/install | sh -s -- --prefix /usr/local/bin

curl -sSfL bitba.ng/install -o install.sh && less install.sh && sh install.sh

リリースタグには `v` プレフィックスは付きません(`0.5.0` であり、`v0.5.0` ではありません)。

### インストールURLの仕組み

`bitba.ng/install` はリダイレクトであり、ホストされたスクリプトではありません。その連鎖は以下の通りです:

1. `curl` が `https://bitba.ng/install` にアクセスし、このリポジトリ(`main` ブランチ)内の [`install.sh`](https://github.com/richlegrand/bitbang-cli/blob/HEAD/install.sh) へ302リダイレクトされます。
2. スクリプトがシェル内で実行され、OSとアーキテクチャを検出して、`https://github.com/richlegrand/bitbang-cli/releases/latest/download/bitbang-linux-<arch>` からバイナリアセットをダウンロードします。
3. 同じリリースから `checksums.txt` を取得し、バイナリのSHA-256を検証します。
4. `~/.local/bin` にインストールします(上書き可能)。

インストールスクリプトは、インストールするコードと同じこのリポジトリ内に置かれているため、バイナリと一緒にレビューできます。また、正規の bitba.ng ホストは短縮URLのみを所有します。セルフホストユーザーは、自ホストの `/install` を自分が配布する任意のスクリプトに指定できます。シグナリングサーバーの `INSTALL_URL` 環境変数がリダイレクト先を制御します(空の場合は404)。

## コマンドリファレンス

すべてのサブコマンドとフラグは **[CLI.md](https://github.com/richlegrand/bitbang-cli/blob/HEAD/CLI.md)** に記載されており、`bitbang <command> --help` でもターミナルに同じ内容が表示されます。

## ソースからのビルド

Go 1.25+ が必要です。純粋なGoで、静的リンク(`CGO_ENABLED=0`)されており、クロスコンパイルは簡単で、実行時の依存関係はありません。```
go build ./cmd/bitbang/

# cross-compile:
GOOS=linux   GOARCH=arm64        go build -o bitbang-arm64 ./cmd/bitbang/
GOOS=linux   GOARCH=arm GOARM=7  go build -o bitbang-armv7 ./cmd/bitbang/
GOOS=windows GOARCH=amd64        go build -o bitbang.exe   ./cmd/bitbang/
GOOS=darwin  GOARCH=arm64        go build -o bitbang-macos ./cmd/bitbang/

Windowsコマンドプロンプトから:```bat go build -o bitbang.exe .\cmd\bitbang go test .... run_tests.cmd unit

シェルコマンド、ファイル共有、プロキシ、およびCLIクライアントはWindowsでサポートされています。
インタラクティブブラウザおよびCLIシェルはWindows ConPTYを使用し、ターミナル入力エコー、行編集、VT出力、リサイズイベントを含みます。ConPTYにはWindows 10バージョン1809またはWindows Server 2019以降が必要です。

## 図

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/47068/d68fcddad62ab84f11a549906a2b5abf2330fb25f39b3c1a1266eac7257a080d.png" alt="bitbang CLIシェルとファイル共有" width="760">
  <img src="https://assets.kitploit.com/production/public/readmes/47068/55bb6866c22504a6434e3dee8cb998e747cd73cb9d0bfa5e0bc0ede7b90ce262.png" alt="bitbang CLIプロキシ動作" width="720">  
</p>

## ロードマップ

現在提供中: **シェル、ファイル、プロキシ**。ブラウザまたはCLIからアクセス可能で、さらに**TCPポートフォワーディング**、scpスタイルのファイルコピー、保存されたデバイステーブルによる**アドホックペアリング**、**ターミナル共有**(`bitbang share`)、およびURLが付与する権限を絞り込み期限を設定する**アクセスリンク**(`bitbang link`)も含みます。設計済みで今後提供予定:

- **シリアルブリッジ** -- ローカルの仮想ポートからリモートの `/dev/ttyUSB0` を操作(例: Arduino IDEをインターネット経由で実行)。問題は[こちら](https://github.com/richlegrand/bitbang-cli/issues/3)に登録されています。
- **リモートデスクトップ** -- WebRTCビデオトラック経由の画面、データチャネル経由のキーボード/マウス。

## ライセンス

MIT -- [LICENSE](https://github.com/richlegrand/bitbang-cli/blob/HEAD/LICENSE) を参照してください。

## コントリビューション

IssueとPRを歓迎します。

レシピは異なります: それらは[bitbang](https://github.com/richlegrand/bitbang)リポジトリ内の[cookbook](https://github.com/richlegrand/bitbang/blob/main/cookbook.md)に置かれています。なぜなら、レシピはこのプロジェクトだけでなくすべてのプロジェクトにまたがるからです。レシピの追加はそこへのPRとなります。

*掲載*するには、READMEに表示すべき各プロジェクトごとに2つ目の小さなPRが必要です -- 上記の[レシピ](#recipes)リストはここで手動で管理されています。これは意図的です: 各プロジェクトが、すべてのREADMEがすべてのレシピを増やすのではなく、自らの読者に提示する価値のあるレシピを決定するためです。

カテゴリ