Archive for the ‘hack’ Category

заплатка для php 7

Tuesday, December 29th, 2020

  Не прошло и трёх лет, даже php 8 ещё не выпустили, а разработчики php уже смогли принять мою заплатку к php 7 в ПЯТЬ символов, которая предотвращала segfault.
  А вот другое улучшение уже видно никогда не примут, восемь лет прошло…

SGW на PHP

Tuesday, July 19th, 2016

  Ехали медведи на велосипеде…
  У swedbank есть API для работы со счетом – посмотреть там чего или даже деньги перевести кому. Называется SGW и доступно за деньги. API супер безопасное, использует эстонскую систему электронных подписей и в связи с этим жутко замороченное – подписанный xml внутри bdoc, который внутри cdoc (утка в зайце, яйцо в утке, игла в яйце). Ну и еще цифровая временная метка при перечислении.
  Клиентская библиотека на богомерзкой джаве и кусками на сях и плюсах.
  А теперь, моими стараниями, еще и на php, лежит php-sgw на github. В комплекте: создание и разбор CDOC, создание и разбор BDOC без подтверждения подлинности (что не сложно сделать, но в данном случае не нужно, после использования двух сертификатов-то), код для работы с REST от Swedbank. Код временной метки OCSP отсутствует, так как использует отдельный платный сервис.
  Что хочется сказать про разработчиков этого “прекрасного” сервиса, который не позволяет получить ответ на определенный запрос, а тупо присылает всё подряд по мере обработки. Документация – на уровне презентации в PowerPoint о жизни леммингов, причем в разных версиях есть нестыковки. Отладочная информация отсутствует в принципе – у сервиса одна ошибка “что-то не катит”. Сишный код как бы есть, но как-бы не актуальный. Прекрасный двойной паддинг, намекающий на слабое шифрование. Ну а Джава такая Джава… Вроде банк, эстонцы – могли бы постараться; ан нет, без поллитра черт ногу сломит.

История одного взлома

Thursday, August 13th, 2015

  Интересно ломать чужое. Досадно, когда ломают твоё.
  На днях с удивлением обнаружил, что сайты, расположенные на сервере, постоянно что-то загружают и ходят куда-то, куда явно не надо. Стал смотреть и обнаружил, что уже какой месяц назад хостинг взломали, залили шел и делают что хотят. Что получается, точнее.
  Небольшое расследование показало: нашли инсталляцию opencart с паролем по умолчанию (тут я плакал и зарекался), зашли в админку, поменяли “Error Log Filename” на имя с расширением .php и через вызов ошибки залили туда php код. Ну и далее php шел со всеми вытекающими – заменой всех jquery файлов на модифицированные.
  Благодаря php-fpm от пользователя, пострадали только некоторые сайты, запущенные от данной учётки. Неработающий mail() не дал рассылать спам, а закрытый исходящий трафик исключил проксирование.
  Благодаря логам удалось найти все (надеюсь!) залитые файлы.
  Мораль: пароли по умолчанию великое зло !

memcache и грабли eviction

Wednesday, July 23rd, 2014

  Есть в memcached такая неприятная штука как eviction. Случается когда свободной памяти не осталось для выделения новых страниц в slab, а свободных чанков в slab-e тоже нет. Тогда в slab-e берется какой-нибудь занятый чанк и затирается новыми данными. И это не взирая на то, что в соседних slab-ах могут быть свободны целые страницы – если страница выделена в slab, она останется там навсегда. Если не воспользоваться штукой под названием Slabs Automove. Иначе можно найти знатные грабли как мы. (more…)

vqmod xml для Cupid темы Opencart

Friday, July 18th, 2014

  Есть такая неплохая масштабируемая тема
Cupid – R.Gen OpenCart Store Template, с доступной в тырнетах версией 1.2 под opencart 1.5.5. Из коробки не имеет поддержки vQmod. Добрый человек потратил полчаса времени и напилил vqmod_cupid_1.2.xml XML файлик, позволяющий не перезаписывать оригинальные части opencart.

