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


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

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

获取结果

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

附:报表服务器账密
报表服务器账密一般也是数据库服务器账密
如果是测试环境,同时也是测试环境的账密
- 附加C:\yonyou\U9ClientCE\ClientSystemManage\UFIDA.U9.SystemManage.SystemManagerClient.exe
- 附加C:\yonyou\U9ClientCE\ClientSystemManage\UFIDA.UBF.SystemManage.dll
- 断点设置在UFIDA.UBF.SystemManage.ReportServerAccountEidtForm搜索(string AccountPassword = )
- 调试启动UFIDA.U9.SystemManage.SystemManagerClient.exe
- 打开报表服务器->设置账户,账户名后面加个1234保证账户是错误的
- 进入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
评论 (0)