#!/usr/bin/perl # identd 1.1 # (C) 2002 Amir Malik # http://virusexperts.com/~amir/identd/ my $MAXQUERIES = 5; # max queries per connection my $MAXTIME = 10; # max seconds per connection $SIG{'ALRM'} = sub { exit }; alarm($MAXTIME); # die on blocking sockets $| = 1; my($port1,$port2); my $i; while() { $i++; chomp(my $line = $_); $line =~ s/\s//g; ($port1,$port2) = split(/,/,$line); if(!$port1 || !$port2) { print "$port1 , $port2 : ERROR : UNKNOWN-ERROR\n"; exit; } my $unam = getports("tcp6"); # ipv6 check if($unam) { print "$port1 , $port2 : USERID : UNIX : $unam\n"; } else { $unam = getports("tcp"); # ipv4 check if($unam) { print "$port1 , $port2 : USERID : UNIX : $unam\n"; } else { print "$port1 , $port2 : ERROR : UNKNOWN-ERROR\n"; } } if($i >= $MAXQUERIES) { exit; } } sub getports { my($file) = $_[0]; open(PROC_TCP,") { my($laddr,$lport,$raddr,$rport,$uid) = $proc_tcp =~ /^\s*\S+\: (\S+)\:(\S+)\s+(\S+)\:(\S+)\s+\S+\s+\S+\:\S+\s+\S+\:\S+\s+\S+\s+(\S+)/; $lport = hex($lport); $rport = hex($rport); if($port1 == $lport && $port2 == $rport) { ($unam) = getpwuid($uid); } } close(PROC_TCP); return $unam; }