Що ж, як це зафіксовано у Вікіпедії та netcatдокументації, є -eваріант, який змушує її породити ( e xecute) програму після отримання з'єднання, приєднавши сокет до stdin, stdout та stderr процесу. Приклад використання:
nc -l -pport_number -eprogram_name
Приклади зазвичай показують /bin/shабо bashвикористовуються в якості program_name . Використання цієї опції перешкоджає тому, що в основному вона відкриває анонімний портал доступу до вашого комп'ютера. Звичайно, це зменшується за допомогою програми з меншою потужністю, ніж оболонки (тієї, яка не має можливості вийти на оболонку), мінімізуючи ваше використання і зберігаючи її в таємниці. Тим не менш, оригінальні розробники netcatвідчули досить сильно, що ця опція була поганою ідеєю, що вони відключили її за замовчуванням і обумовили її під опцією компіляції "GAPING_SECURITY_HOLE". Про це коротко йдеться в цьому підручнику NetCat та іншій netcatдокументації.
Пошук Google привів мене до обговорення цієї проблеми на інших сайтах Stack Exchange: переповнення стека та помилка сервера . Кілька вкладачів запропонували наступну методику робити те ж саме, не використовуючи -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цикл.