Тема: HTA: DNS Toolz
Графическая оболочка для nslookup, для удобной работы с DNS.
<HTML><HEAD>
<TITLE>DNS Toolz (null)</TITLE>
<META content=JavaScript name=vs_defaultClientScript>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<hta:application id="DNS Toolz"
applicationname="DNS Toolz"
border="thick"
borderstyle="normal"
caption="yes"
contextmenu="yes"
innerborder="yes"
maximizebutton="yes"
minimizebutton="yes"
navigable="no"
scroll="auto"
scrollflat="no"
selection="no"
showintaskbar="yes"
singleinstance="yes"
sysmenu="yes"
version="1.0"
windowstate="normal"
/>
<style type="text/css">
body { margin:0; background:#eee }
body * { font:9pt/11pt Verdana; color:#005 }
td { background:#eee; padding:0.1em; text-indent:0.1em }
td.number { width:2.5em; text-align:center; text-indent:0 }
td.date { width:5.5em; text-align:center; text-indent:0 }
body { font-family: verdana, sans-serif; font-size:13px; }
a.help { text-decoration:none;}
a.help span { display:none;}
a.help:hover { position:relative; }
a.help:hover span { position:absolute; display:block; left:10px; top:-15px;
border:solid 1px #000; background:#ddd; color:#000; white-space:pre; padding:1px;}
</style>
<SCRIPT language=javascript>
<!-- скрыть скрипт от браузеров не поддерживающих их
var WshShell = new ActiveXObject("WScript.Shell");
function resize() // изменение размера окна к приемлемому виду
{
window.window.resizeTo(900,500);
}
function Run(CommandString) // запуск программ
{
WshShell.Run(CommandString,1);
}
function CheckDnsQuery() // функция проверки правильности введенных данных,
//возращает 1 - если всё правильно, 0 - если есть ошибки, 2 - если задан dns сервер
{
if (DnsRecord.value == "")
{
alert ("Введите имя домена или IP адрес, информацию о котором вы хотите получить");
return 0;
}
if (DnsServerName.value != "")
{
if (DnsServerName.value == " ")
{
alert ("Вы ввели в качестве имени сервера пустое значение");
return 0;
}
else
{
return 2; // возращаем 2 если задано имя dns сервера
}
}
if (DnsServerName.value == "")
{
return 1;
}
}
function Get()
{
switch(action.value)
{
case "Record":
DnsQuery();
break;
case "Zone":
DnsQueryZone();
break;
}
}
function DnsQuery() // dns запрос
{
check = CheckDnsQuery();
if ( (check == 1) | (check ==2)) // проверяем данные введенные в поля для ввода адреса и сервера
{
WshExec = WshShell.Exec("nslookup.exe");
if (check == 2) //если был задан dns сервер то используем его
{
WshExec.StdIn.WriteLine ("server "+DnsServerName.value);
}
//dsgjkyztv запрос
WshExec.StdIn.WriteLine ("set q="+DnsType.value);
WshExec.StdIn.WriteLine (DnsRecord.value);
WshExec.StdIn.WriteLine("exit");
NsLookupResult="";
NsLookupResult = WshExec.StdOut.ReadAll();
NsLookupResult = NsLookupResult+WshExec.StdErr.ReadAll();
//записываем полученные данные в текстовое поле
resultat.innerText="";
resultat.innerText=NsLookupResult;
WshExec.Terminate();
}
}
function DiapazonIP() //функция для сканирования диапазона ип адресов
{
var WshExec;
var NsLookupResult="";
var DnsResult="";
resultat.innerText="";
var increment=1;
var code=event.keyCode;
for (i=parseInt(BeginIP3.value);i<=parseInt(EndIP3.value);i++)
{
WshExec = WshShell.Exec("nslookup.exe");
WshExec.StdIn.WriteLine ("set q=a");
for(j=parseInt(BeginIP4.value);j<=parseInt(EndIP4.value);j++)
{
ip=BeginIP1.value+"."+BeginIP2.value+"."+i+"."+j
WshExec.StdIn.WriteLine (ip);
if(code==27){break;}
Check=increment*30; // 30 - это коэффициент ! если у вас зависает окно консольное значит нужно уменьшить число(коээфициент это сколько запросов будет записано в окно. Если слишком много записать в одно окно то по ходу дела у StdOut не хватает буфера для данных и консольнок окошко зависает
if(j>=Check)
{
//alert("if begin j="+j+" increment="+increment+"i= " +i);
increment++;
WshExec.StdIn.WriteLine("exit");
WshExec.StdErr.ReadAll();
while (!WshExec.StdOut.AtEndOfStream)
{
NsLookupResult=WshExec.StdOut.ReadLine();
if (NsLookupResult.substr(0,4) == "Name")
{
DnsResult=DnsResult+NsLookupResult+"\n";
NsLookupResult=WshExec.StdOut.ReadLine();
DnsResult=DnsResult+NsLookupResult+"\n\n";
}
}
try {WshExec.Terminate();} catch(err) {alert("Ошибка завершения nslookup!\nНомер ошибки "+ err.number+"\nОписание ошибки - "+err.description )};
WshExec = WshShell.Exec("nslookup.exe");
}
else
{
if (EndIP4.value - Check < 0)
{
j++;
while(j<EndIP4.value)
{
ip=BeginIP1.value+"."+BeginIP2.value+"."+i+"."+j
WshExec.StdIn.WriteLine (ip);
j++;
}
WshExec.StdIn.WriteLine("exit");
WshExec.StdErr.ReadAll();
while (!WshExec.StdOut.AtEndOfStream)
{
NsLookupResult=WshExec.StdOut.ReadLine();
if (NsLookupResult.substr(0,4) == "Name")
{
DnsResult=DnsResult+NsLookupResult+"\n";
NsLookupResult=WshExec.StdOut.ReadLine();
DnsResult=DnsResult+NsLookupResult+"\n\n";
}
}
increment=1; // перед переходом на новый цикл скидываем переменную
try {WshExec.Terminate();} catch(err) {alert("Ошибка завершения nslookup!\nНомер ошибки "+ err.number+"\nОписание ошибки - "+err.description )};
}
}
}
}
try {WshExec.Terminate();} catch(err) {alert("Ошибка завершения nslookup!\nНомер ошибки "+ err.number+"\nОписание ошибки - "+err.description )};
resultat.innerText=resultat.innerText+DnsResult;
alert("enjoy :)");
}
function DnsQueryZone()
{
var arrNS= new Array();
var check = CheckDnsQuery();
var NsLookupResult="";
var NsServers="\nОпрошенные сервера имён:"
if ( check == 1)
{
WshExec = WshShell.Exec("nslookup.exe");
WshExec.StdIn.WriteLine ("set q=ns");
WshExec.StdIn.WriteLine(DnsRecord.value);
WshExec.StdIn.WriteLine("exit");
// в цикле получаем массив ns серверов
i=0;
while (!WshExec.StdOut.AtEndOfStream)
{
NsLookupResult=WshExec.StdOut.ReadLine();
result=NsLookupResult.indexOf("internet address =");
if(result != -1 )
{
arrNS[i]=NsLookupResult.substring(result+18); // получаем имя ns сервера
NsServers=NsServers+"\n"+arrNS[i];
i++;
}
}
for(i=0;i<arrNS.length;i++)
{
WshExec = WshShell.Exec("nslookup.exe");
WshExec.StdIn.WriteLine ("server "+arrNS[i]);
WshExec.StdIn.WriteLine ("ls -t "+DnsType.value+" "+DnsRecord.value);
WshExec.StdIn.WriteLine("exit");
NsLookupResult=WshExec.StdOut.ReadAll();
NsLookupResultErr = WshExec.StdErr.ReadAll();
if (NsLookupResultErr == "")
{
resultat.innerText="";
resultat.innerText=NsLookupResult;
break;
}
}
if (NsLookupResultErr != "")
{
resultat.innerText="";
resultat.innerText="Не удалось получить DNS зону домена "+DnsRecord.value+" "+NsServers;
}
}
}
function IPCheck()
{
flag=0;
if ((BeginIP1.value>255))
{
BeginIP1.value="";
BeginIP1.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
if ((BeginIP2.value>255))
{
BeginIP2.value="";
BeginIP2.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
if ((BeginIP3.value>255))
{
BeginIP3.value="";
BeginIP3.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
if ((BeginIP4.value>255))
{
BeginIP4.value="";
BeginIP4.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
if ((EndIP3.value>255))
{
EndIP3.value="";
EndIP3.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
if ((EndIP4.value>255))
{
EndIP4.value="";
EndIP4.focus();
alert ("Недоустимая часть IP адреса! Число не должно быть больше 255");
}
}
function keyDown()
{
var code=event.keyCode;
switch(code)
{
case 112:
alert("DNS TOOLZ");
break;
}
}
-->
</SCRIPT>
</HEAD>
<BODY bgColor=silver onload='resize()' onkeydown="keyDown()">
<h1 align=center> DNS toolz <hr width="95%"> </h1>
<TABLE width="100%" align=center border=0> <!-- главная таблица -->
<TR>
<TD valign=top>
<table align=center border=0 width="95%">
<tr>
<td align=middle valign=top>
<table align=center border=0>
<tr>
<td align=left>Получить</td>
<td align=left>
<select id='action' name='action'>
<option value='Record' selected>DNS запись </option>
<option value='Zone'>DNS Зону</option>
</select>
</td>
</tr>
<tr>
<td align=left>Тип записи</td>
<td align=left>
<select id=DnsType>
<option value='ANY' selected> ANY(Все типы)</option>
<option value='A'> A (IP-адрес) </option>
<option value='NS'> NS (Сервер имен) </option>
<option value='MX'> MX (Почт.обменник) </option>
<option value='MB'> MB(Имя домена П.Я) </option>
<option value='MG'> MG (Член почт. гр.) </option>
<option value='MINFO'>MINFO (инф. о П.Я) </option>
<option value='MR'> MR(MailRename) </option>
<option value='PTR'> PTR (Pointer) </option>
<option value='SOA'> SOA (Нач. запись) </option>
<option value='CNAME'>CNAME (Канон. имя) </option>
<option value='TXT'> TXT (текст-я инф-я) </option>
<option value='HINFO'>HINFO (Проц и ОС) </option>
<option value='GID'> GID (ИД группы) </option>
<option value='UID'> UID (ИД юзера) </option>
<option value='UINFO'>UINFO (Юзер инфо) </option>
<option value='WKS'> WKS (Службы сети) </option>
</select>
</td>
</tr>
<tr>
<td align=left>Имя или IP </td>
<td align=left><input type=text id=DnsRecord size=23 maxlength=100></td>
</tr>
<tr>
<td align=left><a href="#" class="help">DNS Сервер<span> Укажите Dns сервер с которым вы собираетесь работать, если не хотите использовать ваш dns сервер</span></a></td>
<td align=left><input type=text id=DnsServerName size=23></td>
</tr>
<tr>
<td></td>
<td><INPUT id=GetButton onclick=Get() type=button value=выполнить name=DnsQueryButton> </td>
</tr>
<tr>
<td align=middle colspan=2><hr>Сканировать Диапазон IP</td>
</tr>
<tr>
<td align=left>Начальный IP</td>
<td align=right><input type=text id='BeginIP1' size=3 maxlength=3 value=212 onblur='IPCheck()'><input type=text id=BeginIP2 size=3 maxlength=3 onblur='IPCheck()' value=176><input type=text id=BeginIP3 onblur='IPCheck()' size=3 maxlength=3 value=53><input type=text id=BeginIP4 size=3 maxlength=3 onblur='IPCheck()' value=1></td>
</tr>
<tr>
<td align=left>Конечный IP</td>
<td align=right><input type=text id=EndIP3 size=3 maxlength=3 onblur='IPCheck()' value=53><input type=text id=EndIP4 size=3 maxlength=3 onblur='IPCheck()' value=3></td>
</tr>
<tr>
<td></td>
<td><INPUT id=Button1 onclick=DiapazonIP() type=button value=выполнить name=DiapazonIPButton> </td>
</tr>
<tr><td colspan=2 height=70 valign=top><hr width="95%"></td></tr>
<tr><td colspan=2 align=middle><input type=button value='NsLookup(справка)' onclick='Run("hh ntcmds.chm::/nslookup__subcommands.htm")'></td></tr>
</table>
</td>
<TD> <center><textarea id=resultat name=resultat rows=25 cols=95></textarea> </center></TD></tr></table></TD></TR></TABLE>
</BODY>
</HTML>Йоды магистра речи тайна раскрыта: оказывается, на форте программист старый есть он просто!

