Thread IO-Socket als MITM-Server (10 answers)
Opened by Aendrew at 2017-07-03 21:48

Aendrew
 2017-07-03 21:48
#186777 #186777
User since
2008-10-29
12 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-Community,

ich hab eine Anwendung, die Daten von Client zu Server verschickt.
Jetzt würde ich gerne wissen, was da so für Daten verschickt werden :)

Meine Idee war ein simpler ManInTheMiddle-Server.
In der Theorie ganz einfach, in der Praxis bin ich bislang leider gescheitert.

Der Client versendet binäre Daten an den Server.
Diese kann ich auch noch empfangen, allerdings funktioniert die Weiterleitung nicht.

Auf der Kommandozeile (hab es unter Windows getestet) erhalte ich folgenden Output:
Quote
connection from 127.0.0.1:65288
mitm server received data: ☺ ☺↕4é¨
Use of uninitialized value $size in concatenation (.) or string at mitm.pl line 52.
mitm client sent data of length ( ☺ ☺↕4é¨ )
mitm client received response:
mitm server is sending data to real client
mitm server has send data to real client



Hab es auch schon mit zwei getrennten Scripten versucht und die Daten in den Client-Teil kopiert.
In diesem Fall kam auch eine entsprechende Response vom Endgerät.
Nur in einem Script will es nicht funktionieren.

Hat jemand eine Idee was ich falsch mache?


Hier natürlich noch der verwende Source:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use IO::Socket::INET;
use warnings;
use strict;

# auto-flush on socket
$| = 1;

# creating a listening socket
# => Wir sind der Server fuer den Anwender
my $socket_server = new IO::Socket::INET (
LocalHost => '0.0.0.0',
LocalPort => '9000',
Proto => 'tcp',
Listen => 5,
Reuse => 1
);
die "cannot create socket $!\n" unless $socket_server;
print "server waiting for client connection on port 9200\n";

# create a connecting socket
# => Wir sind der Client fuer das Endgeraet
my $socket_client = new IO::Socket::INET (
PeerHost => 'destination-srv',
PeerPort => '9000',
Proto => 'tcp',
);
die "cannot connect to the server $!\n" unless $socket_client;
print "client-part connected to the server (endpoint)\n";

while(1)
{
print "\n\n\n";

# waiting for a new client connection
my $client_socket = $socket_server->accept();

# get information about a newly connected client
my $client_address = $client_socket->peerhost();
my $client_port = $client_socket->peerport();
print "connection from $client_address:$client_port\n";

# read up to 1024 characters from the connected client
my $data = "";
$client_socket->recv($data, 1024);
print "mitm server received data: $data\n";

#####################
### MITM-PART ###
#####################

my $size = $socket_client->send($data);
print "mitm client sent data of length ".$size." (".$data.")\n";

# notify server that request has been sent
shutdown($socket_client, 1);

# receive a response of up to 1024 characters from server
my $response = "";
$socket_client->recv($response, 1024);
print "mitm client received response: $response\n";

#####################
### MITM-PART ###
#####################

# write response data to the connected client
print "mitm server is sending data to real client\n";
$client_socket->send($response);
print "mitm server has send data to real client\n";

# notify client that response has been sent
shutdown($client_socket, 1);
}

$socket_client->close();
$socket_server->close();

View full thread IO-Socket als MITM-Server