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 ви використовуєте?
Дженні Д

@JennyD Я оновив пост, будь ласка, перевіри
Ilya I

1
На жаль, єдиним виправленням є зниження рівня, як описано нижче. Я також голосую, щоб перенести це питання в Unix & Linux, оскільки мова йде не лише про адміністрування систем. Це хороший сайт з деякими експертами, які залишають мене в захваті, тому, будь ласка, не думайте, що закриття голосування відбувається через те, що ваше питання поганий чи нічого.
Дженні Д

Відповіді:


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
робота як шарм!
Шон Го

Цей шлях більше не працює
BradLaney

@BradLaney чому ні?
Едді К.

@EddieC. URL я був 404ing для мене, коли я зробив коментар. Здається, зараз це працює. Не звертай уваги.
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-файл і його ще не знайшли.
Ілля І

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:

yum встановити nmap

спробуйте:

ncat -l 1234


Будь ласка, прочитайте запитання та вже надані відповіді, щоб дізнатися, чому ваша відповідь недостатня в конкретному випадку.
Свен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.