Category: наука

manandmoon

Чтиво

Команда форума DamageLab.org и к нему примкнувших выпустила альманах Inception посвященный всяческой компьютерной безопасности (с некоторым упором на малвару). Причем даже на двух языках (кто-то из редакции явно живет по нашу сторону Атлантики) Получилось совсем неплохо, вполне в олд-скульном духе. Будем надеятся, что дело хорошо пойдет, и за пилотным номером появятся и второй, и третий.

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

Надел, значит, маечку "2600", насыпал себе соленых орешков, изучаю...

Содержание первого номера

  • DLL Hijacking в антивирусах - pr0mix
  • Еще раз об АВ-чекере - pr0mix
  • Большое чудо в маленьком офисе - _sheva740
  • Вирусописательство и коммерция - d3m & Ar3s
  • Планирование анализа безопасности веб-ресурсов - ALiEN Assault
  • Полиморфный файловый вирус BEETLE - pest
  • Теория построения крупных p2p ботнетов - pest
  • История одного взлома - Ar3s
  • Исполняемый код, переписывающий сам себя на LPC2388 - amdf
  • Сила в простоте - FanOfGun
  • Imported Code - rgb
  • DNS-Amplification на практике - MZh
  • Обзор генетического алгоритма на примере подбора пароля по MD5-хешу - XRipper
  • Рефлексия: решение "нетрадиционных" задач - KostaPC
BONUS-статьи для ру-читателей журнала
  • Интервью с ares - Izg0y
  • Охота на крота - _sheva740
  • Техники выживания vx.exe в реальной среде - ProudPank
  • Заметки по ИБ - Versus71
  • Автоматический подбор сигнатур - valentin_p
PS: Некоторые антивирусы ругаются на содержимое журнала. Оно и не удивительно, ввиду тематики, но все ж хочу предупредить.
posted on dreamwidth [comment count unavailable comments]
manandmoon

... И между ними происходит следующий разговор

Cleverbot - это известный чат-бот который, работает по следующему нехитрому принципу: если в ответ на его реплику ему ввели какую-то фразу, то бот эту фразу запоминает и сам вворачивает при подходящем случае. Постепенно набирается статистика, и фразы машины становятся все более и более осмысленными*

* Пока не набежали посетители с имиджюорд и не стали забивать компьютеру электронные мозги. 

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


Для интресующихся принципом работы робота: статья на Singularity Hub
posted on dreamwidth [comment count unavailable comments]
manandmoon

Правило Лапласа

Что это я все про зло да про зло, напишу-ка я о чем нибудь добром. О теории вероятностей, например (предупреждаю, дальше будет матан, не математически настроенным дальше будет неинтересно)
Есть в математике такое правило следования Лапласа. Объясню вкратце: пусть у нас имеется неведомая хрень, про которую только известно, что если ее потрясти, то она выдаст ответ либо "да" либо "нет" и что ответы выпадают независимо друг от друга. Обычно представляют себе хитрогнутую монету или огромное ведро с черными и белыми шарами (неизвестно сколько каких). Это по вкусу.
И вот мы взяли эту неведомую хрень. потрясли 5 раза и из них 2 раза получили ответ "да". Спрашивается, с какой вероятностью в следующий раз выпадет опять "да"?

Неправильны очевидный ответ: 2/5 Неочевидный правильный: (2+1)/(5+2) = 3/7 В этом и есть правило Лапласа.


Точнее: пусть у нашего генератора равноемерное априорное распределение вероятностей. То бишь шансы то, что вероятность успеха равна 10% равноа шансам того, что вероятност равна 25% или 100% (да. в ход идут вероятности вероятностей). Если у нас сделано N испытаний и из них M испытаний успешно, то вероятность успеха при следующем испытании ("наилучшая оценка") равна (M+1)/(N+2)

Примечание: В неправильности наивного ответа можно легко убедиться, если взглянуть на предельный случай N=1. Мы потрясли один раз, получили ответ "да". И что теперь? У нас в следуюший раз "да" выпадет с вероятностью 1/1=1? И так у нас всю жизнь теперь "да" будет? (спасибо kobak за пример)

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

Ну вот думал я думал и придумал (дальше мое лично творчество. безошибочность не гарантирую)

Как мы может смоделировать нашу неизвестную хрень с равномерным распределением? Вот как: берем случайное число x от 0 до 1 Это будет наша вероятность успеха. Испытателю мы ее не сообщаем, а запоминаем внутри генератора. Теперь начинаем делать собственно испытания. Для каждого испытания i мы берем другое случайное число y_i, тоже от 0 до 1 Если оно меньше или равно x то возвращаем "успех", иначе говорим "неудача"

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

