Question creation de fichiers rdp pour remote connexion
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 10 mois #2485
par daniel soares
creation de fichiers rdp pour remote connexion a été créé par daniel soares
bonjour
j'avais posté il y a quelques temps une solution pour pouvoir se connecter via TS sur des machines distantes sans avoir a se souvenir du compte a utiliser ou a reentrer systématiquement son mot de passe
j'utilisais par contre le send key pour entrer username et mot de passe ce qui n'était pas viable car ça plantait assez fréquemment
la seule solution fiable etant de construire entierement le fichier rdp avec mot de passe crypté
voici les liens dans lesquels j'ai puisé le moyen de creer un mot de passe crypté par la fonction dpapi utilisée par mstsc.exe
www.obviex.com/samples/dpapi.aspx
msdn.microsoft.com/en-us/library/aa380261.aspx
www.remkoweijnen.nl/blog/2007/10/18/how-...words-are-encrypted/
et merci a Laurent Dardenne pour son aide sur l'utilisation et la compréhension de csharp
voici le code powershell de base permettant de creer le fichier rdp
bien sur dans l'etat il n'est pas tres utile car il faut entrer les informations de serveur compte et mdp manuellement
mais c'est facilement automatisable (la preuve je l'ai fait )
ceci est juste un exemple d'utilisation
[code:1]
$server = Read-Host \"entrer le nom du serveur\"
$dll =\"./DPAPI.dll\"
[void][Reflection.Assembly]::LoadFile($dll)
$secmdp = get-credential
$ptr = [System.Runtime.InteropServices.Marshal]::`
SecureStringToBSTR($secmdp.password)
$mdp = [System.Runtime.InteropServices.Marshal]::`
PtrToStringUni($ptr)
$user = $secmdp.username
$encrypted=[DPAPI]::Encrypt([DPAPI+KeyType]::`
UserKey,$mdp,$null,\"psw\"«»)
$fichier =
\"screen mode id:i:1
desktopwidth:i:1024
desktopheight:i:768
session bpp:i:16
#espace ajouté pour éviter le smiley
winposstr: s:2,3,169,96,1201,897
#espace ajouté pour éviter le smiley
full address: s:$server
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:1
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
displayconnectionbar:i:1
autoreconnection enabled:i:1
#espace ajouté pour éviter le smiley
username: s:$user
#espace ajouté pour éviter le smiley
alternate shell: s:
#espace ajouté pour éviter le smiley
shell working directory: s:
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
password 51:b:$encrypted
\"
Set-Content -path \"./$server.rdp\" -Value $fichier
mstsc \"./$server.rdp\"
Start-Sleep -Seconds 2
Remove-Item \"./$server.rdp\"
[/code:1]
et en fichier joint vous trouverez la dll a placer dans le meme repertoire que le script ainsi que son code csharp (le mode decryptage ne fonctionnne pas dans ce code)
si le serveur distant est un serveur 2000 TS demande systématiquement de reentrer le mot de passe
si qqun connait la solution (peut être dans les policies) pour passez outre je suis preneur.
j'avais posté il y a quelques temps une solution pour pouvoir se connecter via TS sur des machines distantes sans avoir a se souvenir du compte a utiliser ou a reentrer systématiquement son mot de passe
j'utilisais par contre le send key pour entrer username et mot de passe ce qui n'était pas viable car ça plantait assez fréquemment
la seule solution fiable etant de construire entierement le fichier rdp avec mot de passe crypté
voici les liens dans lesquels j'ai puisé le moyen de creer un mot de passe crypté par la fonction dpapi utilisée par mstsc.exe
www.obviex.com/samples/dpapi.aspx
msdn.microsoft.com/en-us/library/aa380261.aspx
www.remkoweijnen.nl/blog/2007/10/18/how-...words-are-encrypted/
et merci a Laurent Dardenne pour son aide sur l'utilisation et la compréhension de csharp
voici le code powershell de base permettant de creer le fichier rdp
bien sur dans l'etat il n'est pas tres utile car il faut entrer les informations de serveur compte et mdp manuellement
mais c'est facilement automatisable (la preuve je l'ai fait )
ceci est juste un exemple d'utilisation
[code:1]
$server = Read-Host \"entrer le nom du serveur\"
$dll =\"./DPAPI.dll\"
[void][Reflection.Assembly]::LoadFile($dll)
$secmdp = get-credential
$ptr = [System.Runtime.InteropServices.Marshal]::`
SecureStringToBSTR($secmdp.password)
$mdp = [System.Runtime.InteropServices.Marshal]::`
PtrToStringUni($ptr)
$user = $secmdp.username
$encrypted=[DPAPI]::Encrypt([DPAPI+KeyType]::`
UserKey,$mdp,$null,\"psw\"«»)
$fichier =
\"screen mode id:i:1
desktopwidth:i:1024
desktopheight:i:768
session bpp:i:16
#espace ajouté pour éviter le smiley
winposstr: s:2,3,169,96,1201,897
#espace ajouté pour éviter le smiley
full address: s:$server
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:1
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
displayconnectionbar:i:1
autoreconnection enabled:i:1
#espace ajouté pour éviter le smiley
username: s:$user
#espace ajouté pour éviter le smiley
alternate shell: s:
#espace ajouté pour éviter le smiley
shell working directory: s:
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
password 51:b:$encrypted
\"
Set-Content -path \"./$server.rdp\" -Value $fichier
mstsc \"./$server.rdp\"
Start-Sleep -Seconds 2
Remove-Item \"./$server.rdp\"
[/code:1]
et en fichier joint vous trouverez la dll a placer dans le meme repertoire que le script ainsi que son code csharp (le mode decryptage ne fonctionnne pas dans ce code)
si le serveur distant est un serveur 2000 TS demande systématiquement de reentrer le mot de passe
si qqun connait la solution (peut être dans les policies) pour passez outre je suis preneur.
La pièce jointe dpapi.zip est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 15 ans 10 mois #2495
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:creation de fichiers rdp pour remote connexion
Excellent ! Merci Dan !
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 10 mois #2496
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creation de fichiers rdp pour remote connexion
Dan écrit:
Elle ne sont donc pas en phase.
[code:1]
public static string Decrypt( string cipherText,
string entropy,
out string description)
{
// Make sure that parameters are valid.
if (entropy == null) entropy = String.Empty;
return Encoding.UTF8.GetString(
Decrypt( Convert.FromBase64String(cipherText),
Encoding.UTF8.GetBytes(entropy),
out description));
}
[/code:1]
Puisque la modif de la méthode de cryptage s'appuie sur de l'unicode ici aussi on doit modifier le codage.
Dans un premier temps essaie de remplacer UTF8 par Unicode. Je ne suis pas certains que cela soit suffisant mais je n'ai pas le temps pour le moment de me pencher sur cette adaptation.<br><br>Message édité par: Laurent Dardenne, à: 23/06/08 13:33
Oui c'est car le code associé ne prend pas en compte les modifications effectuées sur la méthode de cryptage.(le mode decryptage ne fonctionnne pas dans ce code)
Elle ne sont donc pas en phase.
[code:1]
public static string Decrypt( string cipherText,
string entropy,
out string description)
{
// Make sure that parameters are valid.
if (entropy == null) entropy = String.Empty;
return Encoding.UTF8.GetString(
Decrypt( Convert.FromBase64String(cipherText),
Encoding.UTF8.GetBytes(entropy),
out description));
}
[/code:1]
Puisque la modif de la méthode de cryptage s'appuie sur de l'unicode ici aussi on doit modifier le codage.
Dans un premier temps essaie de remplacer UTF8 par Unicode. Je ne suis pas certains que cela soit suffisant mais je n'ai pas le temps pour le moment de me pencher sur cette adaptation.<br><br>Message édité par: Laurent Dardenne, à: 23/06/08 13:33
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 10 mois #2497
par daniel soares
oui Laurent
je n'ai rien fait sur la parti décryptage car je ne l'utilise pas pour l'instant
je vais étudier la question quand je testerai la méthode machine du cryptage (si j'ai bien compris tous les comptes connectés sur une machine pourront decrypter le meme mot de passe )
je ne crois pas que cette méthode existe pour le cryptage utilisé par powershell.
çà me permettrait sur un serveur a n'avoir qu'a crypter une seule fois la liste des mots de passe communs a une équipe.
je pense qu'il faut plus que modifier le codage car il y a aussi une boucle qui traite chaque caractère du mot de passe (j'imagine qu'elle doit aussi exister sur le décryptage)
enfin si tu trouve une solution avant moi je te promets que je ne t'en voudrai pas
Réponse de daniel soares sur le sujet Re:creation de fichiers rdp pour remote connexion
Oui c'est car le code associé ne prend pas en compte les modifications effectuées sur la méthode de cryptage.
oui Laurent
je n'ai rien fait sur la parti décryptage car je ne l'utilise pas pour l'instant
je vais étudier la question quand je testerai la méthode machine du cryptage (si j'ai bien compris tous les comptes connectés sur une machine pourront decrypter le meme mot de passe )
je ne crois pas que cette méthode existe pour le cryptage utilisé par powershell.
çà me permettrait sur un serveur a n'avoir qu'a crypter une seule fois la liste des mots de passe communs a une équipe.
je pense qu'il faut plus que modifier le codage car il y a aussi une boucle qui traite chaque caractère du mot de passe (j'imagine qu'elle doit aussi exister sur le décryptage)
enfin si tu trouve une solution avant moi je te promets que je ne t'en voudrai pas
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.074 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- creation de fichiers rdp pour remote connexion