LINUX.ORG.RU

Create own TCP service

 , ncat, , ,


0

1

Привет всем

Я тут все обыскал уже в гугле. Мне дали задание, создать TCP server который бы слушал порт 12345 и давал подключение по telnet. пользователь который бы подключился мог бы исполнить всего 3 команды, например пинг трейс и т.д. TCP server должен показать пользователю который подключился какой-нибудь Welcome Banner.

Единственное что я нашел «plug and play» это ncat.

Запускаю сервер:

ncat -v -l -p 12345 -e /bin/bash Ncat: Version 5.21 ( http://nmap.org/ncat ) Ncat: Listening on 0.0.0.0:12345

подключаюсь к енму через telnet (Я знаю что можно подключиться через nc клиент и все выполнить), как было в задании

telnet 127.0.0.1 12345 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.

команда пинг срабатывает нормально. выводит пинг

когда я хочу вывести 'df -h'

он на сервере пишет ошибку

'f: invalid option — ' Try `df --help' for more information.

Так же я не нашел, где в ncat показать клиенту баннер.

Что я пропустил? Может кто знает другое решение данной проблемы?

Спасибо

допустим баннер вывести не сложно, как-то так:

(echo -e "HTTP/1.1 200 OK\nContent-Type: text/html\n\n Hello World";) | nc -vv -l -p 8080

mm3 ★★★
()

Я тут все обыскал уже в гугле.
Единственное что я нашел «plug and play» это ncat.

А как же программирование TCP-сервисов на $favourite_language_name? А как же netcat (netkit/openbsd)?

Мне дали задание, создать TCP server который бы слушал порт 12345 и давал подключение по telnet.

На каком языке? Я бы посоветовал http://perldoc.perl.org/IO/Socket/INET.html

AITap ★★★★★
()
Ответ на: комментарий от mm3

не это тоже не помогает. открывает телнет, но не пишет велкам банер любая команда на стороне клиента выдает такую вот ошибку на сервере

df: `\r': No such file or directory

BahurTov
() автор топика
Ответ на: комментарий от BahurTov

т.е. обычным shell bash не ограничится?

Можно сильно извратиться с named pipe (FIFO) и написать цикл, который читает строку из netcat, обрабатывает и пишет в ту же fifo, из которой читает сам netcat, и в этом цикле сделать произвольную логику (любую, на которую способен bash). Но это сложно, ненадёжно и может повиснуть из-за буферизации.

нужно на перл писать сервер?

На языке, который знаете, предварительно изучив матчасть по TCP.

AITap ★★★★★
()
Ответ на: комментарий от mm3

Этот я сайт я уже смотрел. там именно то чего я уже добился, но того что нужно там нет

BahurTov
() автор топика
Ответ на: комментарий от AITap

Не осилил гугл

Я бы посоветовал ... perl

oche tolsto, bro

anonymous
()
Ответ на: комментарий от BahurTov

чую это telnet палки в колёса вставляет потому что эквивалентное подключение через netcat

nc 127.0.0.1 12345
работает как задумано

mm3 ★★★
()

Надо брать питон/перл/другой яп по вкусу, читать про $lang_name + socket howto, а дальше уже делать то, что есть в задании.

Deleted
()
Ответ на: комментарий от mm3

так и есть. я тут нашел по этому поводу, что якобы тельнет отсылает нажатием enter, окончание строки как в винде \r а это не поддерживается в никсах. там нужно \n как-то так. да если подключиться nc клиентом то все работает как нужно.

Ладно спасибо, буду копать в сторону Perl::Socket etc

BahurTov
() автор топика

короче решил проблему с помощью ncat

nct -vv -l -k -p 12345 -e ./cmd.sh

в cmd.sh поместил баннер и набор комманд которые буду исполнять. пользователь подрубается, правда тока ncat клиентом и видит баннер и меню. набирает одну из команд, команда исполняется и ему снова первичное меню. я даже нарисовал свой CLI для видности настоящего сервера )

спасибо всем ответившим )

BahurTov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.