如何嗅探Oracle';尝试连接到数据库的凭据?

如何嗅探Oracle';尝试连接到数据库的凭据?,oracle,odbc,legacy,sniffing,Oracle,Odbc,Legacy,Sniffing,我有一个遗留应用程序,它连接到已配置的Oracle数据库 它似乎有一些逻辑改变了数据库凭据,因为它无法成功登录到Oracle数据库,而在同一台机器上启动的sqlplus能够登录 我得到的错误是:[DataDirect][ODBC-Oracle-Wire-Protocol-driver][Oracle]ORA-01017:无效的用户名/密码;拒绝登录 如何找出发送到数据库的数据库用户名和密码是什么 到目前为止,我所尝试的: 已启用对Oracle上失败的登录尝试的审核(审核创建会话,只要不成功)。它

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

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

我得到的错误是:
[DataDirect][ODBC-Oracle-Wire-Protocol-driver][Oracle]ORA-01017:无效的用户名/密码;拒绝登录

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

到目前为止,我所尝试的:

  • 已启用对Oracle上失败的登录尝试的审核(
    审核创建会话,只要不成功
    )。它不能解决这个问题,因为它只记录用户名(看起来是正确的),而不记录密码

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

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

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

  • 我的环境:

    • 数据库:Oracle 11g
    • 应用程序运行于:Solaris
    • 应用程序用途:DataDirect ODBC Oracle Wire协议v70

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

    引文:

    使用跟踪进行密码“嗅探”

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

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

    更新

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

    DataDirect提供了一些用于ODBC驱动程序诊断的工具,但适用于上述情况的唯一选项是使用实用程序,它的作用类似于已经尝试过的
    netcat

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

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


    另外,目前我还没有任何使用DataDirect ODBC驱动程序的经验。因此,这只是关于可能的故障源的建议。

    您只想知道它提供的密码,以便可以更改数据库中的用户名密码?@FelipeMoreno我不想更改密码,我希望应用程序能够连接到数据库。您可能无法记录发送的实际密码。如果可以的话,这将是一个安全问题。我甚至不相信客户端SQL*Net跟踪会泄露这些信息。您确定问题出在密码上,并且应用程序正在操作您提供的密码吗?您得到的错误是什么?您是否在11g数据库上启用了区分大小写的密码?如果这是一个遗留应用程序,那么编写该应用程序时可能会假定密码不区分大小写。该应用程序会更改凭据吗?你可能“认为”该应用程序正在使用凭据X,但实际上它正在读取不同的cfg文件或类似文件,并传入凭据Y(或者可能是防火墙问题)。你能用这个应用单步调试程序吗?什么语言?@tbone是的,我认为应用程序会更改凭据,因为1)我能够让应用程序连接到我的服务器,因此配置文件是正确的;2)有失败的登录尝试登录到Oracle,确认应用程序能够连接到数据库。我可以使用调试器吗?我想确保在开始调试之前,没有解决此类问题的众所周知的解决方案。现在看来,调试是最好的选择。连接是由ODBC驱动程序建立的,但运行在Solaris上,因此我认为无法使用此Windows特定的ODBC跟踪。