...

суббота, 13 июля 2013 г.

Как хорошо вы знаете стандартную библиотеку?


сегодня в 15:07


Вопрос возник, потому что сам очень плохо помню стандартные АПИ языков, на которых часто пишу (Python, Java, JS). Это снижает производительность и настораживает: доктор, а я один такой?

В опросе верстальщики могут считать «стандартной библиотекой» атрибуты HTML-тегов и CSS-свойства.






4739


4






Developers, stick with Russians – work in London




Переводы с

карты на карту


Переводы

через QR-Код


Новая функция

«Мой контроль»



Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Microsoft подал в суд на американскую таможню за то, что та пропускает запрещённые Motorola

image

Microsoft обвинил американскую таможенно-пограничную службу в том, что та отказывается выполнять решение комиссии по международной торговле (ITC) о запрете импорта телефонов Motorola Mobility, являющейся подразделением Google, сообщает Bloomberg.


Запрет на импорт телефонов Motorola был наложен в мае прошлого года, когда ITC решила, что устройства Motorola Mobility нарушают патенты Microsoft на то, как мобильные телефоны синхронизируют события в календаре с другими компьютерами. Microsoft вчера подал иск на таможню, заявив, что запрет не соблюдается.



Как утверждаеся в жалобе Microsoft, таможенно-пограничная служба США после проведения тайных встреч с Google продолжает пропускать в страну телефоны Motorola Mobility, хотя Google не сделал ничего, чтобы убрать функцию, которая стала причиной запрета. Запрет на импорт должен действовать до апреля 2018 года, когда истечёт срок действия патента Microsoft.


«Таможня несёт полную ответственность за выполнение решений ITC, которые принимаются после полного судебного разбирательства и строгой правовой экспертизы», — заявили в Microsoft, — «Однако в данном случае таможня неоднократно игнорировала свои обязательства и делала это на основе секретных переговоров».


Motorola Mobility якобы убедила таможню, что запрет распространяется на синхронизацию через серверы Microsoft, а не Google, и получила отсрочку, чтобы изменения вступили в силу. Microsoft утверждает, что ITC ранее отклоняла эти доводы.


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Как хорошо вы знаете стандартную библиотеку?


сегодня в 15:07


Вопрос возник, потому что сам очень плохо помню стандартные АПИ языков, на которых часто пишу (Python, Java, JS). Это снижает производительность и настораживает: доктор, а я один такой?

В опросе верстальщики могут считать «стандартной библиотекой» атрибуты HTML-тегов и CSS-свойства.





Developers, stick with Russians – work in London




Переводы с

карты на карту


Переводы

через QR-Код


Новая функция

«Мой контроль»



Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


пятница, 12 июля 2013 г.

Человеческий парсер на Selenium WD


Начало




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

Постановка задачи




Как я видел решение данной проблемы написать парсер, написать скрипт рассылки. Парсер должен собирать данные объявлений с сайта( сайтом я выбрал «из рук в руки»), а рассылка должна отправлять мне на e-mail сообщения о новом лоте. Текст сообщения должен был содержать:


  • ссылку на объявление

  • короткий текст объявления

  • цена автомобиля

  • место продажи автомобиля


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

Парсер




Это был самый трудный шаг. Помнится мне, давным-давно, я писал парсер для одноклассников. На PHP. Сначала мне пришлось разобраться в самой соц. сети и понять каким магическим образом оно работает. Потом надо было запомнить все эти сессии, кукисы и последовательность перехода по ссылкам. А превращение всех этих мыслей в код? О ужас. Как же хотелось что бы все происходило понятно. Как хотелось не задумываться о том, что давным давно умеет делать браузер. Как хотелось, что бы моя любимая Наташа наконец-то поняла и главное увидела результаты работы, а не белый текст на черном фоне командной строки.

Вот поэтому и хотелось просто управлять браузером, что бы было понятно и видно. И тут, на сцену выходит Selenium WebDriver. С помощью которого можно управлять браузером, умея только грамотно выбрать селекторы(css, XPath). Логика работы парсера становится прозрачной. Нажать на кнопку, подождать, ввести данные, нажать на кнопку и все. И никаких кукисов. Ура! И главное я буду видеть все живьем, а не в логах.

Подготовительные работы




И так нам надо установить:


  • Java — для запуска Seleniuma.

  • Selenium — собственно сам Selenium.

  • Node.JS — все будет писать на js, поэтому без ноды никак.

  • Mongo DB — база данных.




Далее в папку с проектом надо будет установить несколько модулей для Node


  • wd — для работы с Seleium'ом.

  • async — для уменьшения вложенности нашего кода.

  • mongoose — для работы с базой.

  • swig — для формирования html файлов, которые отправляются на почту

  • emailjs — для отправки сообщений на почту

  • cron — для запуска наших скриптов каждые N-минут(секунд)




Напомню что установка модулей выглядит так:

npm install "имя модуля"




Теперь запустим наш selenium

java -jar "Путь к файлу с selenium'ом"




И сервер базы данных

mongod --dbpath "Путь к месту хранения базы"


Пишем парсер




Источник выбрал как уже сказал — «Из рук в руки». Теперь последовательность действий:

Отчищаем все куки

browser.deleteAllCookies();




Выбираем регион

image

Вот в это поле вводим регион, который нас интересует. Регион как и все другие параметры описываем в объекте, который будет указан ниже. Ввод региона и нажатие можно описать следующим псевдокодом:



//находи инпут для ввода региона
browser.elementByCss(LOCATOR.cssPath)
.then(function(el){
//набираем регион
return el.type(OPTION.region);
})
.then(function(){
//меняем локатор на первый город в списке
LOCATOR.className = '';
LOCATOR.cssPath = '.b-searchRegion > ul:nth-child(1) > li:nth-child(1)';
return browser.elementByXPath('//span[contains(text(), "' + OPTION.region + '")]');
})
.then(function(el){
//нажимаем на найденный элемент
el.click();
});


Дальше выбираем раздел(мне нужен «Легковые автомобили»)


image


Описать можно просто нажатием на ссылку содержащую определенный текст



//ждем несколько секунд
browser.waitForVisibleByPartialLinkText(OPTION.category,OPTION.elWait)
.then(function(){
//возврат элемента содержащего текст
return browser.elementByPartialLinkText(OPTION.category);
})
.then(function(el){
//нажимаем на найденный элемент
el.click();
})


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

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

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



//получаем элемент содержащий текст
browser.elementByXPathOrNull(locationXPath)
.then(function(el){
if(el) {
//получаем текст
return el.text();
}
else{
cb('Нет такого элемента - ' + locationXPath);
}
})




Стоп-сигналом для сбора данных служит отсутствие вот такой вот синей стрелочки «вправо» на странице результатов:

image

После сбора данных записываем их базу. И закрываем браузер.

Кстати вот объект который описывает параметры для поиска автомобиля.

OPTION = {
region : 'Нижний Новгород',//регион поиска
category: 'Легковые автомобили',//категория поиска
price : {from : 0 , to : 1800000},//цена
cy : 'RUR',//валюта
releaseYear : {from : 2010, to : 2013},//год выпуска
mileage : {from : 0 , to : 99000 },//пробег
mark : ['BMW','ВАЗ', 'Audi','Hyundai'],//марка автомобиля
model : ['X1', 'X3', 'X5'],//модель автомобиля
carcass : ['седан', 'хэтчбек'],//кузов автомобиля
transmisson : ['автоматическая', 'механическая'],//трансмиссия
motor : ['бензин'],//тип двигателя
gear : ['задний','передний','постоянный полный','подключаемый полный'],//привод
photo : false,//с фото
video : false,//с видео
district : ['Заречный','Нагорный'],//jrheuf
area : ['Автозаводский', 'Канавинский', 'Ленинский'],//районы
metro : { lines : ['Автозаводская', 'Сормовская'], //линии метро
station : ['Горьковская м.', 'Пролетарская м.']//станции метро
},
source : ['любой'],//источник объявлений
submitted : ['вчера и сегодня'],//время подачи объявления
ajaxWaitMilisec : 2000,//время ожидания ajax мл.сек
elWait : 3000//время ожидания элемента мл.сек
},


