![]() |
Шифруем php скрипт с помощью пароля
Вообщем может народ сразу не догнал поясню. Данный скрипт шифрует любой php скрипт с помощью пароля без которого вы ни запустите скрипт, ни почитаете его сорцы(Я думаю вы поняли отличие от Зенда)...
Зачем? Ну собственно я это писал на заказ для того чтобы зашифровать админ панель одного типа, удобно знаете ли ведь пасс впринципе то нигде не хранится, и если найти его, то только перебором, что также весьма проблематично :)) А вариантов масса для того же криптования веб-шелла и вроде как и антивирь не учует, и без пасса ваш веб шел никто не заюзает...или создание чего то типа контейнера с БД какого нить похеканного сайта..вообщем сами придумаете... Я думаю многим пригодится. Вот собсно сам скрипт для шифрования: Код:
<?phpВ результате шифрования паролем 131 вот этого файла Код:
<?phpКод:
<?php |
Прикольно... Наверное найду применение ;)
|
Ну смотри. У тебя там есть такая функция, расшифровывающая пароль:
Код:
function crypting($str,$pas){Вначале это: "?>" или с большой вероятностью "?><? ", "?><?php " и пр. похожие варианты. Вконце это: "<?php " или с большой долей вероятности "?> <?php ", "php?> <?php " и пр. похожие варианты. Вот так можно попробовать восстановить пароль: Внимание на строку в дешифрующей функции: Код:
$old_str[$i]=chr($old_str[$i]-(($sum_pas+ord($pas[$intp]))%255));255*n + С = А - Х - У группируем известные и неизвестные: Х + У + 255*n = Q Где Q = A - C - известно Это уравнение с тремя неизвестными, каждое неизвестное является целым числом. Аналогичное уравнение можно получить для каждого из 7и начальных символов шифротекста: X + Y1 + 255*n1 = Q1 X + Y2 + 255*n2 = Q2 X + Y3 + 255*n3 = Q3 ... X + Y7 + 255*n7 = Q7 В действительности n1...n7 могут принимать только до двух различных значений - n или m (потому что добавление кода одного символа к числу может варьировать целочисленное частное этого числа от деления на 0xFF только лишь в пределах двух значений), количество возможных вариантов матрицы такой системы 2^7. На самом деле Х это сумма всех Yi где i = 1..Длина_пароля. С учетом этих замечаний, можно сделать вывод, что пароль длиной не больше 5 символов однозначно восстанавливается из этой системы, т.к. все n1..n7 сводятся к n и m, в итоге получается система из 7 уравнений не больше чем при 7 неизвестных (как решать такие системы, недавно обсуждалось в разделе "написания программ на "С/С++, C#, Delphi, .NET, Asm"). Верность подобранного пароля длиной 5 символов проверяется на последних символах шифротекста, соответствующих так же известным символам исходного текста. Верность пароля длиной меньше 5 символов автоматически проверяется при решении СЛАУ. Если пароль больше 5 символов, то нужно сделать следущее: 1) Задаться длиной пароля (в цикле она будет перебираться) 2) Пройтись по шифротексту и определить какие по номеру символы пароля участвовали в конце шифротекста при его шифровании (интересуют символы предопределенной конечной последовательности). Включить в СЛАУ эти символы 3) Решить СЛАУ, получив набор независимых решений 4) Устроить перебор независимых решений, получая на их основе зависимые. Анализ дешифрованного текста при этом можно проводить на соответствие печатным символам и на поиск ключевых слов языка PHP. Вот такой вот небольшой "криптоанализ" позволяет расшифровывать файлы, полученные твоим скриптом! |
Ну вот хотел как лучше а получилось как всегда :((
Ну а теперь как? всмысле без "предопределенной последовательности"? |
Цитата:
|
| Время: 15:46 |