
Быстрый поиск
Деобфускация скриптов PHP и JavaScript

Деобфускация скриптов PHP и JavaScript
Одним из наиболее надежных на сегодняшний день способов защиты скриптов от изучения и модификации является обфускация.
Обфускация (от лат. obfuscare, "затенять, затемнять") - запутывание кода программы, то есть приведение исходного текста к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию.
В отличие от однозначно обратимого шифрования и упаковки, обфускация представляет собой необратимое действие. Это значит, что восстановить код скриптов до первоначального вида не представляется возможным. Все без исключения обфускаторы PHP и JavaScript работают двумя способами: из исходного текста удаляются переносы строк и незначимые пробелы, а имена классов, переменных и функций заменяются на бессмысленный набор символов. Эти действия могут как комбинироваться, так и выполняться независимо.
Читать статью целиком »
Плоды прогресса (приключенческая повесть)
(приключенческая повесть)
Посреди пустыни произрастала пальма. Под пальмой племя папуасов, пораженное проказой, попивало портвейн. Пальма плодоносила плохо, папуасы прозябали, питались падалью, пожирали попугаев, протухших пятнистых питонов. Процветали полиомиелит, паранойя, псориаз, понос, паркинсонизм.
Пытаясь предотвратить полную погибель папуасов, подкомитет помощи первобытным племенам прислал полпреда Попова. Попов, подобно Прометею, принес папуасам плоды прогресса: полупроводники, пылесос, плетизиограф, прочее. Получку Попов получал по пятницам, покупал пиво, пирожки, папайю, повидло - подкармливал проституток, пробуя поддержать популяцию папуасов. План Попова позорно провалился - подлые проститутки применяли противозачаточные пилюли. Племя подыхало. Пронырливые португальцы продавали портвейн по пятьдесят песо, получая пятьсот процентов прибыли. Папуасы пропивали последние плавки.
Пустыня приглянулась преуспевающему плантатору Педро Перейре. "Полью почву, посажу помидоры, пшеницу, перец" - планировал плантатор. Под пасху Педро пригласил Попова пообедать.
- Прогони папуасов, - предложил Перейра, подливая Попову пульке, пунш, пльзеньское пиво, подкладывая печеночный паштет. - Поделюсь прибылью. Пошли подальше поручение подкомитета - получишь парагвайское подданство, поместье, пеонов, пост посла.
- Пшел прочь, паскуда! - пробормотал Попов, пожирая поросенка.
- Подумай. Подарю полотно Пикассо, платиновую пепельницу, Пиночету представлю, - пообещал плантатор.
Читать статью целиком »
Работа с недокументированными API WHM и cPanel

Работа с недокументированными API WHM и cPanel
cPanel является одной из самых популярных коммерческих панелей управления аккаунтами на серверах виртуального хостинга. Все действия выполняются обычно через web-интерфейс, но для использования в ваших проектах авторами предоставляется API.
Читать статью целиком »
Абсолютная защита