Работа с базой




Структура базы следующая

MONGODBSCHEMA : {
title : String, //короткое описание объявления
link : {type : String , unique : true},//ссылка на объявление
price : String,//цена автомобиля
location : String,//место продажи автомобиля
phone : String,//номер телефона подавшего объявления*
text : String, //полное описание объявления*
images : Array,//ссылки на машину*
sms : {type : Boolean, default : false }, //отправилась ли мне смс с этим объявлением*
email : {type : Boolean, default : false }//отправилось ли мне сообщение на e-mail с этим объявлением
}




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

Рассылаем оповещения на почту




Это самые простой момент. Используем для этого модуль emailjs. Выбираем все документы из базы у которых поле «email» установлено в «false». Отправляем на на мой почтовый ящик. Изменяем свойство«email» на «true» у отправленных. Открываем приложение телефона которое отображает наши письма и изучаем подходящие.

Выполняем все каждые N-минут




Используем для этого модуль cron. Запускаем каждые 20 минут сначала парсер, а затем рассылку писем.

Вот и все




Теперь я слежу за продажей автомобилей тогда, когда у меня под боком телефон. И нету неприятного осадка от сломанного мозга, хранящего в себе всю последовательность магических действий, как раньше с PHP(сам язык тут ни при чем). А есть чувство, что следующий парсер я напишу минут так за 60, просто узнав локаторы элемента. Весь код тут.

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

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


MikroTik + port knoking over ICMP

Совсем маленький пост рассказывающий, как отловить ICMP пакеты и отфильтровать их с логикой.

Реализуем технология port knoking на RouterOS через протокол icmp.


Прошу под кат.



Наверное нету смысла рассказывать, что такое port knoking, так как в интернете довольно-таки много описаний про него.

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

Я же вам покажу как можно реализовать данную технологию через протокол ICMP которые не поддерживает порты. И мы будем апеллировать размером ICMP пакета.


Добавляем себя в white_list




У нас есть правило в фильтре

[admin@kirilka] /ip firewall filter> print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=input action=accept protocol=tcp src-address-list=white_list_ssh in-interface=ether1 dst-port=22




Которое говорит, что разрешать входящие соединение по 22 порту (ssh), со всех адресов которые содержаться в white_list.

Добавим два правила

Зададим критерия, нужна простая проверка уз двух подходов. Пусть будет первых стук пакет размером 70, а второй 100, а также обязательно по два пакета.

Не забываем, что заголовок пакета ICMP 28 байт.

И так у нас вырисовывается следующая картина мы должны два раза стукнуться по ICMP с размером пакета 98байт и два раза стукнуться с размером пакета 128 байт.

Ловим первый пакет с размером 98 байт.


chain=input action=add-src-to-address-list protocol=icmp address-list=ICMP_SSH_98_stage1 address-list-timeout=1m in-interface=ether2 packet-size=98





Пакет размером 98 байт по протоколу ICMP заносим исходящий адрес в лист ICMP_SSH_98_stage1





Ловим второй пакет с размером 98 байт.


chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage1 address-list=ICMP_SSH_98_stage2 address-list-timeout=1m in-interface=ether2 packet-size=98





Пакет размером 98 байт по протоколу ICMP и исходящий адрес уже содержится в листе ICMP_SSH_98_stage1, то заносим исходящий адрес в лист ICMP_SSH_98_stage2





Мы поймали два пакета по 98 байт или 70 байт при отправлении.

Ловим третий пакет с размером 128 байт.


chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage2 address-list=ICMP_SSH_128_stage1 address-list-timeout=1m in-interface=ether1 packet-size=128





Пакет размером 128 байт по протоколу ICMP и исходящий адрес уже содержится в листе ICMP_SSH_98_stage2, то заносим исходящий адрес в лист ICMP_SSH_128_stage1





Ловим четвёртый пакет(последний) с размером 128 байт.


chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_128_stage1 address-list=white_list_ssh address-list-timeout=1h in-interface=ether1 packet-size=128





Пакет размером 128 байт по протоколу ICMP и исходящий адрес уже содержится в листе ICMP_SSH_128_stage1, то заносим исходящий адрес в лист white_list_ssh на 1 час.



Я специально сделал первый пример немного не правильно, чтобы вы смогли увидеть последовательность действий.

Для того чтобы всё заработало вам необходимо порядок правил переместить в обратном порядке. Смотри под спойлером.


Полностью таблица фильтров


[admin@kirilka] /ip firewall filter> print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=input action=accept protocol=tcp src-address-list=white_list_ssh in-interface=ether2 dst-port=22

1 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_128_stage1 address-list=white_list_ssh address-list-timeout=1h in-interface=ether1 packet-size=128

2 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage2 address-list=ICMP_SSH_128_stage1 address-list-timeout=1m in-interface=ether1 packet-size=128

3 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage1 address-list=ICMP_SSH_98_stage2 address-list-timeout=1m in-interface=ether1 packet-size=98

4 chain=input action=add-src-to-address-list protocol=icmp address-list=ICMP_SSH_98_stage1 address-list-timeout=1m in-interface=ether1 packet-size=98










Собственно здесь всё просто.

Поехали дальше удаляем себя из адрес листов.




Многие кто настраивают MikroTik используют защиту от перебора паролей Bruteforce wiki.mikrotik.com/wiki/Bruteforce_login_prevention

Бывает сам отрубаю себе руки. Так что сейчас мы будем удалять себя из листов в которые мы могли попасть.

И так используем наработки которые у нас были из прошлого примера изменим только конечный лист на plsdelme

[admin@kirilka] /ip firewall filter> print
Flags: X - disabled, I - invalid, D - dynamic
0 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_128_stage1 address-list=plsdelme address-list-timeout=1m in-interface=ether1 packet-size=128

1 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage2 address-list=ICMP_SSH_128_stage1 address-list-timeout=1m in-interface=ether1 packet-size=128

2 chain=input action=add-src-to-address-list protocol=icmp src-address-list=ICMP_SSH_98_stage1 address-list=ICMP_SSH_98_stage2 address-list-timeout=1m in-interface=ether1 packet-size=98

3 chain=input action=add-src-to-address-list protocol=icmp address-list=ICMP_SSH_98_stage1 address-list-timeout=1m in-interface=ether1 packet-size=98





Так же нам понадобиться скрипт следующего содержания:

:local wlist "plsdelme";
:local tmp "";
:local tmp1 "";

:if ( [/ip firewall address-list find ] != "") do={
:foreach i in [/ip firewall address-list find list=$wlist] do={
:set tmp [/ip firewall address-list get $i address];
:foreach x in [/ip firewall address-list find list~"blacklist"] do={
:set tmp1 [/ip firewall address-list get $x address];
:if ( $tmp1 = $tmp) do={
/ip firewall address-list remove $x;
}
}
}
}




Данный скрипт необходимо поместить в cron scheduler c интервалом меньшим чем время но которое мы добавляем адрес в лист plsdelme

Что делает сприпт?

Он ищет адреса в листах plsdelme и сверяет значения с листами ~«blacklist», если есть совпадение то удаляет эту запись.

Если вы немного модифицируете скрипт, то можно делать в принципе всё что угодно.

Хотя для этих целей, больше подойдёт использование API.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Роскомнадзор планирует блокировать ресурсы с информацией о заблокированных ресурсах

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

Владимир Пиков, представитель Роскомнадзора, в интервью РБК Daily заявил буквально следующее: «Мы считаем, что распространение ссылок на запрещенную информацию может быть расценено как популяризация этой информации». Таким образом, под раздачу рискует попасть самый крупный ресурс, освещающий блокировки в Рунете — «РосКомСвобода». Артём Козлюк, автор этого проекта, уже подтвердил, что в случае принятия данного законопроекта, его ресурс формально будет подлежать закрытию.


Этим дело не ограничится: законопроект предусматривает также полный запрет порнографической анимации, в которой любым образом может учавствовать реальный или вымышленный персонаж, не достигший совершеннолетия (прямо по любимой мозоли mithgol прошлись; по большому счёту, под это попадает весь хентай, значительная часть яоя, и прочей анимационной клубники).


