1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Soft Докачка битых архивов "ReGet'ом"

Тема в разделе "Hard & Soft", создана пользователем Alexzhur, 20 окт 2008.

  1. Alexzhur

    Alexzhur

    Регистрация:
    20 окт 2008
    Сообщения:
    50
    Если у вас глюкнул "РиГет" и не полностью скачал большой файл или скачал битый архив, то можно вручную сказать "Ригету" где качать. Понадобится: шестнадцатеричный редактор (WinHex подойдет, мощная вещь, только регистрировать придется, нерегистрированный файлы больше 200 КБ не редактирует, фаровский подключаемый не подойдет, он с большими файлами долго работает), виндовый калькулятор, "Filemon" фирмы "Sysinternals", которую, видимо перекупил "Микрософт".

    "Ригет" информацию о том сколько и где скачано пишет в самый конец скачиваемого файла, добавив перед этим еще пару килобайт нулей. Формат такой: E!w/.... ....›X/. первые четыре символа обязательны и нформации не несут, затем, - видимо, смещение начала блока, смещение конца блока (скорее всего, последний закачанный байт) и могут быть еще четыре символа - они бывают разные, видимо ими "Ригет" метит до конца секция скачана или нет. Можно, открыв в редакторе "Фара" посмотреть как меняются эти значения во время закачавания файла в режиме реального времени. Кто хочет, может попробовать во всем этом разобраться и восстановить полностью информацию о том сколько и где скачано (скорее всего придется обнулить информацию о последней секции), но я с этим не разобрался, так что писать не буду, а вот что точно можно сделать - так это вручную найти нескачанные места и указать "РиГету" их скачать. Для этого нужно в шестнадцатеричном редакторе открыть скачиваемый файл (в этот момент его, естественно, скачивать не надо), задать поиск по шестнадцатеричным значениям (Ctrl+Alt+X), ввести кучу нулей и найти первый блок нулей (если программа ругается, ввести еще один ноль), то есть то, что "РиГет" скачать не успел. Смотрим адрес, по которому начинается блок, записываем. Берем ползунок справа и тянем его вниз, пока не появятся какие-нибудь символы (где "РиГет" уже снова начал качать, другую секцию), даем снова поиск, только в "Search" в диалоге поиска нужно указать "Up", чтобы искало наоборот - к началу файла, находим конец блока нулей - того, что не скачано, записываем адрес . Теперь берем первое значение, идем в самый конец файла, обнуляем все строки кроме последней, в последней, начиная с 9-го байта (первый в правой колонке) начинаем вводить наше смещение: берем последние две цифры (цифры у нас шестнадцатеричные), вводим в девятый байт, берем следующие две, вводим в десятый байт и так далее. Т.е. если у нас было смещение ae88940, то в "ВинГексе" у нас будет: "40 89 e8 0a". Сохраняем файл, запусаем "РиГет" - он начинает скачивать с нужного нам места. Может быть придется еще обнулить пятый, шестой, седьмой и восьмой байты, но у меня пошло и так.

    Затем, берем адрес конца блока, открываем виндовый калькулятор, переводим в инженерный режим, переключаем в шестандцатеричную систему счисления ("Hex") (слева под строкой для ввода чисел), вводим адрес конца блока в шестнадцатеричном виде, к примеру: "b335780", переключаем в десятичный режим ("Dec"), получаем "187914112", делим на 1024, чтобы получить килобайты, делим еще раз на 1024, чтобы получить мегабайты, получаем "179,2088623046875". Идем в "РиГет" и ждем, когда он скачает 180 МБ (если скачать 179, то 0,8 МБ не будут скачаны). Таким образом находим все пропущенные места, скачиваем их, все должно быть нормально.

    Второй случай - архив битый. Открываем архиватором битый архив, проверяем его или распаковываем, смотрим на каком проценте вылетает ошибка, запоминаем. Запускаем "Файлмон", он показывает какие программы какие файлы читают и в каком месте. Запускаем, перед нами будет диалог настройки фильтра - что показывать, что нет. В верхней строчке пишем название нашего архиватора (причем не само название, а название файла этого архиватора, но оно обычно совпадает, посмотреть его можно в свойствах ссылки, которой запускается архиватор или вручную на диске),можно без расширения, "Файлмон" будет выдавать информацию только по этой программе. Внизу отмечаем "Log Reads" и "Log Successes", остальное отключаем, жмем "OK". Начинаем проверять или распаковывавать архив еще раз, переключаемся в "Файлмон" и перед самым тем местом, где архиватор выдает ошибку жмем на пикторгаммку с лупой - "Файлмон" перестает следить кто чего читает. Смотрим последнюю строчку, справа есть слово "Offset", после него - смещение, по которому последний раз происходило чтение, идем в калькулятор, переводим из десятичной системы счисления в шестнадцатеричную (обратно тому, что описывалось выше) и вводим это в последние байты нашего архива как опять же описывалось выше. Может быть нужно будет взять не это смещение, а пораньше - неизвестно какими блоками архиватор данные записывает.

    Если "РиГет" скачал файл до конца, то нужного нам "хвоста" в файле не будет, в этом случае копируем файл куда-нубудь, стираем, говорим "РиГету" чтобы начал скачивать файл, он снова создает пустой файл на диске (для этого, кстати, в "Общих настройках" в "Свойствах закачки по умолчанию" должно быть "Резервировать место на диске для всего файла", но, вроде, оно так по умолчанию), останавливаем, "ВинГексом" открываем первый файл, во втором выделяем ригетовский "хвост", копируем его в первый файл (тут "ВинГекс" будет копировать весь наш архив), копируем старый файл с новым "хвостом" на место нового.

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

    Чтобы избавиться от "хвоста", нужно найти его начало (он тоже состоит из нулей) отступить пару строчек вверх и качать с этого адреса. Когда "РиГет" докачает до конца файла, "хвост" он обрежет.

    Вроде все. Будут вопросы - пишите на "alexzhur на ukrpack.net", почту проверяю обычно раз в неделю.


    --
    Журавлев Алексей
     
    Последнее редактирование: 20 май 2009
  2. John Freeman

    John Freeman

    Регистрация:
    13 май 2004
    Сообщения:
    14.241
    Вообще то во многих менеджерах это и так есть, во всех старых вроде netvampire итд так было изначально и убралось только в новых менеджерах закачек когда такие проблемы паддинга стали неактуальны.

    Впрочем, оно осталось, только в другом виде. Паддинг он по сути нужен только при разрыве кривого соединения или резете, от второго сделана докачка по размеру буфера во всех современных менеджерах, при резете и будет откат.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление