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

StackOverflow https://stackoverflow.com/questions/949569

Вопрос

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

Ошибка при загрузке 'Package.dtsx' :Не удалось удалить защиту пакета с ошибкой 0xC0014037 "Пакет зашифрован паролем. Пароль не был указан или не является правильным"..Это происходит в методе CPackage::LoadFromXML.

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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 , для " разделяй и властвуй " ...но потом я понял, что вы застряли в Windows!

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top