From 59e6f94e763d40614284d43823a391cafd384c4c Mon Sep 17 00:00:00 2001 From: HarmJ0y Date: Wed, 14 Dec 2016 18:50:58 -0500 Subject: For ./ScriptModification/ : -PSScriptAnalyzering -Tweaking of synopsis blocks in order to support platyPS -Code standardization -Generated docs --- ScriptModification/Remove-Comments.ps1 | 156 --------------------------------- 1 file changed, 156 deletions(-) delete mode 100644 ScriptModification/Remove-Comments.ps1 (limited to 'ScriptModification/Remove-Comments.ps1') diff --git a/ScriptModification/Remove-Comments.ps1 b/ScriptModification/Remove-Comments.ps1 deleted file mode 100644 index 45a9746..0000000 --- a/ScriptModification/Remove-Comments.ps1 +++ /dev/null @@ -1,156 +0,0 @@ -function Remove-Comments -{ -<# -.SYNOPSIS - -Strips comments and extra whitespace from a script. - -PowerSploit Function: Remove-Comments -Author: Matthew Graeber (@mattifestation) -License: BSD 3-Clause -Required Dependencies: None -Optional Dependencies: None - -.DESCRIPTION - -Remove-Comments strips out comments and unnecessary whitespace from a script. This is best used in conjunction with Out-EncodedCommand when the size of the script to be encoded might be too big. - -A major portion of this code was taken from the Lee Holmes' Show-ColorizedContent script. You rock, Lee! - -.PARAMETER ScriptBlock - -Specifies a scriptblock containing your script. - -.PARAMETER Path - -Specifies the path to your script. - -.EXAMPLE - -C:\PS> $Stripped = Remove-Comments -Path .\ScriptWithComments.ps1 - -.EXAMPLE - -C:\PS> Remove-Comments -ScriptBlock { -### This is my awesome script. My documentation is beyond reproach! - Write-Host 'Hello, World!' ### Write 'Hello, World' to the host -### End script awesomeness -} - -Write-Host 'Hello, World!' - -.EXAMPLE - -C:\PS> Remove-Comments -Path Inject-Shellcode.ps1 | Out-EncodedCommand - -Description ------------ -Removes extraneous whitespace and comments from Inject-Shellcode (which is notoriously large) and pipes the output to Out-EncodedCommand. - -.INPUTS - -System.String, System.Management.Automation.ScriptBlock - -Accepts either a string containing the path to a script or a scriptblock. - -.OUTPUTS - -System.Management.Automation.ScriptBlock - -Remove-Comments returns a scriptblock. Call the ToString method to convert a scriptblock to a string, if desired. - -.LINK - -http://www.exploit-monday.com -http://www.leeholmes.com/blog/2007/11/07/syntax-highlighting-in-powershell/ -#> - - [CmdletBinding( DefaultParameterSetName = 'FilePath' )] Param ( - [Parameter(Position = 0, Mandatory = $True, ParameterSetName = 'FilePath' )] - [ValidateNotNullOrEmpty()] - [String] - $Path, - - [Parameter(Position = 0, ValueFromPipeline = $True, Mandatory = $True, ParameterSetName = 'ScriptBlock' )] - [ValidateNotNullOrEmpty()] - [ScriptBlock] - $ScriptBlock - ) - - Set-StrictMode -Version 2 - - if ($PSBoundParameters['Path']) - { - Get-ChildItem $Path -ErrorAction Stop | Out-Null - $ScriptBlockString = [IO.File]::ReadAllText((Resolve-Path $Path)) - $ScriptBlock = [ScriptBlock]::Create($ScriptBlockString) - } - else - { - # Convert the scriptblock to a string so that it can be referenced with array notation - $ScriptBlockString = $ScriptBlock.ToString() - } - - # Tokenize the scriptblock and return all tokens except for comments - $Tokens = [System.Management.Automation.PSParser]::Tokenize($ScriptBlock, [Ref] $Null) | Where-Object { $_.Type -ne 'Comment' } - - $StringBuilder = New-Object Text.StringBuilder - - # The majority of the remaining code comes from Lee Holmes' Show-ColorizedContent script. - $CurrentColumn = 1 - $NewlineCount = 0 - foreach($CurrentToken in $Tokens) - { - # Now output the token - if(($CurrentToken.Type -eq 'NewLine') -or ($CurrentToken.Type -eq 'LineContinuation')) - { - $CurrentColumn = 1 - # Only insert a single newline. Sequential newlines are ignored in order to save space. - if ($NewlineCount -eq 0) - { - $StringBuilder.AppendLine() | Out-Null - } - $NewlineCount++ - } - else - { - $NewlineCount = 0 - - # Do any indenting - if($CurrentColumn -lt $CurrentToken.StartColumn) - { - # Insert a single space in between tokens on the same line. Extraneous whiltespace is ignored. - if ($CurrentColumn -ne 1) - { - $StringBuilder.Append(' ') | Out-Null - } - } - - # See where the token ends - $CurrentTokenEnd = $CurrentToken.Start + $CurrentToken.Length - 1 - - # Handle the line numbering for multi-line strings - if(($CurrentToken.Type -eq 'String') -and ($CurrentToken.EndLine -gt $CurrentToken.StartLine)) - { - $LineCounter = $CurrentToken.StartLine - $StringLines = $(-join $ScriptBlockString[$CurrentToken.Start..$CurrentTokenEnd] -split '`r`n') - - foreach($StringLine in $StringLines) - { - $StringBuilder.Append($StringLine) | Out-Null - $LineCounter++ - } - } - # Write out a regular token - else - { - $StringBuilder.Append((-join $ScriptBlockString[$CurrentToken.Start..$CurrentTokenEnd])) | Out-Null - } - - # Update our position in the column - $CurrentColumn = $CurrentToken.EndColumn - } - } - - Write-Output ([ScriptBlock]::Create($StringBuilder.ToString())) -} -- cgit v1.2.3