Собственно, началось все со звонка моей сестры и описания насущной проблемы, которая встала перед ней. А случилось следующее — организация, в которой она работала, год назад назад заказала создание сайта с 15-тью виртуальными турами (это там, где используя встроенный flash-плеер вы можете крутить во все стороны и изучать пространство вокруг себя, например, номер в гостинице). В какой-то определенный момент, как вы уже, наверное, догадались, все виртуальные туры на сайте вместо красочных картинок стали показывать ошибку: «Error 20» на красивом белом фоне. С этим и предстояло мне разобраться.
Для начала, изучив принцип по которому эти виртуальные туры встраивались в сайт, я выяснил следующее:
- Каждый виртуальный тур это файл с расширением .ivp
- Туры подгружаются неким специальным flash-плеером
- Ошибку, собственно, выкидывает этот самый плеер
Поначалу, я начал грешить на то, что чьи-то «кривые ручки» что-то испортили, но после непродолжительных пыток системного администратора выяснилось что к сайту никто не прикасался. Дата изменения файлов была прежней, следов вируса или веб-шелла найдено тоже не было. Но что-то подсказывало мне что я должен докопаться до истины и, не буду вас томить, проблема была быстро локализована и окружена.
Оказалось, что если перевести дату на несколько месяцев назад, на компьютере с которого открывается сайт — виртуальные туры отлично работают и никаких ошибок не наблюдается. В тот момент для меня подобное поведение не было особым откровением. Как-то, работая в одной организации, где я занимался поддержкой всей компьютерной техники, была подобная проблема, некая конфигурация, написанная на 1С удачно падала в определенные дни, как по расписанию, после чего компания поддержки этой самой конфигурации отправляла специалиста и он долго и мучительно (по несколько дней) восстанавливал работу. После очередного падения, мне это показалось слишком подозрительным и я сменил системное время на сутки назад, в итоге все заработало, был страшный скандал :). Но рассказ не об этом.
Выяснилось, что проблема возникла тогда, когда высшее руководство решило отказаться от услуг по ежемесячной поддержке сайта от создавшей его веб-студии. Видимо, таким образом, решили не отпускать от себя клиентов. Предвосхищая вопрос — все работы были оплачены в срок и в полном объеме, в том числе, за каждый виртуальный тур. Но, это же бизнес, суровый российский бизнес :).
Все могло бы закончиться уже тогда, но создатели туров уперлись как тот баран в новые ворота и ни в какую не признавали своей вины, просто игнорируя претензии. Конечно, можно было бы обратиться в суд, либо сделать новые виртуальные туры — но ведь это не наш метод, Шурик!
Собственно, полный решимости помочь и чтобы восторжествовала справедливость я принялся думать думу, как мне сделать так, чтобы «усе работало». Используя великолепный инструмент поиска в интернете и зная расширение файлов я быстро нашел зарубежный сайт, продающий программу для создания этих самых виртуальных туров. Изучив сайт я выяснил, что каждый файл виртуального тура шифруется каким-то хитрым способом, а расшифровать его может только «фирменный» flash-плеер, который собственно для этого и предназначен. Стоит отметить, что в шифровании данных я полнейший профан и все на что я способен это md5 для хранения паролей :).
Первый подход к снаряду
Попытался декомпилировать имеющийся на руках flash-плеер, чтобы убрать ограничение на проверку даты, с помощью нескольких предназначенных для этого программ. Собственно, тут я потерпел полную неудачу, возможно, мои кривые ручки не позволили мне этого сделать, но то что я получал в итоге было совершенно нечитаемо. Приуныл.
Второй подход к снаряду
Обратил свой ясный взор на файлы виртуальных туров. В этот момент у меня возникло чувство, которое я описывал в самом начале статьи, мне показалось что у меня все получится. Вот так просто. Делай и все получится.
Ну что же, сделал я следующее, скачал hex-редактор и открыл файл с виртуальным туром, то что я увидел можно посмотреть на первом прикрепленном изображении. Не очень-то вдохновляющее зрелище. В тот момент, я даже подумать не мог каким образом можно чего-то добиться от полученных закорючек. Зачем вообще я открыл зашифрованный файл hex-редактором и смотрю на него. Мне кажется, что любой здравомыслящий человек не стал бы заниматься тем, чем я. Сейчас мне это кажется полным бредом. Собственно, тогда мне тоже это казалось бредом, единственно что, я ощущал неугасающее чувство что все получится — как? почему? откуда? Я не знаю.
Выяснилось, что только подсвеченная розовым цветом область повторяется в каждом файле виртуального тура, а все что идет ниже — нет. Для начала я нашел нормальный пример виртуального тура, который работал на текущую дату и сравнил его с моими подопытными. Оказалось что его розовая часть один в один совпадает с моими турами, видимо, это общая служебная информация.
Идея
Она пришла ко мне внезапно и очень неуклюже, я понял как можно восстановить работу файлов, надо всего-лишь найти место где хранится дата по которую будет работать виртуальный тур и изменить ее, либо изменить какой-то общий параметр который отвечает за отображение тура. И сделать это надо в слепую, в HEX-редакторе, случайно меняя произвольные символы на другие произвольные символы. Смешно? Никто. Никто не смеет обижать бегемотика ><.
Немного поразмыслив, я понял что дата или параметр который отвечает за отображение будут, скорее всего, в самом начале файла, либо в его конце, а в середине будет информация о самом туре. Но скорее всего в начале. Поэтому я выделил для себя примерную область работы, грубо говоря, что-то около такой:
И начал менять символы 🙂 Возможно, кому-то это покажется «немного» глупым и неадекватным, я просто брал любой символ или несколько символов, менял их на любые другие и проверял — работает ли виртуальный тур, конечно же, он не работал, а отваливался с ошибкой вроде «Corrupted file».
Это продолжалось несколько часов, я пытался вставить зоны с рабочих туров скачанных с официального сайта и тому подобное. Мне кажется, я довольно быстро подходил к тому моменту, когда можно посмотреть на самого себя в зеркало и сказать: «Ну, ты, дураааак». В тот момент я полностью ощущал абсурдность своих попыток.
Через несколько часов я решил, что все, хватит, это полнейший бред, я даже закрыл hex-редактор, решив что пора заняться другими делами иначе сойду с ума, но напоследок решил последний раз поменять два символа, открыл файл и заменил эти выделенные символы на «rS» (не знаю почему, я просто их скопировал из другого тура):
Для меня в тот момент произошло чудо, такое чувство как тогда я редко испытывал, оно заработало! Файл начал работать на текущем времени. Это было нечто, я был прав, это было возможно!
Дальнейшие события развивались следующим образом, я написал простенький скрипт на PHP который открывал указанный ему файл и в определенном диапазоне менял символы, оказалось, что для снятия ограничения, разброс для смены символов был довольно-таки большим, иногда нужно было менять 1 символ, иногда 2, позиции для смены я указывал примерно так: с 135 символа по 180. Учитывая что вариантов каждого символа 255 (без первоначального) — скрипт генерировал огромное количество файлов виртуальных туров, из которых надо было найти рабочий.
Эту проблему я решил быстро, скачав плеер туров для win7, с сайта по продаже программы, записывая все файлы в одну папку и открывая эту папку в режиме просмотра эскизов или как-то так, после чего, просто визуально пролистывал папку и среди белых листов, цеплялся взглядом за красочную иконку и это был рабочий виртуальный тур 🙂 Стоит ли говорить, что когда требовалось изменить 2 символа файлов были тысячи.
Кстати, выяснилось, что вариантов при котором туры будут открываться — несколько, то есть, иногда я получал по 5-6 рабочих файлов с разными измененными символами в разных местах.
После чего я быстро восстановил половину виртуальных туров и выложил их на сайт, с остальными решил разобраться позже, т.к. быстро восстановить их не получилось. Но этого делать не пришлось, буквально через несколько дней «веб-студия» делавшая виртуальные туры отправила нам файлы без привязки ко времени и все закончилось хорошо.
Собственно, вот такая история, возможно, сам того не подозревая, я делал нечто из обычной практики? Буду рад вашим комментариям.
ссылка на оригинал статьи http://habrahabr.ru/post/202204/
Добавить комментарий