В презентации рассмотрены следующие вопросы:
- технические и организационные подробности подготовки и проведения РусКрипто CTF 2010
- заложенные уязвимости, пути их обнаружения и эксплуатации
- хронология событий на РусКрипто CTF 2010 и не найденные игроками уязвимости
В презентации рассмотрены следующие вопросы:
- технические и организационные подробности подготовки и проведения РусКрипто CTF 2010
- заложенные уязвимости, пути их обнаружения и эксплуатации
- хронология событий на РусКрипто CTF 2010 и не найденные игроками уязвимости
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Vadim Kruchkov
Вадим Крючков [Long], руководитель группы разработки, компания Agunga
Считается (в общем случае — вполне справедливо), что писать демонов на PHP — моветон. Использовать для прототипирования интерфейсов взаимодействия — можно, а вот в продакшене ни-ни. Именно с таким представлением мы начинали разработку новой версии игры — проработаем интерфейсы взаимодействия с демоном, который к запуску будет переписан на высокопроизводительном С. Однако, первые тесты демона, написанного на PHP с использованием libevent, заставили нас серьезно задуматься — а нужен ли нам переход на С? Какую производительность нам удалось достичь? Течет ли память? Обо всем этом будет рассказано в докладе. А так же - особенности использования и недокументированные возможности расширения, облегчающие рутинные операции
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ontico
РИТ++ 2017, AppsConf
Зал Найроби + Касабланка, 5 июня, 11:00
Тезисы:
http://appsconf.ru/2017/abstracts/2584.html
Большинство современных мобильных приложений так или иначе работает с каким-то API (а зачастую и не с одним). Количество запросов при этом может достигать десятков в минуту и понимание того, что сейчас происходит в сетевом слое вашего приложения, становится непростой задачей.
Я расскажу и покажу весь диапазон современных средств для мониторинга и отладки сетевых запросов: от самых простых до узкоспециальных - с плюсами/минусами каждого из инструментов и областями их применения.
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineTanya Denisyuk
Докладчики расскажут о набитых шишках в управлении облаком, а так же других частях облачной инфраструктуры. Расскажут о расширении возможностей взаимодействия между компонентами облака, организации полноценного стриминга данных. Т.е. поделяться опытом создания облачного планировщика, оптимизирующего утилизацию ресурсов облака, профилирования приложения «на горячую».
Cocaine: погружение в облака — Евгений СафроновYandex
Всё больше и больше разговоров в последнее время занимают облака и технологии, с ними связанные. Многие программисты мечтают о том, чтобы писать масштабируемые и отказоустойчивые приложения было легко и просто. Многим администраторам хочется работать не с разношёрстным зоопарком программ, а в унифицированной и легко управляемой инфраструктуре. Наконец, серверам (наверняка) хочется использовать свои ресурсы на полезные дела, а не на обогрев воздуха.
В Яндексе мы решаем все эти проблемы с помощью собственной opensource технологии под названием Cocaine, которую может использовать любой желающий.
Что такое Cocaine, какие именно инфраструктурные проблемы он решает, какие возможности предоставляет — обо всем этом и пойдёт речь в докладе.
Поймай меня, если сможешь: защита от ботов с PT Application FirewallVsevolod Petrov
Большая часть трафика в веб-приложениях инициирована ботами. Наряду c поисковыми движками, службами мониторинга и RSS-коллекторами — так называемыми хорошими ботами, — к вашим приложениям обращаются и «плохие» — спам-боты, скраперы, взломанные мобильные или IoT-устройства. Для многих высокая посещаемость интернет-ресурса — показатель успешности проекта. Однако активность «плохих» ботов нагружает процессор, оперативную память, полосу пропускания и другие ресурсы. Все это увеличивает стоимость сопровождения веб-приложения и может привести к перебоям в работе сервиса.
На вебинаре мы расскажем, как можно защитить приложения от ботов с помощью PT Application Firewall, а также представим совместное решение с Approov для защиты мобильных приложений. Вебинар для широкого круга лиц, интересующихся защитой приложений.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Как на Node.js пройти путь от примитивного приложения «Hello world» до распределённого решения, состоящего из микросервисов?
Мы пройдём жизненный цикл продукта, начав с простого приложения на Node.js. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так, к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.
Построив, таким образом, архитектуру на чистом Node.js, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. В частности, научимся доставлять окружение и приложения при помощи Ansible, запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать при разработке фронтенда. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Vadim Kruchkov
Вадим Крючков [Long], руководитель группы разработки, компания Agunga
Считается (в общем случае — вполне справедливо), что писать демонов на PHP — моветон. Использовать для прототипирования интерфейсов взаимодействия — можно, а вот в продакшене ни-ни. Именно с таким представлением мы начинали разработку новой версии игры — проработаем интерфейсы взаимодействия с демоном, который к запуску будет переписан на высокопроизводительном С. Однако, первые тесты демона, написанного на PHP с использованием libevent, заставили нас серьезно задуматься — а нужен ли нам переход на С? Какую производительность нам удалось достичь? Течет ли память? Обо всем этом будет рассказано в докладе. А так же - особенности использования и недокументированные возможности расширения, облегчающие рутинные операции
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ontico
РИТ++ 2017, AppsConf
Зал Найроби + Касабланка, 5 июня, 11:00
Тезисы:
http://appsconf.ru/2017/abstracts/2584.html
Большинство современных мобильных приложений так или иначе работает с каким-то API (а зачастую и не с одним). Количество запросов при этом может достигать десятков в минуту и понимание того, что сейчас происходит в сетевом слое вашего приложения, становится непростой задачей.
Я расскажу и покажу весь диапазон современных средств для мониторинга и отладки сетевых запросов: от самых простых до узкоспециальных - с плюсами/минусами каждого из инструментов и областями их применения.
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineTanya Denisyuk
Докладчики расскажут о набитых шишках в управлении облаком, а так же других частях облачной инфраструктуры. Расскажут о расширении возможностей взаимодействия между компонентами облака, организации полноценного стриминга данных. Т.е. поделяться опытом создания облачного планировщика, оптимизирующего утилизацию ресурсов облака, профилирования приложения «на горячую».
Cocaine: погружение в облака — Евгений СафроновYandex
Всё больше и больше разговоров в последнее время занимают облака и технологии, с ними связанные. Многие программисты мечтают о том, чтобы писать масштабируемые и отказоустойчивые приложения было легко и просто. Многим администраторам хочется работать не с разношёрстным зоопарком программ, а в унифицированной и легко управляемой инфраструктуре. Наконец, серверам (наверняка) хочется использовать свои ресурсы на полезные дела, а не на обогрев воздуха.
В Яндексе мы решаем все эти проблемы с помощью собственной opensource технологии под названием Cocaine, которую может использовать любой желающий.
Что такое Cocaine, какие именно инфраструктурные проблемы он решает, какие возможности предоставляет — обо всем этом и пойдёт речь в докладе.
Поймай меня, если сможешь: защита от ботов с PT Application FirewallVsevolod Petrov
Большая часть трафика в веб-приложениях инициирована ботами. Наряду c поисковыми движками, службами мониторинга и RSS-коллекторами — так называемыми хорошими ботами, — к вашим приложениям обращаются и «плохие» — спам-боты, скраперы, взломанные мобильные или IoT-устройства. Для многих высокая посещаемость интернет-ресурса — показатель успешности проекта. Однако активность «плохих» ботов нагружает процессор, оперативную память, полосу пропускания и другие ресурсы. Все это увеличивает стоимость сопровождения веб-приложения и может привести к перебоям в работе сервиса.
На вебинаре мы расскажем, как можно защитить приложения от ботов с помощью PT Application Firewall, а также представим совместное решение с Approov для защиты мобильных приложений. Вебинар для широкого круга лиц, интересующихся защитой приложений.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Как на Node.js пройти путь от примитивного приложения «Hello world» до распределённого решения, состоящего из микросервисов?
Мы пройдём жизненный цикл продукта, начав с простого приложения на Node.js. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так, к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.
Построив, таким образом, архитектуру на чистом Node.js, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. В частности, научимся доставлять окружение и приложения при помощи Ansible, запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать при разработке фронтенда. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.
Принципы разработки ПО для iPhone с использованием акселерометра
Push-уведомления для разработчика и пользователя
1. Push-уведомления: механизм
работы и применение на
практике
Владимир Пузанов farcaller@hackndev.com
Владимир Кириллов proger@hackndev.com
Hack&Dev Team
2. Push-уведомления
также известны, как удаленные оповещения (remote notifications)
появились впервые в iPhone OS 3.0
обеспечивают способ уведомления пользовтелей о ожидающих их
данных
используют постоянное зашифрованное IP-соединение
приходят даже во время нахождения телефона в режиме ожидания
являются альтернативой приложениям, работающим в фоновом режиме
(которые запрещены на iPhone)
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 2 / 20
3. Механизм работы Push
Apple Push Notification
Services
Провайдер
ОПСОС
ОПСОС
Провайдер
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 3 / 20
4. Виды уведомлений
всплывающие сообщения
(поддержка UTF-8, шаблонов,
локализации и
пользовательского набора
кнопок)
бейдж-счетчик
звуковое уведомление
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 4 / 20
5. Регистрация на получение уведомлений
регистрация
UIApplication *app = [UIApplication sharedApplication];
[app registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert];
iPhone блокирует PDP-контекст в активном состоянии и устанавливает
TCP-соединение с PUSH-сервером
$ netstat | grep 5223
tcp4 0 0 79.124.146.15.51726 17.149.34.79.5223 ESTABLISHED
делегат UIApplication получает уведомление
- (void)
application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
с 32-байтным токеном
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 5 / 20
6. Проверка на наличие сообщений
Если iPhone не подключен к источнику питания, то раз в минуту происходит
следующий процесс
CPU 3 Baseband
Что там происходит? Есть пакеты?
Нету? Ну я дальше спать пошел
zzz..
1
2 PMU
exton2(bb) Разбуди CPU, мне скучно!
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 6 / 20
7. Получение уведомлений в приложение
PUSH-сообщение попадает в приложение, где его получает делегат
UIApplication:
- (void)
application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
userInfo:
{
aps = {
alert = "fancy message!";
};
msgtype = fancy;
}
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 7 / 20
8. PUSH-Сервер
устанавливает постоянное TLS-соединение с APS
передает маленькие (до 256 байт) пакеты с уведомлениями
целевое приложение определяется по TLS-сертификату, используемом
при установке соединения. Сертификаты и генерируемые токены
зависят от типа профиля production или testing которые
используются в provision профилях development и distribution
соответственно.
Структура пакета на C
#define PUSH_PKT_MAXSIZE 256
struct push_pkt {
struct push_pkthdr {
u_int8_t cmd; /* = 0 */
u_int16_t devtokenlen; /* = htons(sizeof(devtoken)) */
u_int8_t devtoken[32];
u_int16_t payloadlen; /* = htons(sizeof(payload)); */
} hdr;
u_char payload[PUSH_PKT_MAXSIZE - sizeof(struct push_pkthdr)]; /* json string */
} __packed;
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 8 / 20
9. Примеры формирования пакета на других
языках
PHP
function pack_message(token, message) {
$payload = json_encode($message);
$data = chr(0) . pack("n", 32) .
pack(’H*’, str_replace(’ ’, ’’, $token)) .
pack("n",strlen($payload)) . $payload;
return $data;
}
Python
def payload(token, data):
payload = ’00 ’ # 0 + u_int16_t 32 (network byte order)
payload += ’’.join(
[chr(int(token[i:i + 2], 16)) for i in xrange(0, 64, 2)])
payload += struct.pack(’!H’, len(data))
payload += data
return payload
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 9 / 20
10. PUSH-Сервер: по сокету на приложение
Сервер уведомлений
сокет {"aps":{ ... }} {"aps":{ ... }} {"aps":{ ... }}
sandbox: com.some.app
APNS
сокет {"aps":{ ... }} {"aps":{ ... }}
production: com.other.app
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 10 / 20
11. Шифрование пакетов
Transport Layer Security
потомок ветки протоколов SSL
инициация соединения происходит при помощи “рукопожатия”
выбор лучшего алгоритма шифрования, поддерживаемого обеими
сторонами
отправка клиенту сертификата и открытого ключа
генерация случайного числа и передача в зашифрованном виде
открытым ключом
генерация сессийного ключа
при правильном “рукопожатии” начинается обмен криптованными
данными при помощи сессийного ключа
поддерживает порядка 10 симметричных/ассиметричных алгоритмов и
хеш-функции
Реализации
OpenSSL, GnuTLS, NSS, JSSE
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 11 / 20
12. Путь сертификата
1 Создать новый уникальный Application ID на iDP
2 Создать приватный ключ
openssl genrsa -out private-key.pem 2048
3 Сгенерировать Certificate Signing Request
openssl req -new -key private-key.pem -out push.csr
Необходимо правильно заполнить Common Name и Email Address в
соответсвии с данными iDP
4 Сгенерировать на iDP push-сертификаты для CSR
(aps_developer_identity.cer и aps_production_identity.csr)
5 Сконвертировать сертификаты в формат PEM
openssl x509 -inform der -in aps_developer_identity.cer -out developer-cert.pem
openssl x509 -inform der -in aps_production_identity.cer -out production-cert.pem
6 Сгенерировать provision-профили для уникального Apple ID (с
поддержкой Push)
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 12 / 20
13. демонстрация кода сервера на Objective-C
Cocotron
http://cocotron.org
open-source проект, стремящийся реализовать API Objective-С по
документации Apple Cocoa
Objective-C Runtime
Foundation
AppKit
CoreFoundation
CoreGraphics
CoreData (в разработке)
портирован на несколько программных платформ
Darwin
Windows
Linux
Solaris
BSD (OpenBSD, FreeBSD)
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 13 / 20
14. демонстрация кода сервера на Objective-C
OpenBSD
http://www.OpenBSD.org
Only two remote holes in the default install, in a
heck of a long time!
имеет встроенную поддержку криптографии в
ядре
OpenSSL входит в комплект базовой системы
имеет полный набор сетевого инструментария в
комплекте (от netcat до bgpd)
имеет порт cocotron-gcc и cocotron
прекрасно выполняет функцию платформы
разработчика серверных (а также консольных)
приложений на Objective-C/Foundation
(например, сервер push для iPhone)
. . . даже используется на настольных и
мультимедийных системах
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 14 / 20
15. демонстрация кода сервера на Python
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 15 / 20
16. Сервер XML и JSON
С помощью сервиса HTTPush
(http://httpush.com/) можно значительно
упростить взаимодействие с клиентами
HTTPush предоставляет простой JSON или XML API для передачи
уведомлений на iPhone.
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 16 / 20
17. Возможности API HTTPush
Передача PUSH-уведомлений по HTTPS с использованием JSON или
XML
Поддержка групп подписчиков
Возможность передать увдомление:
одному подписчику
группе подписчиков
всем подписчикам (одного приложения)
Пример пакета для передачи уведомления подписчику (здесь <a>...</a>
ID приложения в HTTPush, а <r>...</r> ID подписчика для конкретного
приложения):
<?xml version="1.0" encoding="UTF-8"?>
<notification>
<a>05673b6d12c796afc0cb74849e60573949bf2521</a>
<b>{"aps":{"badge":1,"alert":"Hi from squidshot!"}}</b>
<r>test</r>
</notification>
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 17 / 20
18. HTTPush условия использования
неограниченное число приложений
неограниченное число пользователей (у одной учетной записи)
Sandbox Production
1000 уведомлений в месяц
1000 уведомлений в месяц
бесплатно
1€
предоплата
приобретенные уведомления
действителны в течение 3-х
месяцев
уведомления действительны
для всех приложений и
пользователей (можно делится
с друзьями)
В. Пузанов и В. Кириллов (Hack&Dev) Push-уведомления 18 июля 2009 18 / 20