From ee4cc813de8c8d1007cba6080a8eec1f5300e92e Mon Sep 17 00:00:00 2001 From: mivirl <> Date: Thu, 25 Jan 2024 12:41:17 -0600 Subject: [PATCH] Use client-specified hostname Use client-specified hostname when the server gives a name to the client. The name is stripped to only contain a-zA-Z and limited to a length of 16 characters. --- src/client.pl | 16 +++++++++++----- src/server.sh | 5 ++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/client.pl b/src/client.pl index 2ef3d23..231834d 100644 --- a/src/client.pl +++ b/src/client.pl @@ -48,15 +48,17 @@ sub connect_to_server { } sub register { + my ($hostname) = @_; my $socket = connect_to_server; $socket->send("register\n"); + $socket->send("$hostname\n"); my $response; foreach (1..5) { sleep $_; - $socket->recv($response, 64); + $socket->recv($response, 80); last if ($response =~ m/Key/); } - (my $clientName, my $clientKey) = $response =~ m/Name: (client_\d+)\nKey: (\d+)\n/; + (my $clientName, my $clientKey) = $response =~ m/Name: (client_[a-zA-Z]+_\d+)\nKey: (\d+)\n/; if (defined $clientName && defined $clientKey) { print_log "Register: success"; @@ -76,7 +78,7 @@ sub login { $socket->send("$clientKey\n"); foreach (1..5) { sleep $_; - $socket->recv($response, 64); + $socket->recv($response, 80); last if ($response =~ m/Auth/); } @@ -192,12 +194,16 @@ sub watch_directory { sub capture_packets { my ($clientName, $clientKey) = @_; my $pid = fork; - return if ($pid); + if ($pid) { + push @child_processes, $pid; + return; + } my $tcpdump = ns_system('/usr/bin/tcpdump', '-w', '/dev/shm/pcap', '-W', '10', '-G', '60', '-C', '100', '-K', '-n'); exit; } -my ($name, $key) = register; +my ($hostname) = ns_system('./busybox', 'hostname'); +my ($name, $key) = register($hostname); #print_log "Name: $name, Key: $key"; send_info($name, $key); send_log($name, $key, '/var/log/auth.log'); diff --git a/src/server.sh b/src/server.sh index 3ea8950..685d0c5 100644 --- a/src/server.sh +++ b/src/server.sh @@ -61,7 +61,10 @@ if [ "$COMMAND" = "login" ]; then unset TMPNAME unset TMPKEY elif [ "$COMMAND" = "register" ]; then - CLIENTNAME="client_$(( RANDOM * 2**30 + RANDOM * 2**15 + RANDOM ))" + echo -n "Hostname: " + read -r CLIENTHOSTNAME + CLIENTHOSTNAME=$(echo "$CLIENTHOSTNAME" | sed 's/[^a-zA-Z]//g' | cut -c -16) + CLIENTNAME="client_${CLIENTHOSTNAME}_$(( RANDOM * 2**30 + RANDOM * 2**15 + RANDOM ))" CLIENTDIR="$SRVDIR/clients/$CLIENTNAME" CLIENTKEY=$(( RANDOM * 2**30 + RANDOM * 2**15 + RANDOM )) mkdir -p "$CLIENTDIR" -- 2.39.5