Bien souvent, en entreprise on se retrouve avec des dossiers contenant des fichiers *.ini d'installation ou autres avec des mots de passe stockés en claire. Prenons, le cas des installations SQL , le DBA enregistre les mots de passe dans un fichier de paramètre et ne pense pas à le supprimer. Les mots de passe en claire posent un problème de sécurité au SI. Le script en powershell ci-dessous permettrait de remplacer tous les mots de passes en claire par des étoiles (**********).
#############################################
#Author: KARUPPANNAN Seevadassen #
#Date: 27/03/2017 #
#############################################
$networkPath = "\\chemin\dossier\"
$iniS = Get-ChildItem -Path $networkPath -Filter *.ini -Recurse
foreach ($file in $iniS) {
$fileName = $file.Name
$filePath = $file.FullName
Write-Host "File name: " $fileName -ForegroundColor yellow
Write-Host "Full path: " $filePath -ForegroundColor yellow
$array = $filePath.split("\")
$server = $array[8]
Write-Host "Server: " $server
$password = Get-Content $filePath | Where-Object { $_.Contains("SAPWD") -or $_.Contains("SQLSVCPASSWORD") -or $_.Contains("AGTSVCPASSWORD") -or $_.Contains("FTSVCPASSWORD") -or $_.Contains("ISSVCPASSWORD") -or $_.Contains("ASSVCPASSWORD") -or $_.Contains("RSSVCPASSWORD") -or $_.Contains("FARMPASSWORD")}
Write-Host $password
Write-Host $password.GetType()
foreach ($line in $password){
$row = $server + ";" + $line
Write-Host "row value: " $row -ForegroundColor Green
Write-Host "line: " $line
$param1,$param2 = $line.split('=')
Write-Host "partie1: " $param1
$replacetxt = $param1 + '=' + '"' + "********" + '"'
Write-Host "replace with " $replacetxt
try {
(Get-Content $filePath) -replace $line,$replacetxt | Set-Content $filePath
Write-Host "SUCCESS:Password has been replaced!" -ForegroundColor Green
}catch{
Write-Host "ERROR:Password has NOT been replaced!" -ForegroundColor red
$ErrorMessage = $_.Exception.Message
Write-Host $ErrorMessage
}
}
Write-Host "---"
}
Dans les fichiers *.ini, le script powershell va chercher toutes les lignes qui contiennent les mots clés "SAPWD","SQLSVCPASSWORD","AGTSVCPASSWORD","FTSVCPASSWORD"... et replacer par la suite les mots de passe par des étoiles.