Dorks links Grabber (Bing Version)

Iniciado por Xt3mP, Abril 13, 2012, 06:04:13 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Este es un script que ya tenía guardado, el cual tiene como fin obtener páginas del motor de Bing para comprobarlas y checar el archivo en cuestión (ingresado) existe. La idea la tenía ya hace un tiempo pero en realidad la idea príncipal le corresponde a ar3sw0rmed ya que el me lo comentó y me gustó la idea.




La utilidad consta de lo siguiente:

  • Insert DORK: Dork de bing.
  • Search Engine: Por el momento Bing; Google se maneja diferente y está un poco más complicado.
  • Output file: Nombre de archivo donde se guardara el resultado.
  • Check file: Nombre de archivo a comprobar.
  • Raw links: Todos los enláces encontrados.
  • Correct links: Todos los enláces correctos.
  • Bad links: Todos los enláces incorrectos.
  • Output file: Ruta del archivo creado.
  • Estadísticas.
El script sólo llega hasta la página 20 apróximadamente y puede tardar dependiendo del servidor, en mi caso, en localhost tardó 7 minutos.


Código: php

<?php
/*
* Author: Xt3mP
* Name: Dorks link grabber
* Version: 1.0 Bing
* Contact: xt3mp[at]null[dot]net
* Website: http://xt3mp.mx | http://backroot.org
*/
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dorks links Grabber (Bing version) | Xt3mP</title>
<style type="text/css">body{background-color:#2b2b2b;color:#777;font-family:Courier,"Courier New",monospace,sans-serif;font-size:12px}div#container{height:auto;margin:0 auto;width:600px}fieldset{background-color:#222;border:1px dashed #777;float:left;margin:5px;padding:5px;width:100%}legend{background-color:#555;border:1px dashed #777;color:#FFF;font-weight:700;margin:5px;padding:5px}label{float:left;margin-right:5px;padding-top:5px;text-align:right;width:100px}input,select{background-color:#E7E7E7;border:1px dashed #777;float:left;font-family:Courier,"Courier New",monospace,sans-serif;font-size:12px;margin-bottom:5px;padding:3px;width:490px}input[type=submit]{width:600px}h1{margin:0;padding:0}a{color:#CCC;font-weight:700}a:hover{color:#FFF;text-decoration:underline}</style>
</head>
<body>
<?php
set_time_limit(0);
class dorkGrabber
{
private $bing;
private $checkfile;

public function __construct()
{
$this->bing = 'http://www.bing.com/search?q=';
}

private function getSource($target)
{
$target = @file_get_contents($target);
return $target;
}

private function remakeUrl($url)
{
$url = explode("/", $url);
for($z = 0; $z < count($url) - 1; $z++)
{
$new .= $url[$z].'/';
}
return $new;
}

private function checkUrl($url)
{
if(@fopen($this->remakeUrl($url).$this->checkfile, 'r'))
return true;
else
return false;
}

private function parseLinks($target)
{
$data['rawlinks'] = array();
$data['correctlinks'] = array();
$data['badlinks'] = array();
for($i = 0; $i < 21; $i++)
{
$first = ($i == 0) ? 0 : ($i * 10) + 1;
$source = $this->getSource($target.'&first='.$first);
$pattern = "/<h3><a href=\"(.*?)\" onmousedown=/";
$preg = preg_match_all($pattern, $source, $output, PREG_PATTERN_ORDER);

if(count($output[1]) != 0)
{
for($x = 0; $x<count($output[1]); $x++)
{
if(!in_array($this->remakeUrl($output[1][$x]), $data['correctlinks']))
{
if($this->checkUrl($output[1][$x]))
{
$data['rawlinks'][] = $output[1][$x];
$data['correctlinks'][] = $this->remakeUrl($output[1][$x]);
}else{
$data['rawlinks'][] = $output[1][$x];
$data['badlinks'][] = $output[1][$x];
}
}
}
}else{
break;
}
}
return $data;
}

private function getLinks($target)
{
$newTarget = $this->getSource($target);
$check = "/<h1>No se han encontrado resultados para <strong>/";
if(@preg_match($check, $newTarget))
return false;
else
return $this->parseLinks($target);
}

private function makeData($type, $links, $output = null)
{
switch($type)
{
case 'raw':
$title = '<h1>Raw links</h1>';
foreach($links['rawlinks'] as $link)
{
$linkdir .= $link."\r\n";
}
$data = $title.'<textarea rows="5" style="width: 600px; font-size: 11px;">'.$linkdir.'</textarea>';
break;
case 'correct':
$title = '<h1>Correct links</h1>';
foreach($links['correctlinks'] as $link)
{
$linkdir .= $link."$this->checkfile\r\n";
}
$data = $title.'<textarea rows="5" style="width: 600px; font-size: 11px;">'.$linkdir.'</textarea>';
break;
case 'bad':
$title = '<h1>Bad links</h1>';
if(empty($links['badlinks']))
{
$data = $title.'<textarea rows="5" style="width: 600px; font-size: 11px;">None</textarea>';
}else{
foreach($links['badlinks'] as $link)
{
$linkdir .= $link."\r\n";
}
$data = $title.'<textarea rows="5" style="width: 600px; font-size: 11px;">'.$linkdir.'</textarea>';
}
break;
case 'txt':
$title = '<h1>Output file</h1>';
foreach($links['correctlinks'] as $link)
{
$linkdir .= $link.$this->checkfile;
}
$tot = count($links['correctlinks']) + count($links['badlinks']);
$statistics = '
[Total links: <b>'.$tot.'</b>]
[Correct links: <b>'.count($links['correctlinks']).'</b>]
[Bad links: <b>'.count($links['badlinks']).'</b>]';
$file = fopen($output, 'w+');
if($file)
{
fwrite($file, $linkdir);
fclose($file);
$filedir = $output.' > http:/'.dirname($_SERVER["PHP_SELF"]).'/'.$output;
$data = $title.'<textarea rows="5" style="width:600px;font-size:11px;margin-bottom:5px;">'.$filedir.'</textarea>';
$data .= $statistics.' <a href="./'.$output.'" target="_blank">[View output file]</a>';
}else{
$data = $title.$statistics.' [Can\'t make output file]';
}
break;
}
return $data;
}

public function makeDirective($dork, $output, $checkfile = null)
{
$dork = urlencode($dork);
$target = $this->bing.$dork;
$this->checkfile = $checkfile;
$grabber = $this->getLinks($target);
$result = '<fieldset style="text-align: justify"><legend>Result</legend>';
if($grabber === false)
{
$result .= 'The DORK (<b>'.urldecode($dork).'</b>) doesn\'t return any results.';
}else{
$result .= $this->makeData('raw', $grabber);
$result .= $this->makeData('correct', $grabber);
$result .= $this->makeData('bad', $grabber);
$result .= $this->makeData('txt', $grabber, $output);
}
$result .= '</fieldset>';
return $result;
}
}
?>
<div id="container">
<fieldset>
<legend>Dorks links Grabber (Bing version) | <a href="http://xt3mp.mx" target="_blank">Xt3mP</a></legend>
<form action="" method="POST">
<label>Insert DORK:</label><input type="text" name="dork"/><br />
<label>Search eng.:</label><input type="text" name="engine" value="Bing" disabled="disabled"><br />
<label>Output file:</label><input type="text" name="output" /><br />
<label>Check file:</label><input type="text" name="check"/><br />
<input type="submit" name="get" value="Get Links!" />
</form>
</fieldset>
<?php
if(isset($_POST['get']))
{
if(empty($_POST['dork']) or empty($_POST['output']))
{
echo '<script>alert("Some fields are empty!.");</script>';
}else{
$mtime = microtime();
$mtime = explode(' ',$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
$dorkGrabber = new dorkGrabber();
echo $dorkGrabber->makeDirective($_POST['dork'], $_POST['output'], $_POST['check']);
$mtime = microtime();
$mtime = explode(' ',$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);
echo 'This page took '.round($totaltime).' seconds to load.';
}
}
?>
</div>
</body>
</html>



Nota: Es probable que pueda generar falsos positivos porque la manera de comprobar el archivo no es tan eficaz, por lo que algunos servidores al entrar a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta lo regresa como 200 en éste caso ya que es encontrada y no quize comprobar la página por cURL.


Cualquier cosa comenten, porque como he dicho, puede que tenga errores.
Saludos.
Cada vez que me das Karma me motivas