Учитывая всё вышесказанное, новый законопроект потенциально ставит под угрозу любой крупный ресурс, в особенности форумы или чаны, и создаёт впечатление разработанного с целью максимально ограничить распространение информации о закрытии какого бы то ни было ресурса.


Дровишки взяты отсюда:

www.rbcdaily.ru/media/562949987831013

www.securitylab.ru/news/442309.php

lenta.ru/news/2013/07/12/criteria/


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Универсальный iRig для iPhone и Андроид своими руками или экономим 30 евро

Счастливые обладатели айфонов, вероятнее всего слышали про такую вещь как iRig, которая вместе с софтом от IK Multimedia (те самые авторы AmpliTube — софтверного гитарного комбика с педалями для PC) позволяют использовать их яблочную технику в качестве гитарного процессора. Однако цены на официальный iRig несколько завышены, мягко говоря. Плюс для меня огромным минусом данной вещи было отсутствие поддержки устройств на Android (о причинах несовместимости читайте далее).


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


Вступление (рождение идеи)




Я работаю простым программистом в одной конторе занимающейся МГ МН связью и Sip телефонией. При разработке клиентов под нашу Sip телефонию необходимо было тестировать качество связи, как работают разные кодеки и т.д. Есть не так много систем, которые заточены именно под это, но их стоимость нереально завышена, видимо это связано со слабой конкуренцией. Поэтому ко мне обратился коллега с идеей подключить телефон к комьютеру, да не просто так, а так чтобы компьютер определялся как гарнитура. Вооружившись гуглом я полез читать документацию по айфону, параллельно вышел на irig (у меня нет айфона и про айриг услышал впервые). В доках рассказывалось, что айфон, как и другие телефоны, для подключения гарнитуры используют Jack 3,5mm с 4 сегментами. Первые два используются для наушников, 3 и 4 питание и земля. Но тут начиналось самое интересное.

Дело в том, что у iphone (и других яблочных продуктов) порядок земли и питания отличается от тех что используется на андроидах.


На айфоне это выглядит так:


На андроиде 3 и 4 сегменты (если считать сверху-вниз) переставлены. Поэтому необходимо сделать аналог iRig, но только универсальный, не только под яблоко.


Немного о iRig




iRig представляет из себя пластиковый цилиндр с проводом для подключения к iphone/ipod/ipad, разъём для наушников (и вообще для вывода звука), вход для гитары. При своей простоте он позволяет сделать из яблочного девайса гитарный процессор, причём довольно неплохого качества! Видео в качестве пруфа:


К сожалению amplitube есть только под яблочные аппараты, под андроид пока в разработке, проблема связана с delay. На яблоке оно около 10мс, что достаточно для комфортной игры на гитаре, а под андроид 100-500мс задержки, играть невозможно. Об этом писали сами IK Multimedia. И это печально, так как хочется погонять это и на андроиде, а от количества медалей разбегаются глаза, вот только их часть:


Схемы такие схемы




Для айфона принципиальная схема выглядела приблизительно следующим образом:


Но её нужно было сделать:

1) Универсальной (возможность использовать на андроиде)

2) Практичной (какой-то бокс, коробочку)


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


Однако креатив и желание помочь коллеге сделали своё дело.

Развёл небольшую платку (скачать её можно в конце статьи), выглядит она следующим образом (прошу учесть, что всё подключается через провода, а не на саму плату, поэтому делал места припаивания именно для проводов а не элементов):



Здесь цифрами отмечены:

1) 4 дырочки, куда припаивается 4ёх жильный провод с 4ёх сегментным Jack 3.5mm (папа)

2) сюда приваивается 3 провода, которые идут к выходу на наушники (Jack 3.5mm мама)

3) сюда припаивается 3 провода, которые идут ко входу (микрофон), учитывая что вход на телефоне моно — левый и правый канал объединяются в один

4) Простой переменный резистор на 100 Ом, регулятор громкости входящего сигнала (на случай если с компьютера будет идти слишком сильный сигнал, т.е. слишком громкий, просто для удобства)

5) Здесь имеется перемычка между 2умя отверстиями

6.1-6.2) здесь припаиваются 6 проводов, подключаются к сдвиговому переключателю с 6ью лапками, хотя на самом деле я во второй версии использовал только 4 лапки, на лапку напаивал 2 провода сразу крест на крест. Но оригинальное подключение на картинке ниже:




Зелёные линии — основной вход

Синие линии — режим андроида

Жёлтые линии — режим айфона


Итог




Список использованного:

1) Плата 40 руб (на самом деле меньше, т.к. использовал только 1/4 от неё)

2) Ингридиенты для травки платы после ЛУТа (я использовал перекись с лимонной кислотой)

3) Резистор 10кОм смд — 1 руб

4) Конденсатор — 1 руб

5) Сдвиговый переключатель — был в наличии

6) Переменный резистор — был в наличии (а так рублей 10)

7) Корпус — баночка — было в наличии, но думаю рублей 10 она стоит.

Т.е. в обще сложности не считая перекиси и лимонной кислоты у меня вышло 52 рубля (максимум у вас выйдет рублей 100) и 1 час времени, вместо 30 евро. Качество звука почти не отличается (на слух я особо не заметил).


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



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

Так же на фото нет красной крышечки, она не попала в кадр (провод пропущен через неё).


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


Рекомендую: потереть баночку мелкой шкуркой, тогда она станет матовой, выглядит вообще класс :)


Ну и собственно линк:

Схема для SprintLayout


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Изучаем Storm Framework. Часть II

В первой части рассматривались базовые понятия Storm.

Разные классы задач предъявляют различные требования к надежности. Одно дело пропустить пару записей при подсчете статистики посещений, где счет идет на сотни тысяч и особая точность не нужна. И совсем другое — потерять, например, информацию о платеже клиента.


Далее рассмотрим о механизмы защиты от потери данных, которые реализованы в Storm.



Базовый пример




Spout


Если нам не важно были ли ошибки при обработке Tuple, то Spout отправляет Tuple в SpoutOutputCollector посредством вызова метода emit(new Values(...)).

Eсли мы хотим узнать успешно ли обработался Tuple, то вызов будет выглядеть как emit(new Values(...), msgId), где msgId это объект произвольного класса. В этом случае интерфейс ISpout предоставляет методы:


где msgId — это msgId с которым был вызван SpoutOutputCollector.emit.

Пример FailAwareSpout:

public class FailAwareSpout extends BaseRichSpout {
private Message[] messages;
// Skipped ...
private static class Message implements Serializable {
private String message;
private int failCount;

private Message(String message) {
this.message = message;
}
}
// Skipped ...
@Override
public void nextTuple() {
// Skipped ...
// Отправляем Tuple c msgId
outputCollector.emit(new Values(messages[messageId].message), messageId);
}

// Tuple обработан нормально
@Override
public void ack(Object msgId) {
Message m = messages[(Integer) msgId];

System.out.println("IN>> [" + Thread.currentThread().getId() + "] message " +
m.message + " processed successfully");
}

// Tuple не обработан
@Override
public void fail(Object msgId) {
Message m = messages[(Integer) msgId];
if(++m.failCount > MAX_RETRY_COUNT) {
throw new IllegalStateException("Too many message processing errors");
}
System.out.println("IN>> [" + Thread.currentThread().getId() + "] message " +
m.message + " processing failed " + "[" + m.failCount + "]");
// Вставляем в очередь на повторную обработку
sendQueue.addLast((Integer) msgId);
}
}




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

Bolt


Для того что бы Bolt мог информировать Storm о результатах обработки, он должен реализовывать интерфейс IRichBolt. Проще всего это сделать унаследовав класс BaseRichBolt.

Bolt информирует Storm o результатах своей работы посредством вызова следующих методов класса OutputCollector в методе execute(Tuple):


  • ack(Tuple) — обработка прошла успешно

  • fail(Tuple) — обработка завершилась с ошибкой


Пример FailingBolt:

