11 Август, 2012

Cisco X.28 PAD Scanner NUA Version 1.0

planet.jpg Решил потихоньку выкладывать различный софт и инфу которая у меня еще уцелела. Начну вот с первой версии моего сканера адресов через пад, написанного на php еще в начале 2009 года.
Сканер умеет работать через http прокси, а также авторизоваться на циске, что может быть полезно. Кстати на днях выложу следующую его версию умеющую работать через Socks5.


Сам код излишне документирован и понятен:

#!php.exe -q
<?php
//------------------------------------------------------------
//  Cisco X.28 PAD Scanner NUA Version 1.0 
//                  by Soldier
//            http://x25networks.ru/
//------------------------------------------------------------
// TODO:
// - сделать работу через Socks5 прокси
// - сделать анализ ответа циски(обработка рабочих адресов)
// 2009
//Настройки
    $address = '193.188.110.50'; // cisco x28 pad
    $port    = 3001; // порт
    $login = "ciscorn"; // имя пользователя на циске(если нужно)
    $pass =  "ciscorn"; // пароль пользователя
    $type = 1;  // тип аутентификации:
		// 1 - username|pass
		// 2 - pass
		// 3 - none
    //Настройка прокси
    $proxy           = 0;  // 1-включить; 0-отключить
    $proxyaddress    = '84.14.229.122'; // адрес http прокси поддерживающий команду CONNECT
    $proxyport       = 3128; // порт

    $area = "250177"; // пишем DNIC + часть area code (без последней цифры)
    $start = 200001; // пишем последнюю цифру area code и начальный адрес
    $end = 200005;  // пишем последнюю цифру area code и последний адрес
// ########################/Дальше ничего менять не нужно/##########################
    error_reporting(E_ALL ^ E_WARNING); // выводить все ошибки
    set_time_limit(0); // убираем ограничение по времени выполнения
    ob_implicit_flush(); //вкл. неявную очистку, отключает буферизацию вывода
   
    echo "-= Cisco X.28 PAD Scanner =-n";
    echo "by Soldier [http://x25networks.ru]n";
    try {
   
//------------------------------/Создаем сокет/-------------------------------------
        echo 'Create socket ... ';
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket < 0) {
            throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."n");
        } else {
            echo "OKn";
        }
//--------------------/Подключаемся к хосту или к прокси/---------------------------
 
if ($proxy) {
		echo 'Connect proxy ... ';
        	$result = socket_connect($socket, $proxyaddress, $proxyport);
        	if ($result === false) {
           		throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."n");
        	} else {
        		echo "OKn";
       		}
		echo 'Connect host ... ';
		$proxyconnect = "CONNECT ".$address.":".$port." HTTP/1.1rn";
		socket_write($socket, $proxyconnect, strlen($proxyconnect)); // отправляем прокси команду подключения к хосту
		sleep(3);
		socket_write($socket, "rn", strlen("rn")); // отправляем "enter"(нужен для прокси)
		echo "OKn";

	    } else {
		echo 'Connect host ... ';
        	$result = socket_connect($socket, $address, $port);
        	if ($result === false) {
           		throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."n");
        	} else {
        		echo "OKn";
       		}
	    }    
// ----------------------------------------------------------------------------------
       		// $out = socket_read($socket, 1024); // хз какой то мусор выводится при подключении
				         	   // читаем его чтобы не выводился на экран
       		$log = fopen($area."_log.txt", "w");  // открываем файл для лога
//------------------------------------/Аутентификация/------------------------------
	switch ($type) {
	case 1:
	    $out = socket_read($socket, 1024);  // выводим приглашение для ввода логина
	    echo $out."n";
       
	    echo "Send login&password...";
	    socket_write($socket, $login, strlen($login)); // отправляем логин
	    socket_write($socket, $pass, strlen($pass)); // отправляем пароль
	    echo "OKn";
	    sleep(4); // ждем вывода приглашения "*"
	    break;
	case 2:
	    $out = socket_read($socket, 1024);  // выводим приглашение для ввода логина
	    echo $out."n";
    
	    echo "Send password...";
	    socket_write($socket, $pass, strlen($pass)); // отправляем пароль
	    echo "OKn";
	    echo 'Wait prompt: ';
	    $out = socket_read($socket, 1024); // ждём "*"
	    echo $out."n";
	    break;
	case 3:
	    echo 'Wait prompt: ';
	    $out = socket_read($socket, 1024); // ждём "*"
	    echo $out."n";
	    break;
	}
// ----------------------------------------------------------------------------------
    for ($i=$start; $i<=$end; $i++) {
        $nua = $area.$i."rn";
        socket_write($socket, $nua, strlen($nua));
        sleep(2);  // дожидаемся ответа циски       
        echo ' ';
        $out = socket_read($socket, 1024);
        echo $out."n";           // выводим ответ на экран
        fwrite($log,"$outn"); // и пишем в файл
    }
    } catch (Exception $e) {
        echo "nError: ".$e->getMessage();
    }
   
    if (isset($socket)) {
   
	sleep(2);
        echo 'Close socket ... ';
        socket_close($socket);   // закрываем сокет
        echo "OKn";
       
    }
    fclose($log); // закрываем файл
    echo "Scan completed... OKn";
?>
www.000webhost.com