Добрый день. Сегодня мы поговорим о защите скриптов в mIRC и о самих этих скриптах.

1. Защищаем переменные

Рассмотрим конкретную ситуацию. У тебя имеется какой либо скрипт, имеющий важную переменную (пример, EnigmaCrypt, в котором есть защитная фраза) и хранящий его во вкладке Variables, что не есть хорошо. Например, такой текст:

%cltrue 1
%cltemp c00lpassw0rd

Как видишь, если кто-нибудь просмотрит файл с переменными, то КПД скрипта автоматически приравняется к нулю.
Чтобы как-либо зашифровать переменную-пароль, нужно создать свою функцию раскодирования этой переменной, и использовать уже ее, а НЕ переменную в том или ином месте кода. Звучит запутанно, но на самом деле все просто. В mIRC давно уже можно создавать свои функции-алиасы. Рассмотрим пример. Допустим у нас имеется такой кусок кода (в Aliases):

sayit 
{
msg %clchan $chr($mid(%cltemp,1,1)) $+ $calc($mid(%cltemp,3,2) * 4)
}

Как мы видим, переменная %cltemp передается в алиас в «чистом» виде. Напишем самую простую из возможных функций для ее кодирования, а затем интегрируем в «sayit».

modify 
{
return $decode($1,m)
}

Таким образом, мы закодировали %cltemp через MIME. Я повторюсь, это самая простая функция из возможных кодировок переменной. Если «враг» долгое время будет проводить за твоим компьютером, он запросто разберется в ней. Что ж, теперь приступим к «sayit», чтобы пароль корректно переваривался скриптом. Изменим содержимое алиаса на нечто вроде:

msg %clchan $chr($mid($modify(%cltemp),1,1)) $+ $calc($mid($modify(%cltemp),3,2) * 4)

Затем, нужно изменить саму переменную %cltemp в разделе Variables (мы же к этому стремились). Чтобы получить MIME-хеш переменной, следует использовать обратную функцию $decode(). Таким образом, команда mIRC: /echo 1 $decode(c00lpassw0rd,m) даст тебе желаемую строку. Ее и впишем в значение переменной.

2. Пишем генератор паролей.

Тебе никогда не приходилось на скорую руку сгенерировать случайный пароль? Для этого, конечно, есть много программ, но сегодня мы напишем свой простой скрипт, который будет делать это за нас 😉 Скрипт будет генерировать пароль, состоящий из цифр и букв верхнего и нижнего регистра.

Итак, открываем Aliases и набиваем туда примерно следующее:

passwd {
var %i 1
if (!$1) {
var %cont $?=»Количество символов?»

else {
set %cont $1
}
if (!%cont) {
set %cont 8
}
while (%i <= %cont) {
set %res $rand(1,3)
if (%res == 1) {
set %st $rand(a,z) 
}
if (%res == 2) {
set %st $rand(A,Z)
}
if (%res == 3) {
set %st $rand(0,9)
}
%str = %str $+ %st
inc %i
unset %res
unset %st
}
echo 1 Password is %str
unset %str
unset %cont
}

Алгоритм такой: обращение к скрипту производится командой «/passwd [количество символов]». При опускания параметра скрипт спросит его интерактивно. Затем запускается цикл, в котором генерируется число от 1 до 3. Если это число единица, в пароль добавляется маленькая буква английского алфавита, 2 — большая, 3 — цифра. И так до тех пор, пока длина строки не будет равной количеству символов. Затем этот пароль выдается тебе echo’м. В конце удаляются все временные переменные и скрипт завершает работу. Все просто и удобно.

В заключении скажу, что ничто не мешает тебе придумывать собственные алгоритмы шифрования переменных и внедрять их в свои скрипты. При умело выстроенном алгоритме, мало кто разгадает механизм его работы (особенно когда вся функция описана в одну длинную строку). Польза от шифрования очень большая — от скрытия твоего пароля на ник для авто-идентификации до составления каких-либо серьезных скриптов и их защиты.

Оставить мнение

Check Also

Скрытая сила пробела. Эксплуатируем критическую уязвимость в Apache Tomcat

В этой статье мы поговорим о баге в Apache Tomcat, популярнейшем веб-сервере для сайтов на…