как создать промежуточный сервер Telnet

Мне нужно связать старую систему crm с новым активом.
Система Crm может отправлять фиксированные команды только через соединение Telnet, но этот новый актив может принимать команды только через api rest.
Я планирую перехватить соединение Telnet, проанализировать команды, изменить их и отправить в API и наоборот.
Есть ли для этого какой-нибудь инструмент?
Если нет ... Я думаю, что быстрее следует использовать некоторую библиотеку perl tcp. Он должен предоставить "фальшивый" логин, а затем отправить полученные строки в подпрограмму для обработки.

Любой вариант будет приемлемым. Леандро.

0
задан 10 April 2020 в 03:23
1 ответ

Вот что я придумал (это не работает)

#!/usr/bin/perl -w
 use IO::Socket;
 use Net::hostent;              # for OO version of gethostbyaddr

 $PORT = 9000;                  # pick something not in use
$prompt="MA5680T>";

 $server = IO::Socket::INET->new( Proto     => 'tcp',
                                  LocalPort => $PORT,
                                  Listen    => SOMAXCONN,
                                  Reuse     => 1);

 die "can't setup server" unless $server;
 print "[Server $0 accepting clients]\n";

 while ($client = $server->accept()) {
   $client->autoflush(1);
   #print $client "Welcome to $0; type help for command list.\n";
   #$hostinfo = gethostbyaddr($client->peeraddr);
   #printf "[Connect from %s]\n", $hostinfo->name || $client->peerhost;
   print $client "\n";
   print $client "Warning: Telnet is not a secure protocol, and it is recommended to use Stelnet.";
   print $client "\n";
   print $client "\n";
   print $client ">>User name:";
   while ( <$client>) {
     next unless /\S/;       # blank line
    print "\nlinea :$_";

     if    (/quit|exit/i)    { last;                                     }
     elsif (/leo/i)    { printf $client "\n>>User password:";  }
     elsif (/password/i)    { printf $client "\n$prompt"; }
     else {
       print $client "\n$prompt";
     }
   } continue {
    #print $client $prompt;
   }
   close $client;
 }

Что-то упущено, так как я не вижу никаких попыток входа в систему при принудительном подключении моего клиента по телнету к этому "фальшивому" серверу.
Я рассматриваю возможность использования сервера telnetd из какого-нибудь Linux для управления входом в систему и стабилизацией сеанса, а затем перенаправлением полученных команд в мой собственный скрипт ...
Не знаю как, но я попробую, любая идея будет приветствоваться.

0
ответ дан 10 April 2020 в 20:02

Теги

Похожие вопросы