public class FailingBolt extends BaseRichBolt {
OutputCollector outputCollector;
// Skipped ...
@Override
public void execute(Tuple tuple) {
// Skipped ...
outputCollector.ack(tuple); // Данные успешно обработаны
}
else {
// Skipped ...
outputCollector.fail(tuple); // Обработка завершилась с ошибкой
}
}
// Skipped ...
}





Пример использования: BasicFailApp, Spout FailAwareSpout и Bolt FailingBolt случайным образом генерирующий ошибки обработки.

В Bolt'ах унаследованных от класса BaseBasicBolt, ack(Tuple) вызывается после выхода из метода execute автоматически.


Anchoring




При обработке входного Tuple, Bolt может генерировать более одного выходного Tuple. Если Bolt вызвал emit(sourceTuple, resultTuple) то образуется DAG с вершиной в виде исходного Tuple и потомками в виде порожденных Tuple. Storm отслеживает ошибки процессинга всех узлов графа. В случае возникновения ошибки на любом уровне иерархии, Spout, породивший исходный Tuple, будет уведомлен вызовом fail. Пример MultiplierBolt:

public class MultiplierBolt extends BaseRichBolt {
// Skipped ...
@Override
public void execute(Tuple tuple) {
// Генерируем несколько исходящих Tuple из одного входящего
for(int i = 0; i < MULTI_COUNT; ++i) {
// Anchoring, привязываем исходящие Tuple к входящему
outputCollector.emit(tuple, new Values(tuple.getString(0) + " - " + i));
}
outputCollector.ack(tuple);
}
// Skipped ...
}




Пример использования Anchoring: TreeFailApp

В Bolt'ах унаследованных от класса BaseBasicBolt метод execute(Tuple, BasicOutputCollector) вызывается с коллектором BasicOutputCollector. Особенность BasicOutputCollector в том, что он автоматически делает Anchor на входной Tuple при emit.


Поскольку Storm является распределенной системой, Tuple могут передаваться с одного узла кластера на другой. В связи с этим Storm обеспечивает отслеживание таймаутов обработки. По умолчанию, весь граф должен быть обработан за 30 секунд, или Storm вызовет метод fail у породившего граф Spout'а. Таймаут можно изменить.


Код доступен на GitHub.


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Новая летняя версия «Простого бизнеса» 1.8.1.2. «Форт-Нокс»: определение номера, связь таблиц, ускорение работы с документами, делами

В самом разгаре лета, когда работать хочется все меньше, а отдыхать – все больше, вышла новая версия «Простого бизнеса». Команда разработчиков подготовила более 100 изменений, которые помогут Вам работать быстрее и продуктивнее, а, значит, у Вас будет больше времени для летнего отдыха. Теперь Вы сможете приветствовать клиентов по имени, настраивать клиентскую базу «под себя», связывать таблицы, создавать задачи под каждого клиента прямо из CRM, быстрее редактировать документы и видеть, какие дела сейчас в приоритете!

Подробнее о главных нововведениях.



Узнайте сразу, кто звонит, – появилось определение номера!

Это еще одна возможность улучшить работу с клиентами, ведь теперь Вы будете сразу знать, кто Вам звонит, и сможете поприветствовать звонившего по имени, а также переадресовать вызов нужному менеджеру.


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


В столбце «Поле с именем» можно указать несколько полей, например ФИО и должность контакта, которые будут выводиться в качестве данных контакта. Определитель покажет ФИО, должность, а в скобках – номер телефона.


image


Удобная настройка данных клиентов в CRM-таблицах


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

Появились настройки «развернутости» полей в таблицах. При включении этих опций можно указать:

– какие поля по умолчанию развернуты при добавлении новой записи;

– какие свернуты или отображаются, если заполнены, при редактировании записи.


image


Появилась связь таблиц!


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


image


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


Вы хотите хранить историю по клиенту в отдельной задаче? Тогда при создании записи по новому клиенту в CRM-таблице нажмите «Создать задачу» или «Связать задачу», если по этому клиенту она уже есть. В прикрепленной задаче можно будет хранить документы по клиенту, вести переписку. Туда же попадет e-mail-сообщение, если его отправить нажатием правой кнопкой мыши по соответствующей записи CRM-таблицы. В задачу можно отправить комментарий прямо из карточки клиента или открыть ее для просмотра. Теперь менеджерам не нужно искать задачу по клиенту – ее можно открывать прямо из карточки!


image


Не тратьте время на подготовку документов – редактировать стало еще проще!


На вкладке «Документы» добавились опции, позволяющие быстрее и проще редактировать шаблоны документов.

На панель инструментов добавлена кнопка «Пунктирная граница» – добавляет пунктирную границу при редактировании шаблона (например, для таблицы). Появился ввод многострочного текста. Документ можно менять прямо в окне шаблона, не открывая окно редактирования свойств поля.


В окне редактирования шаблона документа на панель инструментов добавлена функция выравнивания размеров ячеек (кнопка «Выровнять размеры ячеек»).


Экономьте время – следуйте красному сигналу!


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


image


Попробуйте новые функции, оцените их удобство.


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Чем бы вы стали заниматься, если…?

Друзья.

Я — программист с довольно большим стажем. Мое увлечение компьютерами пошло еще со школы, когда в 1998 году у меня появился мой первый Пентиум 3. С тех пор я твердо решил, что буду писать программы, чем и занимаюсь по сей день.


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


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


Немного поясню условия. Допустим, вы — программист. И вот, почему-то, вам больше нельзя этим заниматься. Абсолютно не важно, почему. Это может быть злой рок, неизвестный вирус, несчастный случай или религиозные убеждения. Просто нельзя и все. Нигде и никогда. Никак. Что бы вы такого начали делать? При этом выбор деятельности не ограничивается. Вы можете, если хотите, остаться в сфере IT (стать, например, тестировщиком). Или же пойти продавать пирожки в ларек. Или танцевать (при условии, что вы это умеете или будете учиться). Но ответ обязательно должен быть с учетом ваших реальных возможностей, т.е. если у вас нет слуха, то нельзя ответить «буду оперным певцом». И да, это должно приносить вам денег.


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


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


P.S. Не очень уверен с выбором хабов. Посоветуйте что-то более подходящее, если есть?

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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Экономическая эфективность и целесобразность введения VDI

Всем привет! Мы продолжаем наш цикл статей про виртуализацию и различные технологии hp, и на этот раз рассмотрим самый животрепещущий вопрос, по которому получили больше всего вопросов через различные каналы: на каком этапе целесообразно вводить виртуализацию рабочих мест, за какой период времени она начнёт экономить ваши средства и как можно сэкономить на внедрении VDI.

Image #1860681, 31.5 KB





Виртуализация вычислений — современная и достаточно новая услуга, её возможности и возможности экономии при помощи виртуализации с каждым годом растут, а крупные компании каждый год пытаются понять — пора или не пора им переходить на VDI. Крупнейшие IT-компании и монстры цифровой связи в России также рассматривают эту технологию и самым тщательнейшим образом анализируют всю возможную информацию в данной сфере. К сожалению, нам не разрешили разглашать некоторую информацию, но дали доступ к интересной статистике и накопленным данным, которые и позволили поделиться с вами экономической частью. Итак, прежде чем нестись к директору с предложением «А давайте всё здесь виртуализируем!» следует понять одну простую истину. Виртуализация сама по себе не приносит прямого дохода (кроме того случая, когда вы — системный интегратор по виртуализации, но это отдельная тема). ;)

На чем же тогда экономить и как? Основной экономический эффект от виртуализации — снижение капитальных и операционных расходов на поддержание парка ПК в актуальном состоянии. Вывод, в принципе, достаточно очевидный, однако он складывается из многих факторов. Один из операторов сотовой связи, перешедший на полностью виртуализированные рабочие места, передал нам интересную статистику, которая показала, как именно достигается экономия.




На первом месте идёт, как не странно, приобретение новых рабочих мест (и замена старых). В среднем рабочий ПК устаревает за 4-5 лет: «высыхают» блоки питания, «сыплются» накопители, очень часто (вы не представляете, насколько часто) выходят из строя мониторы. Рабочие места, отработавшие полный пятилетний цикл выглядят не лучшим образом: система «замусорена», винчестер регулярно похрустывает ограничителями хода считывающих головок, конденсаторы в дешевом блоке питания приходят в некондиционное состояние, а уж про количество пыли внутри системника и говорить нечего.

