Print This Post Code review #2

Среда, 22. Август 2012
Раздел: Code Review, автор:


d_x умотал в Лас-Вегас просаживать годовой бюджет маленькой африканской страны, а значит, за неимением лучших тем (точнее они есть, но я лентяй), пришло время для очередного ревью. Кстати, товарищи, неужели никто не пишет на C/C++/Asm? В запросах сплошной Perl.
Читать дальше »

Print This Post Как на antigate уйти в минус

Среда, 15. Август 2012
Раздел: $$$, Бред, автор:

Давече нашел очередную полезную недоработку на сервисе Antigate (Антикапча). Практическая ценность заключается в том, что можно взять два аккаунта, например, на одном 20$, а на другом 0$, увести один в минус и получить 40$ на одном, -20$ на другом. Как это делается? Всё очень просто.
Нам понадобится Charles и, собственно, два аккаунта, причем один с положительным балансом.

1. Включаем Charles, убеждаемся, что он перехватывает запросы в используемом нами браузере.
2. Делаем перевод всей суммы с одного аккаунта на другой (будет запрошен код подтверждения с e-mail'a).

3. Подтверждаем перевод.
4. Смотрим запросы в Charles. Ищем подобный запрос:

5. Переводим баланс обратно на первый аккаунт.
6. Выбираем ранее найденный запрос на вкладке Structure в окне Charles, нажимаем правой клавишей мыши и выбираем пункт Repeat Advanced, ставим одинаковое значение в поля Iterations и Concurency, например, 10 (да, да, прямо как много лет тому назад во всяких счастливых фермерах).

7. Нажимаем ОК, немного ждем и наслаждаемся результатом.

Почему и отчего так происходит? Флешмен (если конечно он сам писал сервис) видимо не в курсе того, что надобно использовать транзакции или лочить таблицы... Баг, кстати говоря, далеко не первый на данном сервисе. Аналогичная ситуация наблюдалась при запросе баланса на вывод, а также была возможность уходить в минус без всяких специальных утилит благодаря кривой обработке входных данных (суммы перевода) - просто подставляешь число в виде 0xАF00 или скажем 1e10 и вуаля. Всё это было исправлено впоследствии.

Print This Post Жизненный RFID

Четверг, 26. Июль 2012
Раздел: C/C++, Windows, автор:

Последний месяц выдался не слишком продуктивным, так как приходилось много ездить по разнообразным медицинским учреждениям. На вторую неделю поездок выяснилось, что большинство учреждений используют RFID-карты для разграничения доступа во внутренних помещениях. Таким образом, под конец месяца у меня набралось великое множество таких карт, что было дико неудобно: приехал в очередное место, открыл рюкзак, достал кипу карт и ищешь где именно та, которую тебе дали на прошлой неделе местные сотрудники. Ещё одним негативным моментом этих поездок было время, которое приходилось проводить в транспорте. В итоге я решил избавиться от одного из неудобств, а именно купить программатор и написать программу-менеджер, которая избавит от необходимости таскать с собой кучу карт (все равно ношу в рюкзаке нетбук, а программатор много веса не добавит) и позволит вести базу, по которой можно будет быстро найти карту от нужного помещения для заданного учреждения, записать идентификатор на болванку и воспользоваться им по назначению. Сказано - сделано, вчера, во время очередной серии поездок, написал соответствующую программку, которую далее и рассмотрю подробнее.
Также обозначим формат карт, который, как оказалось, является доминирующим по неведомой мне причине - это EM-4100. Мимоходом, в магазине со всякой электроникой, был куплен программатор китайского производства, к которому прилагались драйвера для USB-UART моста модели CP210x производства Silicon Laboratories и стремный софт с китайским интерфейсом (имеющий в своем арсенале только функции чтения и записи идентификатора карты), который все же пригодился в дальнейшем.
Читать дальше »

Print This Post Пишем простое расширение для Mozilla Firefox

Среда, 27. Июнь 2012
Раздел: HTML/JS, автор:


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

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

Print This Post PHP Generic Eval Unpacker

Четверг, 26. Апрель 2012
Раздел: C/C++, PHP, Windows, автор:

В предыдущей статье dx рассказывал о ручной методике снятия типовой и довольно распространенной защиты PHP-скрипта. Если проанализировать наиболее часто встречающиеся типы защиты (например, в разделе запросов на расшифровку на Античате), то можно заметить, что в большинстве случаев защита построена на максимальном сохранении исходного кода скрипта и использовании функции eval в конечном счете. Снимать такую защиту очень просто, но слегка занудно, поэтому я решил написать примитивную программу, которая осуществляет сие действо автоматически.
Чтобы пост не был унылым, я кратенько опишу, что из себя представляет анпакер. Итак, из-за своей лени я решил использовать php-cli, расширение для php (которое перехватывает eval) и сделать к этому простой GUI. Результирующая программа выглядит следующим образом:


Читать дальше »

Print This Post Прокси-ботнет из роутеров

Пятница, 30. Март 2012
Раздел: C/C++, Linux, PHP, автор:

В 2010 году, в период тестирования SSH Bruteforce'a одним хорошим человеком, я узнал, что на Европейских диапазонах IP-адресов попадается приличное количество SSH-доступов к всевозможным роутерам. Наиболее частыми среди них оказались роутеры с MIPS-процессором и известной кастомной прошивкой DD-WRT.
Казалось бы, особой пользы с них не извлечь, но ещё тогда был предложен вариант использования их в качестве прокси. До тестирования концепции на тот момент руки не дошли, а сегодня я как раз разбирал старые архивы и решил попробовать собрать рабочий пример под подобный роутер. Благо, у меня валяется парочка таких. Стоит отметить, что поднятие прокси-серверов на роутерах также обладает всем известной спецификой, которая заключается в том, что у провайдеров часто используются динамические IP, поэтому, естественно, прокси-сервер должен сообщать свой текущий IP некой веб-админке.
Читать дальше »

Print This Post Добываем трафик c помощью Android Market

Суббота, 3. Март 2012
Раздел: $$$, автор:


Известно, что Android Market является одной из крупнейших площадок по продаже мобильных приложений. В рамках площадки доступен целый ряд полезностей для потребителей, но нас в первую очередь интересует функция отзывов, ведь большинство пользователей перед покупкой или скачиванием того или иного приложения в первую очередь опираются на отзывы и рейтинг, даже если приложение находится в топ-10-20-30...

Если зайти в маркет через обычный браузер, то можно обнаружить, что для того, чтобы оставить отзыв тому или иному приложению, необходимы 2 вещи:
1. За google-аккаунтом должно числиться хотя бы одно Android-устройство
2. Приложение должно быть предварительно куплено/скачано с маркета.
Читать дальше »

Print This Post Пишем простой асинхронный парсер

Четверг, 23. Февраль 2012
Раздел: Perl, автор:

Многие разработчики типового говнософта, ориентированного на работу с вебом, зачастую используют потоки для того, чтобы получить выигрыш в скорости. Данный подход, конечно, обладает своими плюсами, но все же не является оптимальным, например, с точки зрения потребляемых ресурсов системы (особенно когда речь идет о потребителях, любящих ставить сразу "тыщу потоков").
Альтернативным и общеизвестным способом ускорения работы софта является асинхронная модель, то есть модель, при которой все вызовы методов являются неблокирующими. В данной статье я рассмотрю простой пример, который будет использовать асинхронные веб-запросы.
В качестве примера будет написан парсер идентификаторов приложений с Android Market, который пригодится в готовящейся статье, посвященной добычи трафика с маркета. Для простоты будем использовать модуль AnyEvent, он упрощает реализацию асинхронной событийной модели. Итак, приступим.
Читать дальше »

Print This Post Читаем MBS

Воскресенье, 12. Февраль 2012
Раздел: C/C++, Windows, автор:

В связи с недавним помутнением сознания начал разбираться в некоторых аспектах написания драйверов, а также содержимом WRK. По ходу исследований внезапно потребовалось затронуть MBR, создаваемую Windows.
Как известно, MBR (Master Boot Record) у ОС семейства Windows совпадает по размеру с MBS (Master Boot Sector) и содержится в нём. Однако, в общем смысле, MBR в общем смысле, MBR может занимать часть пространства и за пределами MBS.
Короче, чтобы не утомлять занятых людей, суть исходного кода, приведенного ниже, сводится к тривиальной задаче чтения MBS, вывода нескольких необходимых мне параметров из виндовой MBR (информации о разделах) и подсчета MD5 хэш-суммы от содержимого сектора.
Мини-программа выглядит как-то так:

Программа: скачать
Для людей, которым по каким-то неведомым причинам необходим исходный код: скачать

P.S. Товарищи, зря вы пьете фенотропил, честно, это ведь один из легких способов быстро посадить печень, а здоровье беречь нужно.

Print This Post Встраиваем Flash в свое приложение

Вторник, 17. Январь 2012
Раздел: C/C++, Windows, автор:

Как-то раз при разработке одной программы у меня возникла необходимость встроить какую-нибудь красивую мини-игру в раздел About. Так как делать красивую игру средствами WinAPI - это то ещё удовольствие и по срокам и по времени, то я решил просто-напросто встроить flash-файл в свой проект. Примерное описание того, как это сделать, мы и рассмотрим далее. В примере мы пойдем чуть дальше, а именно не только встроим флеш-ролик в окно, но и добавим парочку элементов управления. В результате у нас получится нечто подобное:

Таким образом, разобрав пример, вы запросто сможете встроить этого замечательного (или какого-нибудь другого) единорога в свое приложение, пускай и цена этого выкрутаса будет ~2.5 мегабайта.
Читать дальше »