playlist.m3u для IPTV Lattelecom

Thursday, January 2nd, 2014

  Lattelecom предоставляет услуги IPTV под вывеской Интернет ТВ. Качество среднее – HQ это 640×480 при битрейте ~500kbps , доступ с авторизацией для подписчиков, три типа потоков – flash для хомяков, HLS для мажоров и rtsp для хардкора. До 31.01.2014 можно смотреть бесплатно.
  Понятное дело, хочется смотреть на телевизоре. Есть Dune HD с wifi свистком (спасибо Вове), которая на ура играет потоки из интернетов и даже показывает список каналов – знает толк в m3u8 в общем.
  Что делаем ? Идем на ltc.tv, регистрируем учётную запись, заходим и смотрим идентификатор сессии в печеньке (он же PHPSESSID). Создаём сценарий bash следующего содержания, подставляя свой идентификатор:

#!/bin/bash

PHPSESSID="0baug7n1kd44227bk6696828j1"
FILE='./ltc/playlist.m3u'

COOK="Cookie: PHPSESSID=${PHPSESSID}; MobBitr=1; mobtv_cache=fXibixGlYd6zEaOUmCfXKcGYvYDtjdd6"
UA='Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53'
REF='http://m.ltc.tv/tiesraide/?autoplay=pirmais_baltijas_kanals'
URL='http://m.ltc.tv/free_origin?show_origin=1&type=1&chan=kanals_2&streamurl=kanals2_lv&bitrate=1'

