Бывало ли у вас ускользающее чувство как будто вы на правильном пути? Возможно, вы что-то делали, подсознательно понимая что двигаетесь в правильном направлении, вы ощущали то неуловимое состояние когда «я понятия не имею что сейчас делаю, но мне кажется я на правильном пути». У меня часто бывает такое состояние. Вашему вниманию предлагается скромная история, произошедшая со мной несколько лет назад. Заранее прошу прощения если я где-то неправильно использую технические термины, поправьте меня в комментариях, спасибо.Собственно, началось все со звонка моей любимой сестры и описания насущной проблемы, которая встала перед ней. А случилось следующее — организация, в которой она работала, год назад заказала создание сайта с 15 виртуальными турами (это там, где используя встроенный flash-плеер вы можете крутить во все стороны и изучать пространство вокруг себя, например, номер в гостинице). В какой-то определенный момент, как вы уже, наверное, догадались, все виртуальные туры на сайте вместо красочных картинок стали показывать ошибку: «Error 20» на красивом белом фоне. С этим и предстояло мне разобраться.
Для начала, изучив принцип по которому эти виртуальные туры встраивались в сайт, я выяснил следующее:
- Каждый виртуальный тур это файл с расширением .ivp
- Туры подгружаются неким специальным flash-плеером
- Ошибку, собственно, выкидывает этот самый плеер
Поначалу, я начал грешить на то, что чьи-то «кривые ручки» что-то испортили, но после непродолжительных пыток системного администратора выяснилось что к сайту никто не прикасался. Дата изменения файлов была прежней, следов вируса или веб-шелла найдено тоже не было. Но что-то подсказывало мне что я должен докопаться до истины и, не буду вас томить, проблема была быстро локализована и окружена.
Оказалось, что если перевести дату на несколько месяцев назад, на компьютере с которого открывается сайт — виртуальные туры отлично работают и никаких ошибок не наблюдается. В тот момент для меня подобное поведение не было особым откровением. Как-то, работая в одной организации, где я занимался поддержкой всей компьютерной техники, была подобная проблема, некая конфигурация, написанная на 1С удачно падала в определенные дни, как по расписанию, после чего компания поддержки этой самой конфигурации отправляла специалиста и он долго и мучительно (по несколько дней) восстанавливал работу. После очередного падения, мне это показалось слишком подозрительным и я сменил системное время на сутки назад, в итоге все заработало, был страшный скандал :). Но рассказ не об этом.
Выяснилось, что проблема возникла тогда, когда высшее руководство решило отказаться от услуг по ежемесячной поддержке сайта от создавшей его веб-студии. Видимо, таким образом, решили не отпускать от себя клиентов. Предвосхищая вопрос — все работы были оплачены в срок и в полном объеме, в том числе, за каждый виртуальный тур. Но, это же бизнес, суровый российский бизнес :).
Все могло бы закончиться уже тогда, но создатели туров уперлись как тот баран в новые ворота и ни в какую не признавали своей вины, просто игнорируя претензии. Конечно, можно было бы обратиться в суд, либо сделать новые виртуальные туры — но ведь это не наш метод, Шурик!
Собственно, полный решимости помочь и чтобы восторжествовала справедливость я принялся думать думу, как мне сделать так, чтобы «усе работало». Используя великолепный инструмент поиска в интернете и зная расширение файлов я быстро нашел зарубежный сайт, продающий программу для создания этих самых виртуальных туров. Изучив сайт я выяснил, что каждый файл виртуального тура шифруется каким-то хитрым способом, а расшифровать его может только «фирменный» flash-плеер, который собственно для этого и предназначен. Стоит отметить, что в шифровании данных я полнейший профан.
Первый подход к снаряду
Попытался декомпилировать имеющийся на руках flash-плеер, чтобы убрать ограничение на проверку даты, с помощью нескольких предназначенных для этого программ. Собственно, тут я потерпел полную неудачу, возможно, мои кривые ручки не позволили мне этого сделать, но то что я получал в итоге было совершенно нечитаемо. Приуныл.
Второй подход к снаряду
Обратил свой ясный взор на файлы виртуальных туров. В этот момент у меня возникло чувство, которое я описывал в самом начале статьи, мне показалось что у меня все получится. Вот так просто. Делай и все получится.
Ну что же, сделал я следующее, скачал hex-редактор и открыл файл с виртуальным туром, то что я увидел можно посмотреть на первом прикрепленном изображении. Не очень-то вдохновляющее зрелище. В тот момент, я даже подумать не мог каким образом можно чего-то добиться от полученных закорючек. Зачем вообще я открыл зашифрованный файл hex-редактором и смотрю на него. Мне кажется, что любой здравомыслящий человек не стал бы заниматься тем, чем я. Сейчас мне это кажется полным бредом. Собст��енно, тогда мне тоже это казалось бредом, единственно что, я ощущал неугасающее чувство что все получится — как? почему? откуда? Я не знаю.

