Как восстановить или сбросить пароль пакета служб SSIS?

У меня есть несколько пакетов SSIS, которые были защищены паролем (их уровень защиты, по-видимому, EncryptAllWithPassword) разработчиком, который покинул компанию и больше не может быть достигнут, и попытка открыть их дает следующую ошибку, так как пароль не может быть предоставлен:

ошибка загрузки 'пакет.dtsx': не удалось удалить защиту пакета с ошибкой 0xC0014037 " пакет зашифровано паролем. Этот пароль не указан или не указан правильный.". Это происходит в Сбой метода loadfromxml.

есть ли способ открыть эти пакеты? У меня есть доступ к учетной записи администратора, первоначально используемой для создания этих пакетов, и другие пакеты, зашифрованные тем же человеком, но с использованием другого пароля, который я знаю.

Я связался с местным представителем Microsoft по этому вопросу, и до сих пор они только связали меня с страница, описывающая, как установить или изменить пароль, что не помогает, потому что мне нужно сначала открыть пакет или предоставить старый пароль. Кто-нибудь был в подобной ситуации или знает способ обойти эту проблему?

7 ответов:

Я не думаю, что есть какой-либо способ восстановить пакет, если EncryptAllWithPassword используется, весь пакет зашифрован и не может быть декодирован без пароля. Можно попробовать, конечно, угадать пароль или словарные атаки, надеясь, что разработчик использовал слабый пароль.

Если это EncryptSensitiveWithPassword - вы можете открыть, а затем просто повторно ввести пароль строки подключения.

выполнить запрос ниже

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", следующие строки являются паролем

используйте этот запрос, чтобы найти пароль пакета:

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%'

в результатах отображается только столбец команда просмотреть этот текст для / расшифровать следующую строку после того, как это будет пароль, заключенный в кавычки.

похоже, что пакет также хранился на SQL Server (база данных msdb), экспорт его из служб Integration Services в файловую систему позволяет открыть его (с предупреждением о потере конфиденциальных данных). Это решение отлично работает для данной конкретной ситуации; нам в основном нужно было знать, что происходит в этих пакетах.

просто откройте пакет в блокноте и измените уровень защиты от 2 до 1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>

Я согласен с комментарием Майкла О угадывании пароля или атаке словаря как о хорошем подходе.

Я как раз собирался предложить использовать облачную вычислительную среду, такую как EC2, для разделения и завоевания ... но потом я понял, что вы застряли на окнах!

изменить Protection level пакета encrypt С sensitiveKey и все будет работать нормально. :)