Hacker Magazine

Page 1

Кодинг

106

ХАКЕР 12 /191/ 2014

Задачи на собеседованиях Задачи от компании Parallels и решение crackme от Dr.Web

Офис Parallels имеет все признаки «офиса мечты», тем более что именно там работают такие крутые специалисты, как технический советник Linux Foundation и мейнтейнер ядра Linux Джеймс Боттомли, создатель 90% стека TCP/IP в Linux Алексей Кузнецов, самый известный хакер 2000-х Алексей Смирнов, создатель Windows NT Марк Збиковски (кстати, сигнатура exe-файла, MZ, — это его инициалы. — Прим. ред.) и автор проекта CRIU Павел Емельянов. Если хочешь влиться в их стройные ряды — решай наши задачки! Между прочим, некоторые из них предлагают на собеседовании прямо сейчас :).

Сейчас команда разработчиков активно расширяется (а все продукты с мировой известностью делают исключительно в России) — только в московском офисе открыто более 40 вакансий, причем практически во все команды. Больше всего нужны мобильные разработчики (iOS, Android), те, кто будет писать для ядра Linux, а также разработчики в команду облачной платформы Parallels Automation. Собеседования в Parallels редко длятся меньше часа (если меньше, можешь собраться и уйти — пазл не сошелся). Чтобы не терять этот час жизни, попробуй решить сначала их задачи. Все, кто пришлет правильные ответы, получат лицензии на Parallels Desktop для Mac 10 и Parallels Access, а также, как предупреждают в компании, горячий интерес ее эйчаров и тимлидов. Хотя там смотрят прежде всего на логику решающих и опыт и могут нанять даже тех, кто задачи не решил, но чей ход мысли понравился.

Задачи на логику С задачами на логику любят работать практически во всех командах — и тех, что работают с десктопной виртуализацией для конечных пользователей, и тех, что пишут коммиты для ядра Linux и решают задачи серверной виртуализации, и тех, что создают облачные платформы для сервис-провайдеров. Мы описали здесь только свои самые любимые.

Человек хочет пройти через туннель для поездов. Он начинает свой путь в начале туннеля и, когда проходит четверть пути, слышит, что сзади приближается поезд. Неизвестно, как быстро поезд едет и насколько он далеко. Известно только вот что: • Если человек развернется и побежит назад, то он достигнет начала туннеля одновременно с поездом. • Если человек побежит вперед, то конца туннеля он также достигнет одновременно с поездом Считай, что человек ускоряется мгновенно и бегает с постоянной и одинаковой скоростью в обе стороны туннеля, поезд также едет с постоянной скоростью. Вопрос: насколько быстрее движется поезд по сравнению с человеком?

Задача 2 Крестьянину нужно перевезти через реку волка, козу и капусту. Но лодка такова, что в ней может поместиться только крестьянин, а с ним или один волк, или одна коза, или одна капуста. Но если оставить волка с козой, то волк съест козу, а если оставить козу с капустой, то коза съест капусту. Сколько решений имеет эта задача (нет, не одно ;). — Прим. ред.)?

Какие вакансии есть в Parallels?

Александр Лозовский lozovsky@glc.ru

Задачи от Parallels

Задача 1

Парни из Parallels не зря пользуются уважением среди нашего брата программиста. Именно в этой компании придумали контейнерную виртуализацию (и уже реализовали возможность живой миграции контейнеров), сделали такой крутой и всемирно известный продукт, как Parallels Desktop для Mac, и научили смартфоны и планшеты под iOS и Android удаленно воспринимать десктопные приложения с Mac и ПК как нативные (Parallels Access).

На собеседованиях в Parallels предпочитают задавать задачи как логико-алгоритмические, так и предполагающие знание конкретных механизмов и протоколов (назовем их «программными»).

107

Задачи на собеседованиях

ХАКЕР 12 /191/ 2014

ЧИТАТЕЛИ, ШЛИТЕ НАМ свои РЕШЕНИЯ! Правильные ответы присылай или мне, или сразу представителю компании, Ольге Русаковой, на orusakova@parallels.com.

Взлом crackme от Dr.Web: решение читателя Кракми запакован UPX’ом, внутри сначала идет проверка серийника на допустимые символы и длину (должна равняться 16). Потом выделяется буфер 4 Кб, в начало копируется байт-код, и с определенными смещениями копируются длина имени, имя, матрица 4*4, состоящая из единиц и нулей, и расширенный пароль. Далее начинает работать встроенный интерпретатор. По имени берется crc32, матрица перемножается на пароль. Полученные значения сравниваются. То есть, чтобы найти серийник, надо узнать контрольную сумму имени и решить систему линейных уравнений. На картинке ты можешь видеть разобранный байт-код, который исполняется интерпретатором. Здесь Hash4 — массив из 10 uint32, [n] означает обращение к четырехкилобайтному массиву со смещением n. Таким образом, решение: Name: Rumata888 Password: FFD3011A00A2FFDF

Разобранный байткод кракми


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.