пятница, 25 ноября 2016 г.

Бесплатные технические книги в электронном виде

Коллекция ссылок на бесплатные (не ворованные) технические книги собрана на ресурсе devfreebooks.github.io. Там есть книги по различным языкам разработки, фреймворкам, протоколам. Некоторые книги доступны для скачивания, а некоторые только для чтения онлайн.

понедельник, 8 августа 2016 г.

Польза архитектуры для создания безопасных продуктов



Завтра (9 августа 2016) выступаю в Летней школе CTF с лекцией о пользе архитектурных артефактов для создания безопасных решений. Пока выяснял как туда лучше доехать выяснил интересный факт из жизни Подмосковья:
  • Маршрут Зеленоград — Университет Дубна: около 140 км на автомобиле и примерно 5 часов на общественном транспорте.
  • Маршрут Зеленоград — Мариинский театр: около 680 км на автомобиле и примерно 5 часов на общественном транспорте.
Отсюда выводы: во-первых, Питер стал невероятно близок к Москве после появления скоростных поездов, и это невероятно круто. Во-вторых, подмосковные центры научного притяжения до сих пор остаются сложнодоступными и это очень печально.

Видео доклада:

понедельник, 1 августа 2016 г.

Создаем и публикуем модуль Python



В прошлый раз я описал шаги по освоению Питона для разработчика С++. Теперь, разобравшись с основами, можно начинать создавать свои первые проекты. Как и в других языках для этой цели разработчики используют какой-либо фреймворк, который зачастую определяет структуру программы, но этот путь может быть опишу в другой раз. Сегодня посмотрим на структуру типичного пакета Python.

понедельник, 6 июня 2016 г.

 Мой путь из C++ в Python

Этот текст кратко поясняет как мне удалось быстро начать писать программы на Python. Все, что описывается, основывается на личном опыте и ощущениях, и поэтому может не описывать тот самый единственно верный путь. Тем не менее, изложенная информация агрегирует знания, которые пришлось собрать, чтобы создавать собственные проекты на Python. Для начала не огромные высокопроизводительные системы, но и на C++ вы тоже не сразу стали выдавать шедевры. Если у кто-то посчитает, что тут не хватает важных вещей, о который обязательно нужно сказать, то в комментариях можно это отметить.

вторник, 17 мая 2016 г.

hex dump


Постоянные пользователи Vim наверняка слышали об утилите xxd. Она позволяет вывести дамп указанного файла. Выглядит это следующим образом:
$ xxd -l 64 db.sqlite3 
0000000: 5351 4c69 7465 2066 6f72 6d61 7420 3300  SQLite format 3.
0000010: 0400 0101 0040 2020 0000 0013 0000 0024  .....@  .......$
0000020: 0000 0000 0000 0000 0000 0017 0000 0004  ................
0000030: 0000 0000 0000 0000 0000 0001 0000 0000  ................
Параметр -l 64 указывает, что нужно вывести только первые 64 байта. Есть еще один любопытный параметр (-i), который позволяет сгенерировать код, и его можно сразу вставлять в C или C++ файл:
$ xxd -i -l 64 db.sqlite3
unsigned char db_sqlite3[] = {
  0x53, 0x51, 0x4c, 0x69, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
  0x74, 0x20, 0x33, 0x00, 0x04, 0x00, 0x01, 0x01, 0x00, 0x40, 0x20, 0x20,
  0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
  0x00, 0x00, 0x00, 0x00
};
unsigned int db_sqlite3_len = 64;
Параметров для генерации кода для других языков не предусмотрено. Но это поправимо. Например, мне понадобилось вставить код в модульные тесты на Python 3. Помог в этом потоковый редактор sed:
$ xxd -l 64 -g 1 -u db.sqlite3 | sed -e 's/.\+: /b"\\x/g' -e 's/  .*/"/g' -e 's/ /\\x/g'
b"\x53\x51\x4C\x69\x74\x65\x20\x66\x6F\x72\x6D\x61\x74\x20\x33\x00"
b"\x04\x00\x01\x01\x00\x40\x20\x20\x00\x00\x00\x13\x00\x00\x00\x24"
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x04"
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00"
И кстати, вскоре я поделюсь опытом как быстро начать писать программы на Python.


