С#, Заполнение массива одним значением.

Преамбула

Практического значения эта задача обычно не имеет (на самом деле применение есть, покажу позже), но, тем не менее, иногда ее дают в качестве учебной задачи. Попробуем ее решить на C#.

Примечание: Создаваемый по умолчанию массив, автоматически заполняется нолями (0x00).
А нам, как раз, наоборот, надо создать массив с паттерном 0xFF или 0xAA.

Решение «в лоб»

Я думаю, оно всем понятно. Создать массив и заполнить его нужными значениями:

int items = 536870912;
byte[] tArr = new byte[items];

for (int i = 0; i < items; i++)
{
    tArr[i] = 0xFF;
}

Тут мы в цикле присваиваем каждому элементу массива значение 0xFF.

— Оно медленное.
+ Оно простое и с использованием безопасного кода.

В лоб + Array.Copy

Некто попытался оптимизировать прошлое решение, используя Array.Copy(), думая, что эта функция быстрее работает с памятью.

Что решение «в лоб», что «Array.Copy()» с распополамленным циклом работают одинаково, точнее, получилось даже медленнее (в конце статьи будет итоговая таблица):

int items = 536870912;
byte[] tArr = new byte[items];
tArr[0] = 0xFF;
for (int i = 1; i <= items / 2; i *= 2)
{
    Array.Copy(tArr, 0, tArr, i, i);
    Array.Copy(tArr, 0, tArr, i, items - i);
}

P/Invoke способ с использованием внешних библиотек

Прямая работа с памятью сильно обходит .NET по скорости, так что самый оптимальный способ для такой задачи — использовать небезопасный код.

public static class FillArray
{
    [DllImport("msvcrt.dll",
    EntryPoint = "memset",
    CallingConvention = CallingConvention.Cdecl,
    SetLastError = false)]

    private static extern IntPtr MemSet(IntPtr dest, int value, int count);

