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

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

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

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

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


person Firas Assaad    schedule 04.06.2009    source источник
comment
Ой, мне было бы интересно узнать ответ на этот вопрос, поскольку я подозреваю, что это невозможно сделать без какого-либо взлома. Это не очень поможет вам сейчас, но вы можете рассмотреть возможность использования Password Safe/Key Manager внутри вашей организации, чтобы избежать этой проблемы в будущем.   -  person John Sansom    schedule 04.06.2009
comment
Хороший вопрос! Вы, ребята, использовали какую-либо форму исходного кода для этого? Возможно, вы сможете найти там незашифрованную версию, а некоторые разработчики даже выложили файл с паролем...   -  person RSolberg    schedule 05.06.2009


Ответы (8)


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

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

person Michael Entin    schedule 05.06.2009

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

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

person Venky    schedule 06.05.2015
comment
Спасибо! Спасибо! Спасибо! - person Nate Zaugg; 20.02.2016
comment
Спасибо Венки, это идеальное решение для меня. - person cymorg; 23.03.2016
comment
Спасибо @Venky за помощь в идеальном решении проблемы. - person PS078; 21.11.2017

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

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, следующая строка после нее будет паролем, заключенным в кавычки.

person Ryan David Hocking    schedule 27.05.2015
comment
Разница между моим запросом и приведенным ниже заключается в том, что вы должны указать имя шага задания вместо имени пакета. Мой будет искать по имени пакета. - person Ryan David Hocking; 30.05.2015

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

person Community    schedule 04.06.2009

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

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
person user821700    schedule 24.09.2015

Вот шаги для сброса пароля пакета SSIS.

  1. Изменить файл проекта SSIS
  2. Измените уровень защиты на EncryptAllWithPassword и обновите новый пароль.
  3. Сохраните файл проекта.
  4. Измените уровень защиты каждого пакета на EncryptAllWithPassword.
  5. Сохраните все и перекомпилируйте решение
person user12178489    schedule 07.10.2019

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

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

person Pat    schedule 12.06.2009
comment
EC2 также работает под управлением Windows. (aws.amazon.com/windows) А еще есть Azure! (microsoft.com/azure) - person Michael Entin; 14.06.2009
comment
так вот! Арендуйте 1000 машин и взломайте пароль. (и пароль вашего босса, пароль этого ненавистного коллеги, ...) - person Pat; 16.06.2009

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

person pradeep    schedule 29.04.2016