Теперь пусть у нас уже такая ситуация: мы сделали N испытаний, получили M "успехов" и теперь собираемся сделать N+1ое испытание. Что у нас творится внутри смоделированной хрени? Рассмотрим на примре, приведенном выше, где N=5, M=2

Внутри хрени теперь есть число x и числа y1, y2... y5 Все они сгенерированы совершенно одинаковым способом - случайно выбраны из интервала [0,1]

Теперь хитрый трюк. Мы замечаем, что если мы повторим наш эксперимент (все N испытаний) многократно, эти числа по величине могут идти в любом порядке. Если. как в примере выше, M=2 N=5 то
возможно , что
y1 < y3x < y2 < y5 < y4
или 
y5 < y2 < x < y1 < y4 < y3
или
y3 < y2 < x < y4 < y1 < y5
итп
- вероятность одна и та же

Единственное ограничение. что у нас должно быть M=2 успехов. То есть, левее x имеем 2 числа, а правее, соотвественно, 3

Если мы пересортируем все у в порядке возрастания и переименуем в y' то у нас будет

y'1 < y'2 < x < y'3 < y'4 < y'5

Идем дальше, и добваляем новое число y6. На него у нас никаких ограничений нет. Оно может быть левее всех сгеренереных чисел, правее всех или стоять между какими-то двумя. Иными словами мы можем одинаково ожидать, что y6 попадет в интервал

0... y'1,  y'1...y'2 ,  y'2...x, x... y'3, y'3...y'4, y'4...y'5 или же y'5...1 

Всего 7 интервалов.

Из этих интервалов 3, а именно 0... y'1,  y'1...y'2 ,  y'2...x соответствуют "успеху". а остальные "неудаче" Итого вероятность 3/7 
Что и требовалось.

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

По мотивам старого треда у plakhov a
posted on dreamwidth [ comments]
manandmoon

Тепло твоих рук

Группа исследователей из университета Калифорнии в Сан-Диего (UCSD) пишет о новом интересном виде атак на банкоматы.

Немного контекста: одной из задач жуликов, ворующих банковские карточки является - как узнать PIN-код владельца? Код - это одна из степеней защиты и без него провести успешную транзакцию гораздо сложнее - даже если удалось скопировать всю магнитной полосу на карте.  Одно из популярных решений - это миниатюрная камера, снимающая процесс ввода. К счастью (или увы, если вы - кардер),  как это следует из ролика, многие пользователи уже выучили, что клавиатуру надо прикрывать. И что тогда?

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



Даже ребенку понятно, что в PIN коде сначала идет 1 или 4 , а потом 5 или 8
(на самом деле 1485) 


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

Как защититься? Во-первых, лучше пользоваться банкоматами с металлическими, а не пластиковыми, кнопками. Там теплопроводность гораздо выше, и, соответственно, отпечатки остывают гораздо быстрее. Во-вторых, не просто прикрывайте клавиатуру рукой, а после ввода накрывайте ее всей ладонью. Этим вы равномерно нагреете все кнопки и полностью собъете с толку распознаватель.
Говорят еще, что сущесвуют виды красок, которые так отражают инфракрасный свет, что полностью слепят камеру, но на данный момент банкоматы ими не красят. Вполне возможно, что скоро будут.

M. Zalewski - Cracking Safes with Thermal Imaging
UPDATE: Только что вышли об этом статьи в Wired и в блоге Sophos
posted on dreamwidth [ comments]
manandmoon

(no subject)

Фрактальный генератор в браузере


Требует WebGL (т.е. Хрома или Firefox 4) и мощного компа, но результаты стоят того


 
(Второй фрактал, естественно, отрендерен не в реальном времени. Но если захочется с ним поиграть, то в меню на сайте он обозначен как mandelbulb)
manandmoon

(no subject)

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

Увеличение 2141  - около 7000 часов на 1 GHz Athlon TB (2001)

Увеличение 2236 - конфигурация и время не указаны (2009)

Увеличение 2316 - 5 месяцев на 20 двуядерных машинах (2009)

Увеличение 2645 - 3 четырех ядерных машины, 3 месяца (2008)

Увеличение 2760 - 6 месяцев, компьютер не указан (2010)

Увеличение 2838 - 1 год на неизвестном числе компьютеров

Увеличение 2915 - 12 процессорных ядер, 6 месяцев (2010)


Для сравнения: отношение диаметра видимой вселенной к диаметру протона составляет всего-навсего 2139
DreamWidth = {originalUrl: ...; commentCount: ; function addComment(); }