เซิร์ฟเวอร์ echo ที่มี netcat หรือ socat


18

ฉันต้องการเซิร์ฟเวอร์ EDP echo เพื่อรับแพ็คเก็ตและตอบกลับสิ่งที่ได้รับ ฉันจะทำสิ่งนี้โดยใช้netcatหรือsocat? ควรมีชีวิตอยู่ตลอดไปและจัดการกับแพ็คเก็ตที่มาจากโฮสต์หลายแห่ง


7
โปรดอย่าทำให้สิ่งนี้เข้าถึงอินเทอร์เน็ตได้ เนื่องจากเป็น UDP-based จึงสามารถใช้ในการส่งกระแสข้อมูลแพ็คเก็ตไปยังปลายทางโดยใช้แพ็คเก็ตปลอมแปลงได้
Evan Anderson

คำตอบ:


17

เครื่องมือที่คล้ายกับ netcat อีกตัวคือเวอร์ชัน nmap ncatซึ่งมีสารพัดตัวที่สร้างขึ้นเพื่อลดความซับซ้อนของสิ่งนี้ สิ่งนี้จะได้ผล:

ncat -e /bin/cat -k -u -l 1235

-e หมายถึงมันรัน / bin / cat (เพื่อสะท้อนกลับสิ่งที่คุณพิมพ์)
-k หมายถึงการมีชีวิตอยู่ซึ่งมันคอยฟังหลังจากการเชื่อมต่อแต่ละครั้ง
-u หมายถึง udp
-l 1235 หมายความว่ามันฟังพอร์ต 1235



6

คุณยังสามารถใช้ socat (แทนที่จะใช้ netcat) เป็นเซิร์ฟเวอร์ echo และ netcat เป็นไคลเอนต์

เซิร์ฟเวอร์ Socat echo (ฟังพอร์ต TCP 1234):

socat -v tcp-l:1234,fork exec:'/bin/cat'

ไคลเอ็นต์ Netcat (เชื่อมต่อกับ serverip บนพอร์ต TCP 1234):

nc serverip 1234

2

คุณสามารถเขียนโปรแกรม C ที่forks nc -u -l -p 4321จากนั้นใช้dup (2)เพื่อเชื่อมต่อ:

  • nc stdin พร้อม stdout ของผู้ปกครอง
  • nc stdout พร้อมกับ stdin ของพาเรนต์

จากนั้นในการวนรอบไม่รู้จบผู้ปกครองอ่านจาก stdin และเขียนใน stdout สิ่งที่ผู้ปกครองอ่าน


ฉันสามารถใช้socat -v PIPE UDP-LISTEN:5555,forkแต่การเชื่อมต่อที่สองได้รับการปฏิเสธ ยังไงก็ใช้งานได้ดีกับ TCP-LISTEN ฉันหลีกเลี่ยงการเขียนโค้ดไม่เช่นนั้นฉันสามารถเขียนได้ทั้งหมดใน C.
Mohammad Hedayati

คุณต้องห่อสิ่งทั้งหมดไว้ในวงวนไม่รู้จบ: ในขณะที่เป็นจริง ทำสิ่งที่ socat; เสร็จแล้ว
adamo

คุณอาจได้แรงบันดาลใจในการใช้บทช่วยสอนนี้
adamo

0

หากคุณกำลังทำงานบน Windows และใช้ยูนิกซ์เช่นสภาพแวดล้อมเช่น cygwin, netcat migth ไม่ได้ให้พารามิเตอร์ -e มันใช้งานได้ดีสำหรับฉัน

http://bansky.net/echotool/


0

netcat ทางออกที่ติดตั้งใน Ubunutu

netcatที่ติดตั้งใน Ubuntu 16.04 มาจากnetcat-openbsdและไม่มี-cตัวเลือก แต่คู่มือให้การแก้ปัญหา:

sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo

จากนั้นตัวอย่างลูกค้า:

echo abc | netcat localhost 8000

สิ่งที่ต้องทำ: วิธีการปรับเปลี่ยนค่าสตริงการป้อนข้อมูล? ต่อไปนี้จะไม่ส่งคืนคำตอบใด ๆ :

cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo

อย่างไรก็ตามตัวอย่าง remote shell ใช้งานได้:

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo

อย่างไรก็ตามฉันไม่ทราบวิธีจัดการกับคำขอที่เกิดขึ้นพร้อมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.