【067】U9C获取生产环境数据库连接串
侧边栏壁纸
  • 累计撰写 70 篇文章
  • 累计收到 2 条评论

【067】U9C获取生产环境数据库连接串

竹秋廿九
2025-11-28 / 0 评论 / 21 阅读 / 正在检测是否收录...

UBF调试获取

调试获取

有时候客户不情愿给生产环境的密码
但是测试库可以连接生产环境,为了方便查询一些东西
需要知道数据库连接串,提取用户名跟密码
U9登录报表之后,连接串会写到Runtime\environment.xml,可以明文查看
U9C登录报表之后,连接串中的密码是加密的,无法直接使用,只能使用调试启动的方式查看到解密后的密码
前提条件:有一个能登录生产环境的UBF

使用DnSpy32位打开UBF

打开UBFdevenv.exe,用于调试启动
打开~\UBFStudio\plugin\RuntimeReport\UFSoft.UBF.Report.Designer.RuntimeSolution.dll用于断点查看解密后的数据库连接串

步骤1.png
步骤2.png

打断点

命名空间:UFSoft.UBF.Report.Designer.RuntimeSolution
类名:RuntimeReportLoginForm
方法:InitEnterpriseList
方法中的enterpriseItem.ConnectionString赋值执行后,就是解密的数据库连接串

步骤3.png

开始调试

选中UBFdevenv.exe开始调试
监视1添加enterpriseItem.ConnectionString的监视
调试启动后,切换到报表登录模式,点击登录
服务器输入要获取的应用服务器地址,点击刷新即可进入断点
(点击登录首次会默认localhost,并进入断点,直接跳过继续即可)

步骤4.png

获取结果

步骤5.png

生产环境配置文件

如果能直接进生产环境,配置文件C:\yonyou\U9CE\Portal\SysManageServer\EA.log中会有

image.png

附:报表服务器账密

报表服务器账密一般也是数据库服务器账密
如果是测试环境,同时也是测试环境的账密
  1. 附加C:\yonyou\U9ClientCE\ClientSystemManage\UFIDA.U9.SystemManage.SystemManagerClient.exe
  2. 附加C:\yonyou\U9ClientCE\ClientSystemManage\UFIDA.UBF.SystemManage.dll
  3. 断点设置在UFIDA.UBF.SystemManage.ReportServerAccountEidtForm搜索(string AccountPassword = )
  4. 调试启动UFIDA.U9.SystemManage.SystemManagerClient.exe
  5. 打开报表服务器->设置账户,账户名后面加个1234保证账户是错误的
  6. 进入288行的断点后,F11进入解密方法,解密方法的形参就是账密

附:数据库拼接一键登录地址

设置好U9地址跟企业编码,执行以下SQL语句,在结果集中复制[一键登录地址]访问可直接登录
U9也可以用(不过EA会报错空指针引用,因为调用GetOrgsByUserCode获取EA用户组织信息会返回null,后续直接执行((ArrayList)userOrgsByUserCode["OrgSequence"])所以报错)
U9C的EA用户没有这个问题,也可以一键登录(应该是集团修复了)
declare @U9CUrl nvarchar(100)='http://localhost/U9C' -- U9地址
declare @EnterpriseId nvarchar(50)='001' -- 企业编码

select 
    u.Code as 登录账号,
    u.Name as 用户名,
    u.PassWord,
    IIF(u.Code = 'EA', -10000, org.ID) as 组织ID,
    org.Code as 组织编码, 
    @EnterpriseId as 企业编码,
    CONCAT(
        @U9CUrl, 
        '/api/v1/autologin.aspx?enterprise_id=', @EnterpriseId, 
        '&user_code=', u.Code, 
        '&user_password=', u.PassWord, 
        '&organization_id=', 
        IIF(u.Code = 'EA', -10000, org.ID), 
        '&e=m'
    ) AS [一键登录地址]
from Base_User AS u
left join Base_UserOrg AS uo on uo.[User]=u.ID
left join Base_Organization as org on org.ID=uo.Org
1

评论 (0)

取消