PDA

Просмотр полной версии : ipcheker


b3
28.02.2012, 16:20
Тулза сверяет список доменов со списком IP-адресов на соответствие. Применяется для того чтобы знать какие домены еще остались на данном серваке а какие переехали.

Пишет результат в темп файл:
$result = tempnam("/tmp", "ipcheckerlog_");
И по завершению работы покажет ссылку на него:
echo "\n[+++]Done. Result: {$result} \n\n";
В вывод идут только "гуды", можете допилить условие по желанию.

Принимает 2 аргумента, оба файлы, первый с доменами, каждый с новой строки, второй IP адреса, аналогично каждый с новой строки.
Думаю кому-то пригодиться.

https://gist.github.com/1932575
http://gyazo.com/fa0a57104cead2ae1f959089d97504c1.png


#!/usr/bin/env php
<?php
if (PHP_SAPI != 'cli') { die('Only php-cli'); }

echo "
################################################## #####
## Priv8 0day script ebta.
## 1st argv: domain list file.
## 2nd argv: ip address list file.
## 28/02/2012
################################################## #####
\n";

$result = tempnam("/tmp", "ipcheckerlog_");

if(!isset($argv[1]) || empty($argv[1]) ) {
die("[!] ARGV 1 must be list domains\n");
}

if(!isset($argv[2]) || empty($argv[2]) ) {
die("[!] ARGV 2 must be list IP address\n");
}


$domain_list = file($argv[1]);
$domain_list = array_map('trim', $domain_list);

$ip_list = file($argv[2]);
$ip_list = array_map('trim', $ip_list);


$count_domain_list = count($domain_list);
$count_ip_list = count($ip_list);


if($count_domain_list === 0) {
die("Empty Domain list\n");
}

if($count_ip_list === 0) {
die("Empty IP list\n");
}

echo "Load: {$count_domain_list} domains \nLoad: {$count_ip_list} IP address\n\n";

$i=1;
foreach ($domain_list as $domain) {
if(strlen($domain) > 2) {


$domain = str_ireplace('http://', '', $domain);

$ip = gethostbyname($domain);

if(in_array($ip, $ip_list)) {
echo "[+]-[".round(($i/$count_domain_list)*100,0)."%]-[{$i}/{$count_domain_list}] {$domain}:{$ip}\n";

file_put_contents($result, "$domain\n", FILE_APPEND);
}
}


$i++;
}

echo "\n[+++]Done. Result: {$result} \n\n";
?>

12309
29.02.2012, 13:46
> $ip = gethostbyname($domain);
> if(in_array($ip, $ip_list)) {

тут косяк, я с этим тоже наебался в своей тулзе. у одного домена может быть несколько ипов, и массив $ip вида "213.180.204.11 77.88.21.11 87.250.250.11 87.250.251.11 93.158.134.11 213.180.193.11" (это yandex.ru) не будет in_array твоего $ip_list. надо for i in $ip чекать, чтобы хотя бы один ип из $ip был в массиве $ip_list

b3
29.02.2012, 15:28
http://php.net/manual/ru/function.gethostbyname.php
http://www.php.net/manual/ru/function.gethostbynamel.php
не первый раз делаешь замечания ошибочные

12309
29.02.2012, 20:38
да, сори, не знал про gethostbynamel.