Print This Post Классы для работы с HTTP(S) на C++

Пятница, 6. Январь 2012
Раздел: C/C++, Софт, автор:

Написал кроссплатформенную библиотеку (набор классов) для работы с HTTP(S) на C++, используя последние концепции программирования. Пока что это, пожалуй, beta, так как тестировал я ее совсем мало.

Для сборки библиотеки потребуется собранный Boost (желательно версии 1.48 или выше). Если планируется включение функционала для работы с SSL (HTTPS), то потребуется еще собранная библиотека OpenSSL. Также в обязательном порядке требуется поддержка компилятором C++11. Сами заголовочные файлы библиотеки не включают ни заголовочные файлы boost, ни OpenSSL.

Для тех, кто захочет использовать библиотеку для написания чего-то жестоко многопоточного (конечно, спамеров, а что же еще подобное пишут с дохера потоками), учтите, что каждый запрос создает 1 дополнительный фоновый поток, т.е. количество потоков, используемых приложением, увеличивается вдвое. Такая особенность работы связана с тем, что в своем ядре библиотека использует boost::asio::io_service для контроля времени выполнения запроса (словом, внутри библиотеки всё происходит асинхронно).

Краткое описание возможностей класса:
[+] GET/POST/прочие запросы с использованием HTTP/1.0
[+] Поддержка HTTPS
[+] Поддержка multipart-POST запросов с возможностью загрузки произвольного количества файлов любого размера
[+] Автоматический менеджмент Cookies
[+] Автоматические переходы по Location-редиректам
[+] Поддержка скачивания больших файлов
[+] Поддержка HTTP/HTTPS/SOCKS5-прокси с авторизацией и без
[+] Возможность добавлять собственные HTTP-заголовки в запрос
[+] Поддержка автоматической обработки параметров (urlencode)
[+] Возможность задать таймаут на любой запрос
[+] Множество вспомогательных функций (urlencode, base64 и т.п.)

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

Далее я по пунктам приведу краткое описание возможностей библиотеки с примерами.
Читать дальше »

Print This Post Что у нас новенького

Вторник, 1. Ноябрь 2011
Раздел: C/C++, Windows, Жизнь, Софт, Это интересно, автор:

За октябрь мы сделали не так много новых записей в блог, вернее, ничего толком и не писали. Итак, что же произошло за последний месяц?

1. Во-первых, нами был написал proxy-сервис, проверяющий огромные списки паблик-прокси и выбирающий валидные серверы, проверяя их по разным критериям. К сожалению, спросом он не пользуется, но мы все-таки попытались. Загляните и вы, там есть простой бесплатный тариф: http://ironproxy.ru.

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

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

4. В честь перевода третьего квеста я добавил в него небольшую новую карту. Портал на эту карту имеется с карты warp-зоны, доступной после прохождения, а еще можно найти скрытый способ попасть на нее с первой карты (там, где стоит Соник), и за это вы даже получите достижение. Кстати было добавлено 2 новых достижения, а новая карта включает в себя одно несложное IT-задание.

Print This Post Стеганография etc

Четверг, 15. Сентябрь 2011
Раздел: C#, C/C++, Софт, Это интересно, автор:

Было нечего делать, решил написать какую-нибудь необычную софтину. В голову пришла идея создания программки, которая могла бы прятать внутри картинок какие-либо данные. Такой подход сокрытия данных называется Стеганографией. Выбрал я самый простой формат картинок - BMP. В изображениях формата BMP (24- или 32-битных, несжатых) цветовые данные хранятся в виде отдельных байтов, поэтому можно модифицировать их младшие биты и без видимых изменений заныкать в картинку некоторый объем информации.

Я набросал консольную программу на C++ и GUI-интерфейс к ней на C#. Вот краткие возможности этого софта:
[+] Возможность прятать в 24- и 32-битные картинки BMP-формата без сжатия данные.
[+] Возможность использовать 1/2/4 младших бита картинки для сохранения информации.
[+] Можно также просто зашифровать файл и сохранить его в виде 24-битной картинки (это уже нельзя назвать стеганографией).
[+] Программа при упаковке файла сохраняет не только его данные, но и имя, а также CRC32, это все используется при распаковке.

Файлы распаковываются в директорию с программой.
Читать дальше »

Print This Post Полиморфный криптор-обфускатор JavaScript/HTML/VBS

Суббота, 26. Март 2011
Раздел: HTML/JS, Софт, автор:

Собственно, тот самый, последней версии, который был в призах за прохождение первого квеста.
Скриншот, из которого понятен весь функционал:


Скрипт написан на php и предоставляется в обфусцированном виде.

Скачать: ZIP

PS. На античате появилась темка про то, что я якобы сделал обновление vkchecker 0.5. Так вот, я никаких обновлений не делал, а в теме предлагают скачать троянец.

