Lenh nc trong linux

Netcat (hoặc nc) là tiện ích dòng lệnh đọc và ghi dữ liệu trên các kết nối mạng, sử dụng giao thức TCP hoặc UDP. Nó là một trong những công cụ mạnh nhất trong kho vũ khí của các quản trị viên hệ thống và mạng và nó được coi như một con dao của quân đội Thụy Sĩ về các công cụ mạng.

Netcat là đa nền tảng và nó có sẵn cho Linux, macOS, Windows và BSD. Bạn có thể sử dụng Netcat để gỡ lỗi và giám sát các kết nối mạng, quét các cổng mở, truyền dữ liệu, dưới dạng proxy và hơn thế nữa. Gói Netcat được cài đặt sẵn trên macOS và các bản phân phối Linux phổ biến như Ubuntu.

Cú pháp Netcat

Cú pháp cơ bản nhất của tiện ích Netcat có dạng sau:

nc host port

Trên Ubuntu, bạn có thể sử dụng netcat hoặc nc . Cả hai đều là liên kết tượng trưng cho phiên bản openBSD của Netcat.

Theo mặc định, Netcat sẽ cố gắng bắt đầu kết nối TCP đến máy chủ và cổng được chỉ định. Nếu bạn muốn thiết lập kết nối UDP, hãy sử dụng tùy chọn -u :

nc -u host port

Quét cổng

Cổng quét là một trong những cách sử dụng phổ biến nhất cho Netcat. Bạn có thể quét một cổng hoặc một phạm vi cổng.

Ví dụ: để quét các cổng mở trong phạm vi 20-80, bạn sẽ sử dụng lệnh sau:

nc -z -v 10.10.8.8 20-80

Tùy chọn -z sẽ yêu cầu nc chỉ quét các cổng mở, mà không gửi bất kỳ dữ liệu nào cho họ và tùy chọn -v để cung cấp thêm thông tin dài dòng.

Đầu ra sẽ trông giống như thế này:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Bạn cũng có thể sử dụng Netcat để tìm phần mềm máy chủ và phiên bản của nó. Ví dụ: nếu bạn gửi lệnh EXIT Viking đến máy chủ trên cổng SSH mặc định 22:

echo "EXIT" | nc 10.10.8.8 22

Đầu ra sẽ trông giống như thế này:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Để quét các cổng UDP, chỉ cần thêm tùy chọn -u vào lệnh như dưới đây:

nc -z -v -u 10.10.8.8 20-80

Trong hầu hết các tình huống, Nmap là một công cụ tốt hơn Netcat để quét cổng phức tạp.

Gửi tệp qua Netcat

Netcat có thể được sử dụng để chuyển dữ liệu từ máy chủ này sang máy chủ khác bằng cách tạo mô hình máy khách / máy chủ cơ bản.

Điều này hoạt động bằng cách đặt Netcat nghe trên một cổng cụ thể (sử dụng tùy chọn -l ) trên máy chủ nhận và sau đó thiết lập kết nối TCP thông thường từ máy chủ khác và gửi tệp qua đó.

Khi nhận, chạy lệnh sau sẽ mở cổng 5555 cho kết nối đến và chuyển hướng đầu ra sang tệp:

nc -l 5555 > file_name

Từ máy chủ gửi kết nối với máy chủ nhận và gửi tệp:

nc receiving.host.com 5555 < file_name

Để chuyển một thư mục, bạn có thể sử dụng tar để lưu trữ thư mục trên máy chủ nguồn và trích xuất kho lưu trữ trên máy chủ đích.

Trên máy chủ nhận, đặt công cụ Netcat để nghe kết nối đến trên cổng 5555. Dữ liệu đến được dẫn đến lệnh tar sẽ trích xuất kho lưu trữ:

nc -l 5555 | tar xzvf -

Trên máy chủ gửi gói thư mục và gửi dữ liệu bằng cách kết nối với quá trình nghe nc trên máy chủ nhận:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Bạn có thể xem tiến trình chuyển tiền ở cả hai đầu. Sau khi hoàn thành, nhập CTRL+C để đóng kết nối.

Tạo một máy chủ trò chuyện đơn giản

Quy trình tạo trò chuyện trực tuyến giữa hai hoặc nhiều máy chủ giống như khi chuyển tệp.

Trên máy chủ đầu tiên bắt đầu quy trình Netcat để nghe trên cổng 5555:

nc -l 5555

Từ máy chủ thứ hai chạy lệnh sau để kết nối với cổng nghe:

nc first.host.com 5555

Bây giờ nếu bạn gõ một tin nhắn và nhấn ENTER nó sẽ được hiển thị trên cả hai máy chủ.

Để đóng kết nối, nhập CTRL+C

Thực hiện một yêu cầu HTTP

Mặc dù có nhiều công cụ tốt hơn cho các yêu cầu HTTP như curl, bạn cũng có thể sử dụng Netcat để gửi các yêu cầu khác nhau đến các máy chủ từ xa.

Ví dụ: để truy xuất trang man Netcat từ trang web OpenBSD, bạn sẽ gõ:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

Phản hồi đầy đủ bao gồm các tiêu đề HTTP và mã HTML sẽ được in trong thiết bị đầu cuối.

Phần kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng tiện ích Netcat để thiết lập và kiểm tra các kết nối TCP và UDP.

Để biết thêm thông tin, hãy truy cập trang người dùng Netcat và đọc về tất cả các tùy chọn mạnh mẽ khác của lệnh Netcat.

thiết bị đầu cuối netcat