Android

คำสั่ง Netcat (nc) พร้อมตัวอย่าง

Реклама подобрана на основе следующей информации:

Реклама подобрана на основе следующей информации:

สารบัญ:

Anonim

Netcat (หรือ nc) เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่อ่านและเขียนข้อมูลผ่านการเชื่อมต่อเครือข่ายโดยใช้โปรโตคอล TCP หรือ UDP มันเป็นหนึ่งในเครื่องมือที่ทรงพลังที่สุดในเครือข่ายและผู้ดูแลระบบคลังแสงและถือว่าเป็นเครื่องมือมีดของเครือข่ายกองทัพสวิส

Netcat เป็นแบบข้ามแพลตฟอร์มและพร้อมใช้งานสำหรับ Linux, macOS, Windows และ BSD คุณสามารถใช้ Netcat เพื่อตรวจแก้จุดบกพร่องและตรวจสอบการเชื่อมต่อเครือข่ายสแกนหาพอร์ตที่เปิดถ่ายโอนข้อมูลเป็นพร็อกซีและอีกมากมาย แพ็คเกจ Netcat ติดตั้งไว้แล้วใน macOS และ Linux ดิสทริบิวชันยอดนิยมอย่าง Ubuntu

ไวยากรณ์ Netcat

ไวยากรณ์พื้นฐานที่สุดของยูทิลิตี้ Netcat ใช้แบบฟอร์มต่อไปนี้:

nc host port

บน Ubuntu คุณสามารถใช้ netcat หรือ nc ทั้งคู่มีการเชื่อมโยงไปยัง Netcat เวอร์ชัน openBSD

โดยค่าเริ่มต้น Netcat จะพยายามเริ่มการเชื่อมต่อ TCP ไปยังโฮสต์และพอร์ตที่ระบุ หากคุณต้องการสร้างการเชื่อมต่อ UDP ให้ใช้ตัวเลือก -u :

nc -u host port

สแกนพอร์ต

การสแกนพอร์ตเป็นหนึ่งในการใช้งานทั่วไปสำหรับ Netcat คุณสามารถสแกนพอร์ตเดียวหรือช่วงพอร์ต

ตัวอย่างเช่นการสแกนหาพอร์ตที่เปิดอยู่ในช่วง 20-80 คุณจะต้องใช้คำสั่งต่อไปนี้:

nc -z -v 10.10.8.8 20-80

ตัวเลือก -z จะบอก nc ให้สแกนหาพอร์ตที่เปิดอยู่เท่านั้นโดยไม่ต้องส่งข้อมูลใด ๆ ไปยังพวกเขาและตัวเลือก -v เพื่อให้ข้อมูล verbose เพิ่มเติม

ผลลัพธ์จะมีลักษณะดังนี้:

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!

คุณสามารถใช้ Netcat เพื่อค้นหาซอฟต์แวร์เซิร์ฟเวอร์และรุ่นของมัน ตัวอย่างเช่นหากคุณส่งคำสั่ง“ EXIT” ไปยังเซิร์ฟเวอร์บนพอร์ต SSH เริ่มต้นที่ 22:

echo "EXIT" | nc 10.10.8.8 22

ผลลัพธ์จะมีลักษณะดังนี้:

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

ในการสแกนหาพอร์ต UDP เพียงเพิ่มตัวเลือก -u ในคำสั่งดังที่แสดงด้านล่าง:

nc -z -v -u 10.10.8.8 20-80

ในสถานการณ์ส่วนใหญ่ Nmap เป็นเครื่องมือที่ดีกว่า Netcat สำหรับการสแกนพอร์ตที่ซับซ้อน

การส่งไฟล์ผ่าน Netcat

Netcat สามารถใช้เพื่อถ่ายโอนข้อมูลจากโฮสต์หนึ่งไปยังอีกโฮสต์หนึ่งโดยสร้างโมเดลไคลเอ็นต์ / เซิร์ฟเวอร์พื้นฐาน

สิ่งนี้ทำงานได้โดยการตั้งค่า Netcat ให้ฟังพอร์ตเฉพาะ (ใช้ตัวเลือก -l ) บนโฮสต์ที่รับแล้วสร้างการเชื่อมต่อ TCP ปกติจากโฮสต์อื่นและส่งไฟล์ทับ

ในการรับเรียกใช้คำสั่งต่อไปนี้ซึ่งจะเปิดพอร์ต 5555 สำหรับการเชื่อมต่อขาเข้าและเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์:

nc -l 5555 > file_name

จากโฮสต์ที่ส่งเชื่อมต่อกับโฮสต์ที่รับและส่งไฟล์:

nc receiving.host.com 5555 < file_name

ในการถ่ายโอนไดเรกทอรีคุณสามารถใช้ tar เพื่อเก็บถาวรไดเรกทอรีบนโฮสต์ต้นทางและเพื่อแยกเก็บถาวรบนโฮสต์ปลายทาง

บนโฮสต์ที่รับตั้งค่าเครื่องมือ Netcat เพื่อฟังการเชื่อมต่อขาเข้าบนพอร์ต 5555 ข้อมูลที่เข้ามาจะถูกไพพ์ไปยังคำสั่ง tar ซึ่งจะแยกไฟล์เก็บถาวร:

nc -l 5555 | tar xzvf -

ในโฮสต์ส่งแพ็คไดเรกทอรีและส่งข้อมูลโดยเชื่อมต่อกับกระบวนการฟัง nc บนโฮสต์ที่ได้รับ:

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

คุณสามารถดูความคืบหน้าการโอนทั้งสองด้านได้ เมื่อเสร็จแล้วให้พิมพ์ CTRL+C เพื่อปิดการเชื่อมต่อ

การสร้าง Simple Chat Server

ขั้นตอนการสร้างการแชทออนไลน์ระหว่างโฮสต์สองคนขึ้นไปนั้นเหมือนกับเมื่อทำการถ่ายโอนไฟล์

ในโฮสต์แรกให้เริ่มกระบวนการ Netcat เพื่อฟังบนพอร์ต 5555:

nc -l 5555

จากโฮสต์ที่สองให้รันคำสั่งต่อไปนี้เพื่อเชื่อมต่อกับพอร์ตฟัง:

nc first.host.com 5555

ตอนนี้ถ้าคุณพิมพ์ข้อความและกด ENTER มันจะปรากฏขึ้นบนโฮสต์ทั้งสอง

หากต้องการปิดการเชื่อมต่อให้พิมพ์ CTRL+C

ดำเนินการตามคำขอ HTTP

แม้ว่าจะมีเครื่องมือที่ดีกว่ามากสำหรับคำขอ HTTP เช่น curl คุณสามารถใช้ Netcat เพื่อส่งคำขอต่าง ๆ ไปยังเซิร์ฟเวอร์ระยะไกล

ตัวอย่างเช่นในการเรียกค้นหน้าคน Netcat จากเว็บไซต์ OpenBSD คุณต้องพิมพ์:

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

การตอบสนองแบบเต็มรวมถึงส่วนหัว HTTP และรหัส HTML จะถูกพิมพ์ในเครื่อง

ข้อสรุป

ในบทช่วยสอนนี้คุณได้เรียนรู้วิธีใช้ยูทิลิตี้ Netcat เพื่อสร้างและทดสอบการเชื่อมต่อ TCP และ UDP

สำหรับข้อมูลเพิ่มเติมโปรดเยี่ยมชมหน้า man Netcat และอ่านเกี่ยวกับตัวเลือกอันทรงพลังอื่น ๆ ของคำสั่ง Netcat

เทอร์มินัล netcat