All pastes #72693 Raw Edit

Miscellany

public text v1 · immutable
#72693 ·published 2006-06-27 02:16 UTC
rendered paste body
<?php
set_time_limit(0);
function ping($host) {
   $package = "\x08\x00\x19\x2f\x00\x00\x00\x00\x70\x69\x6e\x67";

   /* create the socket, the last '1' denotes ICMP */    
   $socket = socket_create(AF_INET, SOCK_RAW, 1);
   
   /* set socket receive timeout to 1 second */
   socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));
   
   /* connect to socket */
   socket_connect($socket, $host, null);
   
   /* record start time */
   list($start_usec, $start_sec) = explode(" ", microtime());
   $start_time = ((float) $start_usec + (float) $start_sec);
   
   socket_send($socket, $package, strlen($package), 0);
   
   if(@socket_read($socket, 255)) {
       list($end_usec, $end_sec) = explode(" ", microtime());
       $end_time = ((float) $end_usec + (float) $end_sec);
   
       $total_time = $end_time - $start_time;
       
       return $total_time;
   } else {
       return false;
   }
   
   socket_close($socket);
}

$null = '';
if (php_sapi_name() == 'cli' && isset($argv[1]) || isset($argv[2]) || isset($argv[3]) || isset($argv[4])) {
  $oct[0] = $argv[1];
  $oct[1] = $argv[2];
  $oct[2] = $argv[3];
  $oct[3] = $argv[4];
}
elseif (php_sapi_name() == 'cli') {
  echo 'First Octlet: ';
  if ($buffer = trim(fgets(STDIN)) != $null) {
    $oct['0'] = $buffer;
	echo 'NOTICE: Setting first octlet to [' . $oct['0'] . '].0.0.0' . "\n"; 
  }
  else {
    $oct['0'] = '0';
	echo 'ERROR: Setting first octlet to defualt [' . $oct['0'] . '].0.0.0' . "\n"; 
  }
  echo 'Second Oct: ';
  if ($buffer = trim(fgets(STDIN)) != $null) {
    $oct['1'] = $buffer;
	echo 'NOTICE: Setting first octlet to 0.[' . $oct['1'] . '].0.0' . "\n"; 
  }
  else {
    $oct['1'] = '0';
	echo 'ERROR: Setting first octlet to defualt 0.[' . $oct['1'] . '].0.0' . "\n"; 
  }
  echo 'Third Oct: ';
  if ($buffer = trim(fgets(STDIN)) != $null) {
    $oct['2'] = $buffer;
	echo 'NOTICE: Setting first octlet to 0.0.[' . $oct['2'] . '].0' . "\n"; 
  }
  else {
    $oct['2'] = '0';
	echo 'ERROR: Setting first octlet to defualt 0.0.[' . $oct['2'] . '].0' . "\n"; 
  }
  echo 'Forth Oct: ';
  if ($buffer = trim(fgets(STDIN)) != $null) {
    $oct['3'] = $buffer;
	echo 'NOTICE: Setting first octlet to 0.0.0.[' . $oct['3'] . ']' . "\n"; 
  }
  else {
    $oct['3'] = '0';
	echo 'ERROR: Setting first octlet to defualt 0.0.0.[' . $oct['3'] . ']' . "\n"; 
  }
}
else {
  $oct['0'] = '0';
  $oct['1'] = '0';
  $oct['2'] = '0';
  $oct['3'] = '0';
}
for ($ip['0'] = $oct['0']; $ip['0'] <= '255'; $ip['0']++) {
  for ($ip['1'] = $oct['1']; $ip['1'] <= '255'; $ip['1']++) {
    for ($ip['2'] = $oct['2']; $ip['2'] <= '255'; $ip['2']++) {
      for ($ip['3'] = $oct['3']; $ip['3'] <= '255'; $ip['3']++) {
        $addr = $ip['0'] . '.' . $ip['1'] . '.' . $ip['2'] . '.' .$ip['3'] . "\n";
		if (ping($addr) != $false) {
		  echo $addr . "\n";
		}
      }
    }
  }
}
?>