return_a
Продвинутый юзер
- Сообщения
- 224
- Реакции
- 573
r_keeper - это программно-аппаратный комплекс для автоматизации кафе и ресторанов.
ВНИМАНИЕ! Данная статья не справочник по "хакингу" вашего любимого фастфуда, а является лишь моим изучением данной системы с целью выявления в ней уязвимых мест и проведением N-го количества попыток получения заветных бесплатных бургеров.
В конце статьи будут опубликованны ссылки на облачное хранилище Mega, на котором я буду публиковать файлы/дампы с различных кафешек, которые мне достались, а так же другую интересную информацию.
По поводу источников информации - часть была взята из общения с менеджерами ресторанов, часть от общения с самими сотрудниками UCS (разработчик rk), часть из мануалов и конечно-же из мировой паутины.
Для начала расскажу основные интересные моменты данной системы, которые могут быть Вам интересны и полезны (вдруг?). Данный раздел будет пополняться по мере выявления плюшек.
У всех сотрудников (которые если верить rk разделены на несколько групп - кассир, официант, менеджер) имеется своя магнитная карта rk, с помощью которой он авторизуется в системе.
- Запись производится на второй дорожке;
- У всех карт rk префикс (начало) записи является символом ";" (точка с запятой);
- Окончанием же записи является "Знак ENTER";
Карты персонала (менеджер, кассир, официант и т.д.):
Содержат между точкой с запятой и знаком ENTER - ЛЮБЫЕ 4 ДЕСЯТИЧНЫЕ ЦИФРЫ.
В итоге запись, которую необходимо занести на вторую дорожку магнитной карты rk, будет выглядеть так (прошиваемый код):
;0024«ЗНАК ENTER» - запись для карточки под номером 24
;0567«ЗНАК ENTER» - запись для карточки под номером 567
Персональные дебетовые карты (CARDSERV):
Прошиваемый код:
;778=XXXXXXXX=YYYYY«ENTER»
«778» - ID, что эта карта является персональной дисконтной (дебетовой, платежной, клубной) картой.
ЗНАК «=» - исполняет роль некоего разделителя.
«XXXXXXXX» - восьмизначный код ресторана из SYSTEM.DB, находящимся на кассовом сервере в каталоге DATABASE. На карточку заносится без точки (в SYSTEM.DB XXXX.XXXX ). Открыть SYSTEM.DB с помощью SETCODAT.EXE, это шестой пункт.
«YYYYY» - номер карты, который затем заносится в PCARDS.EXE. Пятизначное число.
1. Изучение rk7 и формирование различных пакетов.
Для начала, что бы изучить как именно происходит процедура покупки того или иного товара в кафе я создал несколько виртуальных машин, каждая из которых играли свою роль:- Машина серверов (кассовый, сервер печати, сервер справочников и т.д.). Всё в соотвтетсвии с инструкцией об запуске rk7 из дистрибутива (не из инсталлера, так как мне попался дистрибутив прямо с ресторана).
- Машина имитирующая кассу.
- Машина имитирующая терминал самообслуживания.
- Машина Фискального принтера и имитатора POS-терминала iPP320 (но вообще есть дрова для многих терминалов).
После всех манипуляций (запуска и инициализации серверов) я наконец таки смог запустить святую-святых - Станцию Менеджера (далее СтМ). СтМ - головное ПО в управлении рестораном. В нём можно как почитать все логи (причём в любой конфигурации логирования, ДАЖЕ ЕСЛИ В CONFIG.INI СТОИТ ДРУГОЕ ЗНАЧЕНИЕ!!! учтите это!), так и наблюдать все что происходит в данный момент в ресторане, наблюдать VDU дисплей, редактировать меню, КУПОНЫ, цены и все все все остальное. Исходя из этого, можно предположить что для начала надо изучить как же работает данное приложение. Я сразу запустил Wareshark, и приготовившись увидеть там ужас стал ждать. Огромнейшее количество TCP пакетов летало между софтинами. Я не стал пока изучать пакеты и сопоставлять их с какими-то конкретными данными. Для начала я решил запустить все остальные сервера, которые были необходимы для работы - сервер печати, который непосредственно и занимается печатью нашего с вами "фантика" и сервер отчётов, который формирует отчёты (как я пока понимаю это по типу EventLogTable). Мне повезло и некоторые рестораны не закрывают доступ к серверу отчётов по непонятной мне причине и это дало мне возможность увидеть как он работает наяву. Но отложим пока сервер отчётов и вернемся к СтМ. В первую очередь советую ее сразу же русифицировать, так как имена переменных в описании каждого object все равно будут на инглише, а во вторых вся документация на русском.
При первом запуске СтМ надо будет ввести логин и пароль. Я долго искал их, пока не наткнулся
login: Администратор
pass: =
pass: =
Далее я решил набросать простенький интерфейс программы для работы с всем этим добром.
В первую очередь я сделал форму журнала отладки, куда будут посылаться все внутренние сообщения ()режим полного логирования). Вы конечно меня сейчас возможно закидаете тухлыми яйцами, но писал я всё на Borland C++ Builder.
Итак я сделал процедуру для формирования строки журнала. В качестве аргумента она принимает AnsiString и выводит её сразу в ListBox на форме журнала.
C++:
void JPS(int Inst,AnsiString Message){
AnsiString DirectSign;
if (Inst==0) DirectSign = "---"; else // Сообщение без направления
if (Inst==1) DirectSign = "-->"; else // Сообщение исходящие
if (Inst==2) DirectSign = "<--"; else // Сообщение входящее
if (Inst==3) DirectSign = "<->"; // Сообщение двунаправленное (в обе стороны)
EventLogPage->LogListBox->Items->Add(+"["+Now().FormatString("hh.mm.ss.zzz")+"] "+
DirectSign+" "+
Message);
EventLogPage->LogListBox->Perform(WM_VSCROLL,
SB_LINEDOWN,0);
}
Теперь можно начинать работать. В следующем посту тут я опишу первые действия, их результаты победы и неудачи. Вы же задавайте свои вопросы, предлагайте ваши варианты и идеи.
ЧТИВО

Комплект мануалов по работе с rk7 -
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Последнее редактирование:
