Memindahkan Netcat ke Node.js. kegunaan CLI.
Untuk menyematkannya di aplikasi Node.js Anda, gunakan paket netcat sebagai gantinya. Ini dimaksudkan untuk digunakan sebagai alat yang berdiri sendiri, namun tidak sepenuhnya sama dengan implementasi asli netcat.
Linux | MacOS | jendela |
---|---|---|
$ npm install -g nc
$ nc -l -p port [- options] [hostname] [port]
Opsi yang tersedia:
-c shell commands as `-e’; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-u UDP mode
-U Listen or connect to a UNIX domain socket
-v verbose
-w secs timeout for connects and final net reads (client-side)
-z zero-I/O mode [used for scanning]
$ nc -l -p 2389
$ nc localhost 2389
Membuka koneksi mentah ke port 2389
.
Sisi server | Sisi klien |
---|---|
nc -l 2389 > test | cat testfile | nc localhost 2389 |
$ nc -w 10 localhost 2389
Koneksi di atas akan dihentikan setelah 10 detik.
$ nc -kl 2389
Dengan cara ini server tetap aktif meskipun klien terputus.
Hal yang jauh lebih menarik untuk dilakukan adalah menjalankan shell cepat pada mesin jarak jauh dengan menggunakan opsi -l
atau listen
dan opsi -e
atau execute
. Ketika koneksi dibuat, Netcat menjalankan program pilihan Anda dan menghubungkan stdin
dan stdout
program ke koneksi jaringan.
$ nc -l -p 23 -e /bin/sh
Mari kita buat file permintaan HTTP get.txt
yang berisi baris berikut dan kemudian baris kosong:
GET / HTTP/1.0
Untuk menggunakan Netcat untuk mengambil halaman beranda situs web, gunakan:
$ nc -v www.website.com 80 < get.txt
Anda akan melihat Netcat membuat koneksi ke port 80, mengirim teks yang terdapat dalam file get.txt
, dan kemudian menampilkan respons server web ke stdout
.
Dalam skenario normal, jika klien nc terputus, klien tidak akan mencoba kembali sambungan. Dengan parameter --retry <secs>
atau -R <secs>
, ia akan mencoba kembali koneksi setelah total beberapa detik.
$ nc -R 5 localhost 2389
Jika Anda memiliki buruh pelabuhan, mari kita coba membuat daftar gambar kontainer kami yang terhubung ke file soket buruh pelabuhan unix:
$ echo -e " GET /images/json HTTP/1.0rn " | nc -U /var/run/docker.sock
PS. untuk contoh ini diperlukan izin root: sudo su
.
$ mkfifo /tmp/fifo
$ nc -l -k -p 8080 < /tmp/fifo | nc website.com 80 > /tmp/fifo
$ nc -z 192.168.1.100 1-255
Jika Anda menggunakan opsi -o
Anda dapat membuang semua lalu lintas hex.
$ nc 127.0.0.1 4445 -o /tmp/log.txt
Secara default semua soket yang dibuat oleh utilitas nc adalah protokol TCP tetapi utilitas ini juga bekerja dengan protokol UDP. Untuk mengaktifkan protokol UDP, flag -u digunakan.
Sisi server | Sisi klien |
---|---|
nc -u -l -p 2389 | nc -u localhost 2389 |
$ echo 'message' | nc -w 1 -u 192.168.1.111 514
Pipa melalui UDP (-u) dengan waktu tunggu (-w) 1 detik ke 192.168.1.111
pada port 514
.
Debug cocok dengan mode verbose. Anda dapat mengaktifkannya dengan parameter -v
atau env var DEBUG=nc
. Modul ini menggunakan implementasi node netcat di bawah tenda, untuk men-debug keduanya menggunakan: DEBUG=netcat:*,nc
.
Rocco Musolino (@roccomuso)