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

August 13th, 2015

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

дешёвый wizzair

May 7th, 2015

  Если кто-то думает, что у Ryanair плохой сервис, то стоит попробовать лететь венгерским дешёвым перевозчиком Wizzair.

  Для начала, рейс перенесут на час позже за неделю-две (деньги вернуть нельзя), потом, уже в аэропорту, ещё минут на 20. И конечно, не преминут задержать посадку на десяток минут и вылет ещё на столько же. В итоге, можно прилететь на пару часов позже времени, указанного при покупке билетов.

  Другие неприятные сюрпризы возникают в момент online-регистрации: посадочные талоны не предлагают сохранить или получить на имэйл – можно только сразу распечатать, что совсем не удобно сделать с телефона. Место в самолёте не фиксируется – пассажиры занимают места по мере загрузки в режиме живой очереди.

  В самолёт можно пронести только ОДИН предмет ручной клади – дамские сумки, пакеты из duty-free и остальное придётся как-то запихнуть в одну сумку, иначе не пустят на борт.

  Поесть в самолёте довольно трудно – из трёх вариантов бутербродов (единственная сколько-нибудь стоящая еда в меню) на моём рейсе не было ни одного. Было предложено печенье, но услышав что я говорю по-русски, стюард нагнувшись шёпотом сказал буквально следующее “Не советую вам это брать” :)

  Ну и выгрузили на взлетное поле в два часа ночи, как у лоукостеров принято.

Термостат heatmiser для Junkers

February 12th, 2015

  В течении зимнего отопительного сезона столкнулся с проблемой – газовый котел Junkers не отключает насос даже при неработающей горелке, постоянно гоняя воду и создавая лишний шум по ночам.
  В результате небольшого исследования, на официальном сайте был куплен внешний беспроводной термостат heatmiser. Из Британии доставили в течении недели.
  За подключение местные специалисты просят до сорока евро. Однако, доброе представительство Bosch в Латвии любезно выслало мне схему подключения – пару проводов воткнуть в дырки я смог сам бесплатно.
  Что нравится и чем я пользуюсь:

  • Термостат беспроводной, работает на перезаряжаемом аккумуляторе – можно переносить в любое место, а также крепить к стене в держателе. К Junkers подключается только приемник.
  • Четыре температурных режима на каждый из семи дней недели или пару рабочие-выходные. Например, в 8 часов включается 21 градус C, в 10:30 – 18C, вечером снова 21C и 17C на ночь. Работает с шагом в пол-часа.
  • Есть возможность единовременно переопределить текущий температурный режим до наступления следующего – поставить 23C вечером, а на ночь автоматически переключиться в предустановленный.
  • Можно выставить нужную температуру на определенный период – уходя на пол-дня ставим 18С на четыре с половиной часа. Затем термостат переключается в основной режим.
  • Есть режим блокировки экрана, который не позволяет менять режимы.
  • Светится в темноте, показывает время.

В целом, очень удобная штука и не понятно как я жил без неё раньше.

heatmiser - схема подключения к Junkers ZW32-KE


heatmiser - приёмник


heatmiser - термостат на столе


heatmiser - термостат в держателе на стене

Родос – записки путешественника

October 1st, 2014

Родос, главный город острова Родос

Парадокс – аренда квартиры 140мм рядом со старым городом на Родосе в сентябре (в среднем 28-30 градусов, каждый день солнечный) стоит столько же, сколько аренда дачного домика 45мм рядом с Йомас в августе (две неделе из четырех дождь).

Город Родос расположен на склоне горы – с одной стороны ветер и волны, с другой – спокойное теплое море.

Западное побережье

Read the rest of this entry »

memcache и грабли eviction

July 23rd, 2014

  Есть в memcached такая неприятная штука как eviction. Случается когда свободной памяти не осталось для выделения новых страниц в slab, а свободных чанков в slab-e тоже нет. Тогда в slab-e берется какой-нибудь занятый чанк и затирается новыми данными. И это не взирая на то, что в соседних slab-ах могут быть свободны целые страницы – если страница выделена в slab, она останется там навсегда. Если не воспользоваться штукой под названием Slabs Automove. Иначе можно найти знатные грабли как мы. Read the rest of this entry »

vqmod xml для Cupid темы Opencart

July 18th, 2014

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

DEAC и электричество