TTL=112 # in min
generate() {
echo "#EXTM3U"
wget -q -O- --header="${COOK}" --user-agent="$UA" "${REF}" | egrep -o '<div class="chanel_list_info"[^>]+' |cut -d ' ' -f 4,5 | while read U S; do
U=${U//\"/}
U=${U#*=}
S=${S//\"/}
S=${S#*=}
#echo "$U $S"
echo "#EXTINF:-1,${U}"
wget -q -O- --header="${COOK}" --user-agent="$UA" --referer="$REF" "http://m.ltc.tv/free_origin?show_origin=1&type=1&chan=${U}&streamurl=${S}&bitrate=1"
echo
done
}

keep_session() {
wget -q -O- --header="${COOK}" --user-agent="$UA" "${REF}" | fgrep -q 'div class="chanel_list_info' || echo FAIL
}

if find ${FILE%/*} -name ${FILE##*/} -mmin -${TTL} | fgrep -q ${FILE}; then
keep_session
else
generate > ${FILE}
fi

  Далее ставим в крон для поддержания сессии в активном состоянии и в любое время наслаждаемся рабочим playlist.m3u :)

Проверка DKIM на PHP

Sunday, August 25th, 2013

  Как это ни забавно, мне не удалось найти в тырнетах ни одной рабочей реализации проверки DKIM подписи писем на PHP. На Perl есть, на Python – пожалуйста, не говоря уже о сишных библиотеках. На PHP отыскалось лишь какое-то поделие злой мартышки на гитхабе, которое как-бы “Finally, a PHP5 class for not just signing, but verifying DKIM signatures”, но в то же время “Still doesn’t verify signatures properly”.
  Пришлось пару дней покопаться в разном коде, почитать внимательно RFC и voila – код уже может подтверждать подпись писем gmail и airbaltic как минимум.
  По хорошему, шимпанзёвое поделие надо полностью переделывать, добавлять полную поддержку RFC. Но это уже без меня.

Очередные улучшения либы c-client

Wednesday, February 6th, 2013

  Казалось бы, с-client давно мёртв, поддержу IMAP4 допиливать даже не планируют, за последнии 6 лет выпустили всего пару исправлений совсем уж кривых багов. Однако, до сих пор ничего лучшего не появилось на замену. Ещё и php использует эту либу для работы с imap (разработку поддержки которого похоже забросили ещё в 5.0).
  В общем, пришлось по долгу службы снова поковырять сишный код (отчего у меня чуть не случился brain damage в связи с указателями на указатели) и налепить пару новых костылей.
  Первый patch для c-client позволяет использовать в поиске из php в imap_search() кавычки (экранируя) – искать что-то в роде “про \”весёлых\” детей”. Заплатка имеет недоделку в виде ограничения в 1024 символов на строку поиска, которую элементарно устранить заменив статический буфер на динамически выделяемый.
  Второй patch для c-client добавляет базовую поддержку критерия OR из спецификации IMAP4. Обработка синтаксиса круглых скобок, тем не менее, не включена в заплатку. Запилить критерий NOT по подобию, думаю, труда не составит.

О счастливый день !

Tuesday, February 5th, 2013

  Первый раз кто-то купил моё творение за $10 на сайте opencart. Прошло чуть больше недели с момента публикации и я уже начал отчаиваться разбогатеть. Однако 3 лата в конце месяца всё-таки получу.
  Надеюсь.

Улучшение для библиотеки c‑client

Saturday, July 14th, 2012

  PHP использует библиотеку c-client из набора University of Washington IMAP toolkit для работы с IMAP. Небольшое расследование сильного падения производительности на больших почтовых ящиках, проведенное Марисом, обнаружило что c-client использует для внутренней работы индексы сообщений, преобразуя в них UID-ы. Для чего на КАЖДОЕ сообщение посылается запрос на сервер для получения номера индекса из UID-а: на миллион сообщений – миллион запросов к imap только чтобы определить номер индекса из UID.
  Спецификация IMAP позволяет одним запросом получать данные сразу для множества сообщений, перечисляя UID-ы через запятую. Небольшая заплатка для реализации данного функционала – c-client-FT_UID-speedup.patch

модуль для opencart

Tuesday, August 9th, 2011

  Ковырял opencart и произвел на свет модуль для автоматической смены статуса заказов по истечению определённого времени – expire_orders (или тут)

patch for Safenet PCI HSM linux driver

Friday, August 5th, 2011

  Patch to ETpcihsm-3.33-1.i386.tar.gz to compile e8k driver for recent linux kernels – e8k.kmod-agains-ETpcihsm-3.33.diff by MR

avelsieve и php-5.3

Monday, May 9th, 2011

  Avelsieve – плагин squirrelmail для работы с sieve – похоже заброшен автором. Последняя версия 1.9.9 в статусе Alpha и вызывает у php ветки 5.3 некоторую ругань. Исправленную версию можно найти на www.rfc3092.net/avelsieve, однако мне больше нравиться свой вариант в виде diff файла с explode() вместо preg_split() и пары других мелких исправленний.

Безопасность дешёвого хостинга

Thursday, May 5th, 2011

  Безопасность дешёвого хостинга всегда стремиться к нулю. Один раз я сталкивался с этим в nano, теперь вот досталось softserviss заодно с DEAC.
  Попросили меня знакомые залить пару php файлов на хостинг по FTP . Залил и не работает :( Ну стал смотреть что там и как. Впечатлился php версии 5.1.4… Поиск эксплойта занял минут 15 и, о чудо, любые команды от пользователя apache к моим услугам:
Linux plesk-softserviss.asp.lv 2.6.18-194.11.3.el5 #1 SMP Mon Aug 30 16:23:24 EDT 2010 i686 i686 i386 GNU/Linux
  Дальше уж ломиться не стал ибо не собирался. Однако и так было ясно, что слить ВСЕ данные ВСЕХ клиентов этого сервера не составляет труда. Вероятно можно было бы получить и root доступ к самому серверу при благоприятном стечении обстоятельств.
  Мораль: дешевый хостинг – верный путь поделиться своими данными с третьими лицами.

полуночный Jailbreak

Thursday, October 21st, 2010

  Вместо того, чтобы идти спать, вожусь с чужим телефоном :( Знакомый знакомого купил отвязанный Iphone 3G и обновил, превратив в кирпич. Оказалось, прошил “правильно”, до 4.1 и теперь unlock ему не светит в ближайшем будущем. По крайней мере, redsn0w с третьего раза удалось запустить – хоть как проигрыватель поработает. И то лучше чем совершать экстренные звонки =)

cyrup в ALT Linux

Saturday, August 21st, 2010

  Случайно сегодня обнаружил своё творение в виде пакета в ALT Linux: http://sisyphus.ru/ru/srpm/cyrup
  Это признание :)

Prince of Persia: The Forgotten Sands

Saturday, May 22nd, 2010

  Не прошло и трех дней в буквальном смысле после выпуска Prince of Persia: The Forgotten Sands на Wii, как антипиратскую защиту благополучно сломали. И всего лишь достаточно обновить Configurable USB Loader до последней версии.
  А игруля мегарульная, может даже куплю если вдруг в латвиджу подвезут.

интернет в Италии

Saturday, November 14th, 2009

  Как это ни странно, в век, когда в Финляндии широкополосный доступ в интернет гарантирован законом, в Италии только в одной из трех четырёх-звёздочных гостиниц интернет давали бесплатно. В остальных хотели по 5 (ПЯТЬ) евро в час. При том, что в internet-poit-е через дорогу по евро.
  В общем, пришлось вспомнить старые фокусы и написать строку на шеле батничек для отнятия интернета (благо ноуты таскают с собой все кому не лень и хлебом не корми дай поинтернетить):

for /L %%i in (1,1,155) do ping -n 1 -w 10 10.0.0.%%i
arp -a
pause
for /L %%i in (156,1,255) do ping -n 1 -w 10 10.0.0.%%i
arp -a
pause

Печеньки против Юкса

Thursday, September 10th, 2009

  Интернет магазин yoox.com в зависимости от страны проживания пользователя показывает разный ассортимент и цены. Для латвиджи и других стран третьего мира предлагаются в основном коллекции давно минувших лет по ценам по крайней мере на 25% выше чем для жителей той же Италии.
  Однако, благодаря кривому движку сайта, можно добраться и до свежего товара по разумным ценам. К моему великому удивлению, информация о коэффициенте наценки и предлагаемом ассортименте хранится в печеньках ! После небольшого хирургического вмешательства можно почувствовать себя макаронником :) (more…)

HomeBrew Channel 1.0.3

Thursday, June 11th, 2009

  Последние пару дней HomeBrew Channel на моей Nintendo Wii настоятельно советовал мне обновиться до версии 1.0.3. Сегодня я не смог устоять перед его просьбами и, вместо того чтобы доиграть наконец Resident Evil 4, я нажал ему “Yes”. После установки Wii завис на чёрном экране. После выключения-включения питания приставка не подала никаких признаков жизни.
  Решив что получил брик, в расстроенных чувствах я стал искать гарантию. Не обнаружив оную, вспомнил что купил Wii в интернете… Однако, ПОЧИТАВ ИНСТРУКЦИЮ, я обнаружил, что надо ждать 2 минуты (на самом деле секунд 30 вполне хватает) перед включением если Wii завис.
  Тем не менее, новый HomeBrew Channel 1.0.3 нифига не работал и каждый раз приводил к чёрному экрану. Немного покопавшись в инете, я обнаружил причину.
  Оказывается, новый HomeBrew использует IOS 51 если он установлен и нет более старшего (например, 61). В своё время, ставя всякие хаки, я запорол IOS 51 так, что Shop Channel не запускался вообще.
  В общем, используя BannerBomb, я удалил HomeBrew, удалил IOS 51, установил HomeBrew (сел на IOS 50 на этот раз) и теперь уже завтра доиграю в Resident Evil !