Книги по теме:
  1. Дню Нейл. Практическое использование Vim
  2. Марк Лутц. Программирование на Python. Том 1

вторник, 5 апреля 2016 г.

В Visual Studio добавилась поддержка сборки под Linux



Итак, в Visual Studio теперь можно компилировать и отлаживать проекты под Linux. Можно было бы подумать, что это первоапрельская шутка, но нет — новость была выложена 30 марта. Кроме того, я уже попробовал — это реально работает.

Visual Studio использует доступ по ssh на удаленную машину с Linux. Туда автоматически копируются необходимые исходные файлы, которые потом там же и компилируются. При необходимости запускается gdbserver для организации удаленной отладки. Все это делается незаметно и не требует ручной настройки. Надо учитывать, что это самая первая версия и для продакшена пока не годится.

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

Также пока не реализовано отображение стандартного вывода в Output в самой Visual Studio. То есть, программа удаленно работает и что-то пишет в консоль, но прочитать это нельзя. Но этот недостаток скоро исправят, так как он уже есть в бэклоге команды разработки.

Подробнее: https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

воскресенье, 3 апреля 2016 г.

Сценарии как развитие идеи сторимаппинга



Директор небольшой брокерской фирмы Юрий сидел в офисе, который он арендовал в модном коворкинге вместе со своими немногочисленными сотрудниками. Компания последнее время показывала очень хорошие результаты. Престижное экономическое образование позволило самостоятельно построить успешную компанию, а вот как обезопасить основной капитал – базу клиентов – от участившихся хакерских атак собственными силами Юрий не знал. Своим сотрудникам Юрий доверял, но они часто работали из дома, из кафе, да и местный администратор Илья не вызывал доверия, наверное из-за бороды и черной футболки.

понедельник, 28 марта 2016 г.

Использование UTF-8 в исходных кодах


Некоторые время назад возникла задача проверить совместимость компиляторов с исходными файлами в представлении UTF-8 с маркером и без него. Маркер BOM был придуман для индикации порядка байт в машинных словах. Несмотря на то, что UTF-8 — это байтовый поток и такой маркер не имеет большого смысла в его первоначальном понимании, многие утилиты корректно работают только при наличии маркера в файле. Для обозначения UTF-8 в начало файла вставляется последовательность EF16, BB16, BF16. Файлы в кодировке UTF-8 без маркера неотличимы от ASCII файлов, если используются только 7-битные символы.

В результате эксперимента исследовались файлы в вариантах Unicode (UTF-8 with signature) – Codepage 65001 и Unicode (UTF-8 without signature) – Codepage 65001 для Visual Studio 2013, Visual Studio 2008 и Visual Studio 2014 CTP2. Для полноты сравнения в системе Linux была проведена аналогичная проверка с компилятором GNU C++ 4.7.2. В качестве редактора в Linux использовался vi с опциями set [no]bomb для получения файлов с маркером и без него.

вторник, 16 февраля 2016 г.

Как получить финансирование для ваших проектов


Коллеги из компании «Инфотекс» рассказали, что открывается конкурс научно-технических проектов в рамках программы поддержки исследователей в области информационной безопасности, криптографии и телекоммуникаций «ИнфоТеКС Академия 2016».

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

Размер вознаграждения за выполненный проект — до 500 тысяч рублей, что немало даже с текущим курсом доллара.

Заявки на участие принимаются онлайн до 31 марта 2016 года включительно. Подробнее о конкурсе можно почитать на сайте Академии.

среда, 27 января 2016 г.

git через корпоративный прокси


Есть вы находитесь за корпоративным прокси, то, возможно, сталкивались с проблемой ограничения доступа во внешнюю сеть по некоторым протоколам. Да что некоторым — часто режут все, кроме HTTP(S). Это создает проблему при выкачивании исходников проектов с GitHub, Bitbucket и других площадок. Собственно, сам проект можно выкачать указывая в пути https:// адрес вместо git://. Но с внешними модулями проекта так не пройдет. Тут остается править все пути в .gitmodules, что плохо, так как будет постоянно возникать вопрос слияния при обновлении этого файла на сервере.

Но есть и другой способ. Можно сказать git, чтобы он автоматически подменял при чтении конфига все вхождения git:// на https://. Для этого достаточно ввести в консоли следующую команду:
$ git config --global url."https://github.com/".insteadOf git://github.com/