Как получить пароль от объекта java.sql.Connection - PullRequest
3 голосов
/ 12 апреля 2011

Я ищу способ получить пароль от объекта java.sql.Connection. Я знаю, что есть метод getUserName () в объекте DatabaseMetaData, но, к сожалению, нет соответствующего метода getPassword (). Используя отладчик в Netbeans, я вижу поле для пароля, поэтому должен быть способ получить эту информацию с помощью отражения, но до сих пор я не смог понять, как.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Разработчик JDBC должен обеспечить, что, поскольку пользователь и пароль передаются в виде карты в Драйвер .

Один способ узнать, что такое пароль.есть расширение драйвера и его включение.

class CustomDriver extends ImplementerDriver {
  @Override
  public Connection connect(String url, Properties info) throws SQLException {
    super.connect(url, info);
    // Extract password from info.
  }

  public String getPassword() {

   ....
  }
}
1 голос
/ 12 апреля 2011

Как я прокомментировал, единственный способ должен смотреть в код. Например, для MySQL используется последняя версия драйвера (5.1.15). Вы можете получить пароль, как это:

public static void main(String[] args) throws Exception{
  ConnectionImpl con = (ConnectionImpl) DriverManager.getConnection("jdbc:mysql://localhost:3908/mydb?user=edalorzo&password=mandrake");

   System.out.println(con.getProperties().get("password"));

   con.close();
}

Но для этого вам нужно знать иерархию классов и подробности ее реализации.

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

0 голосов
/ 07 сентября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...