Search
Write a publication
Pull to refresh
0
0
Vadim Toptunov @g0rd1as

Пользователь

Send message

Clang. Часть 1: введение

Reading time4 min
Views81K

Что такое Clang?


Я провёл последние несколько месяцев, работая с Clang, фронтендом LLVM. Clang умеет парсить и анализировать любой исходный код на языках семейства С (C, C++, ObjectiveC, и т.п....) и имеет удивительную модульную структуру, которая делает его простым в использовании.


Если вы ищете статический анализатор кода, я настоятельно рекомендую Clang, он существенно превосходит другие статические анализаторы (такие, как CIL...) и хорошо документирован. Также список рассылки Clang очень активен и полезен, если вы застряли на чём-то.

Лично я использую Clang для статического анализа драйверов ввода-вывода ядра Linux, включая драйвера камеры и драйвера DRM графической карты. Код ядра, особенно код драйвера, может быть очень сложным и трудным для анализа, но Clang позволяет нам легко поддерживать его. Давайте посмотрим, что можно сделать с его помощью.
Читать дальше →

Рыцари плаща и руткитов: что посмотреть про хакеров. Сериалы

Reading time8 min
Views72K
Лето — пора путешествий и заслуженного отдыха.  Каким бы ни было путешествие и куда бы вы ни направлялись, наверняка, это будет длинная дорога (авиаперелет или поезд), или же среднего качества связь, если мы говорим об удаленных от благ цивилизации местах.

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

Мы приготовили для вас небольшую подборку сериалов, так или иначе связанных с ИT. А натолкнула нас на идею этого поста многолетняя дружба ЛАНИТ с Международным фестивалем документального кино "ДОКЕР", где, кстати, в том числе с нашей помощью традиционной стала номинация для фильмов о возможностях информационных технологий «Let IT Doк!».

Кадр из сериала «Mr. Robot» (eps3.1_undo.gz)
Читать дальше →

Куча различных способов считывания битов

Reading time27 min
Views43K
image

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

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

Это звучит достаточно просто, и в каком-то смысле так и есть. Первый источник проблем заключается в том, что эта операция будет активно использовать кодеки — и да, она будет ограничена вычислениями, а не памятью и вводом-выводом. Поэтому нам нужна не просто рабочая, но и эффективная реализация. И по дороге мы столкнёмся со множеством других сложностей: взаимодействия с буферизацией ввода-вывода, обработка конца буфера, тупиковые ситуации в битовых сдвигах, определённых в C/C++ и в разных архитектурах процессоров, а также другие особенности битовых сдвигов.

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

