<?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;а</title>
	<atom:link href="http://blog.lukmus.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>невидимка от ГлубПаутинВЧС</title>
		<link>http://blog.lukmus.ru/2023/09/07/nevidimka/</link>
		<comments>http://blog.lukmus.ru/2023/09/07/nevidimka/#comments</comments>
		<pubDate>Thu, 07 Sep 2023 00:50:19 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[VPN]]></category>
		<category><![CDATA[deepwebvpn]]></category>
		<category><![CDATA[nevidimka]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[softether]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2798</guid>
		<description><![CDATA[Основная причина почему DeepWebVPN заявляет о себе как о VPN с обфускацией соединения &#8212; поддержка протокола SoftEther, помимо OpenVPN. SoftEther (в нашем варианте это VPN через HTTPS) на сильно более глубоком уровне мимикрирует под неVPN-протокол нежели его оппоненты в виде различных надстроек (а-ля ShadowSocks) над OpenVPN, WireGuard и др., и отсечь его через DPI также [...]]]></description>
			<content:encoded><![CDATA[<p>Основная причина почему <a href='http://blog.lukmus.ru/2018/01/28/deepwebvpn/'>DeepWebVPN</a> заявляет о себе как о VPN с обфускацией соединения &#8212; поддержка протокола SoftEther, помимо OpenVPN. SoftEther (в нашем варианте это VPN через HTTPS) на сильно более глубоком уровне мимикрирует под неVPN-протокол нежели его оппоненты в виде различных надстроек (а-ля ShadowSocks) над OpenVPN, WireGuard и др., и отсечь его через DPI также легко как и популярные VPN-протоколы не получится. </p>
<p>Однако, у протокола SoftEther есть и серьезный минус &#8212; VPN-клиент существует только под Windows и Linux (под MacOS тоже, но он эксперементальный), под мобильные ОС VPN-клиента нет ни в каком виде. Способу легко и надежно подключаться к интернету через SoftEther с любых ОС (втч Android и iOS) эта статья и посвящена. <img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/nevidimka.png" alt="" /><span id="more-2798"></span><br />
Способ этот заключается в установке моей прошивки на Raspberry Pi (RPi или Малина), которая превращает одноплатный компьютер в роутер, раздающий интернет (по кабелю и/или по Wi-Fi) под VPN-соединением. Прошивка именуется &#8220;Невидимка&#8221;.</p>
<p>Принцип работы Невидимки прост: прошивка подключается к сети имеющей доступ к интернету, подсоединяется к VPN-цепи и раздает сеть, весь маршрут которой идет через VPN-туннель.</p>
<p>Невидимка имеет графический web-интерфейс, где вся настройка сводится к трем шагам: указать источник интернета (меню <strong>Система</strong>), задать параметры раздаваемой(ым) сети(ям) (меню <strong>Сеть</strong>) и импортировать VPN-цепь, через которую прокидывается маршрут (меню <strong>VPN</strong>).</p>
<p>Невидимка <a href="https://data.deepwebvpn.net/nevidimka/" target="_blank">распространяется</a> в виде образа ОС (.img) для Raspberry Pi (RPi 3 или RPi 4). Текущая версия (1.0.0) в сжатом виде весит менее 1 Гб. Этот образ устанавливается на microSD ровно также как и любой другой для RPi. После установки образа и включения Малины, следует подсоединиться к устройству по Ethernet. Подключенный по кабелю ПК получит IP в локальной сети <code>192.168.5.0/24</code>, адрес же Малины в этой сети будет <code>192.168.5.1</code>. Cоответственно, чтобы попасть в графический интерфейс Невидимки следует открыть на ПК в браузере <code>http://192.168.5.1</code>.</p>
<h2>система</h2>
<p>Раздел <strong>Система</strong> предназначен для настройки источника интернета. Иначе говоря, в <strong>Системе</strong> нужно указать какой адаптер (если их несколько) имеет выход в интернет. Невидимка предполагает, что RPi, без устройств подключенных по USB дополнительно, легче всего получить интернет по Wi-Fi через сетевой интерфейс <code>wlan0</code>. Однако, если к USB Малины подсоединить дополнительный сетевой адаптер, будь то кабельный адаптер или 4G-роутер, автоматически создающий виртуальный Ethernet-адаптер в ОС, то в Невидимке придется выбрать какой из интерфейсов использовать как шлюз. Выбранный интерфейс выделяется зеленым.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/sys1.png" alt="" /><br />
Если в качестве источника выбран <code>wlan0</code> или внешний адаптер Wi-Fi, то ему нужно указать беспроводную сеть и пароль от нее. Допускается подключение к скрытой беспроводной сети.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/wlan0-short.png" alt="" /></p>
<h2>сеть</h2>
<p>В разделе <strong>Сеть</strong> настраиваются сети, которые Малина будет раздавать. Без внешних подключенных сетевых адаптеров RPi способен раздавать только по кабелю (<code>eth0</code>). К сожалению, встроенный <code>wlan0</code> может работать только на прием Wi-Fi и не может выступать в качестве точки доступа, поэтому для создания беспроводной сетки под VPN придется воткнуть в Малину USB-адаптер Wi-Fi. Благо внешние адаптеры, способные выступать в качестве точки доступа, дешевы (по цене пачки сигарет в РФ), широко распространены и имеют миниатюрный размер.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/net-short.png" alt="" /></p>
<h2>VPN</h2>
<p>На главной странице раздела <strong>VPN</strong> представлена активная (та, которая будет подключена) VPN-цепь, одна для протокола SoftEther и одна для OpenVPN (в Невидимке 1.0.0 есть только SoftEther).<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/vpn1-short.png" alt="" /><br />
Переходить к импорту VPN-цепей рекомендую если настройки в <strong>Системе</strong> уже успешно завершены и Малина имеет стабильный выход в интернет, т.к. для импорта кофигурации может потребоваться определить IP-адрес входящего сервера, если узел обозначен через домен. Однако, IP-адрес входящего сервера VPN-цепи можно узнать заранее вручную, например, пропинговав домен из файла-конфига.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2023/09/vpn2-short.png" alt="" /></p>
<h2>заключение</h2>
<p>Завершив настройку во всех трех приведенных выше разделах Малина превращается в роутер, раздающий сетку под VPN с обфускацией; роутер, к которому можно подсоединить <a href="http://blog.lukmus.ru/wp-content/uploads/2023/09/rpi-with-ups.png" target="_blank">блок питания из батарей 18650</a> и Малина станет мобильной; роутер, который имеет инет от 4G, если к RPi подключить и указать в качестве источника интернета, например Huawei e3372h.</p>
<p>Невидимка распространяется БЕСПЛАТНО, но т.к. на данный момент имеет статус ближе к бета-версии, архив с ее образом запаролен. Чтобы узнать пароль архива и поучаствовать в тестировании Невидимки <a href='https://docs.dwv.one/ru/about/contacts'>обратитесь в тех. поддержку DeepWebVPN</a>.</p>
<h2>p.s.</h2>
<p>Портатирование будущих версий Невидимки на Orange Pi и другие аналоги тоже рассматривается и планируется.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2023/09/nevidimka.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2023/09/07/nevidimka/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>беги, Лола, беги</title>
		<link>http://blog.lukmus.ru/2022/05/11/run-lola-run/</link>
		<comments>http://blog.lukmus.ru/2022/05/11/run-lola-run/#comments</comments>
		<pubDate>Wed, 11 May 2022 23:49:45 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[lola]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[bitcoin]]></category>
		<category><![CDATA[bitcoin cash]]></category>
		<category><![CDATA[dash]]></category>
		<category><![CDATA[litecoin]]></category>
		<category><![CDATA[monero]]></category>
		<category><![CDATA[zcash]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2730</guid>
		<description><![CDATA[Не так давно импотенция &#8220;интституционалов&#8221; признала, что не может запретить крипту и выделила ей каюту на своем Титанике, каюта с именем KYC/AML. Ряд последующих законов США, а также всемизвестная неизвестная причина по которой НЕамериканские криптосервисы с чего-то вдруг стали исполнять этот вздор, вернули интернет в 2010, когда монополия определенных платежных системы замораживали обротный капитал и [...]]]></description>
			<content:encoded><![CDATA[<p>Не так давно импотенция &#8220;интституционалов&#8221; признала, что не может запретить крипту и выделила ей каюту на своем Титанике, каюта с именем KYC/AML. Ряд последующих законов США, а также <del datetime="2022-05-09T22:42:06+00:00">всемизвестная</del> неизвестная причина по которой НЕамериканские криптосервисы с чего-то вдруг стали исполнять этот вздор, вернули интернет в 2010, когда монополия определенных платежных системы замораживали обротный капитал и сами решали какому бизнесу быть, а какой &#8220;высокорискованный&#8221;. В такой ситуации, например, мой сервис DeepWebVPN, существовать и честно выполнять свои же <a href='https://dash.dwv.one/ru/agreement'>правила</a> не может. Так в 2019 году появился зачаток системы, которой посвящена эта статья.<br />
<img src='/wp-content/uploads/2022/05/run-lola-run.png'><span id="more-2730"></span></p>
<p>В середине 2019 года платежный шлюз CoinPayments (далее CP), через который ранее принимал платежи DeepWebVPN, перешел на сторону зла и обязал своих клиентов выполнить требования KYC/AML, дав на исполнение срок до 7 сентября 2019 (по крайней мере мне). Не став испытывать судьбу, я в тот же день поднял собственную BTC-ноду. Эта нода и стала отправной точкой для Лолы.</p>
<p><a href="http://blog.lukmus.ru/wp-content/uploads/2022/05/cp-kyc.png"><img src="http://blog.lukmus.ru/wp-content/uploads/2022/05/cp-kyc.png" alt="" title="cp-kyc" width="517" class="alignnone size-full wp-image-2739" /></a></p>
<p>Почему я уделяю столько сервису CP? &#8211; по простой причине, CP повторил судьбу WebMoney, который в начале своей деятельности не брезговал ничем, однако, в конце нулевых &#8211; начале 10х полностью переобулся в &#8220;белого и пушистого&#8221;. Но если WebMoney изначально работал с фиатными валютами, которые как ни крути не могут полностью выйти из банковской сферы, то CP же работал только с криптой и мог бы себе позволить не предавать ее смысл. Можно также было бы привести пример других шлюзов, типа BitPay, но там ситуация аналогичная, вот только они переобулись еще раньше.</p>
<h2 id='about'>кто такая Лола и куда она бежит</h2>
<p><strong>Лола</strong> (он же <strong>Run Lola Run</strong> или <strong>Беги, Лола, беги</strong>) &#8211; мой собственный платежный шлюз, доросший до криптокошелька. Этой статьей презентую неофициальное открытие Лолы, надеюсь, в дальнейшем будет и официальное. Неофициальное означает, что сейчас там возможна регистрация только по инвайтам.</p>
<p>В чем же отличительная миссия Лолы? &#8211; криптошлюз и криптокошелек с <a href="https://docs.lola.run/ru/about/agreement">понятными правилами</a>, <del datetime="2022-05-11T01:53:38+00:00">главное правило &#8211; нет никаких правил</del>, который не заигрывает с государствами, банками и биржами.</p>
<p>Лола имеет 3 зеркала: два в клирнете (<a href="https://run.lola.run/" title="run.lola.run">run.lola.run</a> и <a href="https://run.l00.la/" title="run.l00.la">run.l00.la</a>) и одно в <a href="http://run.lolarunvvcdwrhyiwutuzdpualkgqgmpen74hjkemzjndx27t3a2owyd.onion/">торе</a>. Поддерживает двухфакторную аутентификацию (2FA). А также <a href="https://run.lola.run/ru/rates">в курсе о курсах</a>.</p>
<p>На данный момент Лола поддерживает 6 криптовалют: <strong>Bitcoin</strong>, <strong>Litecoin</strong>, <strong>Dash</strong>, <strong>Monero</strong>, <strong>ZCash</strong> и <strong>Bitcoin Cash</strong>, ведется работа и по другим валютам.</p>
<p>Пользователь может управлять своим счетом (принимать и отправлять крипту) как через сайт, так и через API. В целом, набор возможностей работы с криптой пока что аналогичен другим шлюзам, за некоторыми исключениями, о которых речь пойдет ниже.</p>
<h2 id='bitcoin'>Bitcoin</h2>
<p>Отличие в работе с биткоином от, например CP, в том что в Лоле BTC-кошелек у каждого пользователя свой в действительности, а не виртуально (только в БД самого шлюза). Казалось бы какая мелочь, однако, это принципиальная вещь.</p>
<p>Все дело в том, что вознаграждение майнерам в биткоине (и не только) прямо пропорционально количеству входов (входные адреса) и выходов (выходные адреса) транзакции. Если у шлюза общий на всех пользователей BTC-кошелек, то в результате приема каждого платежа на отдельный адрес (а это общая практика шлюзов/обменников, да и обычных BTC-кошельков), каждый пользователь, порой даже если он принял только 1 транзакцию на 1 адрес, вынужден платить за всех. В транзакцию набираются биткоины с разных входов, что означает сильный рост вознаграждения майнерам из-за входов транзакции, которые вообще ни разу не ваши, а какого-то другого пользователя общим BTC-кошельком.</p>
<p>В Лоле же, так как у каждого пользователя свой отдельный BTC-кошелек, выставить вознаграждение майнерам на исходящую транзакцию можно любую, в том числе и самую минимальную. Входы у транзакции будут только ваши, за чужих не платите.</p>
<p>Также, если боитесь чужих &#8220;грязных&#8221; адресов, в Лоле вся грязь если есть, то это то чем вы сами наследили, у ваших BTC-транзакций только ваши входы.</p>
<h2 id='two-circuit'>двухконтурная система</h2>
<p>Лола различает понятие <strong>транзакций</strong> и <strong>платежей (Payments)</strong>. Все что идет на адрес принадлежащий вашему счету &#8211; ваша входящая транзакция, она зачисляется на ваш счет без каких-либо таймаутов и &#8220;точных соответствий указанных сумм&#8221;. Платеж &#8211; заявка на прием криптовалюты, которая имеет таймаут на получение транзакции, таймаут на получение подтверждений сети и точно указанную сумму. Транзакции и платежи обрабатываются и мониторятся параллельно. Каждый платеж, который получил хоть что-то &#8211; транзакция, но не каждая транзакция &#8211; платеж.</p>
<p>Так вот, каждый созданный платеж имеет ваш адрес, а значит любая сумма по истечению любого срока будет зачислена на ваш счет. Не важно когда и какой статус получит созданный платеж, деньги переведенные на ваш адрес &#8211; ваши, они не исчезают в <del datetime="2022-05-09T22:42:06+00:00">карман платежного шлюза</del> небытие.</p>
<p>Рассмотрим такой пример: <em>клиент хочет заплатить магазину сумму N за какой-то товар/услугу. Магазин в каком-то криптошлюзе через API создает платеж, где указан адрес криптовалюты на который ожидается перевод, точная сумма криптовалюты, время по истечению которого платеж будет считаться отмененным если не получит требуемой суммы криптовалюты.</em> </p>
<p>Предположим у клиента не хватило денег или он выводил с кошелька биржи и транзакция в блокчейн попала слишком поздно, что в таком случае происходит с уже отправленными деньгами:</p>
<p>1. если не повезло и шлюз Магазина это CP, то клиент получит письмо с ссылкой на возврат средств за вычетом вознаграждения майнерам;<br />
2. если в роли шлюза Лола, то деньги благополучно зачисляться на счет Магазина, а далее Магазин сам решит считать заказ Клиента оплаченым или вернуть ему деньги.</p>
<p>В чем же подвох варианта №1? &#8211; в том, что если платеж был в биткоинах на небольшую сумму, то в общем BTC-кошельке в транзакции возврата будет такое количество входов, что CP никому ничего не вернет (если сумма платежа была меньше $10-15 по курсу на момент написания статьи) или вернет с вычетом вознаграждения майнерам (около $10-20). Фактически, CP присваивает себе средства со всех неудачных (недостаточная сумма, таймаут по появлению транзакции в блокчейне, таймаут транзакции по появлению подтверждений) микроплатежей. В такой ситуации аналогичным образом ведет себя не только CP, но и большинство других шлюзов.</p>
<h2 id='transactions'>транзакции и комиссия Лолы</h2>
<p>В Лоле есть два типа транзакций: <strong>внешние</strong> и <strong>внутренние</strong>. Внешний транзакции &#8211; транзакции проведенные через блокчейн криптовалюты, внутренние &#8211; транзакции внутри системы Лолы. Если про внешние транзакции все понятно по названию, то про внутренние надо пояснить.</p>
<p>Чтобы транзакция являлась внутренней необходимо не только чтобы она была между разными счетами Лолы, но также и принадлежала одному и тому же кошельку криптовалюты. Из определения и <a href='#bitcoin'>пункта про биткоин</a> становится понятным, что транзакции с одного BTC-счета Лолы на другой BTC-счет Лолы это внешняя транзакция. Однако, на данный момент, транзакции альткоинов между разными счетами Лолы &#8211; внутренние.</p>
<p>Лола берет комиссию только с внешних исходящих транзакций. Например, для биткоина комиссия по умолчанию: 0.3% от суммы исходящей транзакции, но не менее 0.0000055 BTC. Для Monero: 0.3% от суммы исходящей транзакции, но не менее 0.00003 XMR.</p>
<p>Минимальные суммы вывода для каждой криптовалюты разные, но все колеблются на минимальных уровнях. К примеру для биткоина минималка &#8211; 0.00005000 BTC, для лайткоина &#8211; 0.00100000 LTC.</p>
<p>Подробнее про комиссии Лолы и минимальные суммы вывода: <a href="https://run.lola.run/ru/fees">https://run.lola.run/ru/fees</a>.</p>
<h2 id='zcash'>ZCash</h2>
<p>Отдельные пару слов хочу сказать про, на мой субъективный взгляд, сильно недооцененную монету ZCash. Недооцененную в плане оборота. В отличие от Monero, которая часто используется как средство для анонимных транзакций, ZCash умеет не хуже. При этом транзакции ZCash быстрее подтверждаются, скорость почти на уровне Dash.</p>
<p>Однако, для анонимности переводов в ZCash надо использовать z-адреса, которые почему-то не поддерживает большинство кошельков и шлюзов, а вот Лола z-адреса поддерживает. Поддерживает и призывает всячески пользоваться ими.</p>
<h2>API</h2>
<p>Пока что API Лолы не могут похвастаться большим разнообразием, но их вполне хватает для организации автоматического приема платежей и вывода средств, возможно, на ваши холодные кошельки. Документация по API есть на русском языке: <a href="https://docs.lola.run/ru/apiv1">https://docs.lola.run/ru/apiv1</a>. Работа над расширением списка API продолжается.</p>
<h2>итого</h2>
<p>Приглашаю желающих подключаться к Лоле. Регистрация, разумеется, бесплатная, но нужно получить инвайт. Контакты для получения инвайта: <a href="https://docs.lola.run/ru/about/contacts">https://docs.lola.run/ru/about/contacts</a>.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2022/05/run-lola-run.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2022/05/11/run-lola-run/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>backup с PGP шифрованием</title>
		<link>http://blog.lukmus.ru/2021/03/23/gpg-backup/</link>
		<comments>http://blog.lukmus.ru/2021/03/23/gpg-backup/#comments</comments>
		<pubDate>Tue, 23 Mar 2021 18:12:03 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[настройка и установка]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2685</guid>
		<description><![CDATA[В продолжение постов про GPG и о геме Backup собираю все в одну статью и дополняю настройкой для автоматического шифрования резервных копий. утилита GPG Установка, естественно, от пользователя с root-правами. На RedHat&#8217;ах: yum install pgp На Debian&#8217;ах: apt-get install pgp Для создания ключей все та же команда, выполнять которую можно от рядового пользователя. gpg --gen-key [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение постов <a href="https://blog.lukmus.ru/2010/10/29/gnupg-v-linux/">про GPG</a> и <a href="https://blog.lukmus.ru/2014/01/10/backup-na-yandeks-disk/">о геме Backup</a> собираю все в одну статью и дополняю настройкой для автоматического шифрования резервных копий.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2021/03/huge-encryption-517.png" alt="" /><span id="more-2685"></span></p>
<h2>утилита GPG</h2>
<p>Установка, естественно, от пользователя с root-правами.<br />
На RedHat&#8217;ах:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">yum install</span> pgp</pre></td></tr></table></div>

<p>На Debian&#8217;ах:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get install</span> pgp</pre></td></tr></table></div>

<p>Для создания ключей все та же команда, выполнять которую можно от рядового пользователя.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--gen-key</span></pre></td></tr></table></div>

<p>Далее понадобится экспорт ключей в текстовый файл. В командах ниже <code>username@email</code>, разумеется, надо заменить на почту указанную при генерации.</p>
<p>Экспорт публичного ключа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--output</span> public.pgp <span style="color: #660033;">--armor</span> <span style="color: #660033;">--export</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Экспорт закрытого (приватного) ключа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--output</span> private.pgp <span style="color: #660033;">--armor</span> <span style="color: #660033;">--export-secret-key</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Если требуется, после экспорта ключей их можно удалить. Сначала удаляется закрытый ключ:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--delete-secret-keys</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Затем открытый:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--delete-keys</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Вывести список всех импортированных ключей:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--list-keys</span></pre></td></tr></table></div>

<h2>gem backup и PGP-ключ</h2>
<p>Установка гема:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> backup</pre></td></tr></table></div>

<p>Cоздание модели (в данном примере модель называется <code>ekzample</code>) для бекапа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">backup generate:model <span style="color: #660033;">--trigger</span> ekzample
Generated model file: <span style="color: #ff0000;">'~/Backup/models/ekzample.rb'</span>.</pre></td></tr></table></div>

<p>Далее, для настройки нужного бекапа, следует отредактировать <code>~/Backup/models/ekzample.rb</code>.</p>
<p>В примере ниже показан конфиг для резервного копирования базы MySQL с последующим сжатием в tar и шифрованием архива PGP-ключом, после чего зашифрованный файл отправляется по SFTP на бекап-сервер.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># encoding: utf-8</span>
&nbsp;
<span style="color:#008000; font-style:italic;">##</span>
<span style="color:#008000; font-style:italic;"># Backup Generated: ekzample</span>
<span style="color:#008000; font-style:italic;"># Once configured, you can run the backup with the following command:</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#008000; font-style:italic;"># $ backup perform -t ekzample [-c &lt;path_to_configuration_file&gt;]</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#008000; font-style:italic;"># For more information about Backup's components, see the documentation at:</span>
<span style="color:#008000; font-style:italic;"># http://backup.github.io/backup</span>
<span style="color:#008000; font-style:italic;">#</span>
Model.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:ekzample</span>, <span style="color:#996600;">'Description for ekzample'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  split_into_chunks_of <span style="color:#006666;">500</span>
&nbsp;
  <span style="color:#6666ff; font-weight:bold;">Encryptor::GPG</span>.<span style="color:#9900CC;">defaults</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>encryption<span style="color:#006600; font-weight:bold;">|</span>
    encryption.<span style="color:#9900CC;">keys</span> = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
    encryption.<span style="color:#9900CC;">keys</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'username@email'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&lt;&lt;-</span>KEY
      <span style="color:#006600; font-weight:bold;">-----</span><span style="color:#9966CC; font-weight:bold;">BEGIN</span> PGP PUBLIC KEY BLOCK<span style="color:#006600; font-weight:bold;">-----</span>
      ...<span style="color:#9900CC;">it</span> is place <span style="color:#9966CC; font-weight:bold;">for</span> PUBLIC KEY...
      <span style="color:#006600; font-weight:bold;">-----</span><span style="color:#9966CC; font-weight:bold;">END</span> PGP PUBLIC KEY BLOCK<span style="color:#006600; font-weight:bold;">----</span>
    KEY
    encryption.<span style="color:#9900CC;">recipients</span> = <span style="color:#996600;">'username@email'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  database MySQL <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>db<span style="color:#006600; font-weight:bold;">|</span>
    db.<span style="color:#9900CC;">name</span>  = <span style="color:#996600;">'exampledb'</span>
    db.<span style="color:#9900CC;">username</span> = <span style="color:#996600;">'exampleuser'</span>
    db.<span style="color:#9900CC;">password</span> = <span style="color:#996600;">'examplepass'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  compress_with Gzip
  encrypt_with GPG
&nbsp;
  store_with SFTP <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>server<span style="color:#006600; font-weight:bold;">|</span>
    server.<span style="color:#9900CC;">username</span> = <span style="color:#996600;">'backupuser'</span>
    server.<span style="color:#9900CC;">password</span> = <span style="color:#996600;">'backuppass'</span>
    server.<span style="color:#9900CC;">ip</span>       = <span style="color:#996600;">'111.111.111.111'</span>
    server.<span style="color:#9900CC;">port</span>     = <span style="color:#006666;">22</span>
    server.<span style="color:#9900CC;">path</span>     = <span style="color:#996600;">'~/'</span>
    <span style="color:#008000; font-style:italic;"># Use a number or a Time object to specify how many backups to keep.</span>
    server.<span style="color:#9900CC;">keep</span>     = <span style="color:#006666;">150</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Additional options for the SSH connection.</span>
    <span style="color:#008000; font-style:italic;"># server.ssh_options = {}</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Не стоит забывать вставить между <code><<-KEY</code> и <code>KEY</code> созданный ранее ПУБЛИЧНЫЙ (открытый) ключ.</p>
<p>Для более тонкой настройки PGP-ключей, например, разные ключи для разных баз, следует воспользоваться <a href="https://backup.github.io/backup/v4/encryptor-gpg/" target="_blank" rel='nofollow'>официальной документацией</a>.</p>
<p>Запускается создание бекапа командой:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">backup perform <span style="color: #660033;">-t</span> ekzample</pre></td></tr></table></div>

<h2>извлечение бекапа</h2>
<p>Если в системе нет ключей, используемых данным бекапом, следует их импортировать:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--import</span> private.pgp
gpg <span style="color: #660033;">--import</span> public.gpg</pre></td></tr></table></div>

<p>Далее чтобы расшифровать резервную копию понадобится команда:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">-o</span> ekzample.tar <span style="color: #660033;">-d</span> ekzample.tar.gpg</pre></td></tr></table></div>

<p>Для распаковки тарбола подойдет команда:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xvf</span> ekzample.tar</pre></td></tr></table></div>

<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2021/03/huge-encryption-517.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2021/03/23/gpg-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMPP.love is all you need</title>
		<link>http://blog.lukmus.ru/2019/03/29/xmpplove/</link>
		<comments>http://blog.lukmus.ru/2019/03/29/xmpplove/#comments</comments>
		<pubDate>Fri, 29 Mar 2019 07:29:42 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[проекты]]></category>
		<category><![CDATA[xmpp]]></category>
		<category><![CDATA[xmpp.love]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2630</guid>
		<description><![CDATA[Пару лет назад я сделал простенький сайт, который содержал актуальный список XMPP-серверов. Список делал возможным ограничить поток сообщений к моему жаббер-серверу от серверов с In-Band регистрацией (регистрация не выходя из Jabber-клиента). Такие сервера любили использовать флудеры по жабам, атакам которых я был неоднократно удостоен. Все это время мой сайт-список висел на onion-домене и о нем [...]]]></description>
			<content:encoded><![CDATA[<p>Пару лет назад я сделал простенький сайт, который содержал актуальный список XMPP-серверов. Список делал возможным ограничить поток сообщений к <a href="https://wallstreetjabber.biz/" target="_blank">моему жаббер-серверу</a> от серверов с In-Band регистрацией (регистрация не выходя из Jabber-клиента). Такие сервера любили использовать флудеры по жабам, атакам которых я был неоднократно удостоен.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2019/03/all-u-need-is-jabber.png" alt="" title="all-u-need-is-jabber" width="517" height="545" class="alignnone size-full wp-image-2633" /><br />
<span id="more-2630"></span></p>
<p>Все это время мой сайт-список висел на onion-домене и о нем знал только я и еще пару человек, но пришло время его доработать и сделать не только списком, но и хоть каким-то аналогом <a href="https://xmpp.net/" target="_blank" rel='nofollow'>xmpp.net</a> (который в последние годы часто стал валяться) в плане сканирования.</p>
<p>Итак, сайт с полным списком XMPP-серверов висит на домене xmpp.love (Tor: jabberlistbrrxyk.onion/). Основные параметры (на мой субъективный взгляд) каждого XMPP-сервера (доступность для XMPP-клиента, доступность для XMPP-сервера и наличие In-Band регистрации) отображены в картинке-индикаторе (badge) сервера, прочие данные, которые сканер смог определить, отображены на странице результата сканирования сервера.</p>
<h2>функционал</h2>
<p>Внешний вид невзрачен, а пользовательский функционал весьма примитивен. Пользователю доступен, собственно, сам <a href="https://xmpp.love/" target="_blank">список всех XMPP-серверов</a>, этот же список в форматах <a href="https://xmpp.love/servers.csv" target="_blank">CSV</a> и <a href="https://xmpp.love/servers.xls" target="_blank">XLS</a>. Помимо этого пользователь может <a href="https://xmpp.love/servers/new" target="_blank">добавить</a> свой собственный сервер на анализ и запись в список, а также просмотреть <a href="https://xmpp.love/servers/queue" target="_blank">текущую очередь заданий</a> для сканирования. В то же время XMPP.love самодостаточен в плане поиска новых серверов и не умрет без ручного добавления новых хостов, поэтому я и рискнул назвать его Полным списком актуальных XMPP-серверов.</p>
<h2>сканирование</h2>
<p>Сканирование делится на два вида: </p>
<ul>
<li>Client-to-Server (C2S);</li>
<li>Server-to-Server (S2S).</li>
</ul>
<p>Каждый из видов разделяется на этапы: </p>
<ul>
<li>просмотр SRV-записей домена;</li>
<li>непосредственно само сканирование по заданным в SRV хостам и портам.</li>
</ul>
<p>В ходе сканирования выясняются такие детали как сам XMPP-сервер и его версия (ejabberd, Prosody, Openfire итд) доступные механизмы авторизации (plain text, MD5, SHA-1 итд), методы компрессии и другие. Однако, сканер не анализирует сертификат так, как это делает XMPP.net.</p>
<p>Все эти данные отображаются на странице результата сканирования сервера. Для поддержания актуальности списка, сканирование серверов периодически повторяется.</p>
<p>Вот такой незатейливый проект, буду рад если кто-нибудь поставит бейдж XMPP.love на сайт своего жаб-сервера.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2019/03/29/xmpplove/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StopWatchingFor.Us. Моя борьба с анализаторами трафика</title>
		<link>http://blog.lukmus.ru/2019/01/04/stopwatchingforus/</link>
		<comments>http://blog.lukmus.ru/2019/01/04/stopwatchingforus/#comments</comments>
		<pubDate>Fri, 04 Jan 2019 10:47:35 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[проекты]]></category>
		<category><![CDATA[StopWatchingFor.Us]]></category>
		<category><![CDATA[подмена hosts]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2605</guid>
		<description><![CDATA[Думаю каждый вебмастер в курсе каковы возможности современных счетчиков посетителей. Такие инструменты как Google Analytics и Яндекс.Метрика счетчиками и назвать нельзя. Объем собираемых ими данных колоссальный. Какой-то частью информации они делятся с вебмастером, а что им еще известно о визитерах? Лично мне достаточно упоминания о Вебвизоре, чтобы начать избегать сайт, где он установлен. В общем [...]]]></description>
			<content:encoded><![CDATA[<p>Думаю каждый вебмастер в курсе каковы возможности современных счетчиков посетителей. Такие инструменты как Google Analytics и Яндекс.Метрика счетчиками и назвать нельзя. Объем собираемых ими данных колоссальный. Какой-то частью информации они делятся с вебмастером, а что им еще известно о визитерах? Лично мне достаточно упоминания о <a href='https://metrika.yandex.ru/promo/webvisor' rel='nofollow' target='_blank'>Вебвизоре</a>, чтобы начать избегать сайт, где он установлен.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2019/01/pinkypie.png" alt="" title="Pinkie Pie is watching you" width="517" height="834" class="alignnone size-full wp-image-2607" /><span id="more-2605"></span><br />
В общем на что способны эти анализаторы, какую инфу собирают, сколько хранят итд — никому не известно, да и тот кому известно правду не скажет. А т.к. сейчас сложно найти сайт где не висел бы подгружаемый JS с хотя бы одного из сервисов Google Analytics, Яндекс.Метрика или Adobe Analytics, очевидно, что делать с этим что-то нужно. <del datetime="2019-01-04T08:46:22+00:00">Или найдется безумец, который считает, что счетчик Метрики на торовском форуме с маркетплейсом это нормально?</del></p>
<h2>метод борьбы</h2>
<p>Предлагаю заносить хосты счетчиков, трекеров и прочих вебвизоров в Hosts-файл, где и прописывать им несуществующий IP-адрес. Такой метод (подмена Hosts) не даст обратиться к <del datetime="2019-01-04T08:46:22+00:00">вредоносным</del> хостам анализаторов трафика. Подобная практика будет действена вне зависимости используете вы Tor и/или VPN или нет.</p>
<h2>поиск и определение вредоносных хостов</h2>
<p>Чтобы узнать с каких ресурсов тот или иной сайт подгружает JS, шрифты, Flash и т.д. можно проанализировать исходный код веб-страницы или воспользоваться инструментом разработчика (<a href="https://developer.mozilla.org/ru/docs/Tools" target="_blank" rel='nofollow'>документация Инструментов разработчика FireFox</a>). В крайних случаях паранойи, когда нет доверия и к инструментам разработчика браузера, можно воспользоваться сетевыми снифферами, например <a href="https://www.wireshark.org/" target="_blank" rel='nofollow'>WireShark</a>.</p>
<h2>StopWatchingFor.Us</h2>
<p>Для сбора и обмена информации об актуальных хостах счетчиков я запилил сайт <a href="http://stopwatchingfor.us/ru" target="_blank">StopWatchingFor.Us</a>. На сайте есть <a href="http://stopwatchingfor.us/ru#add_host" target="_blank">форма добавления хоста</a>, скрипты автоматического прописывания хостов счетчиков в Hosts-файл для Windows (batch-файл), Linux и Mac OS. Также можно просмотреть все <a href="http://stopwatchingfor.us/ru/hosts.txt" target="_blank">добавленные хосты</a> в текстовом виде.</p>
<p>Надеюсь StopWatchingFor.Us будет полезен не только мне и моему контакт-листу.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2019/01/04/stopwatchingforus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DeepWebVPN. VPN с обфускацией соединения</title>
		<link>http://blog.lukmus.ru/2018/01/28/deepwebvpn/</link>
		<comments>http://blog.lukmus.ru/2018/01/28/deepwebvpn/#comments</comments>
		<pubDate>Sun, 28 Jan 2018 05:30:46 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[VPN]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[deepwebvpn]]></category>
		<category><![CDATA[shadowsocks]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2497</guid>
		<description><![CDATA[В холодном июне&#8217;17 отморозился MultiVPN, а клиенты застыли в ожидании воскрешения. Неделю назад произошло воскрешение, точнее реинкарнация в виде DeepWebVPN. Шли дни, недели, месяцы, а я так и не нашел достойную замену своему VPN. Поэтому пришлось сделать DeepWebVPN. Чем же он замечателен? И чем отличается от миллиарда других? сервера Как и было ранее, все сервера [...]]]></description>
			<content:encoded><![CDATA[<p>В холодном июне&#8217;17 <a href="http://blog.lukmus.ru/2017/06/27/the-end-of-multivpn/">отморозился MultiVPN</a>, а клиенты застыли в ожидании воскрешения. Неделю назад произошло воскрешение, точнее реинкарнация в виде <a href="https://deepwebvpn.net" target="_blank">DeepWebVPN</a>.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2018/01/diving-517.png" alt="DeepWebVPN. More deeper." /><span id="more-2497"></span><br />
Шли дни, недели, месяцы, а я так и не нашел достойную замену своему VPN. Поэтому пришлось сделать DeepWebVPN. Чем же он замечателен? И чем отличается от миллиарда других?</p>
<h3>сервера</h3>
<p>Как и было ранее, все сервера с полнодисковым шифрованием и абсолютно не имеют никаких логов вообще. Это означает, что изъятие сервера не приведет ни к какой утечке ничего, т.к. там, во-первых, нет никаких логов, а, во-вторых, чтобы увидеть отсутствие там логов надо еще попытаться расшифровать диск, что почти нереально сделать в современных условиях за разумное время.</p>
<p>Новшеством является децентрализованность серверов, точнее их связи с <a href="https://cabinet.deepwebvpn.net" target="_blank">Кабинетом пользователя</a>. Сервера не знают где находится сервер сайта. Это еще один уровень защиты помимо предыдущих двух выше.</p>
<p>Любой сторожила какой-нибудь более-менее популярной площадки (чтобы я мог дать кредит доверия) может убедится в достоверности моих слов, <a href="https://cabinet.deepwebvpn.net/ru/contacts" target="_blank">связавшись</a> и выбрав <a href="https://cabinet.deepwebvpn.net/ru/servers" target="_blank">любой</a> сервер. Я дам рутовский SSH/VNC доступ к выбранному серверу, после чего я попрошу отписаться на форуме о безрезультатных попытках поиска логов.</p>
<h3>шифрование и цепи</h3>
<p>Как и было ранее все конфиги доступны в двух вариантах: шифрование RSA и шифрование на эллиптических кривых (ECC). Тут для широких масс нет ничего нового.</p>
<p>В <a href="https://cabinet.deepwebvpn.net/ru/price" target="_blank">DeepWebVPN</a> нет тройных цепей, только двойные (DoubleVPN) и одиночные (SingleVPN). Я пришел к отказу от триплов из-за того, что:<br />
1. они сильно роняют производительность всей сети VPN<br />
2. сидя на трипле невозможно работать, очень долгий пинг, частые обрывы сессий SSH, RDP итд<br />
3. как следствие из п.2, тариф TripleVPN почти никто не покупает</p>
<h3>обфускация соединения</h3>
<p>В связи с текущей напряженной обстановкой в обществе и во власти, возможен такой вариант развития событий когда VPN, как протокол, будет запрещен для народа. Один такой прецедент, слава Богу только один, я наблюдал в России.</p>
<p>В DeepWebVPN отработан этот сценарий в виде внедрения подключения через <a href="https://shadowsocks.org/en/index.html" title="ShadowSocks" target="_blank">ShadowSocks</a>. Эта штука показала себя успешно обходя китайский фаервол. По сути это обфускация VPN-соединения.</p>
<h3>тестовый доступ</h3>
<p>На данный момент рассчитывать на популярность DeepWebVPN было бы глупо. <strong>Поэтому любой читающий этот пост может совершенно бесплатно получить подписку DeepWebVPN просто <a href="https://cabinet.deepwebvpn.net/ru/contacts" target="_blank">связавшись</a> со мной.</strong><br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2018/01/diving-517.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2018/01/28/deepwebvpn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конец MultiVPN&#8217;а</title>
		<link>http://blog.lukmus.ru/2017/06/27/the-end-of-multivpn/</link>
		<comments>http://blog.lukmus.ru/2017/06/27/the-end-of-multivpn/#comments</comments>
		<pubDate>Tue, 27 Jun 2017 17:56:37 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[VPN]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[MultiVPN]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2460</guid>
		<description><![CDATA[MultiVPN&#8217;а, по крайней мере, в прежнем виде, как последнего островка свободы для всех и каждого, больше нет. Личные данные клиентов (а их и было то только username, email, password, balance и текущая подписка) никуда налево не утекли. Никакие логи также никуда не утекли, по той причине, что их и не было никогда. Интрига разыгрываемая моим [...]]]></description>
			<content:encoded><![CDATA[<p>MultiVPN&#8217;а, по крайней мере, в прежнем виде, как последнего островка свободы для всех и каждого, больше нет. Личные данные клиентов (а их и было то только username, email, password, balance и текущая подписка) никуда налево не утекли. Никакие логи также никуда не утекли, по той причине, что их и не было никогда.<br />
<img src='http://blog.lukmus.ru/wp-content/uploads/2017/06/theend.jpg'><br />
<span id="more-2460"></span><br />
Интрига разыгрываемая моим бывшим партнером, его мания величия и глупость привели к тому, что с 12.06.2017 я больше не работаю в MultiVPN. Я не могу отвечать, за ту вакханалию, которая творится сейчас с личным кабинетом MultiVPN, вашими платежами и т.д. Какая будет политика у сервиса в новой реальности, будет ли MultiVPN вообще существовать и в каком формате я тоже не знаю.</p>
<p>Моя совесть чиста, я до последнего дня бился в интересах клиентов с самодурством и распиздяйством, но этого оказалось мало.</p>
<p>По всем актуальным вопросам прошу впредь обращаться в контакты указанные на сайте MultiVPN. Спасибо.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2017/06/theend.jpg" /></p>
<h2>UPD от 11.08.2017</h2>
<p>Бывший товарищ по MultiVPN, а ныне иначе как неадекват я назвать его не могу, пару недель назад решил, что мало глупостей он сотворил этим летом и решил добить руины репутации MultiVPN&#8217;а накатав на меня <a href='https://forum.exploit.in/index.php?showtopic=124839' target='_blank' rel='nofollow'>нелепый блек</a>.</p>
<p>Заставив меня выложить в топике компромат на самого себя, Dr. Samuil подумал, что арбитр Эксплойта, которому очевидно уже осточертело быть мировым судьей и от этого принимающий решения <del datetime="2017-08-07T22:09:39+00:00">наотъебись</del> не вникая в тему, является хоть сколько-нибудь авторитетом.</p>
<p>Суть нелепости претензии кидалы Dr. Samuil я повторять здесь не буду, каждый кто захочет поймет это сам прочитав <a href="https://forum.exploit.in/index.php?showtopic=124839&#038;view=findpost&#038;p=781679" target="_blank" rel='nofollow'>мой первый пост блеке</a>. Пишу я это только для того чтобы поисковики проиндексировали и сохранили роковой диалог.</p>
<blockquote><p>[06:27:09] [Dr.Samuil] т.к. именно он вбит в хост назначения на кф<br />
[06:27:31] [lukmus] мб и он<br />
[06:27:39] [lukmus] надо открывать файл<br />
[06:27:42] [lukmus] я сплю<br />
[06:28:09] [Dr.Samuil] вот так наверное и темы поднимаются<br />
[06:30:14] [lukmus] темы нормально поднимаются<br />
[06:31:10] [lukmus] https://cabinet.multi-vpn.biz/ru/vouchers<br />
[06:38:52] [Dr.Samuil] ну да<br />
[06:39:18] [Dr.Samuil] 4 дня назад я добавлял платные ваучеры, потом 2 дня нихера не делалось<br />
[06:39:28] [Dr.Samuil] потом добавился 1 беслатный ваучер и всё<br />
[06:39:35] [Dr.Samuil] причем всего лишь ОДИН<br />
[06:39:44] [Dr.Samuil] а рекламных тем сколько?<br />
[06:42:48] [lukmus] иди ты в пень, задолбал ты уже меня, я бля каждый день выслушиваю дерьмо в жабе, поднимаю топики, слежу за битками, упрашиваю людей вернуться, а когда они возвращаются и спасают апрель, который должен был провалится из-за нихуевой стабильности сети (которая кстати единственная твоя задача и с которой ты уже на моей памяти как минимум 2 раза жестко-жестко накосячил), вместо &#8220;Спасибо лукмус, что спас апрель&#8221; слышу что мне пора бы сократить процент<br />
[06:43:15] [lukmus] ты чего ваще хочешь? принципиально меня выкурить или деньги с впна получать?<br />
[06:43:28] [Dr.Samuil] уже &#8211; выпихнуть тебя с впна<br />
[06:43:34] [Dr.Samuil] другие варианты я уже не вижу<br />
[06:44:02] [lukmus] ясно, спасибо за честность<br />
[06:44:13] [Dr.Samuil] я не вижу что бы что-то менялось днями, неделями, месяцами и даже полугодиями<br />
[06:44:30] [Dr.Samuil] а мне такое дерьмо не нужно<br />
[06:46:52] [lukmus] ну продолжай<br />
[06:47:00] [lukmus] как именно ты это видишь<br />
[06:47:06] [Dr.Samuil] очень легко<br />
[06:47:13] [Dr.Samuil] снапшот кабины сделан<br />
[06:47:23] [Dr.Samuil] отключить её нахрен от впн серверов<br />
[06:47:33] [Dr.Samuil] запустить кабину перекрыв всем доступ<br />
[06:47:40] [Dr.Samuil] взять другого кодера<br />
[06:47:45] [Dr.Samuil] выпилить твои закладки<br />
[06:47:51] [Dr.Samuil] и всё<br />
[06:47:58] [lukmus] и че ты медлишь тогда<br />
[06:48:09] [Dr.Samuil] пока это будет делаться &#8211; впн будет работать<br />
[06:48:34] [Dr.Samuil] а я его могу продержать полностью &#8211; хоть сколько времени т.к. доход с майнинга первышает расходы на серверы<br />
[06:49:00] [Dr.Samuil] секешь фишку?<br />
[06:49:08] [lukmus] и когда ты придумал это?<br />
[06:49:14] [lukmus] кодера взял уже?<br />
[06:49:22] [Dr.Samuil] когда понял что тебе тут уже не место<br />
[06:50:12] [Dr.Samuil] ну, баксов 200 скину если, то найдутся желающие<br />
[06:50:26] [Dr.Samuil] за нетакую уж и большую работу<br />
[06:50:59] [Dr.Samuil] и лендинги новые появятся<br />
[06:52:31] [lukmus] надеюсь ты хорошо подумал<br />
[06:52:43] [Dr.Samuil] как и ты<br />
[06:53:05] [Dr.Samuil] ты же уже хорошо знаешь что можно нихуя не делать<br />
[06:53:18] [Dr.Samuil] а я хорошо знаю что такие люди нахуй не нужны<br />
[06:53:25] [lukmus] кто б говорил<br />
[06:53:41] [Dr.Samuil] видишь ли, сервис &#8211; мой<br />
[06:53:52] [Dr.Samuil] т.к. именно я 4 года назад выкупил его у ХРОМа<br />
[06:54:04] [Dr.Samuil] за 100000 рублей<br />
[06:54:18] [Dr.Samuil] и по этому именно я буду это говорить<br />
[06:54:38] [lukmus] видишь ли, я не наемный работник и договоренность у нас была, что я партнер, а не твой рабочий<br />
[06:54:40] [lukmus] это раз<br />
[06:54:51] [Dr.Samuil] так партнёр<br />
[06:54:58] [Dr.Samuil] за последние пол года<br />
[06:55:12] [Dr.Samuil] что было кардинально нового в кабине или на мордах?<br />
[06:55:23] [Dr.Samuil] кроме тех видосов в фак что я запилил<br />
[06:55:33] [Dr.Samuil] Н<br />
[06:55:34] [Dr.Samuil] И<br />
[06:55:36] [Dr.Samuil] Х<br />
[06:55:37] [Dr.Samuil] У<br />
[06:55:38] [Dr.Samuil] Я<br />
[06:56:04] [Dr.Samuil] соответсвенно, это уже не партнёрство, это паразитизм, а мне &#8211; это нахуй не нужно<br />
[06:56:15] [Dr.Samuil] украинских клиентов проебали<br />
[06:56:23] [Dr.Samuil] когда блокнули им доступ<br />
[06:56:32] [Dr.Samuil] а теперь грозят и ру запретить<br />
[06:56:38] [lukmus] я не собираюсь перед тобой оправдываться, я в отличие от тебя не пытаюсь сделав какую-нибудь хрень ненужную типа видоса под фрибсд, разпидевать на каждом углу какой нихуевый работник<br />
[06:56:40] [lukmus] это раз<br />
[06:56:40] [Dr.Samuil] сервис готов к таким блокировкам???<br />
[06:56:46] [lukmus] во-вторых<br />
[06:56:54] [lukmus] было сделано дохуя<br />
[06:57:12] [lukmus] в-третьих от таких движений что ты придумал, сервис сильно просядет<br />
[06:57:31] [Dr.Samuil] [06:54:57] [Dr.Samuil] за последние пол года<br />
[06:55:11] [Dr.Samuil] что было кардинально нового в кабине или на мордах?<br />
[06:55:22] [Dr.Samuil] кроме тех видосов в фак что я запилил<br />
[06:58:21] [Dr.Samuil] два миллиона впн юзеров прибавилось из украины и эта волна проёбана<br />
[06:58:29] [Dr.Samuil] куда же ещё сильнее просаживаться?<br />
[06:58:31] [lukmus] прекрати молоть чушь<br />
[06:58:35] [lukmus] и дай мне сказать до конца<br />
[06:58:40] [Dr.Samuil] они ушли на другие сервисы<br />
[06:58:41] [lukmus] имей хоть ща уважение<br />
[06:58:44] [Dr.Samuil] [06:54:57] [Dr.Samuil] за последние пол года<br />
[06:55:11] [Dr.Samuil] что было кардинально нового в кабине или на мордах?<br />
[06:55:22] [Dr.Samuil] кроме тех видосов в фак что я запилил<br />
[06:58:47] [lukmus] ты заебал<br />
[06:58:49] [lukmus] блядь<br />
[06:58:51] [Dr.Samuil] какое нахуй тебе уважение?<br />
[06:59:03] [Dr.Samuil] сколько можно тебе долбить в жабу?<br />
[06:59:11] [Dr.Samuil] и нихуя при этом не меняется<br />
[06:59:26] [lukmus] уважение к человеку который сделал из говна конфетку и выслушивал 2 года говно в жабе за твои косяки с сетью<br />
[06:59:30] [Dr.Samuil] пойду посру, пока ты тут пишешь<br />
[06:59:33] [lukmus] ясно<br />
[06:59:35] [lukmus] иди сри<br />
[06:59:51] [Dr.Samuil] если хочешь сеъбаться по хорошему<br />
[06:59:59] [Dr.Samuil] скидывай все доступы которые у тебя есть<br />
[07:00:09] [Dr.Samuil] и будешь до конца года получать 10% от дохода<br />
[07:00:16] [Dr.Samuil] управление передашь другому человеку<br />
[07:00:20] [Dr.Samuil] которому я скажу<br />
[07:00:25] [Dr.Samuil] в противном случае<br />
[07:00:33] [Dr.Samuil] медленно но стабильно<br />
[07:00:41] [Dr.Samuil] я буду тебя выдавливать из сервиса</p></blockquote>
<p><strong>p.s.</strong> Обращаясь к <a href="https://forum.exploit.in/index.php?showuser=58100" target="_blank" rel='nofollow'>Arbitr</a> Эксплойта. Вы бы хоть как-нибудь контролировали слова так называемых &#8220;истцов&#8221;, никто меня не информировал, что тема имела продолжение, хотя Dr. Samuil подленько написал, что якобы меня оповестил. </p>
<p><strong>p.p.s.</strong> Еще хотелось бы заметить, что практика когда тот кто первый написал блек, тот и прав &#8211; тупиковый путь, компрометирующий судью в частности и сам Эксплойт в целом. Стоило бы хоть немного учитывать интересы и другой стороны, тем более когда любому, кто не в сговоре с Dr. Samuil, очевидно, что кидок здесь сам &#8220;истец&#8221;.</p>
<hr />
<strong>Контакты кидалы Dr.Samuil, он же RusKod:</strong></p>
<ul>
<li>dr.samuil@xmpp.tv</li>
<li>dr.samuil@swissjabber.ch</li>
<li>dr.samuil@draugr.de</li>
<li>dr.samuil@dukgo.com</li>
<li>samuil@0x48k.cc</li>
<li>admin@ruskod.net</li>
<li>support@luganskservers.net</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2017/06/27/the-end-of-multivpn/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<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>Mechanize через SOCKS5 или парсим Tor</title>
		<link>http://blog.lukmus.ru/2016/03/05/mechanize-socks/</link>
		<comments>http://blog.lukmus.ru/2016/03/05/mechanize-socks/#comments</comments>
		<pubDate>Sat, 05 Mar 2016 17:54:48 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[mechanize]]></category>
		<category><![CDATA[socks5]]></category>
		<category><![CDATA[tor]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2400</guid>
		<description><![CDATA[Незаменимый для парсинга гем Mechanize, эмулирующий браузер, по умолчанию поддерживает только обычные прокси. Широкой общественности известен факт, что для подключения к Tor-сайтам используется SOCKS5, который организуется через Privoxy. Этот пост повествует как заставить Mechanize подключиться к Tor-сайтам. Обычный запрос Mechanize&#8217;а через прокси имеет вид что-то типа: 1 2 3 browser = Mechanize.new browser.agent.set_proxy&#40;host,port&#41; page=browser.get 'http://lukmus.ru' [...]]]></description>
			<content:encoded><![CDATA[<p>Незаменимый для парсинга гем <a href="https://github.com/sparklemotion/mechanize" rel="nofollow" target="_blank">Mechanize</a>, эмулирующий браузер, по умолчанию поддерживает только обычные прокси. Широкой общественности известен факт, что для подключения к Tor-сайтам используется SOCKS5, который организуется через <a href="http://blog.lukmus.ru/2013/03/16/ustanovka-torprivoxy-na-centos-6/">Privoxy</a>. Этот пост повествует как заставить Mechanize подключиться к Tor-сайтам.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2016/03/m1000x1000.jpg" alt="" /><span id="more-2400"></span><br />
Обычный запрос Mechanize&#8217;а через прокси имеет вид что-то типа:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">browser = Mechanize.<span style="color:#9900CC;">new</span>
browser.<span style="color:#9900CC;">agent</span>.<span style="color:#9900CC;">set_proxy</span><span style="color:#006600; font-weight:bold;">&#40;</span>host,port<span style="color:#006600; font-weight:bold;">&#41;</span>
page=browser.<span style="color:#9900CC;">get</span> <span style="color:#996600;">'http://lukmus.ru'</span></pre></td></tr></table></div>

<p>Жизнь была бы проще если бы мы могли заменить метод <code>set_proxy</code> класса <code>Mechanize::HTTP::Agent</code> на аналогичный <code>set_socks</code>, но такого метода в этом классе нет. Однако его можно дописать самому, например вот так:</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
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;socksify&quot;</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'socksify/http'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#6666ff; font-weight:bold;">Faraday::Adapter::NetHttp</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> net_http_class<span style="color:#006600; font-weight:bold;">&#40;</span>env<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> proxy = env<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:request</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:proxy</span><span style="color:#006600; font-weight:bold;">&#93;</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:uri</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">scheme</span> == <span style="color:#996600;">'socks'</span>
        <span style="color:#6666ff; font-weight:bold;">Net::HTTP::SOCKSProxy</span><span style="color:#006600; font-weight:bold;">&#40;</span>proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:uri</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">host</span>, proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:uri</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">port</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">else</span>
        <span style="color:#6666ff; font-weight:bold;">Net::HTTP::Proxy</span><span style="color:#006600; font-weight:bold;">&#40;</span>proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:uri</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">host</span>, proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:uri</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">port</span>, proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:user</span><span style="color:#006600; font-weight:bold;">&#93;</span>, proxy<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:password</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">else</span>
      <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#6666ff; font-weight:bold;">Mechanize::HTTP::Agent</span>
&nbsp;
  public
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> set_socks addr, port
    set_http <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#0066ff; font-weight:bold;">@http</span>
    <span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#0066ff; font-weight:bold;">@http</span>
      attr_accessor <span style="color:#ff3333; font-weight:bold;">:socks_addr</span>, <span style="color:#ff3333; font-weight:bold;">:socks_port</span>
&nbsp;
      <span style="color:#9966CC; font-weight:bold;">def</span> http_class
        <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">SOCKSProxy</span><span style="color:#006600; font-weight:bold;">&#40;</span>socks_addr, socks_port<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#0066ff; font-weight:bold;">@http</span>.<span style="color:#9900CC;">socks_addr</span> = addr
    <span style="color:#0066ff; font-weight:bold;">@http</span>.<span style="color:#9900CC;">socks_port</span> = port
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Как подключать файлы, с содержанием подобному выше, к Rails-приложению каждый знает и без меня.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2016/03/m1000x1000.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2016/03/05/mechanize-socks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>первый VPN на Эллиптических кривых</title>
		<link>http://blog.lukmus.ru/2015/01/21/multivpn/</link>
		<comments>http://blog.lukmus.ru/2015/01/21/multivpn/#comments</comments>
		<pubDate>Wed, 21 Jan 2015 19:47:21 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[VPN]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[ECDHE-ECDSA]]></category>
		<category><![CDATA[MultiVPN]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2288</guid>
		<description><![CDATA[Представляю вниманию широкой общественности первый VPN-сервис на основе Эллиптической криптографии. Танкистам и подводникам со стажем поясню, что на данный момент такой вид шифрования является самым криптостойким, а по словам моего старого друга Э. Сноудена, Эллиптические кривые (ECDHE-ECDSA), в отличие от популярного в прочих VPN-сервисах устаревшего DHE-RSA, неподвластны даже АНБ. Ниже я расскажу как можно бесплатно [...]]]></description>
			<content:encoded><![CDATA[<p>Представляю вниманию широкой общественности <a href='https://cabinet.multi-vpn.biz'>первый VPN-сервис на основе Эллиптической криптографии</a>. Танкистам и подводникам со стажем поясню, что на данный момент такой вид шифрования является самым криптостойким, а по словам моего старого друга Э. Сноудена, Эллиптические кривые (ECDHE-ECDSA), в отличие от популярного в прочих VPN-сервисах <a href='http://habrahabr.ru/post/206572/' target="_blank">устаревшего DHE-RSA</a>, неподвластны даже АНБ. Ниже я расскажу как можно бесплатно получить безлимитный доступ на MultiVPN.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2015/01/0005.jpg" alt="who wants to live FREE forever" title="who wants to live FREE forever" width="517" height="369" class="alignnone size-full wp-image-2289" /><span id="more-2288"></span><br />
Итак, любители повбивать картон и поискать скули, которые не хотят лично передать привет <a href="http://lenta.ru/news/2014/07/08/hacker/" target="_blank">Роману Селезневу</a> или <a href="http://russian.rt.com/article/16273" target="_blank">Ульбрихту</a>, могут совершенно легально и абсолютно пожизненно получить $100500 на баланс в MultiVPN следующими способами:</p>
<div style='font-size: 1.2em'>
<ol>
<li>размещая на своем блоге<sup>1</sup> баннер MultiVPN</li>
<li>размещая в подписи на своем аккаунте<sup>2</sup> на форуме<sup>3</sup> оригинальную фразу с упоминанием Эллиптической криптографии и со ссылкой на MultiVPN</li>
</ol>
</div>
<div style='font-size: 0.8em'><sup>1</sup>Блог должен иметь более 30 уникальных проиндексированных записей любой ИТ-тематики, быть зарегистрирован как минимум год.<br />
<sup>2</sup>Аккаунт должен быть не моложе года, иметь от 300 сообщений.<br />
<sup>3</sup>Форум должен принадлежать ИТ-тематики, иметь от 7000 зарегистрированных пользователей и более 2000 тем.</div>
<p>Прочие незащищенные слои населения, которые считают себя льготниками, имеют шанс получить бесплатный доступ на месяц, год, неделю и день, в зависимости от той причины которую приведут лично мне по <a href='http://blog.lukmus.ru/about/'>жабе</a>.</p>
<h3>населению бывшей Украины</h3>
<p>Зная проблемы с блокированием рунета украинскими провайдерами, лично от себя, бесплатно предоставлю месячные (может и больше) аккаунты на OpenVPN жителям ДНР, ЛНР и других НР. Условия предоставления оговорю в жабе.</p>
<p><strong>ПРОДОЛЖЕНИЕ: <a href="http://blog.lukmus.ru/2017/06/27/the-end-of-multivpn/" title="Конец MultiVPN'а">Конец MultiVPN&#8217;а</a></strong><br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2015/01/0005.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2015/01/21/multivpn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
