2009-06-04 95 views
6

Tengo algunos paquetes de SSIS protegidos con contraseña (su nivel de protección es aparentemente EncryptAllWithPassword) por un desarrollador que dejó la empresa y ya no se puede contactar, y al intentar abrirlos se produce el siguiente error ya que la contraseña puede ' t ser suministrados:Cómo recuperar o restablecer la contraseña del paquete SSIS?

error de carga 'Package.dtsx': no ​​se pudo eliminar la protección paquete con error 0xC0014037 "El paquete es cifrado con una contraseña La contraseña no se ha especificado, o no es correcta.. ". Esto ocurre en el método CPackage :: LoadFromXML.

¿Hay alguna forma de abrir estos paquetes? Tengo acceso a la cuenta de administrador utilizada originalmente para crear estos paquetes y tengo otros paquetes encriptados por la misma persona pero usando una contraseña diferente que conozco.

Me he puesto en contacto con un representante local de Microsoft sobre el problema y hasta ahora solo me han vinculado a un a page describing how to set or change a password, lo cual no ayuda porque primero necesito abrir el paquete o proporcionar la contraseña anterior. ¿Alguien ha estado en una situación similar antes o sabe cómo evitar este problema?

+1

Ouch, me gustaría saber la respuesta a esto también ya que sospecho que no se puede hacer sin algún tipo de truco. No es de mucha ayuda para usted ahora, pero es posible que desee considerar usar Password Safe/Key Manager internamente dentro de su organización para evitar este problema en el futuro. –

+0

¡Buena pregunta! ¿Usaron alguna forma de fuente segura en esto? Es posible que pueda encontrar una versión no cifrada allí y algunos desarrolladores incluso ponen un archivo con la contraseña ... – RSolberg

Respuesta

2

No creo que haya ninguna forma de recuperar el paquete si se usa EncryptAllWithPassword, todo el paquete está encriptado y no se puede decodificar sin contraseña. Uno puede intentar, por supuesto, adivinar contraseñas o ataques de diccionario esperando que el desarrollador use una contraseña débil.

Si se trata de EncryptSensitiveWithPassword, puede abrir y luego simplemente volver a escribir las contraseñas de la cadena de conexión.

1

Parece que el paquete también se almacenó en SQL Server (base de datos msdb), exportándolo de Integration Services al sistema de archivos nos permite abrirlo (con una advertencia sobre la pérdida de datos confidenciales). Esta solución funciona perfectamente para esta situación particular; principalmente necesitamos saber qué sucede en estos paquetes.

+0

Una buena solución. –

0

Estoy de acuerdo con el comentario de Michael sobre una adivinación de contraseñas o ataque de diccionario como un buen enfoque.

Estaba a punto de sugerir también utilizar un entorno de computación en la nube como EC2 para dividir y conquistar ... ¡pero luego me di cuenta de que está atascado en Windows!

+0

EC2 también ejecuta Windows. (http://aws.amazon.com/windows/) ¡Y luego está Azure! (http://www.microsoft.com/azure/) – Michael

+1

¡ahí lo tienes! Alquile 1000 máquinas y descifre la contraseña. (y la contraseña de su jefe, esa odiada contraseña de compañero de trabajo, ...) – Pat

14

ejecutar la consulta a continuación

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' 

En el Resultado Ver

cheque por el texto "/ descifrar", los próximos siguientes cadenas son la contraseña

+0

¡Gracias! ¡Gracias! ¡Gracias! –

+0

Gracias Venky, es la solución perfecta para mí. – cymorg

+0

Gracias @Venky por ayudar con la solución perfecta del problema – PS078

3

Utilice esta consulta para encontrar su paquete contraseña:

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

En los resultados, la única columna que se desplaza es el comando mira a través de ese texto para/DECRYPT la próxima cadena después de que será la contraseña entre comillas.

+0

La diferencia entre mi consulta y la siguiente es que debe poner el nombre del paso del trabajo en lugar del nombre del paquete. El mío buscará con el nombre del paquete. –

1

Simplemente, abra el paquete en el bloc de notas y cambiar el nivel de protección frente a 2 a 1

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

Cambiar el del paquete para encrypt con sensitiveKey y todo saldrá bien. :)

Cuestiones relacionadas