[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux

Reading time7 min
Views105K
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.



В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением <fqdn> (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com.
Читать дальше →

Разминка для тех, кто умеет в Python

Reading time3 min
Views21K

Привет! Мы обожаем квизы, посвященные языкам программирования. В нашем блоге мы разместили уже целых три: первый — по Python, PHP, Golang, DevOps, второй — полностью по Go, третий — только по PHP. Сегодняшний квиз посвящен исключительно Python.


Предлагаем вам размяться в честь конца ещё одной летней недели и в преддверии PyCon Russia 2018. (Кстати, кто едет? Мы там будем).


Под катом — семь вопросов, советы от друга, Чапаев, отрывки из ABBA (что? да!) и крутой мерч.


UPD: Мы закончили принимать ответы. Спасибо всем, кто поучаствовал! Ответы на вопросы — внутри текста, а победители и призеры под спойлером.


Победители и призеры викторины

Победитель


Vadem


Призеры


Второе место: acerikfy
Третье место: Histiophryne
Четвертое — десятое место: Swezy_ua, SlonPC, noth, IIRoadRunnerII, term1nal, alexchromets, Tihon_V .


Бонус


Так много участников дали правильные ответы, что мы решили разыграть случайным образом еще пять пар носков среди них. Крутые носки от Авито получают: sunman, grt_pretender, Vash, ipatov_dn, institoris


Запись розыгрыша



10 курсов по машинному обучению на лето

Reading time5 min
Views64K
За последние десятилетия с помощью машинного обучения создали самоуправляемые автомобили, системы распознавание речи и эффективный поиск. Сейчас это одна из самых быстроразвивающихся и перспективных сфер на стыке компьютерных наук и статистики, которая активно используется в искусственном интеллекте и data science. Методы машинного обучения используются в науке, технике, медицине, ритейле, рекламе, генерации мультимедиа и других областях.

Команда Университета ИТМО собрала десять курсов по машинному обучению, которые можно успеть пройти до конца лета. Одним они помогут войти в профессию, а другим — углубиться в нее.

image
Читать дальше →

Может ли хакер заблокировать Ла-Манш?

Reading time6 min
Views9K


Оказывается, судоходные маршруты подвержены серьезному риску со стороны хакеров: устаревшие ИТ-системы на борту кораблей в сочетании с современными IoT-устройствами дают кибер-преступникам шансы на успех.
Читать дальше →

Информационная безопасность? Нет, не слышали

Reading time8 min
Views37K
Один мой друг спросил меня сегодня про гигиену цифрового поведения. Постараюсь кратко изложить принципы, следуя которым, вы повысите уровень своей безопасности в сети.

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

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

Читать дальше →

15 HTML-методов элементов, о которых вы, вероятно, никогда не слышали

Reading time7 min
Views18K
От переводчика: Дэвид Гилбертсон (David Gilbertson) — известный автор, который пишет о веб- и криптовалютных технологиях. Он смог собрать большую аудиторию читателей, которым рассказывает о всяких хитростях и интересностях этих областей.



Небольшое вступление

Давайте обсудим разницу между HTML и DOM.

Например, возьмем элемент table из HTML. Вы можете использовать его в файле с расширением .html. В нем мы указываем набор атрибутов, которые определяют внешний вид и «поведение» страницы.
Читать дальше →

Аналоги в Python и JavaScript. Часть первая

Reading time5 min
Views18K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Equivalents in Python and JavaScript. Part 1".


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


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


Также я проиллюстрирую это примерами из практики.


Эта серия будет интересна бэкендерам, использующим Django, Flask или любой другой Python-фреймворк, которые хотят получше узнать о современном Javascript'е. С другой стороны, эти статьи будут полезны фронтендерам, которые желают лучше понять как работает бэкенд, или даже написать свой сайт на Django.


Остальные статьи в этой серии:


  1. Часть вторая: JSON, регулярки, ошибки-исключения
  2. Часть третья: современные Python и JS: строковые шаблоны (f-строки), распаковка списков, лямбда-функции, итерации по спискам, генераторы, множества.
  3. Четвертая часть — аргументы функций, создание и работа с классами, наследование, геттеры-сеттеры и свойства класса.
Читать дальше →

Основы JavaScript для начинающих разработчиков

Reading time11 min
Views172K
Материал, перевод которого мы сегодня публикуем, посвящён основам JavaScript и предназначен для начинающих программистов. Его можно рассматривать и как небольшой справочник по базовым конструкциям JS. Здесь мы, в частности, поговорим о системе типов данных, о переменных, о массивах, о функциях, о прототипах объектов, и о некоторых других особенностях языка.


Читать дальше →

Подборка @pythonetc, июнь 2018

Reading time5 min
Views14K


Привет. Я веду авторский канал @pythonetc с советами про Python в частности и про программирование в целом. С этого месяца мы запускаем серию подборок с лучшими постами за месяц в переводе на русский.

Читать дальше →

15 малоизвестных свойств и методов объектов DOM

Reading time9 min
Views31K
При разработке современных веб-сайтов интенсивно используются возможности JavaScript по работе с DOM. Скрипты позволяют отображать и скрывать элементы, из которых строятся страницы, настраивать свойства этих элементов. У объектов DOM, с которыми взаимодействуют из программ, имеются свойства и методы. О некоторых из них, по мнению автора материала, перевод которого мы сегодня публикуем, знают практически все веб-программисты. А вот некоторые, о которых он и хочет здесь рассказать, пользуются куда меньшей известностью.


Читать дальше →

Книга «Вскрытие покажет! Практический анализ вредоносного ПО»

Reading time11 min
Views13K
imageАнализ вредоносного ПО напоминает игру в кошки-мышки: никаких правил, ситуация постоянно меняется. Поэтому в данном случае имеет смысл изучать лишь неустаревающие вещи и алгоритмы. Как только перед вами встает задача защитить сеть (или тысячу сетей), вы приступаете к такому анализу, и без этой книги вам попросту не обойтись.

Программы для загрузки и запуска ПО


Можно выделить два типа часто встречаемых вредоносов, предназначенных для загрузки и запуска ПО. Загрузчики (не путать с системными загрузчиками) просто загружают из Интернета дополнительный вредоносный код и запускают его на локальном компьютере. Они часто распространяются вместе с эксплойтом. Для загрузки и выполнения дополнительного вредоносного ПО они обычно используют два вызова Windows API, идущие один за другим: URLDownloadtoFileA и WinExec.
Читать дальше →

Как использовать HDF5-файлы в Python

Reading time20 min
Views52K
Всем привет!

Приближается запуск курса «Web-разработчик на Python», соответственно, мы всё так же делимся интересными статьями и приглашаем на наши открытые уроки, где можно посмотреть интересный материал, познакомиться с преподавателями и позадавать им вопросы.

Поехали!

HDF5 позволяет эффективно хранить большие объемы данных

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

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

Читать дальше →

Чек-лист по анализу логов событий безопасности

Reading time4 min
Views30K


Сегодня тема мониторинга IT – инфраструктуры и анализа логов набирает все большую и большую популярность. В первую очередь все задумываются о мониторинге событий безопасности, о чем и будет идти речь в данной статье. Несмотря на то, что на эту тему сказано и написано уже довольно много, вопросов возникает еще больше. И поэтому мы решили сделать перевод статьи «Сritical Log Review Checklist for Security Incidents», написанную Anton Chuvakin и Lenny Zeltser, которая будет полезна как для тех, кто только начинает работать с мониторингом событий безопасности, так и для тех, кто имеет с этим дело довольно давно, чтобы еще раз проверить себя, не упускаете ли вы некоторые возможности.
Читать дальше →

Становимся волшебниками в программировании. Часть 1

Reading time1 min
Views22K
Если вы давно хотели стать программистом, но не знали с чего начать, то начните с этого комикса. В нем о том, как задавать правильные вопросы, чтобы получать полезные ответы и читать исходный код.

image

Читать дальше →

NumPy в Python. Часть 4

Reading time8 min
Views118K

Предисловие переводчика


Всем здравствуйте, вот мы и подошли к конечной части. Приятного чтения!
Навигация:


Математика многочленов


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

>>> np.poly([-1, 1, 1, 10])
array([ 1, -11,   9,  11, -10])

Здесь, массив возвращает коэффициенты соответствующие уравнению: $x^4 - 11x^3 + 9x^2 + 11x - 10$.
Читать дальше →

ПО для машинного обучения на Python

Reading time7 min
Views38K


Сегодня существует большое количество программных инструментов для создания моделей Machine Learning. Первые такие инструменты формировались в среде ученых и статистиков, где популярны языки R и Python, исторически сложились экосистемы для обработки, анализа и визуализации данных именно на этих языках, хотя определенные библиотеки машинного обучения есть и для Java, Lua, С++. При этом интерпретируемые языки программирования существенно медленнее компилируемых, поэтому на интерпретируемом языке описывают подготовку данных и структуру моделей, а основные вычисления проводят на компилируемом языке.

В данном посте мы расскажем преимущественно о библиотеках, имеющих реализацию на Python, поскольку этот язык обладает большим количеством пакетов для интеграции в разного рода сервисы и системы, а также для написания различных информационных систем. Материал содержит общее описание известных библиотек и будет полезен прежде всего тем, кто начинает изучать область ML и хочет примерно понимать, где искать реализации тех или иных методов.
Читать дальше →

OWASP TOP 10 Project: введение

Reading time5 min
Views18K
Это первый материал из цикла статей про OWASP Top 10 Project — проекта, который начинался как задумка энтузиастов, а стал самым авторитетным источником классификации векторов атак и уязвимостей веб приложений.

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

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity