Pull to refresh
34
0.1
ionicman @ionicman

User

Send message

Теория о сокрытии процессов руткитами (DKOM)

Reading time3 min
Views4.1K
В данной статье мы попробуем рассмотреть в теории один из самых серьезных методов сокрытия информации руткитами, а именно прямая манипуляция объектами ядра (Direct Kernel Object Manipulation, DKOM), применяемая для сокрытия процессов от операционной системы в целом. Если Вы скрипт-кидди, то читайте «скрываем процессы в винде!».
Читать дальше →

Интересная фича Grub2: загрузка из ISO-файла

Reading time3 min
Views75K
Собственно, захотелось мне посмотреть на Unity. По картинкам и видео – вроде ничего. Да вот беда. В виртуальной машине его не запустишь — 3D требует. Сам я KDEшник. Основной ОС на ноутбуке является kubuntu. Ну, думаю, можно поставить второй системой. Свободное место, вроде, есть.

Ок. Качаю образ Natty, прожигаю а вот хрен. Оказалось, не работает мой CD-ROM. Ноут уже довольно старенький. Загрузки с флешек в биосе тоже нет. После кратковременной паники было найдено решение.

Оказалось, что grub2 научился понимать формат ISO 9660 и может загружать ОС прямо из ISO-образа, расположеного на жестком диске. Как выяснилось далее, не все системы готовы к такому повороту событий. Многие по тем или иным причинам приходят в замешательство при загрузке. К счастью, Ubuntu не является одной из них.
Читать дальше →

Беззамочные алгоритмы: модель «сделай, запиши,(попытайся снова)»

Reading time4 min
Views2.1K
Реализованное нами в прошлый раз атомарное умножение является примером более общей модели, которую Реймонд назвал «сделай, запиши,(попытайся снова)».

for (;;) {
 // берём начальное значение общей переменной,
 // которую мы собираемся изменять
 oldValue = sharedVariable;

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

 newValue = ... вычисляем новое значение, используя
                oldValue и копии остальных параметров ...

 // вместо Xxx может быть Acquire, Release, или ничего
 if (InterlockedCompareExchangeXxx(
            &sharedVariable,
            newValue, oldValue) == oldValue) {
  break; // запись удалась
 }

 ... удаляем newValue ...

} // попытаемся снова

Мы вычисляем новое значение, и затем вызовом InterlockedCompareExchange записываем его в общую переменную только в том случае, если её значение не изменялось. Если оно изменилось, значит другой поток нас опередил; в этом случае попытаемся выполнить операцию по-новой, с самого начала, — в надежде, что в следующий раз никто нас не «подрежет».
Читать дальше →

Простой и надежный пароль – коллективное творчество

Reading time4 min
Views251K
Перечитав массу сопутствующей литературы и просмотрев тонну хабратопиков (ссылки на интересные приведены в конце статьи), я решил обобщить информацию об основных методах генерации надежного и запоминающегося пароля.

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

Поговорим о методах взлома


Чтобы понимать всю глубину проблемы, пару строк посвящу методике взлома. Итак, как же злоумышленник может узнать/угадать/подобрать ваш пароль?
  1. Метод логического угадывания. Работает в системах с большим количеством пользователей. Злоумышленник пытается понять вашу логику при составлении пароля (логин+2 символа, логин наоборот, самые распространенные пароли и т.п.) и применяет эту логику ко всем пользователям. Если пользователей много, очень скоро произойдет коллизия и пароль будет угадан;
  2. Перебор по словарю. Этот вид атаки применяется, когда база данных с хешированными паролями слита с сервера. Может сочетаться с заменой букв (опечатки) или с подстановкой цифр/слов в начало или конец слова в качестве приставки или суффикса. Также используются словари, набранные в неверной раскладке клавиатуры (русские слова в английской раскладке);
  3. Перебор по таблице хешированных паролей. Передовой метод взлома паролей, когда хеши уже сгенерированы и остается только найти в базе соответствие хеша паролю. Работает очень быстро даже на слабых машинах и не оставляет никаких шансов владельцам коротких паролей.
  4. Другие методы: социотехника и социальный инжиниринг, использование keylogger'ов, снифферов, троянов и т.п.
Читать дальше →

Node.js — руководство по убеждению начальства

Reading time5 min
Views24K
От переводчика: Я только начинаю присматриваться к Node.js, и, обнаружив это руководство, сильно пожалел, что оно не попалось мне на глаза раньше. Надеюсь, что этот перевод поможет многим разобраться, что же такое Node, и с чем его едят.

У вас уже чешутся руки попробовать Node.js и пора начинать обрабатывать начальство? Не торопитесь! Для некоторых компаний, которые я консультировал на предмет того, подходит ли им Node.js, правильный ответ был — «Нет!»

Это руководство — набор основанных на моём личном опыте советов для тех, кто хочет узнать, имеет ли смысл применять Node у себя в компании, и, если да, то как убедить в этом начальство.
Читать дальше →

.phar — исполняемые PHP-архивы

Reading time4 min
Views54K
Данную статью я хочу посвятить одному интересному нововведению в PHP 5.2 (с версии 5.3 входит в стандартную поставку PHP) — PHAR.
image
PHAR — это утилита для создания исполняемых архивов в PHP, аналог JAR в Java.
PHAR ползволяет упаковать много файлов в один, в результате чего Ваше приложение может работать с целой библиотекой, как с одним файлом.
PHAR умеет создавать, читать, записывать и конвертировать такие форматы, как TAR, ZIP и, собственно, PHAR.
Доступ к файлам в архиве осуществляется напрямую, без необходимости распаковки архива, через PHP Stream Wrapper, тоесть с файлами из архива работают все функции, которые поддерживают PHP Stream Wrapper.
Читать дальше →

Как стать героем (Яков Сироткин на ADD-2010)

Reading time15 min
Views2.5K
Яков Сироткин, известный блогер и опытный разработчик любит раскрывать глаза молодых программистов на порой нелицеприятные стороны работодателей, объясняя при этом природу этих фактов.

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


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

Асинхронный удар

Reading time5 min
Views16K
imageКак уже наверное кто-то догадался, в этой статье речь пойдет о сокетах, и фреймфорках облегчающих работу с ними. Недавно я начал работу надо новым проектом, онлайн игрой. Для таких проектов довольно критично время ответа от сервера, если это конечно не пошаговая стратегия, хотя и в этом случае пожалуй тоже. Так как же этого добиться при суровой ограниченности ресурсов?
  • Облегчить сервер от ненужной работы, например отрисовки самой странички, используя вместо этого javascript шаблонизатор.
  • Использовать хороший front-end, например nginx, учитывая пункт первый, динамики у нас нет, и это нам вполне подходит.
  • Распределяя нагрузку на frontend, например используя Tornado.

Остался самый главный вопрос, что будет происходить когда пользователь совершает какое-либо действие? Обычные ajax запросы не подойдут, вполне понятно почему. Поэтому нам на помощь приходят сокеты.
Читать дальше →

Погружение в ACID3

Reading time13 min
Views4K
(Это первая статья из серии статей, посвященных обзору различных тестов браузеров.)

Что такое Acid3? Кто его придумал? Как он устроен и как он работает? Что он измеряет на самом деле? Этими и другими вопросами мы зададимся в данной статье и попробуем найти ответы.

Что такое Acid3?


Acid3 — это третий из серии специальных тестов (до этого были Acid1 и Acid2), написанных «в помощь производителям браузеров, чтобы те могли проверить поддержку стандартов в своих продуктах». Конкретно ACID3 нацелен на тестирование спецификаций, связаных с разработкой динамичных «Web 2.0»-приложений.



Acid3 включает 100 специальных тестов, проверяющих 19 различных спецификаций.

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

Подборка генераторов CSS

Reading time2 min
Views50K


Не секрет, что писать CSS для многих стандартных кнопок, макетов, etc. бывает весьма лениво. Ниже представлена подборка генераторов CSS (и не только), которая, возможно, в некоторых случаях сможет упростить кому-то жизнь. Многими генераторами можно успешно пользоваться даже без глубоких познаний CSS.

(Осторожно! Много картинок)
Читать дальше →

Что почитать, чтобы повысить свой уровень JavaScript

Reading time3 min
Views99K
От переводчика: Я думаю многие читали статью Rey Bango — What to Read to Get Up to Speed in JavaScript, но до хабра обсуждение так и не докатилось. Предлагаю закрыть этот пробел и поговорить о хороших книгах, блогах, тренингах и конференциях, посвященных в первую очередь клиентскому JavaScript и клиентской веб-разработке. Чтобы не копипастить оформляю статью в виде перевода.

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

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

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

re2c — компилятор регулярных выражений