Тонкий клиент (что All-in-One решения, что отдельные «коробочки») зачастую лишён всех этих проблем как конструктивно, так и идеологически, а сам по себе он не устаревает — вычислительные мощности консолидированы в серверной стойке, гибкость и масштабируемость которой заложена в самой идее виртуализированных рабочих мест.


Вторая расходная статья — электроэнергия. Расход электроэнергии даже с учётом потребления мощных серверов и СХД оказывается на 30-50% ниже, и это отношение тем больше, чем старше парк ваших компьютеров. Сказываются дешевые блоки питания с не самым высоким КПД, их деградация, нерациональное использование мощности.


Третий прожигатель дыры в бюджете компании — ФОТ — фонд оплаты труда. Допустим, у вас в офисе 20 компьютеров и 2-3 сервера. Один системный/сетевой администратор обслуживает и софтверные вопросы, и аппаратные, и вообще на нём весь офис держится. А теперь представьте, что у вас несколько отделений по всему городу (а то и несколько филиалов по всей стране), в каждом из которых несколько сотен компьютеров. Время от времени их надо чинить, чистить, обслуживать, а все эти операции требуют квалифицированного специалиста, и одним универсальным дядей в свитере с оленями уже не обойтись. К тому же любая аппаратная поломка ПК приводит к простоям в работе пользователя. Использование тонких клиентов позволяет эффективно снизить как объём обслуживающего персонала, так и возможные издержки, вызванные простоем оборудования и затратами на его ремонт/обслуживание.


С преимуществами мы более-менее разобрались, теперь перейдём к сложностям, которые вас ждут, если вы решите внедрить у себя VDI.




Самые большие «потребители» финансов в VDI — тонкие клиенты, серверы и СХД. Причём затраты на покупку клиентов, серверов и жестких дисков примерно равны, а в сумме составляют более половины расходов.

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


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




Перед тем, как нести начальству наполеоновские планы на стол, следует убедиться в экономической эффективности перехода, рассмотреть основные модели перевода рабочих мест на VDI и оценить масштаб работ.

Ответьте для себя на следующие вопросы:



  • Как давно обновлялся парк ПК?




а) Парк компьютеров обновлялся 1-2 года назад;

б) Парк компьютеров обновлялся 4-5 лет назад;

в) Парк компьютеров обновлялся о_0?


  • Сколько в компании рабочих мест, которые быстро и безболезненно можно перевести на VDI?




а) У нас полно менеджеров, которым кроме браузера, клиента электронной почты, офиса и базы 1С не требуется ничего;

б) У нас много инженеров, работающих вместе над одним проектом (его разными частями);

в) У нас много узкоспециализированных специалистов, которым требуются различные по своим возможностям ПК.


  • Насколько надежны текущие компьютеры и как часто требуют внимания?




а) Постоянно ломается то то, то это, то «он смс ввести просит»;

б) Случаются поломки, но, как правило, всё лечится за несколько часов;

в) У нас надёжные и качественные компьютеры, если проблемы и случаются, то только с софтом / по вине пользователя (кофе пролил).

Если парк компьютеров обновлялся в течение последней пары лет, внедрять VDI сейчас — невыгодно, но можно начать готовить инфраструктуру: улучшить сеть, подготовить место для серверов, обновить СХД, если она есть.


Если компьютеры уже не молоды, но надёжны, их можно использовать как тонкие клиенты после соответствующей настройки и/или незначительной модернизации. Отработав ещё несколько лет, они позволят сэкономить на стартовой закупке тонких клиентов, а менять их можно по мере выхода из строя или просто через определённый промежуток времени, когда поддержка старого ПК станет менее выгодной, чем необслуживаемая простая железка с длительной enterprise — гарантией.


Если парк компьютеров изношен, а надёжность их вызывает у техперсонала шевеленье волос в самых различных частях тела — менять такие компьютеры стоит сразу же (или постепенно, по мере выхода из строя, переведя весь парк ПК в режим тонких клиентов).


Однообразие рабочих мест также является отличной рекомендацией к внедрению VDI: менеджерам по продажам, колл-центру и многим другим офисным служащим всё равно, какие железки стоят у них под столом, если работает привычный набор софта. Замена ПК на виртуализированные рабочие места позволит экономить на обслуживании (зоо)парка техники и на счетах за электричество. Инженерным командам также подойдут виртуализированные рабочие места (в каких-то случаях VDI, в каких-то RDS, у обеих технологий есть свои особенности и достоинства), а мультимониторные тонкие клиенты позволят удобно работать даже с самым сложным софтом.


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




Окупаемость напрямую будет зависеть от того, как и в каких количествах вы внедряете тонкие клиенты вместо обычных ПК. Использование текущих рабочих мест в качестве терминалов для VDI позволяет сэкономить на «стартовом пакете», но не избавляет от тех операционных расходов, которые связаны с обслуживанием этих компьютеров. В данном случае требуется рассчитать, сколько будет стоить обслуживание рабочих мест, например, ещё 2-3 года (3 года — как раз тот срок, когда экономический эффект от внедрения VDI становится очевиден), и насколько уменьшатся расходы за те же 2-3 года, если заменить эти компьютеры на тонкие клиенты. Подробный анализ текущей обстановки в вашей компании, оценка предложений компаний-интеграторов VDI и высокая надёжность виртуализированных рабочих мест позволят вам снизить количество расходов через несколько лет, существенно улучшив как условия работы, так и качество услуг.

p.s.: Большое спасибо компаниям, поделившимся статистикой и калькуляциями. Вопросы и пожелания ждем от вас в комментариях.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Лекарственное излучение


сегодня в 14:24


Наткнулся на такое ну очень занимательное видео.



А так же инструкиция по применению:


Самое грустное что «действующие» люди — сплошь ученые и доктора наук. Как такое может происходить в нашем, казалось бы адекватном, обществе?





Developers, stick with Russians – work in London




Переводы с

карты на карту


Переводы

через QR-Код


Новая функция

«Мой контроль»



Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Amazon, Reddit и Яндекс тоже платят разработчикам Adblock Plus

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

Недавно стало известно, что разработчики Adblock Plus получают деньги от Google за то, чтобы реклама от поисковой компании не блокировалась расширением. После публикации этой новости на Хабре со мной связались представители Adblock Plus и предложили провести интервью с одним из управляющих директоров компании Тиллем Фаида. Он не был особо откровенен, но поделился некоторыми деталями.


— На прошлой неделе немецкий сайт Horizont сообщил о том, что Google платит вам за то, чтобы ваше расширение не блокировало его рекламу. Вы можете подтвердить этот факт?

— Да, объявления и спонсорские ссылки в поисковой выдаче Google, а также реклама AdSense на сайтах их партнеров были внесены в список допустимой рекламы Adblock Plus.



— Это был единоразовый платёж или Google регулярно перечисляет вам какую-то сумму?

— Мы не разглашаем эту информацию.


— Какие у вас в целом отношения с Google? В марте ваше приложение, как и другие блокировщики рекламы удалили из Google Play, а теперь выясняется, что Google вас финансово поддерживает.

— Да, контекстная реклама Google была внесена в «белый список», что касается Google Play, это уже совсем другая история.


— Какие ещё компании платят за то, чтобы находиться в белом списке?

— Например, Amazon, Reddit, Яндекс и другие.


— Какую долю в вашем бюджете занимает финансирование со стороны этих компаний и какую — пожертвования пользователей?

— Мы не раскрываем это.


— Как в белый список может попасть обычный сайт с ненавязчивой рекламой?

