3.33.
Описание языка скриптов
Скрипты
— это изюминка Login Hacker. Поэтому, если вы научитесь писать хорошие скрипты,
то сможете взломать практически любую систему. Конечно это не относится к
новичкам или тем хакерам, которые никогда не программировали даже на Бэйсике.
Скрипт
должен пройти через компилятор, который проверяет его на вшивость. Поэтому вы
можете быть уверены на 99%, что в процессе атаки не произойдет сбоя по вине
плохого скрипта.
Итак,
поехали.
Все,
что начинается с точки с запятой — комментарии. Все, что начинается с
двоеточия — переход на следующую команду.
Четыре
строки, начинающиеся с символа # определяют операторы, с которых начинается
специальная часть скрипта.
Оператор
#DEFINE определяет переменную.
Оператор
#NOCARRIER осуществляет автоматический возврат в программу в случае
аварийного прерывания сессии, то есть без команды hangup.
Оператор
#START активизирует загрузку скрипта.
Оператор
#END заканчивает выполнение скрипта.
Все
переменные являются необязательными. Исключение составляют переменные logfile
и phone_nr. Вы не можете определять какие-либо переменные, за
исключением тех, которые описаны ниже.
LOGFILE=FILENAME
Определить
файл регистрации и место на диске для этого файла. Это важная переменная
используется при написании любого скрипта.
Например:
LOGFILE=C:\ OUTPUT\ NY-SYS5.LOG
PHONE_NR=NUMBER
Эта
переменная используется вместе с командой DIAL. Ее тело может состоять как из
цифр, так и из букв. Это вторая переменная, которую всегда используют при
написании скриптов.
Например:
PHONE_NR=1-800-WHO-CARES
INIT_MODEM=STRING
Если
ваш модем должен работать в режиме Pulse Dialing, то поместите
перед телефонным номером аргумент P. Если же ваш модем не может
инициализировать строковые данные, поместите перед соответствующим телефонным
номером команду AT (если эта команда отсутствует в Hacker Setup).
Например:
INIT_MODEM=Z
(здесь
также может стоять аргумент AT Z)
INIT_DATA=STRING
Инициализация
каналов передачи данных, в том числе стоповых битов и битов четности.
Переменная используется в том случае, если соответствующие параметры
отсутствуют в Hacker Setup. В общем случае аргументами этой переменной
являются наборы символов 8N1 и 7E1, то есть аргумент всегда должен состоять
из трех символов. Первый символ — это цифры 7 или 8, являющиеся битами
данных. Второй символ может быть записан как P (контроль по нечетности), E
(контроль по четности) или N (не контролировать биты данных). Третий символ
соответствует ситуации, когда на первый стартовый бит налагается первый
стоповый бит:
7/8+E/P/N+1/2.
DIAL_TRIES=NUMBER
Эта
переменная определяет количество попыток набора номера в диапазоне от 0 до
65535. Ноль соответствует бесконечному набору номера.
Если
номер набран, загружается HANGUP и остальная часть скрипта.
Например:
DIAL_TRIES=3
Standard
: 0
Важно: Если эта переменная отсутствует в скрипте, то будут
использованы установки соответствующие файлу LOGINH.CFG.
LOGIN_TRIES=NUMBER
Эта
переменная определяет количество попыток входа в систему в диапазоне от 0 до
2300000000. Ноль соответствует неограниченной попытке зарегистрироваться.
Если в файле словаря будет достигнут так называемый конец кадра (EOF), то скрипт
автоматически повесит трубку и прекратит сессию. Время, в течение которого будет
осуществляться подбор регистрационных данных зависит от команд прицепки
SEND_NEXT_DIC, NEXT_DIC или им аналогичных для словаря Brute Force Generator.
Например:
LOGIN_TRIES=0
Standard
: 0
Важно: Если эта переменная отсутствует в скрипте, то в атаке
будут использованы установки соответствующие файлу LOGINH.CFG.
DIC(NUMBER)=FILENAME
Определить
словарь, который будет использован соответствующим скриптом. Аргумент DIC указывает
на существующие файлы словарей. Вы можете прицепить к скрипту от одного до
трех словарей. Используйте для этого команды Send_Next_DIC (1), Send_DIC (1)
и Next_DIC (1).
Например:
DIC(1)=C:\ HACKING\ DICTIONA.RY\ BAD_PWS.DIC
FROM_DIC(NUMBER)=STRING
Определить
слово, начиная с которого можно использовать словарь в скрипте.
Например:
FROM_DIC(1)=Tracy
BRUTE(NUMBER)=STRING,NUMBER,NUMBER,NUMBER
Определить
словарь Brute Force Generator для использования в скрипте. Brute Force Generator
весьма гибок. Четыре параметра словаря Brute Force Generator разделены
запятой. Ниже описывается приемлемая спецификация этих параметров.
1
●
a — буквы нижнего регистра.
●
A — буквы верхнего регистра.
●
1 — цифры.
●
$ — спецсимволы.
●
^ — так называемые контролируемые символы.
●
Любые синонимы ASCII.
2
Этот
параметр сообщает скрипту какое количество различных символов,
соответствующих параметру 1 необходимо этому скрипту.
Каждое
сгенерированное слово соответствующее параметру 1 всегда имеется в таком же
слове соответствующим параметру 2. Символ верхнего регистра и один номер допустимы.
Величина соответствующая нулю неприемлема.
3
Сообщает
скрипту возможную минимальную длину для символов пароля, подобранного при
использовании словаря Brute Force Generator.
(4)
Возможная
максимальная длина для символов пароля, подобранного при использовании
словаря Brute Force Generator.
Важно:
Минимальная длина символов равна 1, максимальная соответствует 12.
Помните,
что вы можете использовать в атаке до трех словарей Brute Force Generator.
Используйте для этого великолепные команды привязки Next_Brute(1), Send_Next_Brute(1)
и Send_Brute(1).
Например:
BRUTE(1)=a,1,1,6
В
этом примере используется первый параметр Brute Force Generator со следующими
данными: проверять только символы нижнего регистра, предположить, что при
подборе пароля в словаре присутствует хотя бы один действительный символ,
минимальная длина регистрационного слова равна единице, максимальная — шести.
FROM_BRUTE(number)=STRING
Начать инициализацию со словарем Brute Force Generator. При этом важно следующее: если инициализация началась с
четвертой буквы, а вы просматриваете диапазон от 1 до 8 буквы, то диапазон от
1 до 3 будет игнорироваться, то есть сначала идет подбор aaaa, затем aaab,
затем aaac и т.д.
Например:
FROM_BRUTE(1)=2527
Секция
#NOCARRIER
Это
будет выполняться всякий раз, когда вы не используете команду HANGUP. Если в скрипте
отсутствуют операторы GOTO (*START) или GOTO (1), то дальше он выполняться не
будет. Это означает, что вы снова должны набрать модемный номер доступа к
системе. Поэтому проверьте установки в DIAL_TRIES.
Секция
#START
В
этой важной секции описываются операторы, которые в дальнейшем будут ломать
систему.
LOG(STRING)
Команда
LOG( ) записывает в файл регистрации некоторую информацию. Это может быть
любой текст, переменные, перед которыми всегда должен стоять знак $ (знак
доллара), а также пробелы между словами. В конец строки каждая команда LOG( )
автоматически печатает возврат каретки.
Примеры:
LOG(Beginning on $DATE * $TIME)
Будет
выведено следующее:
“Beginning
on 24-12-96 * 23:00”
LOG_(STRING)
Этот
пример аналогичен вышеприведенному, за исключением того, что после текста
отсутствует возврат каретки.
:NUMBER
Каждая
линия, начинающаяся с : (двоеточия) маркируется оператором GOTO. Вы можете
использовать 240 маркировок в диапазоне от 1 до 240. Другие номера
неприемлемы. Переход к нужному маркеру осуществляется командами передачи
управления GOTO, GOSUB, CHECK4OUTPUT и CHECK4CARRIER.
Например:
:1
В
этом примере на соответствующую строку выполняется переход к точке с номером
1.
GOTO(NUMBER)
Передать
управление на маркировку перехода. Вы можете также осуществить переход
командами #START, #NOCARRIER и #END.
Например: GOTO(#END) (выполнение скрипта
завершено).
GOSUB(NUMBER)
С
командой подстановки GOSUB вы осуществляете переход к следующей маркировке.
Команда GOSUB, как правило исполняется уже после перехода на следующий
маркер, то есть в тот момент, когда команды GOSUB и RETURN столкнутся между
собой. Обратите внимание, что вот такая команда невозможна: GOSUB(#END).
Например:
GOSUB(4)
RETURN
Это
так называемая команда выхода из подпрограммы. Используя эту команду вы
можете возвратиться к местоположению последней выполненной команды GOSUB и
продолжить обычное выполнение скрипта. Если в буферном регистре команда
RETURN сталкивается с несуществующим начальным адресом GOSUB, то она будет
игнорироваться. В одном буферном регистре вы можете иметь до 255 подстановок
GOSUB.
Например:
RETURN
CHECK4CARRIER(NUMBER)
Проверка
модема на соединение с линией, то есть проверка на несущую частоту. Команда
будет выполняться в случае отсутствия перехода к указанной маркировке (переход
соответствует команде GOTO). Если переход обнаружен, то
устанавливается внутреннее соединение с переменной TRUE для проверки
на NO_CARRIERS. Вы можете также осуществлять процедуры перехода к *NOCARRIER,
*START и *END. Также возможно осуществить проверку модема
только на ON или OFF. Если команда CHECK4CARRIER(ON)
выполнена с переходом к маркеру, отмечающему обнаружение линии, и, если представлен
NOT, то управление передается на *NoCarrier. Эта команда
полезна только в том случае, когда вы оказываетесь на CHECK4CARRIER(OFF)
и не хотите использовать команду DIAL, чтобы соединиться с удаленной
системой (позвольте набрать номер SCAVENGER DIALER).
Примеры:
CHECK4CARRIER(#NOCARRIER)
CHECK4CARRIER(5)
CHECK4CARRIER(ON)
CHECK4CARRIER(OFF)
CHECK4OUTPUT(NUMBER)
Это будет выполнено подобно нижеописанной функции ALARM:. Если выходной сигнал (OUTPUT) модема обнаружен, то
переходы будут осуществляться непосредственно к указанной маркировке. Вы
можете также передать управление к *NOCARRIER, *START и *END.
Также возможно отключить проверку на OFF, то есть заблокировать указанную
проверку выходного сигнала.
Например:
CHECK4CARRIER(#NOCARRIER)
CHECK4CARRIER(5)
CHECK4CARRIER(OFF)
DIAL
Набор
номера PHONE_NR. Если с системой нет соединения, то сначала в модем
будет послана команда: “Повесить трубку!”
Например:
DIAL
HANGUP
Поднять
и опустить трубку.
Например:
HANGUP
|