Выяснилось, что только подсвеченная розовым цветом область повторяется в каждом файле виртуального тура, а все что идет ниже — нет. Для начала я нашел нормальный пример виртуального тура, который работал на текущую дату и сравнил его с моими подопытными. Оказалось что его розовая часть один в один совпадает с моими турами, видимо, это общая служебная информация.
Идея
Она пришла ко мне внезапно и очень неуклюже, я понял как можно восстановить работу файлов, надо всего-лишь найти место где хранится дата по которую будет работать виртуальный тур и изменить ее, либо изменить какой-то общий параметр который отвечает за отображение тура. И сделать это надо в слепую, в HEX-редакторе, случайно меняя произвольные символы на другие произвольные символы. Смешно? Никто. Никто не смеет обижать бегемотика ><.
Немного поразмыслив, я понял, что дата или параметр который отвечает за отображение, будут, скорее всего, в самом начале файла, либо в его конце, а в середине будет информация о самом туре. Но скорее всего в начале. Поэтому я выделил для себя примерную область работы, грубо говоря, что-то около такой:

И начал менять символы :) Возможно, кому-то это покажется «немного» глупым и неадекватным, я просто брал любой символ или несколько символов, менял их на любые другие и проверял — работает ли виртуальный тур, конечно же, он не работал, а отваливался с ошибкой вроде «Corrupted file».
Это продолжалось несколько часов, я пытался вставить зоны с рабочих туров скачанных с официального сайта и тому подобное. Мне кажется, я довольно быстро подходил к тому моменту, когда можно посмотреть на самого себя в зеркало и сказать: «Ну, ты, дураааак». В тот момент я полностью ощущал абсурдность своих попыток.
Через несколько часов я решил, что все, хватит, это полнейший бред, я даже закрыл hex-редактор, решив что пора заняться другими делами иначе сойду с ума, но напоследок решил последний раз поменять два символа, открыл файл и заменил эти выделенные символы на «rS» (не знаю почему, я просто их скопировал из другого тура):

Для меня в тот момент произошло чудо, такое чувство как тогда я редко испытывал, оно заработало! Файл начал работать на текущем времени. Это было нечто, я был прав, это было возможно!
Дальнейшие события развивались следующим образом, я написал простенький скрипт на PHP который открывал указанный ему файл и в определенном диапазоне, по порядку, менял символы, оказалось, что для снятия ограничения, разброс для смены символов был довольно-таки большим, иногда нужно было менять 1 символ, иногда 2, позиции для смены я указывал примерно так: с 135 символа по 180. Учитывая что вариантов каждого символа 255 (без первоначального) — скрипт генерировал огромное количество файлов виртуальных туров, из которых надо было найти рабочий.
Эту проблему я решил быстро, скачав плеер туров для win7, с сайта по продаже программы, записывая все файлы в одну папку и открывая эту папку в режиме просмотра эскизов или как-то так, после чего, просто визуально пролистывал папку и среди белых листов, цеплялся взглядом за красочную иконку и это был рабочий виртуальный тур :) Стоит ли говорить, что когда требовалось изменить 2 символа файлов были тысячи.
Кстати, выяснилось, что вариантов при котором туры будут открываться — несколько, то есть, иногда я получал по 5-6 рабочих файлов с разными измененными символами в разных местах.
После чего я быстро восстановил половину виртуальных туров и выложил их на сайт, с остальными решил разобраться позже, т.к. сходу восстановить их не получилось. Но этого делать не пришлось, буквально через несколько дней «веб-студия» делавшая туры отправила файлы без привязки ко времени и все закончилось хорошо.
Собственно, вот такая история, возможно, сам того не подозревая, я делал нечто из обычной практики? Буду рад вашим комментариям.
