Linux Netcatコマンド――ネットワークツールのスイス軍刀


Netcatは、TCPとUDPを介してネットワーク上でデータを読み書きできるネットワークツールのスイス軍刀です.他のツールと組み合わせてリダイレクトすることで、スクリプトでさまざまな方法で使用できます.netcatコマンドを使ってできることに驚きました.
Netcatがやっているのは、2台のパソコンの間にリンクを確立し、2つのデータストリームを返すことです.その後できることは想像力次第です.サーバを構築したり、ファイルを転送したり、友达とチャットしたり、ストリーミングメディアを転送したり、他のプロトコルの独立したクライアントとして使用したりすることができます.
以下にnetcatを用いる例を示す.
[A(172.31.100.7) B(172.31.100.23)]
Linux netcatコマンドの例:
1,ポートスキャン
ポートスキャンは、システム管理者やハッカーによって、システム内の脆弱性を識別するために、いくつかのマシンに開いているポートを発見するためによく使用されます.
$nc -z -v -n 172.31.100.7 21-25

TCPまたはUDPモードで動作、デフォルトはTCP、-uパラメータはudpに調整される.
zパラメータはnetcatに0 IOを使用することを教え、
接続が成功したら直ちに接続を閉じ、データ交換を行わない(ありがとう@jxing指摘)
vパラメータとは冗長オプションの使用を指す(訳者注:詳細出力)
nパラメータはnetcatにDNSを使用してIPアドレスのドメイン名を逆クエリしないでくださいと教えます
このコマンドは、21~25のすべてのオープンポートを印刷します.Bannerはテキストで、Bannerはあなたが接続したサービスがあなたに送信したテキスト情報です.脆弱性やサービスのタイプやバージョンを識別しようとすると、Banner情報は非常に役立ちます.しかし、すべてのサービスがbannerを送信するわけではありません.
オープンポートを見つけたら、netcat接続サービスを使用してbannerを簡単に捕まえることができます.
$ nc -v 172.31.100.7 21

Netcatコマンドは、オープンポート21に接続され、このポートでサービスを実行するbanner情報を印刷する.
2,Chat Server
もしあなたの友达と話したいなら、多くのソフトウェアと情報サービスが使えます.しかし、もしあなたがこのような贅沢な配置を持っていなければ、例えばあなたはコンピュータ実験室で、すべての対外的な接続が制限されています.あなたはどのように一日中隣の部屋に座っている友达とコミュニケーションしますか?気を悪くしないでください.netcatはこのような方法を提供しています.あなたはChatサーバーを作成し、事前に確定したポートを作成するだけで、彼はあなたに連絡することができます.
Server
$nc -l 1567

Netcatコマンドは1567ポートでtcpサーバを起動し、すべての標準出力と入力がポートに出力されます.出力と入力はこのshellに表示されます.
Client
$nc 172.31.100.7 1567

マシンBに何を入力してもマシンAに表示されます.
3、ファイル転送
ほとんどの時間、私たちはネットワークや他のツールを通じてファイルを転送しようとしています.FTP、SCP、SMBなど、いろいろな方法がありますが、一時的または一度にファイルを転送する必要がある場合は、本当に時間を無駄にしてソフトウェアをインストールしてマシンに構成する価値がありますか.ファイルを送りたいとしますtxtはAからBまでです.AまたはBはいずれもサーバまたはクライアントとすることができ、以下、Aをサーバとし、Bをクライアントとする.
Server
$nc -l 1567 < file.txt

Client
$nc -n 172.31.100.7 1567 > file.txt

ここでは、Aにサーバを作成し、netcatの入力をファイルfileにリダイレクトする.txtでは、ポートに正常に接続されると、netcatはfileのファイル内容を送信します.
クライアントでfileにリダイレクト出力.txt,BがAに接続すると,Aはファイル内容を送信し,Bはファイル内容をfileに保存する.txt.
サーバとしてファイルソースを作成する必要はありません.逆の方法で使用することもできます.次のように、BからAにファイルを送信しますが、サーバはAに作成されます.今回はnetcatの出力にリダイレクトし、Bの入力ファイルにリダイレクトする必要があります.
Bサーバとして
Server
$nc -l 1567 > file.txt

Client
nc 172.31.100.23 1567 < file.txt

4、ディレクトリ転送
1つのファイルを送信するのは簡単ですが、複数のファイルを送信したり、ディレクトリ全体を送信したりするのは簡単で、圧縮ツールtarを使用して圧縮後に圧縮パッケージを送信するだけです.
ネットワークを介してAからBまでディレクトリを転送したい場合は、
Server
$tar -cvf �C dir_name | nc -l 1567

Client
 
$nc -n 172.31.100.7 1567 | tar -xvf -

ここでAサーバではtarアーカイブパッケージを作成し、-コンソールでリダイレクトし、パイプを使用してnetcatにリダイレクトします.netcatはネットワークで送信できます.
クライアントでnetcatパイプを介して圧縮パッケージをダウンロードし、ファイルを開きます.
帯域幅伝送圧縮パケットを節約するには、bzip 2または他のツールを使用して圧縮することができます.
Server
 
$tar -cvf �C dir_name| bzip2 -z | nc -l 1567

bzip 2による圧縮
Client
 
$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -

bzip 2を使用して解凍
5.ネットワークを介して送信されたデータを暗号化
ネットワーク上でデータを送信するセキュリティが心配な場合は、mcryptのようなツールでデータを送信する前に暗号化することができます.
サービス側
$nc localhost 1567 | mcrypt �Cflush �Cbare -F -q -d -m ecb > file.txt

mcryptツールを使用してデータを暗号化します.
クライアント
$mcrypt �Cflush �Cbare -F -q -m ecb < file.txt | nc -l 1567

mcryptツールを使用してデータを復号します.
以上の2つのコマンドでは、パスワードが必要であることを示し、両端に同じパスワードが使用されていることを確認します.
ここではmcryptを用いて暗号化し,他の任意の暗号化ツールを用いてもよい.
この文書の内容はlinuxから提供されます.