これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド nc.openbsd です。
プログラム:
NAME
nc — 任意の TCP および UDP 接続とリッスン
SYNOPSIS
nc [-46bCDdhklnrStUuvZz] [-I 長さ] [-i インターバル] [-O 長さ] [-P プロキシユーザー名]
[-p ソースポート] [-q 秒] [-s source] [-T キーワード] [-V テーブル] [-w タイムアウト]
[-X プロキシプロトコル] [-x プロキシアドレス[:ポート]][デスティネーション] [ポート]
DESCRIPTION
この nc (または netcat) ユーティリティは、TCP、UDP、
または UNIX ドメイン ソケット。 TCP 接続を開き、UDP パケットを送信し、任意でリッスンできます。
TCP および UDP ポート、ポート スキャンの実行、および IPv4 と IPv6 の両方の処理。 ようではない telnet(1) nc
エラーメッセージを標準エラーに送信するのではなく、標準エラーに分離します。
標準出力 telnet(1) いくつかあります。
一般的な用途には次のようなものがあります。
· 単純な TCP プロキシ
· シェルスクリプトベースのHTTPクライアントとサーバー
· ネットワークデーモンのテスト
· の SOCKS または HTTP ProxyCommand ssh(1)
· そしてはるかに
オプションは以下のとおりです。
-4 軍隊 nc IPv4アドレスのみを使用します。
-6 軍隊 nc IPv6アドレスのみを使用します。
-b ブロードキャストを許可します。
-C 行末として CRLF を送信します。
-D ソケットでデバッグを有効にします。
-d stdin から読み取ろうとしないでください。
-h プリントアウト nc 助けて。
-I 長さ
TCP 受信バッファのサイズを指定します。
-i インターバル
送受信されるテキスト行間の遅延時間間隔を指定します。 また
複数のポートへの接続間に遅延時間が発生します。
-k 軍隊 nc 現在の接続が切断された後も別の接続をリッスンし続ける
完了しました。 なしでこのオプションを使用するとエラーになります。 -l オプションを選択します。
-l それを指定するために使用されます nc ではなく、着信接続をリッスンする必要があります
リモート ホストへの接続を開始します。 このオプションを使用するとエラーになります。
と組み合わせて -p, -sまたは -z オプション。 さらに、指定されたタイムアウト
-w オプションは無視されます。
-n 指定されたアドレス、ホスト名、またはポートに対して DNS またはサービス ルックアップを実行しないでください。
-O 長さ
TCP 送信バッファのサイズを指定します。
-P プロキシユーザー名
認証が必要なプロキシ サーバーに提示するユーザー名を指定します。 もしも
ユーザー名が指定されていない場合、認証は試行されません。 プロキシー
現在、認証は HTTP CONNECT プロキシに対してのみサポートされています。
-p ソースポート
送信元ポートを指定します nc 特権の制限を条件として使用する必要があります。
可用性。
-q 秒
標準入力の EOF の後、指定された秒数待ってから終了します。 もしも 秒
がマイナスの場合は、永遠に待ちます。
-r 送信元ポートおよび/または宛先ポートをランダムに選択する必要があることを指定します。
範囲内で順番に、またはシステムが割り当てた順序で。
-S RFC 2385 TCP MD5 署名オプションを有効にします。
-s source
パケットの送信に使用されるインターフェイスの IP を指定します。 ために
UNIX ドメイン データグラム ソケット。作成するローカル一時ソケット ファイルを指定します。
データグラムを受信できるように使用します。 このオプションを使用するとエラーになります。
と組み合わせて -l オプションを選択します。
-T キーワード
IPv4 TOS 値を変更します。 キーワード のいずれかである可能性があります 重大な, ネットコントロール, lowcost,
低遅延, ネットコントロール, スループット, 信頼性、または DiffServ コード ポイントの XNUMX つ:
ef, af11 ... af43, cs0 ... cs7; または XNUMX 進数または XNUMX 進数の数値。
-t 目的 nc RFC 854 DO および WILL 要求に対する RFC 854 DON'T および WON'T 応答を送信します。
これにより、使用できるようになります nc telnet セッションをスクリプト化します。
-U UNIX ドメイン ソケットを使用するように指定します。
-u TCP のデフォルト オプションの代わりに UDP を使用します。 UNIX ドメイン ソケットの場合は、
ストリームソケットの代わりにデータグラムソケット。 UNIX ドメイン ソケットが使用されている場合、
一時受信ソケットが作成されます / tmpに を除いて -s フラグが与えられます。
-V テーブル
使用するルーティングテーブルを設定します。 デフォルトは 0 です。
-v 持ってる nc より詳細な出力を提供します。
-w タイムアウト
確立できないかアイドル タイムアウトになっている接続 タイムアウト 秒です。
この -w フラグは -l オプション、つまり nc 永遠に耳を傾けます
接続の有無にかかわらず -w 国旗。 デフォルトはタイムアウトなしです。
-X プロキシプロトコル
を要求します。 nc プロキシ サーバーと通信するときは、指定されたプロトコルを使用する必要があります。
サポートされているプロトコルは、「4」(SOCKS v.4)、「5」(SOCKS v.5)、および「connect」(HTTPS)です。
プロキシー)。 プロトコルが指定されていない場合、SOCKS バージョン 5 が使用されます。
-x プロキシアドレス[:ポート]
を要求します。 nc に接続する必要があります デスティネーション でプロキシを使用する プロキシアドレス および
ポート。 場合 ポート が指定されていない場合、プロキシ プロトコルの既知のポートが使用されます
(SOCKS の場合は 1080、HTTPS の場合は 3128)。
-Z DCCP モード。
-z それを指定します nc データを送信せずに、リスニングデーモンをスキャンするだけです
彼らへ。 このオプションを -l オプションを選択します。
デスティネーション 数値の IP アドレスまたはシンボリックなホスト名にすることができます ( -n オプションがある
与えられた)。 一般に、宛先は指定する必要があります。 -l オプションが与えられます(で
この場合、ローカル ホストが使用されます)。 UNIX ドメイン ソケットの場合、宛先が必要です。
接続先のソケット パスです (または、 -l オプションが与えられます)。
ポート 単一の整数またはポートの範囲を指定できます。 範囲は nn-mm の形式です。 の
一般に、宛先ポートを指定する必要があります。 -U オプションが与えられます。
クライアントサーバー MODEL
を使用して非常に基本的なクライアント/サーバー モデルを構築するのは非常に簡単です。 nc. XNUMX つのコンソールで、
start nc 特定のポートで接続をリッスンします。 例えば:
$ nc -l 1234
nc はポート 1234 で接続をリッスンしています。 XNUMX 番目のコンソール (または XNUMX 番目のコンソール)
マシン)、リッスンしているマシンとポートに接続します。
$nc 127.0.0.1 1234
ポート間に接続が確立されているはずです。 XNUMX 番目のコンソールで入力されたもの
最初に連結され、その逆も同様です。 接続設定が完了したら、 nc
どちら側が「サーバー」として使用され、どちら側がとして使用されているかはあまり気にしません
「クライアント」。 接続は、EOF ('^D') を使用して終了できます。
ない -c or -e このnetcatのオプションですが、後でコマンドを実行できます
ファイル記述子をリダイレクトすることによって確立されている接続。 ここは要注意なので
ポートを開いて、接続しているすべての人があなたのサイトで任意のコマンドを実行できるようにすることは危険です。
本当にこれを行う必要がある場合は、次の例をご覧ください。
「サーバー」側:
$ rm -f /tmp/f; mkfifo /tmp/f
$ 猫/tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
「クライアント」側:
$ nc host.example.com 1234
$ (host.example.com からのシェル プロンプト)
これにより、/tmp/f に fifo を作成し、アドレスのポート 1234 で nc を listen させます。
「サーバー」側の 127.0.0.1、「クライアント」がそのサーバーへの接続を正常に確立した場合
ポート、 /bin/sh 「サーバー」側で実行され、「クライアント」側にシェルプロンプトが表示されます。
接続が終了すると、 nc 同様に辞めます。 使用 -k あなたが望むなら、聞き続けてください、しかし
コマンドがこのオプションを終了した場合、再起動したり保持したりしません nc ランニング。 また、忘れないでください
必要がなくなったら、ファイル記述子を削除します。
$ rm -f /tmp/f
DATA 転送
前のセクションの例を拡張して、基本的なデータ転送モデルを構築できます。
接続の一方の端に入力された情報は、もう一方の端に出力されます。
ファイル転送をエミュレートするために、入力と出力を簡単にキャプチャできます。
を使用して開始します nc 出力をファイルにキャプチャして、特定のポートでリッスンするには:
$ nc -l 1234 > ファイル名.out
XNUMX 台目のマシンを使用して、リスニングに接続します nc 処理し、ファイルを供給します
転送される:
$ nc host.example.com 1234 < filename.in
ファイルが転送されると、接続は自動的に閉じられます。
話す に SERVERS
ユーザー インターフェイスを介してではなく、「手動で」サーバーと対話する方が便利な場合があります。
サーバーのデータを確認する必要がある場合に、トラブルシューティングに役立ちます。
クライアントによって発行されたコマンドに応答して送信します。 たとえば、家を取得するには
Web サイトのページ:
$ printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
これには、Web サーバーから送信されたヘッダーも表示されることに注意してください。 それらはフィルタリングすることができ、
などのツールを使用して sed必要ならば(1)。
ユーザーがリクエストの形式を知っている場合は、より複雑な例を作成できます。
サーバーによって必要とされます。 別の例として、電子メールが SMTP サーバーに送信される場合があります。
を使用して:
$ nc [-C] localhost 25 << EOF
HELO host.example.com
メールから:user@host.example.com>
RCPT TO:user2@host.example.com>
DATA
メール本文。
.
QUITを
EOF
PORT 走査
どのポートが開いていて、ターゲット マシンでサービスを実行しているかを知っておくと便利な場合があります。 の
-z フラグを使用して通知できます nc 接続を開始するのではなく、開いているポートを報告します。
通常、このオプションを組み合わせて使用して、stderr への詳細出力をオンにすると便利です。
-v オプションを選択します。
例:
$ nc -zv host.example.com 20-30
host.example.com 22 ポート [tcp/ssh] への接続に成功しました!
host.example.com 25 ポート [tcp/smtp] への接続に成功しました!
検索をポート 20 ~ 30 に限定するためにポート範囲が指定されており、
増加する順序。
スキャンするポートのリストを指定することもできます。次に例を示します。
$ nc -zv host.example.com 80 20 22
nc: host.example.com 80 (tcp) に接続できませんでした: 接続が拒否されました
nc: host.example.com 20 (tcp) に接続できませんでした: 接続が拒否されました
host.example.com ポート [tcp/ssh] への接続に成功しました!
指定した順序でポートがスキャンされます。
または、実行中のサーバー ソフトウェアと、
バージョン。 この情報は、多くの場合、グリーティング バナーに含まれています。 そうするには
これらを取得するには、最初に接続を確立してから、接続を切断する必要があります
バナーが取得されたとき。 これは、短いタイムアウトを指定することで実現できます
-w フラグ、またはおそらく「QUIT」コマンドをサーバーに発行することによって:
$ echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2
プロトコルの不一致。
220 host.example.com IMS SMTP レシーバー バージョン 0.84 対応
例
ポート 42 を送信元ポートとして使用して、host.example.com のポート 31337 への TCP 接続を開きます。
タイムアウトが 5 秒の場合:
$ nc -p 31337 -w 5 host.example.com 42
host.example.com のポート 53 への UDP 接続を開きます。
$ nc -u host.example.com 53
ローカルの IP として 42 を使用して、host.example.com のポート 10.1.2.3 への TCP 接続を開きます。
接続の終わり:
$ nc -s 10.1.2.3 host.example.com 42
UNIX ドメイン ストリーム ソケットを作成してリッスンします。
$ nc -lU /var/tmp/dsocket
42、ポート 10.2.3.4 の HTTP プロキシ経由で host.example.com のポート 8080 に接続します。
例も使用できます ssh(1); を参照してください プロキシコマンド の指令 ssh_config(5)
詳しくは。
$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42
同じ例で、今度はユーザー名「ruser」でプロキシ認証を有効にします。
プロキシはそれを必要とします:
$ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42
onworks.net サービスを使用してオンラインで nc.openbsd を使用する