May 30th, 2014

  Давненько ничего весёлого, достойного рассказа, не случалось с железками inbox.lv в DEAC. Происходили мелкие неурядицы, что-то быстро решалось и чинилось. Но вот в понедельник случился очередной epic fail.
  Предыстория примерно следующая: в DEAC находятся примерно с десяток стоек с оборудованием сервиса inbox.lv, запитанных на разные электрические фазы для снижения нагрузки на сеть.
  Прекрасным утром понедельника система мониторинга предупредила об отключении части оборудования в датацентре. Служба поддержки DEAC однако уверенно сообщила что все сервера включены и проблем нет.
  Возникла идея о проблеме со свичами – сотрудник DEAC на месте сходил в серверную и по нашей просьбе отключил некоторые коммутаторы от электричества, затем включив обратно. Что однако не дало ожидаемого результата – по сообщению сотрудника на свичах не было никакой активности.
  Наши ребятки поехали на место.
  По прибытию в DEAC обнаружилось отсутствие электричества в части розеток – кто-то в DEAC решил отключить одну из фаз электричества, питающую наши стойки. Без какого-либо предупреждения. Без уведомления собственного технического персонала. Технического персонала, который не может отличить включенный коммутатор от обесточенного.
  Сервис inbox.lv частично был недоступен примерно час.

playlist.m3u для IPTV Lattelecom

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

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. Но это уже без меня.

Tropea – городишко на юге Италии

August 16th, 2013

  Тропеа – небольшой уютный сонный городок на юге Италии с пляжем и мороженным, булками и макаронами, персиками и помидорами, вином красным и белым. Девиз города – “Ешь – бухай – купайся – покупай сувениры”. В конце июля Тирренское море прозрачное и тёплое, днём на пляже жарко даже под зонтиком, народу – не протолкнуться.

Главная достопримечательность Тропеа


Больше картинок Read the rest of this entry »

Как не надо делать бэкап скрипт

July 5th, 2013

  Вот таким печальным образом некто mikus@hostnet.lv делает бэкапы удалённых linux серверов. Тут вам в 10 строках и создание полной копии в /tmp папке без ограничения прав доступа, и передача через сеть в нешифрованном виде, и использование национальных слов наряду с английскими, и запутывание логики в следствии то ли отсутствия логического мышления, то ли неумения пользоваться командой man.
  ”Ietaupiet līdz pat 80% no saviem IT izdevumiem, izmantojot ārpakalpojumu LINUX serveru administrēšana” – написанно на сайте hostnet.lv. Вот что бывает при экономии 80% – linux начинают администрировать сельские сторожа.

#!/bin/bash

LOCALHOST=cargomix.hostnet.lv
DATE=$(date +%Y-%m-%d)
HOST=”webconcept.lv”
LOGIN=”backup”
PASS=”XXXXXX”
PORT=”21″
REMOTEDIR=”www/”$DATE
BACKUPDIR=”/tmp/all_backup/”;
ADMINEMAIL=”mikus@hostnet.lv”

mkdir -p $BACKUPDIR/;

# var/log

for directory in etc root var/spool/cyrus var/lib/mysql var/lib/cyrus; do
cd /$directory;
echo “Backuping /$directory…”
mkdir -p $BACKUPDIR
dir2=$(echo $directory | cut -d “/” -f 2)
tar cfz /tmp/all_backup/$dir2.tar.gz . > /dev/null ;
#rm -rf $BACKUPDIR$directory
done

if
ncftpput -u $LOGIN -p $PASS -P $PORT -Rm -r 10 -DD $HOST $REMOTEDIR $BACKUPDIR*;
then
echo “Backup Succsefull”;
echo “Backup was succesfull at $LOCALHOST” | mail -s “$LOCALHOST all backup succsesfull – $laiks” $ADMINEMAIL;

else
echo “Backup Error”;
echo “Backup ERROR at $laiks.” | mail -s “ALL BACKUP ERROR $LOCALHOST” $ADMINEMAIL;
fi

rm -rf $BACKUPDIR/;

Мексика в панорамах

June 30th, 2013


Улицы Теотиуаканы


Вид с пирамиды Солнца


Вид с пирамиды Луны


Терраса в Aldea Thai в Плая дель Кармен


Сенот


Чичен-Ица – Пирамида Кукулькана


Канкун – пляж зоны отелей

(не) покупайте билеты у KLM

