Netcat ล้มเหลวในการเริ่มการทำงานในโหมดฟัง


13

ฉันใช้ระบบ CentOS 6.7 (Final) และเมื่อฉันพยายามเรียกใช้ncในโหมดฟังมันจะพิมพ์ข้อมูลต่อไปนี้:

# nc -l 1234
nc: Protocol not available

พอร์ตไม่ถูกผูกไว้ ฉันลองหมายเลขพอร์ตอื่นด้วย ข้อผิดพลาดนี้ดูเหมือนจะได้รับรายงานแล้ว: https://access.redhat.com/solutions/1753753 น่าเสียดายที่มันไม่ได้มีรายละเอียดมาก

ข้อมูลแพ็คเกจ:

Name        : nc
Arch        : x86_64
Version     : 1.84
Release     : 24.el6

มีอะไรอีกบ้างที่ฉันต้องลอง


คุณกำลังใช้ nc เวอร์ชันใดอยู่
Jenny D

@JennyD ฉันได้อัปเดตโพสต์แล้วโปรดตรวจสอบ
Ilya I

1
น่าเสียดายการแก้ไขเพียงอย่างเดียวคือการลดระดับตามที่อธิบายไว้ด้านล่าง ฉันยังออกเสียงลงคะแนนเพื่อย้ายคำถามนี้ไปยังUnix & Linuxเนื่องจากไม่ใช่การบริหารระบบอย่างเคร่งครัด เป็นเว็บไซต์ที่ดีกับผู้เชี่ยวชาญบางคนที่ทำให้ฉันหวาดกลัวดังนั้นโปรดอย่าคิดว่าการโหวตอย่างใกล้ชิดเป็นเพราะคำถามของคุณไม่ดีหรืออะไรก็ตาม
Jenny D

คำตอบ:


17

ฉันพบปัญหาเดียวกัน คุณสามารถแก้ไขได้ด้วยวิธีนี้:

# Removes the old package
yum erase nc

# Manually downloads the working package from the Official Repository
wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm

# Installs the package
rpm -iUv nc-1.84-22.el6.x86_64.rpm

โปรดทราบว่าแพคเกจนี้ใช้สำหรับx86_64(64- บิต) หากคุณต้องการi386(32- บิต) สิ่งที่ถูกต้องคือ:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm

การใช้ rpm พร้อมกับแฟล็ก -i และ -U พร้อมกันจะดูแปลก ๆ (แต่ใช้ได้) การเรียกใช้มาตรฐานเพิ่มเติมคือ -ivh หรือ -Uvh
dmourati

1
ทำงานเหมือนจับใจ!
Shawn Guo

เส้นทางนี้ใช้งานไม่ได้อีกต่อไป
BradLaney

@BradLaney ทำไมไม่
Eddie C.

@EddieC URL เป็น 404 สำหรับฉันเมื่อฉันแสดงความคิดเห็น ดูเหมือนว่าจะใช้งานได้ในขณะนี้ ไม่เป็นไร.
BradLaney

9

netcat รุ่นนี้มีข้อผิดพลาด สิ่งที่คุณสามารถทำได้คือการปรับลดรุ่นเป็นรุ่นก่อนหน้า - sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64ควรทำการหลอกลวง


1
ไม่มีyumอาร์กิวเมนต์ที่สามารถปรับลดรุ่นเป็นแพคเกจเฉพาะรุ่นโดยไม่ต้องถอนการติดตั้งครั้งแรกใช่ไหม
kasperd

เยี่ยมมาก แต่ฉันไม่สามารถปรับลดรุ่นได้ Yum บอกว่าไม่มีแพ็คเกจ (ทั้งinstallเวอร์ชันเฉพาะและdowngradeคำสั่ง) ลองค้นหาไฟล์ rpm นั้นและยังไม่พบ
Ilya ฉัน

4

ตอบคำถาม:

  1. ใช่จำเป็นต้องลดระดับเพื่อให้ nc สามารถฟังได้ และสำหรับความคิดเห็นอื่น ๆ :

a) -p ไม่ควรใช้เมื่ออยู่ในโหมดฟัง จาก nc manpage:

-l ใช้เพื่อระบุว่า nc ควรฟังการเชื่อมต่อขาเข้าแทนที่จะเริ่มต้นการเชื่อมต่อกับโฮสต์ระยะไกล เป็นข้อผิดพลาดในการใช้ตัวเลือกนี้ร่วมกับตัวเลือก -p, -s หรือ -z

b) การดาวน์เกรดสามารถทำได้ในขั้นตอนเดียวคำสั่ง yum downgrade จะทำงานกับ url ไปยังแพ็คเกจ:

$ rpm -q nc
nc-1.84-24.el6.x86_64
$ nc -l 12345 #Although the syntax is correct, the command fails
nc: Protocol not available
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ sudo yum downgrade http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm  #shortcut to downgrade
...
Setting up Downgrade Process
nc-1.84-22.el6.x86_64.rpm                                                              |  57 kB     00:00
Examining /var/tmp/yum-root-Iq4yc7/nc-1.84-22.el6.x86_64.rpm: nc-1.84-22.el6.x86_64
Resolving Dependencies
--> Running transaction check
---> Package nc.x86_64 0:1.84-22.el6 will be a downgrade
---> Package nc.x86_64 0:1.84-24.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package          Arch                 Version                     Repository                            Size
==============================================================================================================
Downgrading:
 nc               x86_64               1.84-22.el6                 /nc-1.84-22.el6.x86_64               109 k

Transaction Summary
==============================================================================================================
Downgrade     1 Package(s)

Total size: 109 k
Is this ok [y/N]: y
...
Removed:
  nc.x86_64 0:1.84-24.el6

Installed:
  nc.x86_64 0:1.84-22.el6

Complete!
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ nc -l 12345 # try to listen again
^C
$#nc successully opens a socket on 12345. had to stop it with ctrl+C

0
# nc -l -p 1234

คุณสามารถฟังพอร์ตนั้นได้อย่างชัดเจนโดยใช้-pแฟล็ก:

-p source_port
         Specifies the source port nc should use, subject to privilege restrictions and availability.

ปัญหาเกิดขึ้นจากncการปฏิบัติ 1234 ในฐานะพอร์ตปลายทาง (แม้จะทำงานในโหมดฟัง) และพยายามฟังพอร์ต 0 (ซึ่งผลิตข้อความแปลก ๆ ) ผ่านไปอย่างชัดเจนการ-pทำงานรอบ ๆ มัน


ฉันลองสิ่งนี้ใน centos 6 และมันไม่ทำงานโดยใช้รุ่น nc-1.84-24 การแก้ไขคือการปรับลดรุ่นเป็น nc-1.84-22 ตามคำตอบที่ยอมรับ
Criggie

เวอร์ชันนั้นไม่อนุญาตให้ใช้ -p กับ -l
andrej

-3

ติดตั้ง nmap:

ยำติดตั้ง nmap

ลอง:

ncat -l 1234


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