Описание языка скриптов
Скрипты — это изюминка Login Hacker. Поэтому, если вы научитесь писать хорошие скрипты, то сможете взломать практически любую систему. Конечно это не относится к новичкам или тем хакерам, которые никогда не программировали даже на Бэйсике.
Скрипт должен пройти через компилятор, который проверяет его на вшивость. Поэтому вы можете быть уверены на 99%, что в процессе атаки не произойдет сбоя по вине плохого скрипта.
Итак, поехали.
Все, что начинается с точки с запятой — комментарии. Все, что начинается с двоеточия — переход на следующую команду.
Четыре строки, начинающиеся с символа # определяют операторы, с которых начинается специальная часть скрипта.
Оператор #DEFINE определяет переменную.
Оператор осуществляет автоматический возврат в
Программу в случае аварийного прерывания сессии, то есть без команды hangup.
Оператор активизирует загрузку скрипта.
Оператор #END заканчивает выполнение скрипта.
Все переменные являются необязательными. Исключение составляют переменные logflle и phone_nr. Вы не можете определять какие-либо переменные, за исключением тех, которые описаны ниже.
LOG FILE=FILENAME
Определить файл регистрации и место на диске для этого файла. Это важная переменная используется при написании любого скрипта.
Например:
L0GFILE=C: UTPUTNY-SYS5.LOG PHONE_NR=NUMBER
Эта переменная используется вместе с командой DIAL. Ее тело может состоять как из цифр, так и из букв. Это вторая переменная, которую всегда используют при написании скриптов.
Например:
PHONE JIR=1-800-WH0-CARES INIT_MODEM=STRING
Если ваш модем должен работать в режиме Dialing, то поместите перед телефонным номером аргумент Р. Если же ваш модем не может инициализировать строковые данные, поместите перед соответствующим телефонным номером команду AT (если эта команда отсутствует в Hacker Setup).
Например:
INIT_MODEM=Z
(здесь также может стоять аргумент AT Z) INIT_DATA=STRING
Инициализация каналов передачи данных, в том числе стоповых битов и битов четности. Переменная используется в том случае, если соответствующие параметры отсутствуют в Hacker Setup. В общем случае аргументами этой переменной являются наборы символов 8N1 и 7Е1, то есть аргумент всегда должен состоять из трех символов. Первый символ — это цифры 7 или 8, являющиеся битами данных. Второй символ может быть записан как Р (контроль по нечетности), Е (контроль по четности) или N (не контролировать биты данных). Третий символ соответствует ситуации, когда на первый стартовый бит налагается первый стоповый бит:
7/8+E/P/N+1/2.
Эта переменная определяет количество попыток набора номера в диапазоне от 0 до 65535. Ноль соответствует бесконечному набору номера.
Если номер набран, загружается HANGUP и остальная часть скрипта.
Например:
DIAL_TRIES=3
Standard : 0
Важно: Если эта переменная отсутствует в скрипте, то будут использованы установки соответствующие файлу LOGINH. CFG.
LOGIN_TRIES=NUMBER
Эта переменная определяет количество попыток входа в систему в диапазоне от 0 до 2300000000. Ноль соответствует неограниченной попытке зарегистрироваться. Если в файле словаря будет достигнут так называемый конец кадра (EOF), то скрипт автоматически повесит трубку и прекратит сессию. Время, в течение которого будет осуществляться подбор регистрационных данных зависит от команд прицепки DIC, NEXTDIC или им аналогичных для словаря Brute Force Generator.
Например:
LOGIN_TRIES=0
Standard : О
Важно: Если эта переменная отсутствует в скрипте, то в атаке будут использованы установки соответствующие файлу LOGINH. CFG.
DIC(NUMBER)=FILENAME
Определить словарь, который будет использован соответствующим скриптом. Аргумент DIC указывает на существующие файлы словарей. Вы можете прицепить к скрипту от одного до трех словарей. Используйте для этого команды Send Next DIC (Г), Send DIC (1) и Next_DlC (1).
Например:
DICC1)=С:HACKINGDICTI0NA. RYBAD„PWS. DIC FROM_DIC(NUMBER)=STRING
Определить слово, начиная с которого можно использовать в скрипте.
Например: FR0M_DIC(1)=Тгасу
BRUTE(NUMBER)=STRING, NUMBER, NUMBER, NUMBER
Определить словарь Brute Force Generator для использования в скрипте. Brute Force Generator весьма гибок. Четыре параметра словаря Brute Force Generator разделены запятой. Ниже описывается приемлемая спецификация этих параметров.
1
# а — буквы нижнего регистра.
# А — буквы верхнего регистра.
# 1 — цифры.
# $ — спецсимволы.
# А — так называемые контролируемые символы.
# Любые синонимы ASCII.
2
Этот параметр сообщает скрипту какое количество различных символов, соответствующих параметру 1 необходимо этому скрипту.
Каждое сгенерированное слово соответствующее параметру 1 всегда имеется в таком же слове соответствующим параметру 2. Символ верхнего регистра и один номер допустимы. Величина соответствующая нулю неприемлема.
3
Сообщает скрипту возможную минимальную длину для символов пароля, подобранного при использовании словаря Brute Force Generator.
Возможная максимальная длина для символов пароля, подобранного при использовании словаря Brute Force Generator.
Важно: Минимальная длина символов равна 1, максимальная соответствует 12.
Помните, что вы можете использовать в атаке до трех словарей Brute Force Generator. Используйте для этого великолепные команды привязки Next_Brute(l), Send__Next_Brute(l) и Send Brute(l).
Например: BRUTE(1)=а,1,1,6
В этом примере используется первый параметр Brute Force Generator со следующими данными: проверять только символы нижнего регистра, предположить, что при подборе пароля в словаре присутствует хотя бы один действительный символ, минимальная длина регистрационного слова равна единице, максимальная — шести.
Начать инициализацию со словарем Brute Force Generator. При этом важно следующее: если инициализация началась с четвертой буквы, а вы просматриваете диапазон от 1 до 8 буквы, то диапазон от 1 до 3 будет игнорироваться, то есть сначала идет подбор аааа, затем aaab, затем ааас и т. д.
Например:
FROM_BRUTE(1)=2527
Секция #NOCARRIER
Это будет выполняться всякий раз, когда вы не используете команду HANGUP. Если в скрипте отсутствуют операторы GOTO (*START) или GOTO (1), то дальше он выполняться не будет. Это означает, что вы снова должны набрать модемный номер доступа к системе. Поэто! му проверьте установки в DIAL_TRIES.
В этой важной секции описываются операторы, которые в дальнейшем будут ломать систему.
LOG(STRING)
Команда LOG() записывает в файл регистрации некоторую информацию. Это может быть любой текст, переменные, перед которыми всегда должен стоять знак $ (знак доллара), а также пробелы между словами. В конец строки каждая команда LOG( ) автоматически печатает;возврат каретки.
Примеры:
LOG(Beginning on $DATE * $TIME)
Будет выведено следующее:
"Beginning on 24-12-96 * 23:00"
LOG_(STRING)
Этот пример аналогичен вышеприведенному, за исключением того, что после текста отсутствует возврат каретки.
Каждая линия, начинающаяся с : (двоеточия) маркируется оператором GOTO. Вы можете использовать 240 маркировок в диапазоне от 1 до 240. Другие номера неприемлемы. Переход к нужному маркеру осуществляется командами передачи управления GOTO, GOSUB, CHECK40UT - PUT и CHECK4CARRIER.
Например:
В этом примере на соответствующую строку выполняется переход к точке с номером 1.
GOTO(NUMBER)
Передать управление на маркировку перехода. Вы можете также осуществить переход командами #START, #NOCARRIER и #END.
Например: GOTO(#END) (выполнение скрипта завершено).
GOSUB(NUMBER)
С командой подстановки GOSUB вы осуществляете переход к следующей маркировке. Команда GOSUB, как правило исполняется уже после перехода на следующий маркер, то есть в тот момент, когда команды GOSUB и RETURN столкнутся между собой. Обратите внимание, что вот такая команда невозможна: GOSUB(#END).
Например:
GOSUB(4)
Это так называемая команда выхода из подпрограммы. Используя эту команду вы можете возвратиться к местоположению последней выполненной команды GOSUB и продолжить обычное выполнение скрипта. Если в буферном регистре команда RETURN сталкивается с несуществующим начальным адресом GOSUB, то она будет игнорироваться. В одном буферном регистре вы можете иметь до 255 подстановок GOSUB.
Например:
RETURN
CHECK4CARRIER(NUMBER)
Проверка модема на соединение с линией, то есть проверка на несущую частоту. Команда будет выполняться в случае отсутствия перехода к указанной маркировке (переход соответствует команде GOTO). Если переход обнаружен, то устанавливается внутреннее соединение с переменной TRUE для проверки на NO_CARRIERS. Вы можете также осуществлять процедуры перехода к *NOCARRIER, *STARTи *END. Также возможно осуществить проверку модема только на ON или OFF. Если команда CHECK4CARRIER(ON) выполнена с переходом к маркеру, отмечающему обнаружение линии, и, если представлен NOT, то управление передается на *NoCarrier. Эта команда полезна только в том случае, когда вы оказываетесь на и не хотите использовать команду DIAL, чтобы соединиться с удаленной системой (позвольте набрать номер SCAVENGER DIALER).
Примеры:
CHECK4CARRIER(#N0CARRIER)
CHECK4CARRIER(5) CHECK4CARRIER(ON) CHECK4CARRIER(OFF) CHECK40UTPUT(NUMBER)
Это будет выполнено подобно нижеописанной функции alarm:. Если выходной сигнал (OUTPUT) модема обнаружен, то переходщ будут осуществляться непосредственно к указанной маркировке. Вы можете также передать управление к *nocarrier, *start и *end. Также возможно отключить проверку на OFF, то есть заблокировать указанную проверку выходного сигнала.
Например:
CHECK4CARRIER(#N0CARRIER) CHECK4CARRIER(5)
CHECK4CARRIER(OFF)
DIAL
Набор номера PHONE_NR. Если с системой нет соединения, то сначала в модем будет послана команда: «Повесить трубку!»
Например: DIAL
Поднять и опустить трубку. Например:
HANGUP
Wait4string(number, string, number, command, string)
В представленном здесь языке скриптов это самая важная После ее выполнения выходной сигнал модема будет находиться состоянии ожидания. В этот момент должна начаться загрузка специального слова. Если стыковка осуществлена, то скрипт продолжается, если — нет, то после тайм-аута в модем будет отправлена заданная последовательность, затем — вновь тайм-аут и, наконец, идет выполнение команды.
Важно: Сначала команда WAIT4STRING проверяет текущую строку с представленным словом. Синтаксис: WAIT4STRING(a, b,c, d,e).
А
Определить тайм-аут в диапазоне от 0 до 255 секунд. Ноль соответствует неограниченному ожиданию, то есть ждать до тех пор пока не наступит так называемый TOTAL TIMEOUT (скрипт переходит в секцию #NOCARRIER в том случае, если данные не поступают из модема в течение пяти минут). Если ничего не получено, то последовательность в потоке данных распознается снова, или в какой-то момент несущая частота объявляется потерянной.
Ь
Последовательность данных, которая будет послана в модем после тайм-аута.
С
Частота отказов или количество общего времени, в течение которого может выполняться фатальная команда. Диапазон: от 0 до 255 (0=ни - когда, 1=первыйраз).
D
Выполнение специальной фатальной команды. Это могут быть любые команды, исключая: ALARM, WAIT4STRING и IF.
Е
Последовательность данных для ожидания. Данные чувствительны к регистру.
Например:
WAIT4STRING(15, ~М, 2, G0T0(1), ogin:)
В этом примере происходит ожидание последовательности ogin: в течение 15 секунд. Если стыковка не получилась, а каретка возвращается в модем (АМ), то команда снова ждет 15 секунд, пока вновь не наладится стыковка с последовательностью данных ogin:.
Как только истекут следующие 15 секунд, вызывается фатальная команда, что означает переход к GOTO с меткой под номером 1.
Log_session_on
Начиная с этого пункта, все данные поступающие из модема записываются в файл регистрации.
Например:
LOG_SESSION_ON
Если содержимое экрана записано в файл регистрации, то к этому пункту больше не будет обращений.
Например: LOG. SESSIONOFF
Например:
SEND_BRUTE(1)
Сгенерировать следующую допустимую последовательность данных из словаря Brute Force Generator.
Например:
NEXT_BRUTE(1)
IF VARIABLE OPERATOR STRING THEN COMMAND
Команда IF первой версии этой программы не очень гибкая. Синтаксис этой команды следующий:
IF <variable><operatorxstring> THEN <command> <variable>
<operator>
Означает равносильность при аргументе =, больше или меньше при аргументах < или > соответственно и переменную содержащую любую последовательность слов при аргументе Переменные и последовательно - сти должны быть дискретными переменными.
Эта команда выполнится в том случае, если будет соблюдено условие TRUE. Чтобы ее использовать, просмотрите список команд для оператора wait4string.
Например:
IF STRING~ogin THEN GOTO(3)
To есть, если текущая строка (STRING), содержит дискретную (~) последовательность данных ogin, то идти (GOTO) к маркеру с номером 3.
EXECUTE(STRING)
Выполнить DOS-программу, а затем запустить скрипт. Вы должны включить переменные в выполняемую строку. Вы также должны выполнить соответствующие внутренние команды MS DOS. Помните, что перед переменной может стоять знак $ с возможными пробелами позади и впереди самого знака.
Важно: Если вы хотите запустить программу в то время, когда по вашему скрипту осуществлено соединение, то вы должны использовать драйвер fossil. В противном случае ваш компьютер зависнет. Поэтому запустите ХОО. ЕХЕ Е 2 перед выполнением программы Login Hacker.
Важно: Чтобы ваша программа не была повреждена, предварительно сохраните ее в каталоге отличным от исходного.
SEND(STRING)
Команда SEND передает последовательность данных в модем. Через эту команду вы можете пересылать в модем переменные со знаком $. В конец последовательности передается возврат каретки. Если последовательность данных не задана, то сразу осуществляется переход на возврат каретки.
Например:
SEND(echo Hacked you system Time: $TIME - Date: $DATE >
HACKED. TXT)
В данном примере команда SEND посылает в модем следующую строку:
Echo HAcked your system Time: 23:00 - Date: 24-12-95 > HACKED. TXT
Эта команда аналогична вышеописанной, но она не посылает в модем символ возврата каретки АМ. Ее можно использовать, если вам нужно загрузить в модем только один символ или командный режим +++.
Примеры:
SEND_(n)
SEND_(+++)
Переслать текущий словарь в модем.
Например:
SEND_DIC(1)
Переместиться на слово, соответствующее аргументу NUMBER.
Например:
NEXT_DIC(1)
Используя Brute Force Generator, сгенерировать следующую допустимую последовательность и переслать их в модем.
Например:
SEND_NEXT„BRUTE(1)
Переслать в модем текущую последовательность допустимых данных из словаря Brute Force Generator.
Примеры:
EXECUTE(C:SBVPLAY C:SBVOCHACKED. VOC)
EXECUTE(COPY $ LOG FILE C:HACKED)
ALARM(STRING, COMMAND)
Опасно нажимать на спусковой крючок! Если на удаленном компьютере сработала система защиты, то вы будете активны до тех пор, пока не выполниться эта команда.
Последовательность, для которой осуществляется поиск данных с их последующей передачей в модем.
Эта команда будет выполнена после стыковки. Чтобы ее использовать, просмотрите листинг команд для WAIT4STRING. Примените эту команду в том случае, например, если вы взломали BBS, а сисоп вас раскусил и задает глупые вопросы. После этой команды вы автоматически прервете соединение и остановите выполнение скрипта.
Например:
ALARM(chat, GOTO(#END))
SET VARIABLE=STRING
Этой командой вы определяете переменную в секции #START или #NOCARRIER. Если переменная является статической переменной, то вы должны это отметить. Вы должны устанавливать только следующие переменные: STRING, DIALTRIED, LOGIN_TRIED, S_TMPh D_TMP.
Например:
SET D_TMP=3
Определить статическую переменную D_TMP в качестве 3.
INC(DIGIT_VARIABLE)
Увеличить число указанной переменной на 1. Эта команда будет выполнена лишь в том случае, если переменная после дополнения не находится в указанном диапазона.
Имеют силу следующие команды: DIAL. TRIES DIALJTRIED LOGIN_TRIES LOGINJTRIED
• DTMP.
INC(D_TMP)
DEC(DIGIT_VARIABLE)
Уменьшить число указанной переменной на 1. Эта команда будет выполнена лишь в том случае, если переменная после вычитания не будет находиться вне указанного диапазона.
Имеют силу следующие команды:
DIAL_TRIES
Например:
DEC(D_TMP)
Ожидать до тех пор, пока идут секунды определенные аргументом NUMBER. Аргумент NUMBER соответствует любому числу в диапазоне от 1 до 65535.
Например:
WAIT(10) (десять секунд)
Ожидать до тех пор, пока идут миллисекунды, определенные аргументом NUMBER. Аргумент NUMBER соответствует любому числу в диапазоне от 1 до 65535.
Например:
WAIT(500) (полсекунды)
Создает сигнал, похожий на легкий звук бибикаЛки!