Как загрузить файл HTML с обфусцированным текстом

Попытка в опубликованном мной обновлении подсказала мне, что на самом деле здесь задействовано 2 (закрытых) ключа: главный и подключ. Они разные. Эта статья помогла мне еще больше понять этот факт: https://wiki.debian.org/Subkeys

Я до сих пор не знаю, как я попал в состояние, когда у мастера есть пароль для доступа, отличный от пароля подключ, но, видимо, поэтому пропуск мастера и использование измененного пароля для подключей работает.

К счастью, у меня все еще был пароль от мастера, который, как мне казалось, я недавно изменил. Используя это, я смог экспортировать ключ, переместить его и успешно импортировать.

1
14.02.2017, 22:07
1 ответ

Это не проблема кодировки. Что происходит, так это то, что сервер возвращает HTML с искаженными именами файлов, и есть немного Javascript, чтобы распутать их.

К счастью, изменение выполняется с помощью Javascript, который не скрыт и не запутан, поэтому его легко отменить. Код JS:

function codeAndEncode(_key,_str){
     var keyUnicodeSum=0;
     var codedStr = "";
     for( j = 0; j<_key.length; j++ ){
          keyUnicodeSum += _key.charCodeAt( j );
     }
     for( i = 0; i<_str.length; i++ )
     {
          var _strXOR = _str.charCodeAt(i) ^ keyUnicodeSum;
          codedStr += String.fromCharCode( _strXOR );
     }
     return codedStr;
}

var filename = codeAndEncode("111", "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá");

Это довольно просто: вычислить значение и выполнить xor его с каждым символом строки. Операции по извлечению и распутыванию одинаковы. Вы можете перевести это на любой язык, который используете для скребка. Например, вот некоторый код Perl, который отменяет искажение:

$ perl -CA -l -we 'my $sum = 0; $sum += ord foreach split //, $ARGV[0]; print $ARGV[1] ^ (chr($sum) x length($ARGV[1]))' 111 "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá"
xiaonian20110601.part1.rar

Менеджер использует DOM обращается к document.getElementById ("file_show_filename") и document.getElementById (" file_down_filename ") для идентификации узлов в дереве HTML, которые необходимо распутать. Вы также можете адаптировать это к любому парсеру HTML, который использует ваш парсер.

Целью искажения имен файлов является усложнение очистки, поэтому вполне вероятно, что администраторы сайта со временем усложнят воспроизведение таких искажений. Если вы хотите сохранить искаженные имена файлов независимо от того, какие уловки использует сайт, вы можете запустить Firefox в автоматизированной среде. См. . Существуют ли какие-либо хорошие инструменты, помимо SeleniumRC, которые могут получать веб-страницы, включая контент, нарисованный с помощью JavaScript? и Как я могу запустить Firefox в Linux без подключения к голове (то есть без использования libgtk-x11-2.0.so. 0)?

2
27.01.2020, 23:34

Теги

Похожие вопросы