<?
        function size($mask)
        {
                if($mask == 32)
                        return(1);
                if($mask == 31)
                        return(2);
                $mask = 32 - $mask;
                return(pow(2, $mask));
        }

        function ip($ip)
        {
                $bits = explode(".", $ip);
                $ip = $bits[3] + floor($bits[2] * 256) + floor($bits[1] * 65536) + floor($bits[0] * 16777216);
                return($ip);
        }

        function revip($ip)
        {
                $ip0 = floor($ip / 16777216);
                $ip -= floor($ip / 16777216) * 16777216;
                $ip1 = floor($ip / 65536);
                $ip -= floor($ip / 65536) * 65536;
                $ip2 = floor($ip / 256);
                $ip -= floor($ip / 256) * 256;
                return("$ip0.$ip1.$ip2.$ip");
        }

        $net = $argv['1'];

        if($net == "")
                die("You must supply a valid netmask eg 127.0.0.1/8\n");

        list($ip, $mask) = explode("/", $net, 2);
        if($mask == "")
                $mask = 32;
        $start = ip($ip);
        $size = size($mask);
        for($i = $start; $i < $start + $size; $i++)
        {
                $ip = revip($i);
                $lines = explode("\n", trim(`echo 'QUIT'|timeout 2 openssl s_client -connect '$ip:443' 2>&1`));
                $keysize = $host = $cipher = $protocol = $issuer = "";
                foreach($lines as $line)
                {
                        $line = trim($line);
                        if(substr($line, 0, 7) == "issuer=")
                                $issuer = substr($line, 7);
                        if(substr($line, 0, 8) == "Protocol")
                                $protocol = substr($line, 12);
                        if(substr($line, 0, 6) == "Cipher")
                                $cipher = substr($line, 12);
                        if(substr($line, 0, 21) == "Server public key is ")
                                $keysize = substr($line, 21, -4);
                }
                if($issuer == "")
                        continue;
                $host = array("ip" => $ip, "issuer" => $issuer, "protocol" => $protocol, "cipher" => $cipher, "keysize" => $keysize);
print_r($host);
        }
?>

SslStats (last edited 2008-05-22 22:16:52 by anonymous)