    public static byte[] FillBytes(int Length, byte Value)
    {
        byte[] Arr = new byte[Length];
        GCHandle GCH = GCHandle.Alloc(Arr, GCHandleType.Pinned);
        MemSet(GCH.AddrOfPinnedObject(), (int)Value, Length);
        return Arr;
    }

В свою программу мы импортировали функцию memset из библиотеки msvcrt.dll, т.е. смогли получить контроль над памятью. И заполнили нужным числом массив. Поскольку, за нас это делали библиотеки C++ и функции ОС, все оказалось быстро.

Сравнительная таблица скорости работы разных алгоритмов заполнения массива (массив 500 Мб).

For 00:00:04.4212528
For+Array.Copy() 00:00:04.6952685
MemSet (msvcrt.dll) 00:00:00.2360135
Random bytes (RNGCryptoServiceProvider) 00:00:06.1143497

Сравнение алгоритмов в источнике.

Тестовый пример (для этого и предыдущего [копия] поста) на GitHub

Источник

C#, заполнение массива случайными числами.

Преамбула

Можно сказать, учебная задача. Итак, дан массив типа byte[], необходимо заполнить его случайными числами. И случайные числа нужны понадежнее. Ну хорошо, аппаратный ГСЧ конструировать не будем 🙂 Хотя как-нибудь надо и этот вариант рассмотреть.

Решение

Все решается довольно стандартными методами:

1. Подключаем пространство имен System.Security.Cryptography:

using System.Security.Cryptography;

2. Создаем массив байт нужной длины:

byte[] Arr = new byte[666];

3. Создаем RNGCryptoServiceProvider, т.е. генератор случайных чисел системного криптопровайдера.

RngCsp = new RNGCryptoServiceProvider();

4. Заполняем массив:

RngCsp.GetBytes(Arr);

Примечание: Это довольно простое решение «в лоб», и хоть Майкрософт гарантирует нам, что числа будут прям случайные-случайные, в самом MSDN показан пример с выкрутасами (см. в источниках).

Примечание #2: Метод стандартный для C#, но довольно медленный. Даже медленнее, чем заполнение гигантского массива на 500 Мб одним числом, в примерном приближении и довольно неточно заполнение массива заняло почти 6 секунд:

Random bytes (RNGCryptoServiceProvider): 00:00:05.8453343

Источник

RNGCryptoServiceProvider Class

Отключение обновления Firefox. Обновление Firefox по требованию.

Ворчательная преамбула.

По работе приходится пользоваться сразу несколькими профилями Firefox, в одном рабочий web-интерфейс, в другом плагин отлаживаю, третий для общего интернета, музыка там, например, играет или еще что. Но есть дурацкая проблема — открываешь новый профиль, а тут хуяк — и лисе присралось обновиться. После чего все профили приходится закрывать и открывать все заново, ибо через некоторое время они начнут глючить.

Не знаю, что мешает разработчикам лиса делать обновления при старте основного профиля или перед обновлением смотреть, закрыты ли другие профили. Но тем не менее, хватит это терпеть, сказал я.

Перевод обновлений в режим «по требованию».

1. Идем в настройки Firefox, или через меню, или просто пишем в адресной строке about:preferences.
2. Попадаем в раздел Основные. [1]
3. Прокручиваем вниз до раздела Обновление Firefox
4. Ставим переключатель (радиокнопку) в положение Проверять наличие обновлений, но позволять вам решать, устанавливать ли их. [2]

ФАНФАРЫ!

У ДВБ Нацполіції шантажем та погрозами кошмарили власників веб-сервісу, вимагаючи допомоги в розслідуванні підпалу будівлі Головного слідчого управління

И еще одно. Национальный антикоррупционный портал.

Під час розслідування резонансної справи про підпал приміщення Головного слідчого управління Національної поліції України вітчизняні силовики влаштували тиск і переслідування адміністрації інтернет-сервісу Virtualsim.net.

Про це йдеться у відкритому листі власників проекту, який надає в оренду телефонні номери для реєстрації веб-сервісів з використанням SMS-кодів.

У його тексті зазначено, що українські можновладці з використанням погроз та шантажу намагалися зламати сервіс Virtualsim.net, що був заснований у 2015 році «для користувачів Інтернету, зацікавлених у конфіденційності задля здійснення свого права на свободу слова та недоторканість персональних данних в умовах неправових держав, що може бути корисним громадським активістам…», зокрема для реєстрації або підтвердження входу в облікові записи в соцмережах без розкриття справжніх номерів телефонів.

Засновники Virtualsim.net наполягають, що не несуть відповідальність за діяльність своїх користувачів на сторонніх веб-сервісах, а інформація щодо клієнтів компанії є конфіденційною та «не може бути розкрита інакше, аніж за офіційним запитом суду, якщо цей запит не суперечить праву людини на свободу слова і не пов’язаний з цензурою, яка заборонена Конституцією України». Тим не менш, влітку 2020 року адміністрація інтернет-сервісу буцімто стикнулася зі спробами «впливу на сервіс поза правовим полем» з боку українських силовиків.

Приводом для уваги правоохоронців став інцидент з підпалом приміщення Головного слідчого управління Нацполіції по Набережному шосе в Києві, який трапився в ніч на 10 червня 2020 року. Як раніше зазначалося на сторінках Dетектив-Info, відповідальність за цю атаку запалювальною сумішшю будівлі поліції в українській столиці невдовзі на себе взяло угруповання анархістів «Сміливці», чиє звернення було оприлюднено на сторінках видання «Боєць Анархіст».

У його тексті зазначалося — підпал Головного слідчого управління начебто є своєрідним висловленням протесту після двох скандальних історій поліцейського свавілля (вбивства 5-річного Кирила Тлявова в Переяслав-Хмельницькому та зґвалтування дівчини «копами» у відділенні поліції в Кагарлику).

При цьому, за версією силовиків, один з клієнтів Virtualsim.net якимось чином виявився пов’язаним з пожежею кабінетів ГСУ. «Ідентифікація була здійснена за номером телефону, на який був зареєстрований аккаунт у Telegram. Цей номер телефону клієнт придбав на нашом сервісі», — пояснюють в адміністрації веб-сервісу.
Читайте также: В Україні ліквідували понад сотню інтернет-магазинів з продажу наркотиків

В рамках розслідування кримінальної справи щодо підпалу будівлі Головного слідчого управління Нацполіції (ч.2 ст.194 КК України) 9 липня 2020 року слідчий суддя Печерського районного суду Києва Олеся Батрин задовольнила клопотання слідчого ГУНП у місті Києві Анастасії Кольчик, погоджене прокурором Київської місцевої прокуратури №6 Ярославом Мрачко, про надання санкції на обшук місцезнаходження відповідної SIM-карти.

«Таким чином передбачалося затримати власника аккаунта Telegram, але насправді ця SIM-карта ніколи не знаходилася в нього, оскільки є власністю Virtualsim.net та надавалася в оренду. Управлінням SIM-картками займався найнятий сервісом оператор: саме до нього і завітало близько десятка поліцейських Департаменту внутрішньої безпеки з Києва, подолавши відстань у понад 550 кілометрів, — зазначено у відкритому листі адмінстрації Virtualsim.net. — Оператор видав SIM-карту, що цікавила поліцейських. Однак, незважаючи на детальні пояснення принципу роботи сервісу, демонстрацію панелі доступу до сайту Virtualsim.net для передачі кодів з SMS та наявності дозволу суду тільки на зняття копій… поліція вилучила все обладнання — модеми, смартфони, жорткі диски, ноутбук, а також велику кількість SIM-карток, арендованих клієнтами Virtualsim.net».

Власники інтернет-сервісу стверджують, що подальша доля вилучених SIM-карток наразі невідома. «Таким чином, конфіденційність користувачів сервісу та, ймовірно, збереження їх грошових коштів (деякі клієнти користуються сервісом для віходу в свої платіжні системи) без будь-яких правових підстав були порушені. Робота відділення сервісу була призупинена, йому завдано необґрунтованих збитків на кільки тисяч доларів, оператор втратив можливість заробітку» — бідкаються в Virtualsim.net.

Вони додають, що надалі операторів сервісу правохоронці схиляли до «незрозумілої співпраці» з метою відшукання та ідентифікації власників інтернет-бізнесу. Одночасно з цим було виявлено спробу зламу особистого аккаунта Facebook одного з засновників Virtualsim.net, а сам веб-сайт почали «сканувати» на предмет відшукання його вразливостей.

За місяць «копи», врешті-решт, вирішили зв’язатися з власниками сервісу напряму та почали вимагати від них «видачі інформації», висловлюючи погрози та недвозначні натяки.

«Один з поліцейських зміненим голосом записав аудіофайл про те, що справу (про підпал приміщення ГСУ Нацполіції — Ред.) перекваліфікують на «замах на вбивство», а нас оголосять співучасниками. Наших зауважень з цього приводу поліція не почула. З їх боку виступав якийсь анонім, однак оскільки сеанс зв’язку був попередньо узгоджений та відбувався по сторонньому каналу й надалі, ми абсолютно впевнені, що спілкувалися з особами, які розслідують справу, — переповідають подальший розвиток подій у Virtualsim.net. — Побоюючись за життя і здоров’я нашого колишнього оператора, який на території України фактично опинився в заручниках у недобросовісних поліцейських… зрештою ми погодилися провести видачу (інформації — Ред.)… Передусім ми піддалися на шантаж — здоров’я та свобода людини, яка працювала з нами, достатнь важливі для нас. Нам подякували та на певний час спілкування припинилося».

В подальшому у власників Virtualsim.net виникли сумніви щодо причетності їх клієнта — орендаря SIM-картки, на яку був зареєстрований Telegram-канал, до скоєння підпалу будівлі Головного слідчого управління Нацполіції. Мовляв, із розмов із анонімними «копами» останні повідомляли — їм важливо упіймати будь-якого анархіста та оголосити про розкриття справи.

«Ще більше питань виникло через те, що цей клієнт, за твердженнями поліції, начебто пов’язаний з сайтом «Боєць Анархіст». Наразі цей ресурс після DDoS-атаки (ймовірно влаштованої не без «допомоги» української влади) призупинив роботу та пішов у DarkNet. Цей сайт являв собою новинний ресурс з висвітлення діяльності «лівих анархістів», зокрема — історії підпалу будівлі поліції. Цей сайт першим оприлюднив повідомлення про підпал, яке надійшло від групи «Сміливці» на електронну пошту видання. Не виключено, що в поліції вирішили «зачепитися» за першого-ліпшого «анархіста», аби надалі просунутися в розслідуванні. У той же час наш клієнт — власник аккаунта в Telegram насправді міг бути тільки інтернет-журналістом. Тим не менш, перша спроба шантажувати нас виявилася вдалою. Ми вирішили, що інцидент є вичерпаним, однак це виявився тільки початок історії», — говориться у відкритому листі адміністрації Virtualsim.net.

Тут стверджують, що восени 2020 року з ними знову вийшли на контакт правоохоронці, котрі заявили, що в них «довгі руки» та вони встановили справжні особи/місцезнаходження засновників Virtualsim’у. «На питання, яким є процесуальний статус власників веб-сервісу (в історії про підпал будівлі ГСУ НПУ — Ред.) було надано відповідь, що ніякого», — переконують стартапери.

Мовляв, співробітник поліції, з яким вони спілкувалися, чітко усвідомлював: геть усе, що було можливе з боку адміністрації Virtualsim.net для здійснення розслідування гучної історії про пожежу в Головному слідчому управлінні, вже зроблено. А у подальших контактах не має будь-якого сенсу.
Читайте также: Нацполіція викрила канал нелегального переправлення людей до ОРДЛО

Втім, як виявилося, отриманою від веб-сервісу інформацією поліція та кіберполіція скористатися не змогли. Тож вони вирішили за допомогою власників Virtualsim.net здійснити оперативну комбінацію та «піймати на гачок» невловимого орендаря SIM-картки під привідом наявності для нього цікавої/вигідної пропозиції. Адміністрація відмовилася брати участь у цій постановці, після чого їй начебто почали мститися «копи».

Зокрема, 20 листопада 2020 року власники Virtualsim.net отримали чергове повідомлення від поліцейських з натяками на погрози, а надалі до ще одного з операторів інтернет-сервісу до Тернополя завітали працівники Департаменту внутрішньої безпеки НПУ.

«Останніми його словами була фраза: «До мене прийшли з обшуками, передають тобі вітання з Києва. Віддай їм те, що вони вимагають, мені не потрібні проблеми». Наразі нам нічого не відомо про місцезнаходження та стан нашого оператора, на зв’язок він більше не виходив. Після цього раптово перестали працювати орендовані нами в дата-центрі слоти в шлюзах для автоматичних номерів, а компанія, яка надавала ці послуги, перестала відповідати. Скоріше за все, її працівників залякали поліцейські… Як наслідок, велика кількість клієнтів Virtualsim.net залишилася без орендованих SIM-карток, було вилучено значну кількість майна веб-сервісу та фактично припинено його функціонування на території України. Хоча ніякого процесуального статусу по жодній кримінальній справі ми не маємо та не можемо мати, оскільки не порушували будь-які закони. Проте маємо справу з бандитами, що представляють державу; та державою, яка користується послугами бандитів», — стверджують власники Virtualsim.net.

Вони резюмують, що наразі перебувають за межами України, а «копи» буцімто погрожували оголосити їх у міжнародний розшук: «Ми є законослухняними громадянами, але не можемо повернутися на Батьківщину через побоювання за свої життя, здоров’я та свободу. Ймовірність того, що поліцейські бандити з Департаменту внутрішньої безпеки будуть покарані, практично нульова. Ми відмовилися вести перемовини з поліцією, оскільки не хочемо бути такими само бандитами, як і влада».

Источники: antikor.com.ua
detective-info.com.ua

Сервіс з надання віртуальних SIM-карток припинив роботу в Україні: заявляють про переслідування та шантаж з боку поліції

О, продолжение истории с наездом на Virtualsim, украинская пресса заинтересовалась, молодцы какие. Оставляю тут для архива.

Компанія Virtualsim припиняє роботу в Україні. Причиною надавачі віртуальних SIM-карток назвали шантаж та незаконні дії поліції

Про це йдеться в заяві компанії Virtualsim.

В компанії Virtualsim заявили, що в ході розслідування підпалу анархістами кабінету слідчого управління поліції у м Києві в протест через буксування в розслідуванні вбивства застреленого п’яними поліцейськими п’ятирічного Кирила Тлявова та зґвалтування в Кагарлику, силовики вдались до шантажу та нанесли компанії збитки на кілька тисяч доларів.

У Virtualsim розповіли, що вперше зіткнулися зі спробою Департаменту внутрішньої безпеки Нацполіції впливати на сервіс поза правовим полем у липні 2020.

«Один з клієнтів сервісу, на думку поліції, якимось чином був пов’язаний з кримінальною справою про підпал кабінету в Слідчому управлінні м.Києва вночі 10 червня 2020 роки (кримінальну справу ЕРДР No.12020100060002061 від 10 червня 2020 року про умисне знищення чужого майна , ст.194 ч.2). Ідентифікація була проведена за номером телефону, на який був зареєстрований Telegram; номер телефону був придбаний клієнтом на нашому сервісі», — пояснили в компанії.

Підприємці зауважили, що відповідальність за підпал нібито взяли на себе невідомі ліві анархісти, які таким чином висловили протест проти двох гучних історій поліцейського свавілля в Україні — зґвалтування затриманої в Кагарлику і звільнення з під варти поліцейських, які через недбальство застрелили 5-річного хлопчика в процесі п’яної стрілянини по банкам у дворі.

«Ми залишимо такі способи протесту на совісті тих, хто їх практикує. Наскільки нам відомо, поліція намагається знайти паліїв, але, в той же час, не афішувати інцидент з огляду на таких пікантних подробиць мотивації правопорушників», — додали в компанії.

У Virtualsim наголосили, що Печерським судом було видано ухвалу про проведення обшуку за місцем знаходження SIM-карти; таким чином, передбачалося затримати власника аккаунта Telegram.

«SIM карта, насправді, ніколи не перебувала у власника аккаунта, оскільки вона належала сервісу Virtualsim.net і здавалася в оренду. Управлінням SIM-картами займався найнятий сервісом оператор. До нього-то і приїхали близько десяти поліцейських Департаменту внутрішньої безпеки з Києва, подолавши 550 з гаком кілометрів», — прокоментували в сервісі.

Оператор видав поліцейським SIM-карту, якою скористувалися анархісти для повідомлення про підпал.

Водночас в компанії наголосили, що поліція вилучила обладнання — модеми, смартфони, жорсткі диски, ноутбук, а також велику кількість SIM-карт, незважаючи на те, що в рішенні суду йшла мова про зняття копій, а не вилучення техніки.

«Доля даних SIM-карт невідома, і таким чином конфіденційність користувачів сервісу, і, можливо, збереження їх коштів (деякі клієнти користуються сервісом для входу в свої платіжні облікові записи — це ще одна зручна особливість) без будь-якого правової підстави була порушена», — зазначили у Virtualsim.

В компанії наголосили, що поліція схиляла оператора сервісу до незрозумілої «співпраці» з метою «виходу» на власників Virtualsim.net. Також в компанії заявили, що невідомі намагались їм продати вилучену поліцією інформацію з модемів.

Наостанок в компанії заявили, що поліцейські зв’язалися з власниками сервісу безпосередньо і зажадали видачу інформації. Одним з поліцейських нібито був записаний аудіофайл з видозміненим голосом про те, що справу перекваліфікують у «замах на вбивство», і підприємців оголосять співучасниками.

Вдруге, за словами підприємців поліція зв’язалась з бізнесменами через три місяці та, за їх словами, зажадала виманити клієнта. який нібито підозрювався у підпалі слідчого управління. За задумом поліції, у компанії мали написати клієнту листа. Фірма відмовилась.

«Власник сервісу відмовився грати в такі ігри. До того ж, після видалення клієнта, який повинен був зрозуміти, що з ним щось не так, хоча йому було вказано, що проблеми виникли абстрактно по якомусь політичному кримінальній справі, писати йому листа з пропозицією — це не просто некоректно з точки зору політики сервісу, це ще й нерозумно і підозріло, і, до того ж, якщо клієнт користується TOR або VPN, що майже стовідсотково ніякої інформації про нього отримати не вдасться», — прокоментували в комапнії.

Довідка: Інтернет-сервіс Virtualsim.net надає в оренду телефонні номери для реєстрації веб-сервісів з використанням кодів з SMS. Сервіс був заснований в 2015 році в Україні для користувачів інтернету, зацікавлених в конфіденційності, зокрема, для здійснення свого права на свободу слова і недоторканність персональних даних в умовах неправових держав, що може бути корисно громадським активістам, а також для масових реєстрацій в сфері інтернет-маркетингу

Підписуйтеся на наш телеграм-канал Новини Еспресо

Источник: espreso.tv

Скрипты для создания виртуальных пользователей Dovecot. Небольшое улучшение.

По многочисленным просьбам зрителей, добавил в скрипты dcadduser, dcdeluser и dcpasswd переменную DOMAIN, если ее заполнить, т.е. указать там домен:

DOMAIN="example.org"

То к имени пользователя будет автоматически добавляться @ и домен (paulzovatel@example.org, например).

Очистка каталога /tmp при завершении работы в Slackware

Пост из области «спрашивали — отвечаем». Хотя, не совсем понимаю, зачем это особенно-то нужно. Если каталог /tmp сильно засран, то штатное завершение работы будет доооолгим.

Достаточно добавить в скрипт /etc/rc.d/rc.local_shutdown следующую команду:

rm -rf /tmp/*

Внимание! Не накосячьте с командой rm -rf, пишите именно так, как выше. В самом плохом случае, при опечатке в команде, можно получить Патч Бармина

Отключение NETFILTER/IPTABLES, сброс фаервола Linux, установка параметров фаервола по умолчанию.

Делается довольно просто:

#!/bin/bash
echo "Restore firewall rules"

# Delete all rules
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Accept all traffic
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Сначала удаляем все правила из всех цепочек, потом разрешаем весь трафик. Естественно, можно и не весь трафик разрешать, у меня на сервере последняя команда заменена на iptables -P FORWARD DROP, чтобы пока я как-то перенастраиваю фаервол, клиенты не могли подключиться.

Скрипт на GitHub
Скрипт на PasteBin

Прошивка Asus ZC500TG

Друг принес в починку тело, а сам сделать не смог, т.к. на 4pda опять оказалась кривая инструкция с битыми ссылками.

1. Ставим MTK Drivers, желательно перезагрузить комп после установки.

2. Скачиваем прошивальщик, распаковываем архив в C:\.

3. Скачиваем стоковую прошивку, распаковываем тоже в C:\

4. Запускаем прошивальщик и открываем файл (кнопка Scatter-Loading [1] на иллюстрации ниже) MT6580_Android_scatter.txt в каталоге с прошивкой

5. Проверяем, чтобы в меню было Download Only ([2] на иллюстрации)

6. Полностью заряжаем телефон

7. Выключаем телефон

8. Нажимаем кнопку Download ([3] на рисунке).

9. Снимаем батарею, минимум на минуту, лучше подольше

10. Вставляем батарею, закрываем крышку.

11. Зажимаем клавишу громкость «-» (громкость минус) и одновременно втыкаем телефон в компьютер (кабель лучше подключить заранее).

12. Клавишу громкость минус не отпускаем, пока на прогресс-баре утилиты ([4] на картинке) не появится надпись Downloading Flash... и он не станет желтым. Если этот момент пролюбить, то телефон врубится в режим самотеста или начнет заряжаться, а драйвера для виртуального COM-порта не встанут и прошивка не начнется.

13. Если что-то не доглядели (отпустили клавишу громкости раньше времени и т.д.), повторяем пункты, начиная с 9.

Открытое обращение Virtualsim.net

по поводу преследования со стороны властей Украины, попытках взлома сервиса, шантаже, угрозах и нанесённом ущербе

Открытое обращение администрации Virtualsim.net к общественности и клиентам о преследовании со стороны властей Украины, попытках взлома сервиса, шантаже, угрозах и нанесённом ущербе

О нас

Интернет-сервис Virtualsim.net предоставляет в аренду телефонные номера для регистрации веб-сервисов с использованием кодов из SMS. Сервис был основан в 2015 году в Украине для пользователей Интернета, заинтересованных в конфиденциальности, в частности, для осуществления своего права на свободу слова и неприкосновенность персональных данных в условиях неправовых государств, что может быть полезно гражданским активистам, а также для массовых регистраций в сфере интернет-маркетинга.

Virtualsim.net позволяет клиенту получить SMS код для регистрации или подтверждения входа в свою учётную запись в социальных сетях или на других веб-сервисах без раскрытия своего настоящего номера телефона. Вся деятельность клиента происходит внутри зарегистрированных им веб-сервисов, следовательно, Virtualsim.net не может нести ответственность за действия клиентов в сторонних веб-сервисах.

Информация о клиентах Virtualsim.net является конфиденциальной, и не может быть раскрыта иначе как по официальному запросу суда, если таковой запрос не противоречит праву человека на свободу слова и не связан с цензурой, которая запрещена Конституцией как Украины, так и многих других стран.

Первый инцидент

В июле 2020 года мы впервые столкнулись с попыткой Департамента Внутренней Безопасности Национальной Полиции Украины воздействовать на сервис вне правового поля, другими словами, бандитскими методами. Один из клиентов сервиса, по мнению полиции, каким-то образом был связан с уголовным делом о поджоге кабинета в Следственном управлении г.Киева ночью 10 июня 2020 года (уголовное дело ЕРДР No.12020100060002061 от 10 июня 2020 г. об умышленном уничтожении чужого имущества, ст.194 ч.2). Идентификация была проведена по номеру телефона, на который был зарегистрирован Telegram; номер телефона был приобретён клиентом на нашем сервисе.

Анархисты-поджигатели

Суть уголовного дела заключается в следующем: ответственность за поджог взяли на себя некие неизвестные левые анархисты, которые таким образом выразили протест против двух нашумевших историй о полицейском беспределе в Украине — изнасиловании задержанной в Кагарлыке и освобождении из под стражи полицейских, по халатности застреливших 5-летнего мальчика в процессе пьяной стрельбы по банкам во дворе. Мы оставим такие способы протеста на совести тех, кто их практикует. Насколько нам известно, полиция пытается найти поджигателей, но, в то же время, не афишировать инцидент ввиду таких пикантных подробностей мотивации правонарушителей.

Более подробную информацию можно найти в Google, например, по фразам «поджог следственного комитета в киеве», «анархисты подожгли следственный комитет в киеве».

graty.me
sud.ua

Обыск и необоснованное изъятие оборудования Virtualsim.net

Но вернёмся к нашему сервису.
Печерским судом г.Киева (судья Батрин О.В., по ходатайству следователя следовательского отдела Печерского УП ГУИП в г.Киева, старшего лейтенанта полиции Кольчик Анастасии Сергеевны, одобренное прокурором Киевской городской прокуратуры No.6 Мрачко Я.И.) 9 июля 2020 года было выпущено решение («ухвала») о проведении обыска по месту нахождения SIM карты; таким образом, предполагалось задержать владельца аккаунта Telegram. SIM карта, в действительности, никогда не находилась у владельца аккаунта, поскольку она принадлежала сервису Virtualsim.net и сдавалась в аренду. Управлением SIM картами занимался нанятый сервисом оператор. К нему-то и приехали около десяти полицейских Департамента Внутренней Безопасности из Киева, преодолев 550 с лишним километров.

Оператор выдал интересующую полицейских SIM-карту. Но, несмотря на подробные объяснения о характере работы сервиса и демонстрацию работы, включая панель доступа к сайту Virtualsim.net для передачи кодов из SMS, явное наличие большого количества SIM карт, модемов, смартфонов на Андроид, приложения для работы с SIM картами в модемах, а также указание в решении суда о снятии копий (не изъятии), полиция изъяла оборудование — модемы, смартфоны, жёсткие диски, ноутбук, а также большое количество SIM карт, арендованных клиентами Virtualsim.net.

Судьба данных SIM карт неизвестна, и таким образом конфиденциальность пользователей сервиса, и, возможно, сохранность их денежных средств (некоторые клиенты пользуются сервисом для входа в свои платёжные учётные записи — это ещё одна удобная особенность) без какого-либо правового основания была нарушена.

Работа отделения сервиса в результате избыточного изъятия была остановлена, сервису нанесён необоснованный ущерб на несколько тысяч долларов, а оператор лишился возможности заработка.

Шантаж и попытки взлома с целью получения информации без решения суда

В течение месяца полиция не удосужилась прислать нам официальный запрос следователя или решение суда о выдаче информации (помимо самой SIM карты, сервис обладает дополнительной информацией о действиях пользователя за небольшой период времени, учёт платежей, обращения в техподдержку).

Вместо этого оператора сервиса склоняли к непонятному «сотрудничеству» с целью «выхода» на владельцев Virtualsim.net. Одновременно с этим SIM карта одного из владельцев сервиса (информация о номере телефона была получена от нашего оператора или с изъятого телефона) была «угнана» — неизвестный из Киева сбросил пароль в личном профиле Facebook, получив SMS на этот номер, который физически не находится в Украине. Однако, взлом не удался. Есть большие сомнения, что попытка взлома была проведена по решению суда. Веб-сайт сервиса начали сканировать на предмет уязвимостей с целью взлома, затем хостинг-провайдер объявил о нежелании обслуживать наш веб-сайт. Провайдер частично предоставляет услуги и в Украине, вероятно, какие-то незаконные действия полиции вынудили его нам отказать в обслуживании (это неточно, но совпадение очень странное). Одновременно с этим, на наш веб-сервис в Telegram и службу техподдержки начали приходить дурацкие сообщения наподобие «у меня есть модемы [которые только что изъяли, вероятно], я хочу на вас работать», или «мне передали, что вам надо заплатить, дайте номер карты», и тому подобное.

Через месяц полицейские, всё-таки, решили связаться с владельцами сервиса напрямую и потребовали выдачу информации. Одним из полицейских был записан аудиофайл с видоизменённым голосом о том, что дело переквалифицируют в «покушение на убийство», и нас объявят соучастниками. По такой же логике, соучастником должен стать Павел Дуров, владелец Telegram, и оператор Vodafone Украина. И даже более, поскольку не Virtualsim.net, а Telegram и Vodafone обеспечивают связь. Моего замечания по этому поводу полиция «не услышала». Со стороны полиции выступал некий аноним, однако сеанс связи был предварительно согласован по стороннему каналу, и далее, абсолютно достоверно, что мы общались с людьми, расследующими дело.

Опасаясь за жизнь и здоровье нашего бывшего оператора, который, находясь на территории Украины, фактически, остался в заложниках у недобросовестных полицейских, после препирательств по поводу необходимости получить судебное решение, всё-таки провели выдачу. Мы посчитали, что имелась высокая вероятность, всё-таки, получить официальный запрос следователя, и поджог «немного» не подпадает под категорию свободы слова. Но, в основном, мы, всё-таки, поддались на шантаж — здоровье и свобода человека, который с нами работал, достаточно важны для нас. Нам сказали спасибо и общение на время прекратилось.

Сомнительный розыск

Вместе с тем, у нас начала вызывать большие сомнения причастность пользователя Telegram к расследуемому правонарушению. В разговоре с анонимным полицейским прослеживалось чёткое намерение «поймать анархистов», неважно каких. Официального запроса полицейские избегали; также непонятно, почему они не смогли или не захотели запросить данные о владельцах сайта, к которому считали причастным клиента, и, наконец, не подали запрос в Telegram. Несмотря на анонимность, Telegram также подчиняется судебным решениям о выдаче информации; поджог вполне может считаться достаточно серьёзным преступлением.

Ещё больше вопросов возникло в свете того, что клиент, по утверждению полиции, принадлежал к сайту bo-ak.org («Боец Анархист»). В настоящее время сайт после DDoS атаки (вероятно, не без помощи украинских властей) прекратил работу и ушёл в Даркнет. Собственно, на это и намекал псевдоним клиента, bo-ak, однако нам удалось «расшифровать» это уже после того, как случилась эта история.

Сайт представлял собой новостной ресурс с освещением деятельности левых анархистов, включая и историю с поджогом. Помимо новостной ленты, на сайте содержались «полезные советы», манифесты, информация о защите конфиденциальности и прочее. Этот сайт, по его же словам, первым опубликовал сообщение о поджоге, присланное некоей группой «Смельчаки» по емэйлу, опять же, как утверждается на сайте.

Вероятно, у полиции не было достаточно фактов для полноценного судебного запроса на выдачу данных, и, не исключено, что они пытались зацепиться за первого попавшегося «анархиста», чтобы затем, используя свои незаконные методы работы, продвинуться в расследовании. Владелец Telegram — наш клиент — мог быть просто интернет-журналистом.

Итак, первая попытка шантажа удалась, но это ещё только начало истории.

Мы предположили, что инцидент исчерпан, с ущербом можно справиться, полиция получила данные, запрос формально вышлют — они обещали судебные решения.

Шантаж, часть вторая

Через три месяца с нами снова запросили контакт. Началось, точнее, продолжилось всё тем же шантажом. В первую очередь, нам назвали имена, которые, как они предполагают, реальные, и заявили о том, что примерно знают наше местонахождение, и руки у них длинные, образно выражаясь. Ответ о том, что всё было выдано и инцидент исчерпан, был проигнорирован.

На вопрос о том, каков процессуальный статус владельцев сервиса, был дан ответ, что никакого. Собеседник из полиции чётко осознавал, с чем он имеет дело — с веб-сервисом, и чётко осознавал, что всё, что было можно, уже было сделано, и в дальнейших контактах нет смысла.

Но, как оказалось, полученной информацией полиция и киберполиция воспользоваться не смогли.

Они задумали следующее: мы должны написать письмо клиенту от имени сервиса и выманить его под предлогом какого-нибудь выгодного или даже бесплатного предложения. За это, как предполагалось, нас не будут преследовать за… А нас не за что преследовать, но если надо, найдут за что.

Предложение такого рода не может быть обязательным даже по решению суда, я полагаю. Но оно было сделано неформально. Нами был дан ответ, что мы всегда готовы к сотрудничеству на основании судебных решений в правовом поле. Нам пообещали «судебных решений» и перешли к повторению своего требования.

Владелец сервиса отказался играть в такие игры. К тому же, после удаления клиента, который должен был понять, что с ним что-то не так, хотя ему было указано, что проблемы возникли абстрактно по какому-то политическому уголовному делу, писать ему письмо с предложением — это не просто некорректно с точки зрения политики сервиса, это ещё и глупо и подозрительно, и, к тому же, если клиент пользуется TOR или VPN, что практически стопроцентно, никакой информации о нем получить не удастся.

Нам снова пообещали «судебных решений» и предложили передумать. В ответ нами была высказана мысль о том, что полиция ведёт себя как террористы. Страшно жить и иметь дело с государством, которое говорит тебе «делай, что я скажу, и за это я не сфабрикую против тебя ничего».

Тем временем, по одному из судебных решений (подробности неизвестны), несмотря на показания вышеупомянутого оператора о том, что мы являемся веб-сервисом, изъятое при обыске имущество решили не возвращать, а то ли арестовать, то ли приобщить к делу. Имущество, не имеющее отношения к делу, приобщили к делу. У судей Печерского суда г. Киева своя логика.

Месть за отказ от незаконных требований

И, наконец, 20 ноября 2020 года мы получили сообщение от полиции как цитату в ответ на «присылайте судебные решения для выдачи данных, как в цивилизованных странах». Ответ был примерно таким — «вы хотели судебных решений, у вас будет сегодня несколько возможностей с ними ознакомиться; если не передумаете [отказываться писать письмо клиенту с целью его выманить], мы будем действовать в отношении вас дальше в том же ключе».

Мы ожидали судебного решения о выдаче информации задним числом, но не тут-то было.

Времени на «передумать», на самом деле не было. В Тернополь, где находился ещё один наш оператор, из Киева (420 км) уже прибыли сотрудники Департамента Внутренней Безопасности. Последними словами нашего оператора было «ко мне пришли с обыском, передают тебе привет из Киева, выдай им то, что они хотят, мне не нужны проблемы». В настоящее время нам ничего не известно о местонахождении и состоянии нашего оператора, на связь он больше не выходил.

Далее, внезапно перестали работать арендованные нами в дата-центре слоты в шлюзах для автоматических номеров. Небольшая — официальная — компания, которая предоставляла услуги, также перестала выходить на связь. Формально, нами была оплачена аренда и на мощностях компании находилось некоторое количество принадлежащего нам имущества — SIM-карт. Фактически, работники компании были, скорее всего, запуганы полицией и отказались от своих обязательств, вероятно, вследствие каких-то угроз, которые, как вы видите, вполне реальны.

Большое количество клиентов Virtualsim.net осталось без арендованных SIM карт, было изъято имущество сервиса и, фактически, прекращено его функционирование на территории Украины.

Повторюсь, что никакого процессуального статуса ни по какому уголовному делу мы не имеем и не можем иметь, поскольку не нарушали никаких законов. Но имеем дело с бандитами, представляющими государство, и государство, пользующееся услугами бандитов.

Не оглашайте, а то будет хуже

После того, как полиция была предупреждена, что дело зашло слишком далеко и должно перейти в публичную плоскость, они занервничали и начали угрожать объявить нас в международный розыск и, косвенно, намёками, создать проблемы семье. И снова предложили написать письмо клиенту с целью его выманить, вместо открытого обращения, иначе может быть хуже.

Пока мы находимся за пределами Украины, и, поскольку мы не нарушали никаких законов, нам, вроде бы, не о чем беспокоиться. Однако нас беспокоит судьба наших друзей и коллег, взятых в заложники государственными террористами, представляющими власть в Украине. Ведь им придётся делать что скажут, иначе будет хуже. И, несмотря на то, что мы законопослушные граждане, мы больше не сможем вернуться на родину без опасений за свою жизнь, здоровье и свободу. Вероятность того, что полицейские бандиты из Департамента Внутренней Безопасности будут наказаны, практически нулевая. По иронии, ДВБ — это первое, что приходит в голову, если необходимо пожаловаться на действия полиции в полицию, он и создан частично для этих целей.

Мы, в конечном итоге, отказались от переговоров с полицией, поскольку мы не хотим быть такими же бандитами, как власти. Мы свободные люди, которые не любят террористов, приказывающих делать то, что им нужно, чтобы они не начали расправу.

Мы сомневаемся, что наше открытое обращение каким-то образом исправит содеянное украинской полицией, возместит ущерб, даже в форме извинений.

Возможно, огласка хоть как-то осадит зарвавшихся шантажистов, наделённых полицейской и судебной властью, которым не писан закон, или собъёт с кого-то розовые очки восприятия происходящего в стране.

Пусть это обращение послужит предупреждением для тех, кто может оказаться на нашем месте из-за желания заниматься интернет-бизнесом в государстве Украина. Мы читали много новостей о том, как украинские власти грабят майнеров или других ИТ-предпринимателей, выдвигают абсурдные обвинения. Это было не про нас, просто новости, ну бывает, не всё так плохо. И вот теперь это про нас, теперь это реальность и всё плохо именно так. Для вас, уважаемый читатель, сегодня это не про вас, и это просто новости, и не всё так плохо. А завтра?

Спасибо за внимание!
С уважением, владельцы сервиса Virtualsim.net.

P.S. К сожалению, сейчас сервис работает в ограниченном режиме, но многие пользователи находят его полезным, и он не будет закрыт, но, со временем он будет восстановлен, расширен и размещён в дружественной юрисдикции. Веб-сайт уже находится под юрисдикцией Исландии, что достаточно надёжно с точки зрения защиты права на частную жизнь. Извините за все неудобства, вызванные произошедшим. Мы немножко верили, что Украина лучше и такого беспредела, беззакония и неуважения к правам граждан произойти просто не может, ну, что-то полегче может, но не такое, однако, увы, мы ошибались.

P.P.S Уважаемые клиенты! Пожалуйста, примите во внимание, что ваше право на частную жизнь, выраженное в приобретении вами наших услуг, было изъято полицией Украины без каких-либо обвинений в ваш и наш адрес, и срочно примите необходимые меры защиты, вы уже поняли, что это за организация.

Контакты для прессы:
электронная почта 1: support на virtualsim.net
Электронная почта 2: virtualsim.net на protonmail.com
Telegram @virtualsim

Уважаемые читатели (особенно из Украины)! Вы знаете, как нежно редакция относится к Украине и избегает затрагивать Украинские проблемы. В первую очередь потому, что Украина — суверенное государство, и мы не имеем морального права вмешиваться во внутриукраинские дела.

Но в данном случае, речь идет о свободе слова и защите личных данных, что является не только европейской, но и общемировой ценностью.
С уважением, редакция.

Источник
Версия на английском

Детский кряк

Наверное, это самый смешной реверсинг во всей вселенной и даже в куче параллельных.

Итак, попросили меня бухгалтерши найти им «шарики», чтоб на обеде было во что на обеде поиграть. Нашел им бесплатный Снукер (копия), но Снукер оказался с подвохом, бесплатный-то он бесплатный, но до загрузки игры показывал рекламу, а после закрытия, отправлял на сайт, где предлагалось скачать очередной Яндекс.Спам.

«Ну ты же хакер», взмолились бухгалтерши. «Сделай так, чтоб оно никуда не ходило и ничего не просило!» А я не хакер, и даже не реверсер. Сисадмин я. Администрирую грудь.

Ок, подумал я, и уже думал скормить экзешник отладчику, ну чего же для родных бухгалтерш не сделаешь, как обнаружил в директории программы (C:\Program Files (x86)\Бесплатные игры Atarata\Снукер) два экзешника — game.exe и game.wrp.exe. game.exe — это фигня, отвечающая за показ рекламы (а чтоб не крякали, за таблицу рекордов и рестарт игры сначала), а game.wrp.exe — сама игра. Т.е. достаточно game.exe удалить или переименовать в game.exe.bak, а потом game.wrp.exe переименовать в game.exe.

crack.bat:

ren game.exe game.bak
ren game.wrp.exe game.exe

ФАНФАРЫ! Даже ярлыки не надо менять.

— Игра начинается с сохраненной до выхода.
— Нет таблицы рекордов

+ Такой кряк не нарушает лицензионное соглашение — «законы Матрицы, это законы компьютерной системы — одни можно обойти, другие поломать».

Killswitch для Openvpn в Linux. Как сделать так, чтобы трафик не пошел в обход VPN

Преамбула

Итак, что такое killswitch. В случае использования VPN, это механизм, при котором, в случае «падения» VPN вы не спалитесь. Без killswitch обычно бывает так: сидите вы, работаете через VPN и считаете себя защищенным, хотя бы от подглядывания за вами провайдера (и сидящего за СОРМ’ом тов. майора), и тут фигак, VPN падает, ОС предоставляет вам доступ по умолчанию, и мессенджеры, открытые вкладки браузера, и вообще все-все-все выходят в Интернет через ваш обычный провайдерский IP.

Значит, надо сделать так, чтобы трафик, в случае отключения VPN никуда не ушел. Это и есть killswitch.

Первый опыт. Самый простой killswitch.

Изначально все было сделано очень просто. Дома стоял отдельный линуксовый «сервер», который предоставлял остальным устройствам доступ к Интернету, к домашним файл-помойкам (FTP и Samba) и PXE, на случай чего-нибудь переустановить. Внешний VPN, т.е. тот, который крутится на «сервере» — просто OpenVPN-клиент, который коннектится к VPN-провайдеру. И первый killswitch был очень простой: надо отрубить доступ всем клиентам из локальной сети.

Openvpn может при соединении или разъединении с VPN выполнять пользовательские скрипты, и в этих скриптах прописывалась команда iptables -P FORWARD DROP, если соединение падало, или iptables -P FORWARD ACCEPT, когда соединение устанавливалось.

Но такой подход несколько кривоват, подходит это хорошо только для FORWARD-трафика, а для локальной машины на Linux, т.е ноута, который постоянно таскаю на работу, фигово — сделать DROP по INPUT и OUTPUT-цепочкам, или вообще удалить дефолтный маршрут, так до поднятия VPN придется все это сначала «вернуть в зад» (не забыв перед этим закрыть браузер и мессенджеры).

Подробнее про первый способ можно прочесть тут (копия)

Простой Killswitch для локальной машины

1. Надо проверить конфигурацию ядра (см. Посмотреть опции компиляции ядра/узнать конфигурацию ядра Linux (копия), точнее, нас интересует опция CONFIG_NETFILTER_XT_MATCH_OWNER. Если она установлена в Yes (CONFIG_NETFILTER_XT_MATCH_OWNER=y), тогда можно переходить к следующему шагу, если она установлена в CONFIG_NETFILTER_XT_MATCH_OWNER=m, т.е. собрана в виде модуля (как у меня) — смело добавляем в автозагрузку команду (и перезагружаемся):

modprobe xt_owner

В некоторых ОС modprobe owner_xt, посмотрите сами, если modprobe с одним модулем не выдаст ошибку, значит модуль тот, который надо. Если выдаст — попробуйте другой вариант.
Если ядро скомпилировано с опцией CONFIG_NETFILTER_XT_MATCH_OWNER=n, тогда печально — придется пересобирать ядро.

2. Понадобится отдельная группа для запуска OpenVPN и других программ в обход VPN. Все остальное, естественно, должно резаться, если OpenVPN не запущен.
Создаем группу:

groupadd -r killswitch

или

groupadd --system killswitch

Естественно, имя группы killswitch можно заменить на свое. Нужна обязательно системная группа, иначе работать не будет. Про группы Linux можно почитать в источниках [2].

3. Выполняем команды IPTABLES:

iptables -A OUTPUT -m owner --gid-owner killswitch -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited

Вместо tun0 вписываем имя устройства, которое будет создано OpenVPN Параметр можно узнать из конфига для соединения (dev <имя устройства>, например dev tun0). В конфиге можно его и поменять.

Что вообще делают эти команды:

1. Пакеты, отправленные процессами с GID killswitch, пропускаются в сеть.
2. Пакеты на интерфейсе tun0 пропускаются безусловно. Это тот самый сетевой интерфейс, который реализован поверх VPN-подключения. Если у вас этот сетевой интерфейс называется по-другому (опция dev в конфиге OpenVPN позволяет дать ему фиксированное имя вместо tunN), поменяйте его в правилах iptables выше.
3. Пакеты на интерфейсе lo точно так же пропускаются. lo — это loopback-интерфейс, на котором располагается известный 127.0.0.1 (localhost). Поскольку некоторые приложения используют localhost для коммуникации между процессами, его блокировать нежелательно.
4. Все остальные пакеты блокируются. Блокировка при этом происходит с отправкой ICMP-пакета «administratively prohibited» (код ошибки не играет существенной роли). Это лучше, чем просто дропать пакеты, так как в таком случае программы будут сразу получать ошибку, а не висеть до таймаута.
[1]

В источнике есть еще и дополнительные плюшки, как сделать это через CGROUPS

4. Осталось запустить OpenVPN от нужной группы:

sg killswitch openvpn --config /path/to/config/config.ovpn

sg, это команда наподобие sudo, только она позволяет запускать программы в нужной группе [4]

Проблема с доступом к сервисам в локальной сети.

Вышеприведенный способ режет совсем всё, т.е. доступ в локальную сеть тоже будет закрыт. А мне доступ в локальную сеть нужен, т.к. в ЛВС на работе присутствуют сервера, к которым нужен доступ. Я попытался добавить команды IPTABLES (да, о том, что порядок команд важен, я знаю) для доступа в локальную сеть, закрыв, при этом, доступ к локальному DNS-серверу и шлюзу (он же роутер с IP-адресом 192.168.0.1)

iptables -A OUTPUT -m owner --gid-owner killswitch -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -s 192.168.0.1 -j DROP
iptables -A OUTPUT -d 192.168.0.1 -j DROP
iptables -A INPUT -s 192.168.0.1 -j DROP
iptables -A INPUT -d 192.168.0.1 -j DROP
iptables -A OUTPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited

-s — входящий трафик
-d — исходящий

Но почему-то пакеты один хрен, уходили в сеть. Поясните, кто больше меня шарит в IPTABLES, где я накосячил.

В результате, пришел к Соломонову решению — открыть доступ не ко всей ЛВС, а только к нужным мне серверам.

Да, если еще один появится, придется отдельно разрешать доступ, что неудобно. Кто знает, как решить — подскажите.

Так что окончательная конфигурация такая:

iptables -A OUTPUT -m owner --gid-owner killswitch -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -s 192.168.0.66 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.66 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.68 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.68 -j ACCEPT
iptables -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited

Источники

1. Kill switch для OpenVPN на основе iptables (копия в PDF)
2. Как создать группы в Linux (команда groupadd)
3. Как заблокировать ip в iptables
4. sg

Посмотреть опции компиляции ядра/узнать конфигурацию ядра Linux

Иногда бывает необходимо узнать, с какими опциями собрано ядро Linux, например, чтобы узнать какие устройства, файловые системы, протоколы, и (блин) даже опции файервола (NETFILTER/IPTABLES) оно поддерживает.

Файл со списком опций

Если ядро собрано с опцией CONFIG_IKCONFIG_PROC=y, то в /proc присутствует файл config.gz.
Если файла нет, возможно, ядро собрано с опцией CONFIG_IKCONFIG_PROC=m, т.е. конфигурация ядра доступна в виде модуля.
Тогда пробуем выполнить команду

modprobe configs

Файл /proc/config.gz должен появиться.

Да, несколько анекдотичная ситуация. Чтобы узнать конфигурацию ядра, ядро должно быть собрано с опцией отображения конфигурации 🙂

Если не помогло, можно поискать файл в /boot (некоторые разработчики кладут его туда) или поискать в исходниках ядра. У меня они были установлены с диска дистрибутива, и копия конфига оказалась в /usr/src/linux/.config

Просмотр списка опций

1. Через просмотровщик mc. Идем в /proc/, становимся на файл config.gz и просматриваем его (по нажатию F3).

2. С командной строки:

zcat /proc/config.gz

Создание виртуальных пользователей Dovecot и скрипты для этого.

Преамбула

Продолжаю свои эксперименты с локальным почтовым сервером, соответственно, понадобилось создать на ём виртуальных пользователей. Пока не стал мудрить со всякими MySQL и прочими сложностями, ограничился простым passwd-file — т.е. текстовым файлом, содержащим список пользователей и соленых хэшей, наподобие стандартного файла Linux /etc/shadow.

Однако, работа с этим файлом в Dovecot как-то не очень продумана, в разных руководствах и статьях предлагается примерно такой способ:

#задаем имя пользователя
#задаем пароль
#...

echo $USERNAME:$(doveadm pw -s ssha512 -p $PASSWORD):::::: >> /etc/dovecot/users

Где $USERNAME и $PASSWORD — ранее заданные переменные скрипта, в которых находятся, соответственно, имя пользователя и пароль.

Таким скриптом легко загадить парольный файл, т.к. никаких проверок на одинаковость имен, РеГИсТР букв в ИмеНАХ пользователей нет. Решил немного улУчшить и углУбить.

+ Все имена пользователей приводятся к нижнему регистру
+ Перед добавлением пользователя проводится проверка, на наличие его в файле пользователей.
— Не стал автоматически прикручивать к имени пользователя домен (@example.org), впрочем, кому надо, там просто допилить, а мне, пока экспериментирую, особо не надо, т.к. домены меняются %).

Добавление пользователей

Делается скриптом dcadduser.

Можно запускать с параметрами:

dcadduser <user> <password>, например,
dcadduser paulzovatel@example.org passw0rd666

Если запустить без параметров, скрипт предложит ввести имя пользователя и пароль. Если пользователь существует — то скрипт сообщит об этом и завершит работу.

dcadduser на GitHub

Удаление пользователя

Для удаления создал скрипт dcdeluser.
Использование:

dcdeluser <username>

где <username> — имя пользователя в файле passwd-file.

dcdeluser paulzovatel@example.org

Перед удалением будет выдан запрос:

Delete user paulzovatel@example.org? [Y/N]:

Если пользователь не существует, скрипт сообщит об этом и завершит работу.

dcdeluser на GitHub

Изменение пароля пользователя

Для изменения пароля предназначен скрипт dcpasswd.

Использование:

dcpasswd <username> [new_password]

где:

<username> — имя пользователя в файле passwd-file.
[new_password] — новый пароль

Если пользователь не существует, скрипт сообщит об этом и завершит работу.
Если второй параметр (новый пароль) будет опущен, то скрипт предложит ввести новый пароль в интерактивном режиме.

dcpasswd на GitHub

Список пользователей

Скрипт dclistuser выводит список пользователей из passwd-file Dovecot. Запускается без параметров.

Пример вывода:

./dclistuser
bigboss@test1.local
alice@test1.local
bob@test1.local
likovar@test1.local

dclistuser на GitHub

Репозиторий со скриптами

Linux. Получение случайной строки из английских строчных, заглавных букв и цифр.

Например, для создания имени для временного файла.

cat "/dev/urandom"|tr -dc 'a-zA-Z0-9'|head -c 10

1. Читаем cat‘ом случайную информацию из /dev/urandom (из /dev/random получится очень медленно), далее передаем ее tr.
2. Опция -d команды tr, означает, что символы нужно удалить, а опция показывает, что символы должны быть кроме присутствующих в наборе. Вторым параметром передается набор ('a-zA-Z0-9‘), т.е. будут удалены все символы, не соответствующие набору. Т.е. останутся только латинские строчные, латинские заглавные и цифры.
3. Команда head вырезает из переданных ей данных нужное количество символов. Опция -c указывает команде, что нужно вырезать нужное количество байт (иначе, команда работает со строками). Латинские символы, что в UTF-8, что в однобайтовых кодировках, занимают по 1 байту.

#!/bin/bash

LENSTR="10"

RANDSTR=`cat "/dev/urandom"|tr -dc 'a-zA-Z0-9'|head -c "$LENSTR"`
echo "Random string (length=$LENSTR): $RANDSTR"

Пример вывода:

./randstr
Random string (length=10): e6OFDphzTh
./randstr
Random string (length=10): vF6jJEhOMi
./randstr
Random string (length=10): H0edJFIYte

Скрипт на GitHub

Удаление кривого «активатора» для Windows 7 Odin возвращается

Преамбула

К сожалению, не во всех компаниях есть сисадмин и даже эникейщик, который способен свою винду проверить на лицензионность, и, если что — запустить последовательно два экзешника. Ще, пришлось делать один экзешник, который можно запустить и он удалит кривой активатор Odin, ответить надо только Да и один раз. Даже перезагружается оно само.

Kill Odin v 0.01

+ Удаляет драйвер SLIC, восстанавливает Реестр и загрузку.
+ Достаточно скачать единственный файл (и запустить его).
+ Проверка на наличие драйвера Odin
+ Перед вносимыми изменениями в систему будет создана точка восстановления.

Исходники

Репозиторий на GitHub

Скачать

OdinKill.exe

Скриншоты

Скриншоты

NSIS: Сохранение лога установки в текстовый файл.

На самом деле, не совсем сохранение лога, если быть точным — сохранение текста из окна Details установщика.

1. Необходимо подключить dumplog.nsi (код взят из NSIS Wiki)
2. Вызов функции DumpLog:

StrCpy $0 "$TEMP\test.log" ;Записываем имя файла лога в переменную
Push $0 ;помещаем значение переменной в стек
Call DumpLog ;вызов функции

Примечание: Функция работать не будет, если инсталлятор запущен в тихом режиме.

С русским языком проблем тоже не возникает. Файл сохраняется в формате ANSI.

Источник

NSIS Wiki

Тестовый установщик

Код на GitHub
dumplog.nsi

NSIS. Проверка существования ключа Реестра.

Иногда бывает надо проверить, существует тот или иной ключ Реестра Windows

Решение

Для этого можно воспользоваться стандартной функцией EnumRegKey:

EnumRegKey <var> <root_key> <subkey> <index>

где:
<var> — переменная для названия ключа Реестра, которое будет возвращено функцией.
<root_key> — корневой ключ Реестра (HKCR|HKCU|HKLM|HKU|HKCC)
<subkey> — путь в Реестре, например Software\Microsoft\Windows
<index> — индекс следующего ключа.

Функция перебирает все подключи в указанной ветке Реестра. Пример для перечисления можно посмотреть здесь

Если ключ не существует, то функция EnumRegKey сгенерирует ошибку, которую можно отследить:

!include Logiclib.nsh ;подключаем библиотеку с нормальными логическими конструкциями.
;...
ClearErrors ;очищаем флаг ошибки
EnumRegKey $0 HKCU "Software\Microsoft\" 0
${If} ${Errors} ;ключ не существует
	DetailPrint "HKEY_CURRENT_USER\Software\Microsoft not EXIST!"
${Else} ;ключ существует
	DetailPrint "HKEY_CURRENT_USER\Software\Microsoft EXIST!"
${EndIf}
;...

Пример целиком на GitHub

NSIS: Создание точки восстановления системы.

Преамбула

В некоторых случаях, например, при установке драйверов, необходимых для работы вашей программы, или при внесении серьезных изменений в систему, хотелось бы задействовать механизм создания точек восстановления, чтобы в случае непредвиденной ситуации, пользователь мог бы безболезненно откатить все назад.
Как, например, поступает Driver Pack Solutions перед установкой драйверов.

Плагин SysRestore

Для создания точек восстановления в NSIS применяется плагин SysRestore, который можно скачать с официальной NSIS wiki (копия).

Установка тривиальна — надо распаковать архив в каталог NSIS, например в "C:\Program Files (x86)\NSIS\"

После подключения плагина становятся доступны 4 функции:

SysRestore::StartInstallPoint "<название>" — функция создает точку восстановления с типом «Установка», применяется для создания точки восстановления при установке программы.

SysRestore::StartUninstallPoint "<название>" — функция создает точку восстановления с типом «Удаление», применяется для создания точки восстановления при удалении программы.

В стек эти функции (как и другие функции данного модуля) помещают код возврата, который можно извлечь из стека командой

Pop <переменная>

И далее проанализировать:

0 — Функция завершена успешно, точка восстановления создана.
1 — Уже запущено создание точки восстановления, предыдущую точку восстановления надо закрыть или отменить (см. ниже).
10 — Windows запущена в «Безопасном режиме»
13 — The sequence number is invalid (сам автор плагина не знает, что это за ошибка).
80 — Ошибка с таким кодом встречается в Windows ME.
112 — Восстановление системы находится в режиме ожидания, поскольку закончилось место на жестком диске под точки восстановления.
1058 — Восстановление системы отключено.
1359 — Внутренняя ошибка при создании точки восстановления.
1460 — Время ожидания вызова истекло из-за ожидания мьютекса для установки точек восстановления (вот это уже я не знаю, что такое).

Впрочем, про коды ошибок, автор пишет следующее:

Я не знаю, являются ли эти коды актуальными кодами ошибок, я просто проанализировал соответствующие include-файлы в SDK. Я тестировал код 1058 — восстановление системы отключено, и провел тест в безопасном режиме — код ошибки 10, я предполагаю, что эти коды верны.

Так что возможно ограничиться анализом кодов 0 (ОК), 1 (см. ниже), 10 (безопасный режим) и 1058 (восстановление системы отключено). Если функция выдаст что-то кроме этих четырех понятных кодов, остальное можно (в первом приближении) отправить в великий класс Неизвестная Ошибка (Unknown Error). Хотя, если вы знаете больше, чем автор плагина, а тем более, чем я — добро пожаловать в комментарии.

Кроме вышеперечисленных инициализирующих функций, существует «закрывающая» и «отменяющая» функции. «Закрывающая»:

SysRestore::FinishRestorePoint

Ее необходимо вызывать, после того, как все изменения в системе произведены, чтобы закрыть точку восстановления, и чтобы система получила нужные данные о том, что было изменено в системных/программных файлах и Реестре. Попытка создать новую точку восстановления без закрытия предыдущей, в одном и том же инсталляторе, приводит к тому что функции StartInstallPoint/StartUninstallPoint выдадут ошибку 1.

Как я понимаю, система все равно закроет restore point после завершения работы установщика, но лучше эту функцию использовать.

«Отменяющая» функция, это:

SysRestore::RemoveRestorePoint

Она позволяет удалить незакрытую точку восстановления из системы. Может понадобиться в случае, если пользователь отменил установку в процессе, и установщик откатил процесс установки.

Коды возврата последних двух функций:

0 — OK
2 — Не произведен запуск точки восстановления (т.е. предварительно не вызваны функции StartInstallPoint или StartUninstallPoint)

Пример кода

В первой секции… Вообще, для этого можно создать скрытую секцию, чтоб сначала создать restore point, а потом с ней работать далее, но пример простой, так что в первой секции, до начала изменений, создаем точку восстановления

Section "Create Restore Point Example"
	;Настраиваем секцию
	;Создаем точку восстановления
	DetailPrint "Create restore point..."
	SysRestore::StartRestorePoint "Test Restore Point"
	Pop $0 ;достаем из стека код восстановления в переменную $0
	${If} $0 = 0 ;анализируем его
		DetailPrint "OK"
	${ElseIf} $0 = 1
		DetailPrint "Start point already set (start function only)."
	${ElseIf} $0 = 10
		DetailPrint "The system is running in safe mode. "
	${ElseIf} $0 = 13
		DetailPrint "The sequence number is invalid."
	${ElseIf} $0 = 80
		DetailPrint "Windows Me code."
	${ElseIf} $0 = 112
		DetailPrint "System Restore is in standby mode because disk space is low."
	${ElseIf} $0 = 1058
		DetailPrint "System Restore is disabled."
	${ElseIf} $0 = 1359
		DetailPrint "An internal error with system restore occurred."
	${ElseIf} $0 = 1460
		DetailPrint "The call timed out due to a wait on a mutex for setting restore points."
	${Else}
		DetailPrint "Unknow error."
	${EndIf}
	
	;производим установку программы, копируем файлы, пишем в Реестр
	;...
SectionEnd

;в завершающей секции

Section -FinishSection
;...
; Генерируем uninstaller, пишем соотв. ключи в Реестр
;...	
	;Закрываем точку восстановления
	SysRestore::FinishRestorePoint
	DetailPrint "Finish restore point..."
	${If} $0 = 0
		DetailPrint "OK"
	${ElseIf} $0 = 2
		DetailPrint "No Start point set (finish function only)."
	${Else}
		DetailPrint "Unknow error."
	${EndIf}

SectionEnd

Готовый пример

Тестовый установщик создает точку восстановления, далее устанавливает во временный каталог системы программу, которая при запуске показывает приветственное окно и завершает работу, прописывает ее в автозагрузку Реестра, и генерирует uninstaller во временном каталоге.

Код на GitHub
Скомпилированный инсталлятор

Скачать плагин

1. NSIS Wiki
2. Копия (на 07.11.2020)

NSIS warning 7998: ANSI targets are deprecated, как исправить.

Преамбула

Обновил NSIS с v 3.04 до 3.06.1, в логе компилятора стал вылезать warning:

Processed 1 file, writing output (x86-ansi):
warning 7998: ANSI targets are deprecated
...
warning:
  7998: ANSI targets are deprecated

Т.е. ANSI ему устарело. Warning не error, но все равно неприятно. Впрочем, исправить не составило особого труда.

Исправление

Для исправления этого дела, в начало скрипта надо добавить команду:

Unicode true

Только команду надо добавлять в самое начало скрипта, во всяком случае до секций и до определения параметра InstallDir. Если добавить после InstallDir:

;...
Name "${APPNAMEANDVERSION}"
InstallDir "$TEMP"
Unicode true

OutFile "TempUnicode.exe"
;...

То это вызовет ошибку:

Error: Can't change target charset after data already got compressed or header already changed!

Невозможно изменить целевую кодировку после того, как данные уже сжаты или заголовок изменен!

А лучше добавлять Unicode true вообще в самое начало скрипта, первой строчкой, даже до !include, как пишут на форуме NSIS, т.к. от чего компилятор так реагирует на смену кодировки, в документации не описано.

Примечание: с русским языком в инсталляторе проблем при смене кодировки не случилось, хотя редактор передает компилятору скрипт на STDIN, а редактор сохраняет файл скрипта в ANSI (кодировка Win 1251). Во всяком случае, проблем не случилось при использовании Venis IX.