ดีที่บันทึกไว้ในวิกิพีเดียและnetcatเอกสารมีความเป็น-eตัวเลือกที่เป็นสาเหตุของมันเพื่อวางไข่ ( อี xecute) โปรแกรมเมื่อได้รับการเชื่อมต่อที่แนบซ็อกเก็ตที่จะ stdin, stdout และ stderr ของกระบวนการ ตัวอย่างการใช้งาน:
nc -l -pport_number -eprogram_name
ตัวอย่างทั่วไปแสดง/bin/shหรือbashถูกใช้เป็นProgram_Name การใช้ตัวเลือกนี้จะหมดกำลังใจเพราะโดยทั่วไปจะเปิดพอร์ทัลการเข้าถึงที่ไม่ระบุชื่อและไม่มีรหัสผ่านลงในเครื่องของคุณ แน่นอนว่านี่คือการลดลงโดยการใช้โปรแกรมที่มีพลังงานน้อยกว่าเชลล์ (อันที่ไม่มีความสามารถในการหลบหนีไปยังเชลล์) ลดการใช้งานของคุณและทำให้เป็นความลับ อย่างไรก็ตามนักพัฒนาดั้งเดิมของnetcatรู้สึกว่าแข็งแรงพอที่ตัวเลือกนี้เป็นความคิดที่ไม่ดีที่พวกเขาปิดการใช้งานโดยค่าเริ่มต้นและปรับมันภายใต้ตัวเลือกการรวบรวม“ GAPING_SECURITY_HOLE” สิ่งนี้ถูกกล่าวถึงสั้น ๆ ในบทช่วยสอน NetCatและnetcatเอกสารอื่น ๆ
การค้นหาของ Google นำฉันไปสู่การอภิปรายของปัญหานี้ในเว็บไซต์อื่น ๆ Stack แลกเปลี่ยน: กองมากเกินและเซิร์ฟเวอร์ผิดพลาด ผู้ให้ข้อมูลหลายคนเสนอเทคนิคต่อไปนี้เพื่อทำสิ่งเดียวกันโดยไม่ใช้-eตัวเลือก (เช่นในเวอร์ชันnetcatที่-eปิดใช้งานตัวเลือก):
บนเซิร์ฟเวอร์:
mkfifopipe_name
nc -l -pport_number <pipe_name | program_name >pipe_name
บนไคลเอ็นต์:
nc server_machine_name port_number
หมายเหตุสองประการ:
- ในบางรุ่น
netcat, -lนัย-pดังนั้นคุณควรจะพูดเพียง-lแล้วหมายเลขพอร์ต
- คุณอาจต้องการปิดโซลูชันของคุณในการ
while trueวนซ้ำ