2014-01-13 6 views
2

У меня есть полномочия DBA для базы данных sybase в Windows.Sybase database password "recovery"

У меня есть другой пользователь, для которого я не знаю пароль.

Я регулярно использую приложение, которое знает пароль и использует пароль для автоматического входа в приложение. Однако я не могу найти способ найти этот пароль в любом месте приложения или его dlls/files/registry/etc.

Я, очевидно, не хочу просто менять пароль пользователя, так как пароль в приложении не может быть обновлен (что я знаю).

Я хочу, чтобы иметь возможность войти в базу данных, как этот пользователь.

Существуют ли какие-либо параметры ведения журнала для сервера базы данных, которые будут записывать пароль в виде открытого текста? Или любые другие методы, которые я могу использовать для получения пароля (возможно, через login_procedure)? Я тоже был бы в порядке, просто получив хэш для пароля (+ соль).

+0

Как это связано с разработкой программного обеспечения, то есть с вопросами, которые возникают с кодом? –

+1

«Существуют ли параметры ведения журнала для сервера базы данных, которые будут регистрировать пароль в виде открытого текста?» - Если есть, я бы не хотел быть пользователем на этом сервере. Хранение паролей в открытом тексте - это, как правило, плохая идея. (Я не буду говорить «всегда», потому что есть исключение из большинства правил ... но да, почти всегда.) –

+0

@RobertHarvey, хороший вопрос, я пытался найти базу данных, используя разные SQL-запросы и процедуры а также отладки через Visual Studio и Process Monitor. Кроме того, после обнаружения, я буду использовать этот пароль в своем приложении, чтобы получить доступ к базе данных. Поэтому, хотя я пытался сам решить проблему с кодом, я понимаю, что вам нужно закрыть этот вопрос как Off Topic. –

ответ

3

Не поддерживается SAP Sybase для получения пароля в виде открытого текста. Вы можете просмотреть хешированный пароль, запросив столбец master..syslogins.passwords.

Возможным обходным путем было бы создание нового пользователя и его псевдоним для пользователя в базе данных.

sp_addalias - это команда, которую вы использовали бы, чтобы сделать что-то подобное.

Вы можете просмотреть хэшированный пароль

+0

Я уверен, что есть * путь *; Мне тяжело полагать, что базы данных sybase и серверы непроницаемы. Возможно, мне понадобилось много времени и выяснить, как создать поддельный сервер sybase, который должен позволить мне получить строку подключения ... но я не знаю, с чего начать, чтобы это сделать. –

+0

Я тоже буду в порядке с хэшем пароля, кстати. –

+0

'Выбрать пароль из syslogins' возвращает' NULL' для всех пользователей. –

2

Вы не можете получить пароль открытого текста, как это не авторизовано в любом месте, и мы не хранить его. Что хранится в системной таблице ISYSUSER, это пароль SHA-256 с паролем, и поэтому от него невозможно получить пароль. (И это не хэш только пароля - он включает случайную соль.)

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

Отказ от ответственности: Я работаю для SAP в SQL Anywhere.

+0

Правильно, я подумал, что у него есть соль, хотя я не уверен, сколько времени или где в хеше хранится. Я предполагаю, что первый байт (0x01) не важен, следующие 72 содержат хеш и соль, причем 64 из этих символов представляют хэш, оставляя 8 ch (4 байта). Я попробовал более 600000 методов хеширования, чтобы попытаться воспроизвести безрезультатно, ха-ха. –

+0

Некоторая справочная информация. У меня есть около 400 файлов, у всех которых есть пользователь с именем 'auto_user' с одним и тем же (неизвестным) паролем (по крайней мере, я считаю, что это одинаково для каждого). Этот пользователь и пароль были созданы сторонним приложением. Хотя я * могу * получить доступ к DBA во всех этих файлах, это кропотливый процесс, так как имя пользователя и пароль DBA разные для каждого - и я не хочу поддерживать эту (чувствительную) информацию. –

+0

Насколько это невозможно для получения пароля из хэша ... Я на самом деле хорошо работаю на мощной машине или 10 в течение пары недель, пытаясь переборщить ее. Поэтому, если я смогу получить алго, это действительно поможет много (очевидно, я знаю, что вы не собираетесь публиковать его, я просто хотел объяснить свои намерения). –

0

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

Если является то, что произошло, и у вас есть возможность перекомпилировать приложение, используйте брелок (Mac, Linux) или DPAPI (Windows) надежно (как можно больше) хранить зашифрованный экземпляр пароля вне кода приложения. Вы сможете изменить его, и некоторый случайный человек, которому удается взломать и получить доступ к исходному коду или двоичному файлу, не сможет проверить программу, как я предлагаю вам попробовать.

Я также понимаю, что это старый пост, и вы либо решили проблему, либо двинулись дальше.;-)

+0

Приложение QuickBooks Desktop, и оно получает доступ к базовому серверу SQL Anywhere без пароля пользователя. Мы не решили проблему, просто работали вокруг нее. –

+1

Oohhh, QuickBooks. Мои соболезнования. ;-) – Craig

+0

Интересно, просто ли они делают картографирование входа из чего-то вроде группы Windows Everyone в DBA и используют встроенную проверку подлинности? Просто вслушиваясь. – Craig

Смежные вопросы