2

我有一个旧应用程序,它连接到配置的 Oracle 数据库。

它似乎有一些改变数据库凭据的逻辑,因为它无法成功登录到 Oracle 数据库,而sqlplus在同一台机器上启动却能够登录。

我得到的错误是:[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-01017: invalid username/password; logon denied

如何找出发送到数据库的数据库用户名和密码是什么?

到目前为止我已经尝试过:

  1. audit create session whenever not successful在 Oracle ( )上启用了对失败登录尝试的审计。它没有解决问题,因为它只记录用户名,似乎是正确的,没有密码。

  2. 使用嗅探器窃听运行应用程序的机器和数据库之间的网络流量,但由于 Oracle 的 TNS 协议是加密的,因此并没有多大帮助。

  3. 使用端口 X 启动服务器netcat,在应用程序配置文件中提供端口 X。该应用程序确实连接到我的服务器,这就是我知道应用程序连接到正确服务器的方式。但是由于 TNS 协议非常复杂(需要在客户端和服务器之间交换一系列消息),我希望有一个更简单的原因来实现我想要的,而无需对 Oracle 进行逆向工程并实现我自己的服务器。

  4. 启用对 JDBC 驱动程序 ( Trace=1, TraceFile, TraceDll) 的跟踪。跟踪文件显示了正确的用户名,但显然没有记录密码。

我的环境:

  • 数据库:Oracle 11g
  • 应用程序运行在:Solaris
  • 应用用途:DataDirect ODBC Oracle Wire Protocol v70
4

1 回答 1

1

我不确定,但如果通过 ODBC 驱动程序建立连接(如问题标签中所述),那么您可以尝试 ODBC 嗅探工具,如ODBC Tracing

引文:

使用跟踪“嗅探”密码

ODBC 提供了一种跟踪驱动程序和主机数据库之间发生的对话的方法。开发人员将其用于测试目的,跟踪功能旨在帮助程序员准确了解正在发生的事情并帮助解决问题。但是,不法分子可以使用跟踪(也称为“嗅探”)来检索用户密码。

启用跟踪后,与主机的通信将写入文件。这包括以纯文本形式捕获的用户 ID 和密码。

更新

SQLPlus 通过 OCI 接口连接到 Oracle,但 DataDirect ODBC 驱动程序使用它自己专有的通信协议实现。因此,最可能的故障点是驱动程序配置错误或不兼容。

DataDirect 为 ODBC 驱动程序诊断提供了一些工具,但适用于所描述案例的唯一选项是使用snoop实用程序,它的作用就像netcat已经尝试过的一样。

由于在凭据验证阶段连接失败,因此最可能的错误来源是使用本地化符号作为用户名或密码。Oracle 身份验证过程存在一些问题,在 DataDirect知识搜索(搜索ORA-01017)中列出。

似乎 DataDirect 提供了两个单独版本的驱动程序,支持和不支持 Unicode,因此可能的故障点之一是将非 Unicode 版本的驱动程序连接到 Unicode 版本的数据库,反之亦然。

PS 目前我对 DataDirect ODBC 驱动程序没有任何经验。所以这只是关于可能的失败来源的建议。

于 2013-06-02T20:53:32.050 回答