June 30th, 2013

  Забавная история приключилась со мной при перелёте по билетам, купленным у KLM. Похоже, от такого нельзя быть застрахованным при полёте с любой авиакомпанией и надо быть просто более внимательным.
  В общем, купил билеты RIX-CDG-MEX и обратно плюс багаж у KLM (он же Air France). Между Ригой и Парижем летит airBaltic, а далее Aeroméxico. Стыковка выглядела очень удачно – пять часов в одну сторону и час обратно. До Мехико долетел без приключений. Но вот путь в обратную сторону доставил массу впечатлений.
  При сдаче багажа, работники Aeromexico сообщили, что не знают про такую компанию как airBaltic и не имеют с ней договора. Мой багаж они могут отправить только в Париж. И то, что за час стыковки я никак не могу забрать багаж и сдать его снова в большом аэропорту Шарль-де-Голль, это не их проблема. Но пометили багаж как приоритетный.
  Самолёт в Париж прилетел с двадцатиминутным опозданием. Бегом-бегом к стойке KLM в трансферной зоне, где мороженная коренная француженка 20 минут (!) узнавала из какого же терминала летит airBaltic и что мне делать. В результате – “у Вас есть 15 минут чтобы забрать свой багаж в терминале F и сесть в самолёт в терминале D. Вам на это потребуется минимум 20 минут”. Е%@>!. Бегом-бегом по незнакомому аэропорту забрать 30-ти килограммовый чемодан в терминала F, на поезде в терминал D и к стойке регистрации airBaltic. Где мне заявили, что я могу лететь, но без чемодана – погрузка багажа уже давно закончена. Потом вроде сжалились и разрешили за 60 евро взять чемодан с собой, выкинув предварительно все жидкости. Пришлось отказаться. Самолёт улетел в Ригу без меня.
  Оставшись в лёгком расстройстве, после 11ти-часового ночного перелёта из Мексики в огромном аэропорту, неспавши уже часов 20, побрёл в KLM выяснять отношения. К счастью, мне попался негр, который, поудивлявшись на мой билет и время стыковки, постучал в компьютере, сделал несколько звонков и в течении часа выдал мне талоны на еду и гостиницу, а также билет в Ригу на следующий день.
  Я легко отделался. Вот урок: если стыковочные рейсы выполняют разные авиакомпании, времени пересадки должно хватать чтобы выйти из транзитной зоны, забрать багаж, зарегистрировать багаж (закрывается за 40 минут до вылета) и плюс запас на задержку рейса. Итого – минимум два часа.

Apple включился в рассылку спама

April 4th, 2013

  Ну вот и Apple наконец включился в ряды рассадников спама

Received: from nk11p00mm-asmtp007.mac.com (nk11p00mm-asmtp007.mac.com [17.158.161.6])
	by timmy2-world.inbox.lv (Postfix) with ESMTP id C9F037A2AF;
	Thu,  4 Apr 2013 17:41:06 +0300 (EEST)
Received: from nk11p00mm-spool001.mac.com ([17.158.161.66])
 by nk11p00mm-asmtp007.mac.com
 (Oracle Communications Messaging Server 7u4-26.01(7.0.4.26.0) 64bit (built Jul
 13 2012)) with ESMTP id <0MKQ00BJXJFW4T80@nk11p00mm-asmtp007.mac.com>; Thu,
 04 Apr 2013 14:41:04 +0000 (GMT)
X-Proofpoint-Virus-Version: vendor=fsecure
 engine=2.50.10432:5.10.8626,1.0.431,0.0.0000
 definitions=2013-04-04_06:2013-04-04,2013-04-04,1970-01-01 signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=2 spamscore=2
 ipscore=0 suspectscore=0 phishscore=8 bulkscore=59 adultscore=0
 classifier=spam adjust=0 reason=mlx scancount=1 engine=6.0.2-1302030000
 definitions=main-1304040118
MIME-version: 1.0
Content-type: multipart/alternative;
 boundary="Boundary_(ID_Vs8e2PQobGsy2cSz91CBKg)"
Received: from localhost ([17.158.59.150]) by nk11p00mm-spool001.mac.com
 (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug
 10 2011)) with ESMTP id <0MKQ0007PJG43R00@nk11p00mm-spool001.mac.com>; Thu,
 04 Apr 2013 14:40:52 +0000 (GMT)
From: "Notification." rwdori@icloud.com
Subject:
Date: Thu, 04 Apr 2013 14:40:44 +0000 (GMT)
X-Mailer: iCloud Mail (1P45)
X-Originating-IP: [41.150.73.228]
Message-id: cfb83474-841a-400d-b656-267d3b3be219@me.com
To: Undisclosed recipients: ;
X-SpamTest-Envelope-From: rwdori@icloud.com
X-SpamTest-Group-ID: 00000000
X-SpamTest-Info: Profiles 44563 [Apr 04 2013]
X-SpamTest-Info: {TO: undisclosed}
X-SpamTest-Method: none
X-SpamTest-Rate: 20
X-SpamTest-SPF: SPF engine error
X-SpamTest-Status: Not detected
X-SpamTest-Status-Extended: not_detected
X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0284], KAS30/Release
Reply-To: rwdori@icloud.com