Print This Post VKontakte NoAd

Среда, 9. Март 2011
Раздел: C#, Софт, Социальные сети, автор:

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

Среднестатистическому аккаунту показывается в ротации ~300-400 объявлений. С минимальной задержкой программа убирает их примерно за 5-10 минут. Конечно, каждый день в ротацию добавляются новые объявления, но в довольно небольшом количестве.

Для работы программы необходим .NET Framework 2.0.
Скачать: NoAd

Print This Post Regexp HTTP-proxy

Пятница, 4. Март 2011
Раздел: Perl, Софт, автор:

Недавно для своих нужд написал небольшой прокси-сервер, заменяющий содержимое ответа по заданному регулярному выражению. Интерфейс реализован на основе Tk, сам сервер построен на основе модуля HTTP::Proxy, так как в нем есть довольно удобная система фильтров.
Замена может производиться как по статическим строкам, так и по полноценным регулярным выражениям. Если в регулярном выражении производится захват некоторого фрагмента, то доступ к нему в подставляемом тексте осуществляется стандартным для перла способом ($1, $2, ...).

Скачать: proxy_regex.

В процессе разработки столкнулся со следующими проблемами, на которые рекомендую обратить внимание:
1. При использовании Tk вместе с методами fork или async, необходимо закрывать хендлы STDIN и STDOUT. В противном случае, Perl будет крешиться (фича или баг библиотеки encoding.dll, если не закрывать хендлы, то в ней вызывается метод, приводящий к попытке разыменования указателя на недопустимую область памяти).
2. HTTP::Proxy по-умолчанию довольно специфично работает с кодировками, поэтому стоит использовать заготовки fizbin'a с perlmonks.
3. При запуске win* используется HTTP::Proxy::Engine::NoFork, все бы хорошо, но если существует потребность производить остановку сервера по сигналу, то содержимое метода run следует слегка модифицировать. Изначально начало метода выглядит так:

sub run {
    my $self  = shift;
    my $proxy = $self->proxy;
 
    # check for new connections
    for my $fh ( $self->select->can_read() ) {

Т.к. аргумента у метода can_read нет, то данный вызов является блокирующим. Соответственно, цикл из метода start (модуль HTTP::Proxy)

sub start {
    my $self = shift;
 
    $self->init;
    $SIG{INT} = $SIG{TERM} = sub { $self->{loop} = 0 };
    # the main loop
    my $engine = $self->engine;
    $engine->start if $engine->can('start');
 
    while( $self->loop ) {
        $engine->run;
        last if $self->max_connections && $self->conn >= $self->max_connections;
    }

не сразу прекращается при получении сигнала. Поэтому я добавил аргумент в методе can_read для своевременной реакции на сигналы.
4. Ещё один неприятный момент состоит в том, что после выхода из цикла прокси не закрывает сокет. Решается добавлением строки после цикла.

$self->{daemon}->close();

Print This Post Генератор аккаунтов

Воскресенье, 6. Февраль 2011
Раздел: C/C++, Софт, автор:

Пару дней назад в асю стукнул человек с просьбой написать программку для генерации списков невалидных аккаунтов, составляя их из паролей, логинов и доменов, которые он предоставит. Узнав, что дальнейшая судьба софта его не интересует, я решил выложить исходники в блог и немного прокомментировать их.
Для начала, возможности софта:
[+] Генерация заданного количества login@domain:password из заданных списков логинов, доменов и паролей.
[+] Возможность задать файл с префиксами и постфиксами для логинов и паролей и указать вероятности их использования в логине и пароле.
[+] Возможность задать разделитель логина и пароля.
[+] Фильтрация списков логинов и паролей по заданным регулярным выражениям.
[+] Возможность переводить логины в нижний регистр.
[+] Возможность включить проверку, чтобы повторные логины@домены не генерировались.

Все это написано на C++ с использованием замечательной бесплатной библиотеки boost.
Читать дальше »

Print This Post Simple Mail.ru Regger

Понедельник, 29. Ноябрь 2010
Раздел: Софт, автор:

Простой автоматический регистратор почтовых ящиков в сервисе mail.ru. Написан на Perl.

[+] Многопоточность
[+] Генерация логинов/паролей произвольно или из файла
[+] Имя и фамилия берутся из файлов, остальные поля заполняются случайным образом
[+] Поддержка antigate
[+] Возможность выбора используемых при регистрации поддоменов (mail.ru, bk.ru, inbox.ru, list.ru)
[+] Поддержка SOCKS5/HTTP прокси

Настройка производится путем редактирования файла config.txt.
Для работы необходим ActivePerl и модули GD, GD::Tiler (GD::Tiler есть в комплекте).

Скачать: reg_mail.