Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: creating a fake telnet middleware

by jo37 (Deacon)
on Apr 10, 2020 at 08:50 UTC ( [id://11115309]=note: print w/replies, xml ) Need Help??


in reply to creating a fake telnet middleware

Telnet isn't just a terminal. It is a protocol spoken between client and server. Intercepting such a session requires to implement the server side. See RFC 854

Greetings,
-jo

$gryYup$d0ylprbpriprrYpkJl2xyl~rzg??P~5lp2hyl0p$

Replies are listed 'Best First'.
Re^2: creating a fake telnet middleware
by leostereo (Beadle) on Apr 10, 2020 at 19:11 UTC
    Dear jo , this is my first attempt.
    From the client side it seems to work, I can telnet , insert my user , then it request my password and it seems similar to original shell. But when trying from legitimate telnet client it does not.
    Im also thinking the idea of creating a real linux server with telnet login and then redirect telnet daemon to a custom script (like a pseudo shell). I need to find out all pieces and make them work togheter.
    This is my perl telnet server:
    #!/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; }
    Regards, Leandro

      Though this is a rudimentary server, it is not a telnet server. It depends on the client if it is willing to communicate with such a non-telnet endpoint.

      I think it would be easier to replace the login shell of the user with some interceptor. That way the application would talk to a real telnetd, which - after authenticating the client - will connect it to your login shell replacement, where you may perform anything you like.

      Greetings,
      -jo

      $gryYup$d0ylprbpriprrYpkJl2xyl~rzg??P~5lp2hyl0p$
        Thanks for your idea. I will work on that. Regards. Leandro.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11115309]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (7)
As of 2024-04-18 04:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found