Абсолютная защита
Каждый день появляется все больше вредоносных программ, нацеленных на кражу паролей и другой приватной информации. Противодействие брони и снаряда идет с переменным успехом, талантливые программисты антивирусных лабораторий создают все более мощные средства обнаружения заразы, в это же время не менее талантливые представители андеграунда придумывают новые способы их обхода. Нет никакой уверенности, что обновление антивирусной базы скачается раньше, чем в системе окажется троян. Однако можно противопоставить им практически абсолютную защиту. Принцип ее основан на том, что все вредоносные программы ищут своих жертв по заранее известным параметрам: прописанные в реестре пути установки, фиксированные имена и расширения файлов с паролями. Ни в одной вредоносной программе не будет использоваться сложный алгоритм эвристики или поиска по содержимому, так как это увеличит размер троянов на порядки и затруднит их незаметное распространение.
Читать статью целиком »
Проверка похожести двух слов
- // -----------------------------------------------------
- // Функция проверки похожести двух слов
- // Параметры: $name1 и $name2 - слова для проверки
- // $register = TRUE - проверка регистронезависима
- // = FALSE - проверка с учетом регистра
- // На выходе: TRUE - слова похожи, FALSE - отличаются
- // -----------------------------------------------------
- function chk_similarity($word1, $word2, $register=false) {
- // Очистить слова от служебных символов
- $word1=eregi_replace("[^0-9a-zа-я]","",$word1);
- $word2=eregi_replace("[^0-9a-zа-я]","",$word2);
- // Возврат FALSE если длина слов различается
- // или хотя бы одно из них пустое
- if ((strlen($word1)!==strlen($word2)) || strlen($word1)*strlen($word2)==0) {
- return false;
- }
- // Заполнить таблицу соответствий
- $pattern1="";
- $pattern2=Array();
- $pattern1.="aа";
- $pattern2[]="[аa]";
- $pattern2[]="[аa]";
- $pattern1.="AА";
- $pattern2[]="[АA]";
- $pattern2[]="[АA]";
- $pattern1.="BВ";
- $pattern2[]="[BВ]";
- $pattern2[]="[BВ]";
- $pattern1.="bь";
- $pattern2[]="[bь]";
- $pattern2[]="[bь]";
- $pattern1.="cс";
- $pattern2[]="[cс]";
- $pattern2[]="[cс]";
- $pattern1.="CС";
- $pattern2[]="[CС]";
- $pattern2[]="[CС]";
- $pattern1.="eе";
- $pattern2[]="[eе]";
- $pattern2[]="[eе]";
- $pattern1.="EЕ";
- $pattern2[]="[EЕ]";
- $pattern2[]="[EЕ]";
- $pattern1.="HН";
- $pattern2[]="[HН]";
- $pattern2[]="[HН]";
- $pattern1.="iI1l";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern2[]="[iI1l]";
- $pattern1.="kк";
- $pattern2[]="[kк]";
- $pattern2[]="[kк]";
- $pattern1.="KК";
- $pattern2[]="[KК]";
- $pattern2[]="[KК]";
- $pattern1.="MМ";
- $pattern2[]="[MМ]";
- $pattern2[]="[MМ]";
- $pattern1.="nп";
- $pattern2[]="[nп]";
- $pattern2[]="[nп]";
- $pattern1.="oо0";
- $pattern2[]="[oо0]";
- $pattern2[]="[oо0]";
- $pattern2[]="[oо0]";
- $pattern1.="OО0";
- $pattern2[]="[OО0]";
- $pattern2[]="[OО0]";
- $pattern2[]="[OО0]";
- $pattern1.="pр";
- $pattern2[]="[pр]";
- $pattern2[]="[pр]";
- $pattern1.="PР";
- $pattern2[]="[PР]";
- $pattern2[]="[PР]";
- $pattern1.="rг";
- $pattern2[]="[rг]";
- $pattern2[]="[rг]";
- $pattern1.="TТ";
- $pattern2[]="[TТ]";
- $pattern2[]="[TТ]";
- $pattern1.="uи";
- $pattern2[]="[uи]";
- $pattern2[]="[uи]";
- $pattern1.="xх";
- $pattern2[]="[xх]";
- $pattern2[]="[xх]";
- $pattern1.="XХ";
- $pattern2[]="[XХ]";
- $pattern2[]="[XХ]";
- $pattern1.="yу";
- $pattern2[]="[yу]";
- $pattern2[]="[yу]";
- $pattern1.="YУ";
- $pattern2[]="[YУ]";
- $pattern2[]="[YУ]";
- $pattern1.="З3";
- $pattern2[]="[З3]";
- $pattern2[]="[З3]";
- $pattern1.="ч4";
- $pattern2[]="[ч4]";
- $pattern2[]="[ч4]";
- $pattern1.="Ч4";
- $pattern2[]="[Ч4]";
- $pattern2[]="[Ч4]";
- // Составить регулярное выражение для проверки
- $tmp="^";
- for ($i=0; $i<strlen($word1); $i++) {
- $letter=$word1[$i];
- $pos=strpos($pattern1,$letter);
- if ($pos===false) {
- $tmp.=$letter;
- }
- else {
- $tmp.=$pattern2[$pos];
- }
- }
- $tmp.="$";
- // Возврат TRUE - слова похожи или равны
- // FALSE - слова отличаются
- return($register?eregi($tmp,$word2):ereg($tmp,$word2));
- }
Читать статью целиком »

