6

我有一些 SSIS 包受密码保护(它们的保护级别显然是 EncryptAllWithPassword)由离开公司且无法再访问的开发人员,并且由于密码不能被尝试打开它们而出现以下错误提供:

加载“Package.dtsx”时出错:无法删除包保护,出现错误 0xC0014037“包已使用密码加密。未指定密码或密码不正确。”。这发生在 CPackage::LoadFromXML 方法中。

有什么办法可以打开这些包吗?我可以访问最初用于创建这些包的管理员帐户,并且其他包由同一个人加密,但使用我知道的不同密码。

我已经就这个问题联系了当地的微软代表,到目前为止,他们只将我链接到一个描述如何设置或更改密码的页面,这无济于事,因为我需要先打开包或提供旧密码。有没有人遇到过类似的情况或知道解决此问题的方法?

4

8 回答 8

22

执行以下查询

SELECT sjs.command
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id
WHERE sj.name = 'your package name'

在结果视图中

检查文本“/DECRYPT”,接下来的字符串是密码

于 2015-05-06T03:56:00.667 回答
6

使用此查询查找您的包密码:

SELECT step.command
FROM msdb.dbo.sysjobs job
JOIN msdb.dbo.sysjobsteps step ON job.job_id = step.job_id
WHERE step.command like '%Your Package Name%'

在结果中,唯一显示的列是命令查看 /DECRYPT 的文本,其后的下一个字符串将是用引号括起来的密码。

于 2015-05-27T21:16:14.500 回答
2

如果使用EncryptAllWithPassword,我认为没有任何方法可以恢复包,整个包被加密,没有密码无法解码。人们当然可以尝试密码猜测或字典攻击,希望开发人员使用弱密码。

如果是 EncryptSensitiveWithPassword - 您可以打开然后重新输入连接字符串密码。

于 2009-06-05T17:31:33.740 回答
1

似乎该包也存储在 SQL Server(msdb 数据库)上,将其从集成服务导出到文件系统允许我们打开它(带有丢失敏感数据的警告)。该解决方案非常适合这种特殊情况;我们主要需要知道这些包中发生了什么。

于 2009-06-04T12:08:15.293 回答
1

只需,在记事本中打开包装并将保护级别从2更改为1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
于 2015-09-24T09:39:57.563 回答
0

以下是重置 SSIS 包密码的步骤

  1. 编辑 SSIS 项目文件
  2. 将保护级别更改为 EncryptAllWithPassword 并更新新密码
  3. 保存项目文件。
  4. 将每个包的保护级别更改为 EncryptAllWithPassword
  5. 全部保存并重新编译解决方案
于 2019-10-07T18:46:30.923 回答
-1

I agree with Michael's comment about a password guessing or dictionary attack as being a good approach.

I was just about to also suggest using a cloud computing environment like EC2 to divide and conquer ... but then I realized you are stuck on windows!

于 2009-06-12T08:35:32.023 回答
-1

Protection level将包更改为encryptwith sensitiveKey,一切都会正常工作。:)

于 2016-04-29T05:01:23.813 回答