— Для этого достаточно подать заявку через наш сайт (https://adblockplus.org/ru/). Далее заявленная реклама рассматривается на соответствие критериям Допустимой рекламы. Заявку видят участники форума, и каждый может принять участие в обсуждении спорных моментов и высказаться. Если реклама компании соответствует установленным параметрам, и ни у кого нет существенных возражений, мы ее одобряем и включаем в белый список.


— Adblock Plus — одно из самых популярных расширений для Chrome и Firefox. Ваше влияние настолько заметно, что вас называли интернет-мафией, которая вымогает деньги у веб-издателей за пропуск их рекламы. Какие у вас критерии для тех, чью рекламу можно показывать бесплатно, а с кого нужно брать деньги?

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


— Как много пользователей отключили показ ненавязчивой рекламы?

— Adblock Plus строго придерживается политики соблюдения конфиденциальности и не собирает данные о своих пользователях. Но по опыту общения с пользователями, могу предположить, что их не более 5 %. Когда реклама ненавязчива, многие находят ее очень полезной.


— У вас на сайте написано, что вы выступаете за обязательную поддержку Do Not Track. Не противоречит ли это идее DNT — ведь изначально рекламный рынок соглашался на DNT-систему, если она не будет включена у пользователей по умолчанию?

— Естественно, мы хотим требовать уважения частной жизни наших пользователей (обязательной поддержки DNT), но пока мы не в том положении, чтобы это требование как-то форсировать.


— В ответ на запуск белого списка от вас отделились сразу несколько форков. Ощутили ли вы уход какой-то части пользователей? Как вы намерены дальше конкурировать с аналогичными расширениями?

— Опцию показа рекламы можно отключить одним кликом, в форкинге нет нужды. При этом мы приверженцы идеи открытого кода, и, если кто-то использует наш, мы не против.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


QIWI Plastic для вас — на специальных условиях

Уважаемые жители Хабра, спасибо, что зашли в наш блог за подробностями акции. Мы разработали ее специально для вас, потому что хотим представить вам нашу карту QIWI Plastic (с июля она распространяется в новом черном дизайне). Мы хотим на простых жизненных примерах рассказать вам, где и как вам может пригодиться QIWI Plastic.





Первый пример – QIWI Plastic для фриланса. Удобно, потому что на нее вы можете получать гонорар за свои проекты, причем этот способ подойдет любому заказчику. Даже тому, кто ни разу не пользовался электронными деньгами.


Фрилансеры меня поймут: часто случается ситуация смовершенно глупая. Вы обсуждаете с заказчиком способ взаиморасчета, но камнем преткновения становится неопытность заказчика в электронных платежах. В данном случае QIWI Plastic облегчит жизнь обоим сторонам. Чтобы перевести вам деньги, достаточно знать номер вашего мобильного. Не нужен ни номер счета, ни номер карты – ни одного длинного номера, в котором можно запутаться или ошибиться.


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


Второй пример – путешествия. При чем тут QIWI Plastic? Очень просто. Если вам понадобятся дополнительные средства, ваши друзья и близкие могут перевести деньги прямо на карту моментально и без комиссии при помощи любого QIWI Терминала, мобильного приложения или на сайте Visa QIWI Wallet.


Третий пример — семейная карта. Этот кейс появился благодаря тому, что к одному QIWI Wallet вы модете привязать не 1, а 2, 3 и более карт. Далее – все просто: одна карта у вас, а вторая – у ребенка. Обе привязаны к вашему QIWI Wallet. В разделе «Отчеты» вы видите все операции, совершенные по обеим картам. В результате ваш ребенок имеет карманные деньги, а вы – уверенность в правильном расходовании средств. Отдельную карту вы можете завести для любого члена семьи на случай непредвиденных расходов.

Вы моментально получаете информацию обо всех покупках, совершенных по любой из карт, привязанных к вашему QIWI Wallet: бесплатное SMS оповещение и информация в разделе «Отчеты». Любую карту вы можете моментально заблокировать.


И в завершение мы хотим обратить ваше внимание на вопросы безопасности платежей. Почему мы рекомендуем QIWI Plastic для ежедневных оплат?


На карте QIWI Plastic, счет которой объединен с QIWI Wallet, удобно держать небольшую сумму на текущие и интернет- покупки. Такой картой можно расплачиваться в любых местах и на любых сайтах: ваши риски строго ограничены суммой денег в вашем QIWI Wallet, а саму карту в случае форс-мажора можно заблокировать и перевыпустить с новыми реквизитами. Главное, что вы не ставите под удар свои основные счета.


О каждом платеже вы получаете бесплатное SMS оповещение. Информация обо всех покупках по карте отражается в вашем QIWI Wallet в разделе «Отчеты». Заблокировать карту можно моментально при помощи SMS команды «QVP STOP» на номер 7494 или в QIWI Wallet в разделе «Мои карты». При помощи SMS вы блокируете сразу все карты, привязанные к вашему QIWI Wallet. А на сайте visa.qiwi.com вы можете заблокировать карты по-отдельности.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


[Перевод] Инфографика: доступ к мировой аудитории и ценность языков онлайн

Всем привет!

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


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


Добро пожаловать под кат.


Эта инфографика, созданная Common Sense Advisory, позволяет узнать, какие языки имеют наибольшую ценность в мировом онлайн-пространстве. Например, китайский язык дает вам возможность связаться с 22,7% жителей сети, но предоставляет доступ только к 6,1% общей покупательской способности интернета.


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



This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


[Перевод] Почему я не лезу в криптографию

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



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

Обычно узнаём об этом сразу же: у нас валятся тесты, где-нибудь в логах видны возникшие исключения, или мы слышим жалобы от наших клиентов — мол, то и сё перестало работать.


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


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


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


Добро пожаловать в мир криптографии.


Криптография не может быть «немного глючной». Не может быть «в целом рабочей». Либо она работает на 100% верно, либо вы зря вообще взялись за эту работу. Слабое звено рвёт всю цепь.


Хуже: разглядывая данные, которые программа производит на выходе, вы не заметите подвоха. Вы шифруете что-то, на выходе какой-то рандомный хлам. Вы дешифруете этот хлам — видите исходный текст. Вроде работает. Да?


На прошлой неделе была статья о бреши в генераторе случайных чисел в алгоритме сервиса cryptocat — отличный тому пример.


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


Но это всё не так. Баг присутствовал и случайные числа оказались недостаточно случайными.


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


Защита здесь — не просто дополнительная фича в комплекте к основным. В данном случае она и являлась основным функционалом.


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


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


Вы обязаны ставить перед собой цель достичь совершенства. Если достичь не удаётся — вы безнадёжны.


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


===

Автор перевода рекомендует заодно почитать habrahabr.ru/post/181372/


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Microsoft отказывается от SkypeKit и Skype Desktop API


сегодня в 12:11


Буквально несколько часов назад на почту упало два письма счастья, имевших большой общий кусок маркетингового текста о том, как скайп хорошо развивается, и как здорово разработчикам будет с ним взаимодействовать через огрызок старого API в виде скайповских URL.

Содержательная же часть заключалась в следующем:



In order to deliver a consistent Skype experience and because SkypeKit has never supported cross platform development, we have decided to de-commission SkypeKit. Going forward, developers will be able to write applications, which use features of Skype across all the major platforms, through the use of Skype URIs. We believe this will allow developers to create innovative mobile, web and desktop solutions, while retaining a familiar and consistent Skype experience across devices. For developers with innovative communications solutions in the enterprise space, I encourage you to explore the extensive Lync APIs.

Although we will continue to support SkypeKit for the next 12 months, in September the certification of new devices will cease. As a result, we wanted to give you notice now so you have the opportunity to modify your development in response to these changes.




As a consequence of this, we have decided to retire our Desktop APIs. These APIs were originally created in 2004 and do not support mobile application development. Going forward, developers will be able to write applications, which use features of Skype across all the major platforms, through the use of Skype URIs. We believe this will allow developers to create innovative mobile, web and desktop solutions, while retaining a familiar and consistent Skype experience across devices.

Although we will continue to support the Desktop API for the rest of 2013, in September the App Directory will close, chat functionality through the API will stop working and we will begin notifying users with messaging in Skype for Desktop. As a result, we wanted to give you notice now so you have the opportunity to modify your application in response to these changes.



Таким образом Skype Desktop API проработает до конца года (магазин приложений будет закрыт в сентябре), SkypeKit же ещё будут поддерживать 12 месяцев. В качестве альтернативы ему предлагается использовать Lync





Developers, stick with Russians – work in London




Переводы с

карты на карту


Переводы

через QR-Код


Новая функция

«Мой контроль»



Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Руткиты: проблемы безопасности и тенденции развития

В настоящее время очевидно смещение вектора компьютерных атак от массового заражения к целевым, точечным атакам. Как сказал Е. Касперский: «Девяностые были десятилетием киберхулиганов, двухтысячные были десятилетием киберпреступников, сейчас наступила эра кибервойн и кибертеррора». Иллюстрацией этому являются всем известные примеры: Stuxnet, Duqu, Flamer, Gauss, которые многие антивирусные компании причисляют к кибероружию.


Основные тенденции в компьютерной безопасности




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



Для обеспечения устойчивого и неопределяемого присутствия в компьютерной системе вредоносное программное обеспечение (ВПО) использует специальные механизмы, называемые руткит-механизмами. В результате ВПО работает незаметно как для пользователя, так и для средств защиты.


Казалось бы, разработчики ОС должны всеми силами противостоять сокрытию нелигитимного ПО, однако появление новой версии Windows не изменило ситуацию в лучшую сторону. Восьмерка переняла от своих предшественников часть уже знакомых механизмов защиты (UAC, ASLR, DEP, PatchGuard, цифровые подписи для драйверов), для которых существует возможность обхода. И представила несколько новых — Secure Boot, SMEP и ELAM, которые, однако, не сильно повысили уровень защищенности. О чем свидетельствуют демообразец буткита Stoned Lite Питера Кляйсснера и UEFI bootkit Андреа Аллиеви. А о возможности обхода технологии SMEP на Windows 8 уже писал А. Шишкин из компании Positive Technologies.



INFO



Согласно недавнему отчету британской Национальной аудиторской службы (NAO), наблюдается рост числа киберпреступлений, которые одной Великобритании обходятся в 18–27 миллиардов фунтов стерлингов ежегодно (bit.ly/14O9xy5).

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


Механизмы сокрытия в системе




Для сокрытия ВПО могут применяться различные методы. Впервые классификация механизмов сокрытия была выполнена Йоанной Рутковской в работе Introducing Stealth Malware Taxonomy. Предложенная ей классификация может быть расширена следующим образом (см. рис. 1).

Рис. 1. Схема классификации механизмов сокрытия программного обеспечения


Стеганографические механизмы скрывают истинное предназначение внедренных объектов маскировкой их под легитимные, например схожестью их имен с именами системных файлов. В результате вредоносные файлы видны пользователю, но не вызывают у него подозрения. Пример стеганографического сокрытия — использование сертификатов доверенных компаний для подписи вредоносных драйверов. Благодаря действительным сертификатам компаний Realtek и JMicron червь Stuxnet долгое время оставался незамеченным, а компоненты червя Flame имели цифровую подпись самой компании Microsoft.


Для работы стеганографических механизмов не требуется повышенных привилегий, также они переносятся на различные версии ОС Windows. Однако из-за отсутствия технических механизмов сокрытия такое ВПО может быть легко обнаружено и удалено. Большую опасность представляют комбинации стеганографических с другими механизмами сокрытия.


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


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


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


Вторая подгруппа руткит-механизмов, работающих «внутри» ОС, не добавляет новых обработчиков в систему, а особым образом изменяет структуры памяти, хранящие информацию о скрываемом объекте. Примеры таких структур, расположенных в системном адресном пространстве и представляющих интерес для руткитов: KRPCB, ETHREAD, EPROCESS, MODULE_ENTRY, _DRIVER_OBJECT, плюс БД зарегистрированных драйверов и служб, расположенная в пользовательском пространстве процесса SERVIСES.EXE.


Руткит-механизмы «вне ОС» основаны на установке собственного или модификации существующего обработчика событий в том или ином режиме работы процессора либо дополнительного аппаратного обеспечения. Для работы этих механизмов зачастую необходимо наличие набора микросхем с поддержкой требуемой технологии. Можно выделить руткит-механизмы, построенные на основе режима аппаратной виртуализации, режима системного управления и кода, использующего технологии Active Management Technology и V-PRO. Широко известный в узких кругах автор R_T_T в своих работах «Кремневый беспредел» описывает возможности и угрозы информационной безопасности не только от указанных технологий, но и от механизма обновления микрокода процессора (bit.ly/VRQD6O и bit.ly/104EsRB).



Интересная техника сокрытия руткитов



На конференции ZeroNight в 2012 году была представлена работа Д. Олексюка (aka Cr4sh) в которой описывался интересный способ размещения руткита не в файлах, а в реестре с помощью Differentiated System Description Table (DSDT). Преимущество данного способа в том, что ни одно средство для обнаружения руткитов не учитывает такую возможность.

Антируткиты




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

Из популярных внештатных средств, поддерживающих работу с Windows 8, можно выделить следующие: Gmer, XueTr, PowerTool, TDSSKiller (Kaspersky Labs).


С позиции обнаружения скрытых драйверов средства Gmer, XueTr и PowerTool имеют схожие алгоритмы работы, использующие для обнаружения побайтовый поиск в памяти фрагментов структур драйверов. Средство TDSSKiller для обнаружения драйверов использует несколько иной список, информация в который заносится при загрузке драйверов через штатные средства Windows.


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


Программно-аппаратные руткиты




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

С 2006 года компании Intel и AMD начали выпускать процессоры с поддержкой технологии аппаратной виртуализации. ПО, использующее технологию аппаратной виртуализации (или просто гипервизор), работает в новом режиме, более привилегированном, чем ОС. Технология аппаратной виртуализации позволяет запускать во вложенном виде несколько различных гипервизоров.



Исходные коды гипервизоров — драйверов для ОС Windows x86



Быстрее и проще всего создать свой гипервизор, взяв за основу один из существующих. Поэтому на диске ты сможешь найти следующие исходники:


  1. BluePill (версии 0.11 и 0.32) — демонстрационный образец гипервизора для систем AMD, после публикации которого и началось широкое обсуждение угроз ИБ от аппаратной виртуализации.

  2. vmxcpu — исходный код заглушки гипервизора Ш. Эмблтона (Sh. Embleton) для процессоров Intel, который уже готов к использованию.

  3. Invisible Lane (il) — исходный код авторского скрытого гипервизора, построенного на основе vmxcpu. Сокрытие осуществляется путем компрометации процессорного счетчика тактов TSC, величина компрометации может задаваться с точностью до одного такта.



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


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


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


В открытом доступе имеются два программных средства — BluePill и Vitriol, реализованные в виде драйверов, которые устанавливают гипервизор прозрачно для пользователя.


Обнаружением гипервизоров занимались как целые компании (Komoku, North Security Labs и другие), так и отдельные специалисты. Даже сама компания Microsoft опубликовала интерфейс для обнаружения гипервизоров, согласно которому необходимо выполнить инструкцию CPUID, предварительно записав в регистр EAX единицу. Далее необходимо проверить значение 31 бита регистра ECX; если он выставлен, то в системе присутствует гипервизор, а информация о его возможностях передается в структуре HV_CPUID_RESULT. Однако такой способ не защищен от компрометации.


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



Средства отладки гипервизоров



Специфика работы гипервизора не всегда позволяет использовать популярные средства отладки, такие как vBox (VMware) вместе с WinDbg, вместо этого можно использовать эмуляторы Bochs или AMD SimNow, однако они достаточно сложны в настройке.

Что же можно использовать:



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

  2. Отправлять отладочные сообщения на COM-порт. Этот способ использовали авторы BluePill, сохранив в исходнике реализации этих функций.

  3. Использовать отладочную плату, например «PTI8 Diagnostic Post Test Card Debug Card PCI Analyzer». При включении компьютера на LCD-дисплее этой платы можно будет увидеть POST-сообщения BIOS.



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


Обзор и классификация способов обнаружения гипервизоров




Вопрос обнаружения гипервизоров уже неоднократно обсуждался. На рис. 3 представлена классификация способов обнаружения гипервизоров, согласно которой все способы делятся на проактивные и сигнатурные.

Рис. 3. Классификация способов обнаружения гипервизоров


Временны́е способы обнаружения основаны на том, что статистики времени обработки заданных событий гостевой ОС существенно зависят от того, загружен гипервизор или нет: в присутствии гипервизора длительность обработки событий значительно больше. Данная особенность была использована товарищем R_T_T при обнаружении китайского гипервизора (xakep.ru/post/58104). Она позволяет сравнительно просто выявлять гипервизоры только в тех случаях, если нарушитель не предпринял меры для их сокрытия. В ситуациях, когда осуществляется целенаправленная компрометация счетчика либо временная выгрузка гипервизора из памяти (так называемая технология BlueChicken, которая использовалась в BluePill), известные временны́е способы не позволяют обнаружить гипервизор.


Детальное описание и сравнительный анализ указанных способов обнаружения представлен в работе bit.ly/ik_volume. Мы же уделим внимание временному способу обнаружения с использованием списка демаскирующих событий.


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


Чтобы оценить каждый из методов, были проанализированы средства обнаружения гипервизоров, результаты сравнения которых представлены в табл. 1. Под не скрытым гипервизором подразумевается отсутствие в этом образце компонента, обеспечивающего противодействие обнаружению. Под скрытым образцом подразумевается наличие в этом образце такого компонента. В табл. 1 знаки «+» и «–» показывают наличие (отсутствие) указанной характеристики соответственно.


Таблица 1. Сравнение средств обнаружения гипервизоров


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



  • временны́е способы не позволяют выявить гипервизоры в случае использования компрометации счетчика тактов либо временной выгрузки из памяти;

  • поведенческие способы не могут обнаруживать новые гипервизоры и неработоспособны на новых моделях процессоров;

  • способы на основе доверенного монитора виртуальных машин уязвимы к атаке «человек посередине» («man-in-the-middle»);

  • сигнатурные аппаратные средства неудобны в использовании и тиражировании, а программные средства нестойки к противодействию гипервизора;

  • все опубликованные способы и средства обнаружения не позволяют обнаружить несколько вложенных гипервизоров.


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



  • установки драйвера операционной системы;

  • модификации главной загрузочной записи жесткого диска;

  • внесения изменений в микропрограмму BIOS аппаратного обеспечения.


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


Предпосылки для обнаружения




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

Рис. 4. Схемы переключения между режимами работы процессора при выполнении набора безусловно перехватываемых инструкций в случаях его отсутствия (а) и присутствия (б)


В случае присутствия гипервизора возрастает не только абсолютное время выполнения трассы, но и значения статистических характеристик длительности выполнения, например дисперсии. Эта отличительная особенность и легла в основу предлагаемой методики обнаружения (подробный анализ схем переключения между режимами работы процессора и математическое обоснование можно посмотреть тут bit.ly/10nPPlY.


Методика обнаружения и ее анализ




Суть методики обнаружения состоит в расчете и сравнении статистических характеристик длительности выполнения трассы с пороговыми величинами.

Измерение длительности выполнения трассы проводилось для десяти инструкций CPUID с помощью процессорного счетчика тактов TSC на повышенном 31-м уровне приоритета IRQL. Результатами опытов являлись матрицы размером 1000 х 10, содержащие данные измерений длительности выполнения трассы, по которым рассчитывались различные статистические характеристики.


Для иллюстрации в табл. 2 приведены пороговые значения последовательной комбинации таких показателей, как дисперсии D ̅f и момента 4-го порядка M ̅f, полученных на различных ПК, для случаев отсутствия (ОТ) и присутствия (ПР) гипервизоров.


Таблица 2. Пороговые значения тест-статистик длительности трассы и их доверительная вероятность, полученные на различных ПК


В первом столбце табл. 2 номерами обозначены модели процессоров обследованных ПК:



  1. Intel Core 2 Duo E8200 с ОС Windows 7,

  2. Intel Core 2 Duo E6300 с ОС Windows 7,

  3. AMD Phenom X4 945 с ОС Windows Live CD XP (DDD).


В первых двух ПК использовался разработанный автором гипервизор (исходный код которого ты можешь найти на диске), реализованный в виде драйвера ОС, в третьем случае — специализированный гипервизор, получающий управление при загрузке ПК из BIOS.


Предлагаемая методика обнаружения нелегитимного гипервизора состоит из двух этапов: предварительного и оперативного, как представлено в табл. 3 (детальное описание методики: bit.ly/ik_volume).


Таблица 3. Пошаговая методика обнаружения нелегитимного гипервизора


Для противодействия этой методике скрываемый гипервизор должен компрометировать показания счетчика тактов не на постоянную величину, а на случайную, так, чтобы, с одной стороны, уравнять средние длительности выполнения трассы, а с другой — стабилизировать разброс длительностей выполнения трассы. Однако вопрос подбора закона распределения такой случайной величины остается открытым.


Правда, данная методика не лишена и недостатков (табл. 4).


Таблица 4. Недостатки и возможные решения методики обнаружения


Взгляд в будущее




Все, о чем мы до этого говорили, все эти методики сокрытия и обнаружения относятся к сегодняшнему дню. А что нам ждать от дня завтрашнего? По какому пути развития пойдут технологии создания руткитов? Можно дать волю воображению и с большой вероятностью предположить, что развиваться они будут по следующим направлениям:

  1. Руткиты в облаках и суперкомпьютерах. Зачастую для повышения производительности облачных вычислений используют аппаратную виртуализацию. При этом отсутствует информация о проверке таких систем на отсутствие нелегитимных гипервизоров.

  2. Руткиты во встраиваемых системах. Различные встраиваемые системы получают огромную популярность, это системы «Умный дом», «Умный город», системы в автомобилях и многие другие. Новая инициатива IBM Smarter Cities требует особого внимания, так как многочисленные компоненты системы обеспечивают жизнедеятельность большого количества людей, при этом представляя собой добычу для нарушителей.

  3. Руткиты в мобильных ОС. Внедрение руткитов в мобильные операционные системы уже давно не новинка.

  4. Руткиты в виде предустановленного ПО в планшетах


Не могу снова не упомянуть работу R_T_T, посвященную закладкам в военных ноутбуках Getac (bit.ly/Sf23yP). Там программные закладки были выполнены в виде софта от компании Compuware, именно той, которая выпускала мощный отладчик SoftICE. В настоящее время аналогичные закладки этой компании можно встретить в планшетах. К примеру, новые ThinkPad 2 с продвинутым уровнем защиты продаются уже с предустановленным ПО — «Enterprise-level security, with Trusted Platform Module and Computrace® Mobile».



WWW



Интересную работу, посвященную EFI-руткитам, но под OS Х, выполнил Loukas K: bit.ly/Pe1Dkl.

Итоги




Как видишь, технологии создания руткитов не стоят на месте, делая задачу их обнаружения все сложнее. Это превращает их в очень опасное кибероружие, способное оставаться незамеченным, но в нужный момент нанести точный и смертельный удар. Понимая всю их опасность, за рубежом создали специальные компании, занимающиеся исследованиями в области сокрытия и обнаружения программных закладок, такие как: DARPA и IARPA (США), DSTL (Великобритания), DRDC (Канада), COSTIND (Китай). Будем надеяться, что скоро и в нашей стране появятся полноценные кибервойска, пока же уровень безопасности (читай обороноспособность) в военных ведомствах оставляет желать лучшего.

Об авторе



Игорь Коркин (igor.korkin@gmail.com) — кандидат технических наук по специальности 05.13.19 «Методы и системы защиты информации, информационная безопасность». Работает в МИФИ, руководит научной работой студентов, готовит аспирантов. Занимается обнаружением программных закладок более шести лет, автор более десяти научных работ, победитель конкурса «Хакеры против форензики» на форуме Positive Hack Days 2012.



Впервые опубликовано в журнале «Хакер» от 05/2013.


Публикация на ISSUU.com


Подпишись на «Хакер»



P.S. Можете поделиться знаниями и интересными идеями, написав для ][? Дайте знать :). Мы платим гонорары, но это не должно быть главной мотивацией.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html