ulfben icon

Decrypt All EFS Files

ulfben | PRO | 05/13/18 05:27:23 PM UTC | 0 ⭐ | 1383 👁️ | Never ⏰ | []
PowerShell |

4.63 KB

|

None

|

0 👍

/

0 👎

#Requires -version 3.0
# DecryptAllFilesandFoldersOnLogicalDisk_v3.ps1
# Version 1.2
# By Marco Janse, http://www.ictstuff.info/find-all-encrypted-files-and-folders-and-decrypt-them-using-powershell/
# Patched by Ulf Benjaminsson:
    # Fixed: log path was broken
    # Fixed: log name is timestamped and sorteable
    # Fixed: hidden files weren’t decrypted
    # Fixed: some filenames could break the script
# The script will log every step in a logfile in C:\Logs\ by default.
 
# START OF SCRIPT
# Verify the existence of a Logs directory. If it doe not exist, create it.
If (-not(Test-Path -Path "C:\Logs")){
   New-Item -Path "C:\" -Name "Logs" -ItemType directory
}
 
# Date and Time
$today = Get-Date
$filename = $('DecryptAllFiles ') + $today.ToString('yyyy-MM-dd HHmm') + $('.log');
$logFile = $("C:\Logs\${filename}")
 
# Either: get all logical drives en put the output in a variable named $drive
#$drive = Get-WmiObject Win32_logicaldisk | Select-Object -ExpandProperty deviceID
# OR hardcode the drive you want to decrypt (good for running one script-per-disk in parallel)
$drive = "D:\"
 
Add-Content $logFile "$today Found the following drives: $drive"
 
# Let the user know the current status of the script
Write-Host "Scanning drives ${drive} for encrypted files, please be patient..."
 
# Create a variable named $encryptedfiles that contains all items on all logical drives with a 'encrypted' attribute set
$encryptedfiles += foreach ($d in $drive) { 
    Get-ChildItem $d -File -Recurse -Force -ErrorAction SilentlyContinue |
    Where-Object { $_.Attributes -match "Encrypted" } |
    Select-Object -ExpandProperty FullName
}
 
# Now log the amount of encrypted files and all the encrypted files with full path
Write-Host "Found $($encryptedfiles.count) encrypted files:"
Add-Content $logFile "$today Found $($encryptedfiles.count) encrypted files:"
Add-Content $logFile ""
 
foreach ($file in $encryptedfiles){
    Add-Content $logFile "$file"
}
 
# Next we'll add some extra lines for easy reading the logfile
Add-Content $logFile "==============================================="
Add-Content $logFile "$today total $($encryptedfiles.count) encrypted files"
Add-Content $logfile ""
 
# Now, we'll start decrypting every file in the $encryptedfiles variable
Write-Host "Starting decryption of all found files, please be patient..."
 
foreach ($file in $encryptedfiles) {
    try {
        (Get-Item -Force -LiteralPath "${file}").Decrypt()
        Add-Content $logFile "${file} decrypted"
    }
    catch [Exception]{
        Add-Content $logFile "ERROR: Decrypting ${file} failed. Error message: $_.Exception.ToString()"
    }   
}
 
# Now we write a completed decrypting files status message to the logfile
Add-Content $logfile ""
Add-Content $logfile ""
Add-Content $logFile "Finished decrypting files"
Write-Host "Finished decrypting files"
 
# Next up, we want to remove the encrypted flag from all the folders as well
# We'll start by inventorying the encrypted folders again
Write-Host "Scanning all logical drives for encrypted folders, please be patient..."
 
$encryptedfolders += foreach ($d in $drive) {
    Get-ChildItem $d -Directory -Recurse -Force -ErrorAction SilentlyContinue |
    Where-Object { $_.Attributes -match "Encrypted" } |
    Select-Object -ExpandProperty FullName
}
 
# Log the amount of encrypted folders and all the encrypted folders with full pathname
Write-Host "Found $($encryptedfolders.count) encrypted folders:"
Add-Content $logFile "$today Found $($encryptedfolders.count) encrypted folders:"
Add-Content $logFile ""
 
foreach ($folder in $encryptedfolders){
    Add-Content $logFile "$folder"
}
 
# Next we'll add some extra lines for easy reading the logfile
Add-Content $logFile "==============================================="
Add-Content $logFile "$today total $($encryptedfolders.count) encrypted folders"
Add-Content $logfile ""
 
# Now, we'll start decrypting every folder in the $encryptedfolders variable using the cipher utility
Write-Host "Starting decryption of all found folders, please be patient..."
 
foreach ($folder in $encryptedfolders) {
    try{
        cipher.exe /d /i $folder
        Add-Content $logFile "$folder decrypted"
    }catch [Exception]{
        Add-Content $logFile "ERROR: Decrypting $folder failed. Error message: $_.Exception.ToString()"
    }   
}
 
# Finally, a closing message to the logfile
Add-Content $logfile ""
Add-Content $logfile ""
Add-Content $logFile "Finished decrypting folders"
Write-Host "Finished decrypting folders"
Add-Content $logfile ""
Add-Content $logfile ""
Add-Content $logFile "===END of script==="
 
Write-Host "===End of script==="
 
# END of Script

Comments

  • Gyqizv icon
    04/02/26 06:19:35 PM UTC
    text |

    0 B

    |

    0 👍

    /

    0 👎

    Best t33n active cpx link daily updates!
     Copy and paste the link in a new browser tab and then hit enter!
     https://crazyporn.@xxx/members/157354/?asgtbndr=1&play=true&spon=adworld&zone=400
     Remove the @ 
  • Yuizcko icon
    05/18/26 01:09:19 PM UTC
    text |

    0 B

    |

    0 👍

    /

    0 👎

    Best t33n active cpx link daily updates!
     Copy and paste the link in a new browser tab and then hit enter!
     https://crazyporn.xxx/members/157354/?asgtbndr=1&play=true&spon=adworld&zone=400