Reading time3 min
Views8.5K
Задача выделения из потока символов определенных лексем является весьма распространенной. Часто ее решают с помощью лексических анализаторов, конфигурируемых регулярными выражениями. Многие анализаторы построены по принципу генерации программного кода, который в свою очередь реализует логику регулярных выражений. Фактически, это компиляция языка регулярных выражений в код языка программирования.

Например, flex — это один из таких анализаторов. Старый, но проверенный годами.

Я много пользовался flex'ом, он имеет и плохие и хорошие стороны, но по большому счету, жаловаться не приходилось.

Но вчера наткнулся на интересный проект — re2c. По сути, на этой штуке можно писать лексические анализаторы прямо на коленке за несколько минут.

Подробности

Hit print

Reading time1 min
Views908
В преддверии пятницы два небольших заводных интересных видеоролика от HP. Это ни в коем случае не пиар, просто встретилось на просторах youtube, понравилось.

Ролик №1.



Под катом ролик №2.
Читать дальше →

Магия JavaScript: arguments

Reading time3 min
Views68K
arguments — очень специфическая штука, о которой новички и даже любители знают только то, что это «вроде массив, но какой-то неправильный». На самом деле, у него есть ряд интересных особенностей. Предлагаю в топике пофантазировать на тему TypeHinting, аргументов по-умолчанию и всякого другого.
(function (foo, bar) {
	console.log(typeof arguments); // ?
	
	arguments[0] = 42;
	console.log(foo); // ?
})(10, 20);


А также покажу интересную идею-библиотеку
function test (foo, bar) {
    Args(arguments).defaults(100, 100);

    return [foo, bar];
};

test(      ); // 100, 100
test(15    ); //  15, 100
test(21, 42); //  21,  42

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

Популярные вопросы на собеседовании по C++ и ответы на них

Reading time9 min
Views352K
Здравствуйте!

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

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

Введение в шаблонизатор Blitz

Reading time5 min
Views10K
Из документации о Blitz: Чрезвычайно быстрый и мощный шаблонизатор для очень больших интернет-проектов.

Приведу несколько фактов:
  1. Это шаблонизатор используемый Хабром;
  2. Этот шаблонизатор используется на высоко-нагруженных проектах, он написан на C, подключается как расширение PHP;
  3. Его скорость сопоставима с самим php (бенчмарк под катом);
  4. Верстальщики будт счастливы, так как в шаблонах нет логики приложения, нет циклов, ветвлений и т.д.;
  5. Один из его авторов Алексей Рыбак fisher.


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

Эти бесчисленные парадигмы, концепции, инструменты и фреймворки

Reading time5 min
Views6.9K
Мое мировоззрение, как программиста, сформировалось еще во времена консольных приложений и текстовых пользовательских интерфейсов, на смену им пришли графические оконные GUI, а сейчас я наблюдаю уже третий виток технологий, связанный с глобальной сетью. Каждый раз, конечно же, приходилось менять не только любимый язык программирования, но и весь технологический стек, с наработками, заготовками и достаточно обширными библиотеками, кои сейчас гордо зовутся фреймворками. Резать приходилось по живому, нещадно и решительно.
Читать дальше →

Подборка 10 css3 кнопок

Reading time4 min
Views91K
С каждым днем новые стандарты css3 и html5 всё более глубоко входят в жизнь верстальщиков и web-разработчиков, а браузеры с каждым днем становятся все более совместимыми с этими стандартами.



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

Модульный подход в JavaScript

Reading time8 min
Views49K
Модульный подход довольно распространённая техника программирования в JavaScript. Обычно его понимают довольно хорошо, но продвинутые техники описаны недостаточно. В этой статье я рассмотрю основы и затрону некоторые сложные приёмы, включая один, по моему мнению, оригинальный.

Основы



Мы начнём с несложного обзора модульного подхода, хорошо известного с тех пор, как Эрик Миралья (Eric Miraglia) из YUI впервые об этом написал. Если вам уже знаком модульный подход, переходите сразу к «Продвинутым техникам».

Анонимные замыкания


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

Кроссбраузерный inline-block

Reading time4 min
Views122K
Разрешите представить вам перевод статьи «Cross-Browser Inline-Block», написанной Райном Доэрти холодным февралем 2009 года. В статье рассказывается о верстке элементов списка с установкой для свойства display значения inline-block. Статья об этом, а также о трудностях, возникающих в процессе достижения результата и о методах их «лечения».

Узнать метод Райна Доэрти

Information

Rating
6,643-rd
Registered
Activity