php:netutil
URL network utils
Petite collection utile pour avoir des infos diverses:
- en-têtes serveur
- informations du certificat SSL
- résolutions DNS
- whois, ping, traceroute…
Ça passe par exec() pour utiliser curl, openssl, nslookup, dig, ping, traceroute et whois. Faut juste s'assurer que le système sur lequel tourne le script dispose bien de ces outils.
NB: il n'y a aucune sécurité basique (échappement et contrôle d'entrée, antiflood..) donc à ne pas laisser en accès public.
- netutil.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>URL network utils</title> <style type="text/css"> body {font-family:monospace;} pre {border:1px solid #aaa;padding:1em;} pre#curl {display:none;background:linear-gradient(to bottom, lightgrey, white);} pre#ssl {display:none;background:linear-gradient(to bottom, lightyellow, white);} pre#host {display:none;background:linear-gradient(to bottom, lightgreen, white);} pre#dig {display:none;background:linear-gradient(to bottom, orangered, white);} pre#ping {display:none;background:linear-gradient(to bottom, lightblue, white);} pre#traceroute {display:none;background:linear-gradient(to bottom, wheat, white);} pre#whois {display:none;background:linear-gradient(to bottom, mediumspringgreen, white);} pre#nslookup {display:none;background:linear-gradient(to bottom, sandybrown, white);} </style> </head> <body> <script type="text/javascript"> <!-- function toggle_visibility(id) { var e = document.getElementById(id); if(e.style.display == 'block') e.style.display = 'none'; else e.style.display = 'block'; } //--> </script> <?php if(!isset($_GET['url'])) { ?> <form action="./netutil.php" method="get"> <input type="text" name="url" placeholder="URL..."> <input type="submit"> </form> <?php } else { $request = $_GET['url']; echo '<form action="./netutil.php" method="get"> <input type="text" name="url" placeholder="'.$request.'"> <input type="submit"> </form><br><a href="#curl" onclick="toggle_visibility(\'curl\');">headers</a> | <a href="#ssl" onclick="toggle_visibility(\'ssl\');">SSL cert</a> | <a href="#host" onclick="toggle_visibility(\'host\');">host</a> | <a href="#dig" onclick="toggle_visibility(\'dig\');">dig</a> | <a href="#ping" onclick="toggle_visibility(\'ping\');">ping</a> | <a href="#traceroute" onclick="toggle_visibility(\'traceroute\');">traceroute</a> | <a href="#whois" onclick="toggle_visibility(\'whois\');">whois</a> | <a href="#nslookup" onclick="toggle_visibility(\'nslookup\');">nslookup</a>'; if(strpos($request, '/') !== FALSE) $host = parse_url($request, PHP_URL_HOST); else $host = $request; echo "<pre id=\"curl\"><b>curl -I (HTTP headers)</b> [ $request ]<hr><br><br>"; exec('curl -I '.$request, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'curl\');">close</a></pre>'; echo "<pre id=\"ssl\"><b>openssl s_client/x509 (SSL certificate check)</b> [ $host ]<hr><br><br>"; exec('openssl s_client -servername '.$host.' -connect '.$host.':443 | openssl x509 -noout -text', $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'ssl\');">close</a></pre>'; echo "<pre id=\"host\"><b>host (DNS summary)</b> [ $host ]<hr><br><br>"; // simple host mode exec('host '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'host\');">close</a></pre>'; echo "<pre id=\"dig\"><b>dig (DNS digging)</b> [ $host ]<hr><br><br>"; // dig exec('dig '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'dig\');">close</a></pre>'; echo "<pre id=\"ping\"><b>ping (host latency)</b> [ $host ]<hr><br><br>"; // ping exec('ping -c5 -i 0.3 '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'ping\');">close</a></pre>'; echo "<pre id=\"traceroute\"><b>traceroute (packet path overview)</b> [ $host ]<hr><br><br>"; //traceroute exec('traceroute -q1 -w1 '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'traceroute\');">close</a></pre>'; echo "<pre id=\"whois\"><b>whois (domain name information)</b> [ $host ]<hr><br><br>"; //whois exec('whois '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'whois\');">close</a></pre>'; echo "<pre id=\"nslookup\"><b>nslookup (DNS records)</b> [ $host ]<hr><br><br>"; //nslookup exec('nslookup -query=any '.$host, $out); foreach ($out as $data) echo "$data<br>"; unset($out); echo '<br><a href="#" onclick="toggle_visibility(\'nslookup\');">close</a></pre>'; } ?> </body> </html>
php/netutil.txt · Dernière modification : 2013-08-20 12:07 de 127.0.0.1