Матрица: перезагрузка
В фильме есть эпизод, в котором Тринити взламывает компьютер электросети. Обычно, когда дело касается хакеров и вирусов, создатели фильмов предпочитают поместить на экран компьютера эффектно выглядящий, но не имеющий никакого отношения к действительности «мультик». В «Матрице: Перезагрузка» поступили по-другому: Тринити действительно взламывает компьютер.
Первым делом Тринити запускает сканер портов Nmap. Это существующая в реальности программа, использующаяся для поиска незащищённых портов, которыми можно воспользоваться для проникновения в систему.
Nmap сканирует IP-адрес 10.2.2.2 и находит открытый порт 22. Этот порт используется SSH.
Следующий шаг Тринити: она запускает эксплойт под названием sshnuke, который, как следует из появившейся на консоли надписи, пытается воспользоваться уязвимостью SSH CRC32. Это реально существующая уязвимость SSH, которая была обнаружена в начале 2001 года. Правда, нужно заметить, что о существовании хакерской программы sshnuke пока ничего неизвестно.
Тем не менее, программа делает своё дело, и Тринити немедленно меняет администраторский пароль на Z1ON0101, с помощью которого она входит в систему. Открывается консоль с правами администратора системы. Пользуясь правами администратора, Тринити отключает аварийную систему перераспределения энергии.
0101 в двоичной системе равняется 5 в десятичной. То есть пароль можно прочитать как ZION5. Скорее всего, это ссылка на дальнейшие события в фильме — позже создатель Матрицы упоминает, что Зион был разрушен пять раз.
Вероятно, это единственный случай в истории Голливуда, когда взлом компьютера был показан настолько достоверно и детально.
habrahabr.ru/blogs/hr/137653/#comment_4591003
Обертка в функцию была для примера, сначала написал int swap, потом подумал, что можно использовать ссылки для скорости, исправил на void, а return забыл убрать.
Пожалуй это будет самый быстрый и самый короткий код для этой задачи. Т.к. переставить две переменные местами, не прибегая к помощи третей в Си реализовать не возможно. Последний символ строки '\0' не трогается, т.к. при i=0 мы будем менять предпоследний символ с первым, длина строки при перевороте не меняется.
Есть такая фишечка с побитовыми операциями (прошу прощения, в чистом C есть ссылки? Если нет, можно подкорректировать):
void swap (int &a, int &b)
{
return a ^= b ^= a ^= b;
}
Но работает медленнее, чем через переменную, число операций больше.
К слову о голове:
«Шерсть на черном коте встала дыбом, и он раздирающе мяукнул. Затем сжался в комок и, как пантера, махнул прямо на грудь Бенгальскому, а оттуда перескочил на голову. Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал эту голову с полной шеи.
…
… — и громко приказал: — Наденьте голову.
Кот, прицелившись поаккуратнее, нахлобучил голову на шею, и она точно села на свое место, как будто никуда и не отлучалась.
И самое главное, даже шрама на шее никакого не осталось.» (с) Мастер и Маргарита
Ну теперь все понятно! Воланд использовал Kinect и проекции! :)
В фильме есть эпизод, в котором Тринити взламывает компьютер электросети. Обычно, когда дело касается хакеров и вирусов, создатели фильмов предпочитают поместить на экран компьютера эффектно выглядящий, но не имеющий никакого отношения к действительности «мультик». В «Матрице: Перезагрузка» поступили по-другому: Тринити действительно взламывает компьютер.
Первым делом Тринити запускает сканер портов Nmap. Это существующая в реальности программа, использующаяся для поиска незащищённых портов, которыми можно воспользоваться для проникновения в систему.
Nmap сканирует IP-адрес 10.2.2.2 и находит открытый порт 22. Этот порт используется SSH.
Следующий шаг Тринити: она запускает эксплойт под названием sshnuke, который, как следует из появившейся на консоли надписи, пытается воспользоваться уязвимостью SSH CRC32. Это реально существующая уязвимость SSH, которая была обнаружена в начале 2001 года. Правда, нужно заметить, что о существовании хакерской программы sshnuke пока ничего неизвестно.
Тем не менее, программа делает своё дело, и Тринити немедленно меняет администраторский пароль на Z1ON0101, с помощью которого она входит в систему. Открывается консоль с правами администратора системы. Пользуясь правами администратора, Тринити отключает аварийную систему перераспределения энергии.
0101 в двоичной системе равняется 5 в десятичной. То есть пароль можно прочитать как ZION5. Скорее всего, это ссылка на дальнейшие события в фильме — позже создатель Матрицы упоминает, что Зион был разрушен пять раз.
Вероятно, это единственный случай в истории Голливуда, когда взлом компьютера был показан настолько достоверно и детально.
Обертка в функцию была для примера, сначала написал int swap, потом подумал, что можно использовать ссылки для скорости, исправил на void, а return забыл убрать.
Возможно, компилятор теперь лучше оптимизирует этот код.
Можно без return
Есть такая фишечка с побитовыми операциями (прошу прощения, в чистом C есть ссылки? Если нет, можно подкорректировать):
Но работает медленнее, чем через переменную, число операций больше.
«Шерсть на черном коте встала дыбом, и он раздирающе мяукнул. Затем сжался в комок и, как пантера, махнул прямо на грудь Бенгальскому, а оттуда перескочил на голову. Урча, пухлыми лапами кот вцепился в жидкую шевелюру конферансье и, дико взвыв, в два поворота сорвал эту голову с полной шеи.
…
… — и громко приказал: — Наденьте голову.
Кот, прицелившись поаккуратнее, нахлобучил голову на шею, и она точно села на свое место, как будто никуда и не отлучалась.
И самое главное, даже шрама на шее никакого не осталось.» (с) Мастер и Маргарита
Ну теперь все понятно! Воланд использовал Kinect и проекции! :)