------------------------------------------------------------------------------- Perl Fast IP Lookup This uses /etc/hosts and local named cache, before using DNS Thus if the host is already known it will report it almost instantally! The 5th field is a binary string representing the IP perl -le 'print join(".", unpack("C4",(gethostbyname(shift))[4]))' `hostname` OR perl -e 'printf "%vd\n",(gethostbyname(shift))[4]' `hostname` OR the whole entry perl -e 'printf "%s %s %s %s %vd\n",gethostbyname(shift)' `hostname` OR fqdn, aliases, ip perl -e 'printf "FQDN: %s\nAliases: %s\nIP: %vd\n", (gethostbyname(shift))[0,1,4]' `hostname` Fast reverse lookup.. perl -MSocket -le \ 'print((gethostbyaddr(pack("C4",split(".",shift)),AF_INET))[0])' \ 132.234.250.63 NOTE; a reverse lookup is controled by that IP domains owner, and as such may be comming from a hackers domain. A forward lookup however is controled by that company. For security testing, restrict either by IP, or forward lookup. Do not rely on the reverse lookup result alone. ------------------------------------------------------------------------------- IP conversions. IP byte form to Number perl -le 'print unpack("N", 127.0.0.1)' 2130706433 IP string to Byte form, to Number perl -MSocket -le 'print unpack("N", inet_aton("127.0.0.1"))' 2130706433 Number to IP string perl -MSocket -le 'print inet_ntoa(pack("N", 2130706433))' 127.0.0.1 Alturnative ( $, = '.' is array element separator on print) perl -le '$ip = 2130706433; $, = "."; print map { (($ip>>8*($_))&0xFF) } reverse 0..3' 127.0.0.1 ------------------------------------------------------------------------------- Perl Network Broadcast... $port = 8080; $sockaddr = "S n a4 x8";($name,$aliases,$proto) = getprotobyname('udp'); chop($hostname = `hostname`); ($name,$aliases,$type,$len,$myaddr) = gethostbyname($hostname); @myaddr=unpack("C4",$myaddr); pop(@myaddr);push(@myaddr,255); # works only for ff:ff:ff:00 subnet mask $broadaddr=pack("C4",@myaddr); $me = pack($sockaddr,&AF_INET, 0, $myaddr); $them = pack($sockaddr,&AF_INET, $port, $broadaddr); socket(S, &AF_INET, &SOCK_DGRAM, $proto) || die $!; setsockopt(S,&SOL_SOCKET,&SO_BROADCAST,1) || die $1; bind(S, $me) || die $!; send(S,"01234567 Hello everyone 01234567\n",0,$them) || die $!; -------------------------------------------------------------------------------