--Boundary_(ID_Vs8e2PQobGsy2cSz91CBKg)
Content-type: text/plain; CHARSET=US-ASCII; format=flowed
Content-transfer-encoding: 7BIT

Your email has received five hundred thousand dollars. Winning No: 10 20 5 1 14 26, Ref Number: 19M3178BD, Batch Number 05/DJKL.

--Boundary_(ID_Vs8e2PQobGsy2cSz91CBKg)
Content-type: multipart/related;
 boundary="Boundary_(ID_HqMozf5uqJ66kFgZKQQ5dw)"; type="text/html"

--Boundary_(ID_HqMozf5uqJ66kFgZKQQ5dw)
Content-type: text/html; CHARSET=US-ASCII
Content-transfer-encoding: 7BIT

Your email has received five hundred thousand dollars. Winning No: 10 20 5 1 14 26, Ref Number: 19M3178BD, Batch Number 05/DJKL.

--Boundary_(ID_HqMozf5uqJ66kFgZKQQ5dw)--

--Boundary_(ID_Vs8e2PQobGsy2cSz91CBKg)--

5 проданных копий за месяц

March 1st, 2013

  Минул ровно месяц с публикации моего первого платного расширения Custom Sales Reports vQmod для электронного магазина OpenCart. Пять копий было купленно по $10. Бесплатную версию скачали почти 1000 раз.
  35 баксов конечно не покрывают стоимость разработки (которую оплатил заказчик), однако кажадая продажа приносит чувство морального удовлетворения и минуты радости.

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

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 по подобию, думаю, труда не составит.

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

February 5th, 2013

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

Мобильный inbox.lv

November 12th, 2012

LMT рекомендует


  Вот и LMT рекомендует уже… Итак, стараниями Мариса и Николая у inbox.lv появилась мобильная версия для смартфонов – https://m.inbox.lv. И это только вершина айсберга, JavaScript код, работающий на клиенте. Этот же код, скомпилированный в родное приложение, доступен для Andorid, скоро в AppStore, в телевизорах LG и далее в космос.
  Основой всему этому безобразию служит REST API, сработанный на Java, предоставляющий доступ к данным пользователя. При наличии желания (и документации ;)), почту inbox.lv теперь можно впилить во что угодно.

Электронный билет airBaltic

October 11th, 2012

  Теперь действительно электронный !
  В RIX считывают с телефона, в DME надо распечатать бумажный в автомате у check-in-а
Read the rest of this entry »

YaC 2012 в Москве

October 9th, 2012

Машина по печати бейджей

  Слетал по работе в космос на конференцию по новым компьютерным технологиям на историческую родину в Москву на YaC 2012. Дорога оказалась на удивление лёгкой – всего час лететь и час ехать до красной площади. Виза вот только семьдесят латей.
  Москва впечатляет своими огромными зданиями ЖК, пятиполосными дорогами в центре города с пробками с восьми и до одиннадцати, паутиной метро. Все на русском, включая английские слова. Много (где-то треть) людей с раскосыми глазами и приплюснутыми носами. И дорого всё кроме бензина. Пиво в баре по пять лат.
  Сама конференция выдалась премного интересной. Работники Яндекс рассказывали о своих технологиях и процессах, делились опытом. Также выступали сторонние докладчики. Услышал сравнение на практике Кассандры с Монго при развертывании отказоустойчивой базы данных (не в пользу первой). Ребята из Parallels сообщили, что их патчи checkpoint/restore всё-таки не взяли в ванильное ядро и они решили пилить userspace версию, выпустив практически рабочую версию 0.2. Кто-то хвалил Illumos и smartOS с такой надёжной ZFS. Потом кормили. Удивительная черта москвичей собираться в охринительные очереди и спокойно в них стоять.
  Пообщался с “генератором” Поляковым и Ко на тему elliptics. Оказалось, они хранят в нем карты, резервную копию почты и многое другое. Человек из Yandex.Disk раскрыл некоторые детали сервиса и сообщил что тоже думают переезжать на elliptics. Заболтавшись, опоздал на тему про Cocaine. Узнал, что Yandex сделали поиск для Турции за пар лет и не против сделать поиск и для какой-нибудь еще страны. Интересным оказался доклад о введении ipv6 и проблемах, с которыми вводящие столкнулись и как они их героически решали. На сессии по OpenFlow главным задаваемым вопросом было “зачем же он нужен ?”, а презентация про ipvs оказалась сильно банальной, но с веселыми картинками.
  В качестве бонуса получил майку и сделал эксклюзивную фотку Solar Designer-а.
  Вечером раздавали пиво с закуской и играли музыку. Однако местные уже после восьми стали расходится. Наверное в шесть утра вставать на работу.
Read the rest of this entry »