
पावरशेल ऑबफ़स्केटर
इसका लक्ष्य कोड को बदलना है ताकि विश्लेषण और स्थिर हस्ताक्षरों में बाधा उत्पन्न हो, प्रयोगशालाओं और अधिकृत Red Team/Pentesting अभियानों में उपयोगी।
6 स्तरों के अस्पष्टीकरण के साथ-साथ एक transforms/pipeline आर्किटेक्चर का समर्थन करता है जो string tokenization, light literal encryption, number masking, identifier morphing, format "jitter," control-flow cosmetics, dead code injection, fragmentation profiles, और deterministic profiles जैसी तकनीकों को स्टैक करने की अनुमति देता है।
⚠️ जिम्मेदार उपयोग: यह उपकरण केवल अनुसंधान और अधिकृत परीक्षण के लिए है। न करें दुर्भावनापूर्ण उद्देश्यों के लिए उपयोग।```powershell
./psobf -h
██████╗ ███████╗ ██████╗ ██████╗ ███████╗
██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝
██████╔╝███████╗██║ ██║██████╔╝█████╗
██╔═══╝ ╚════██║██║ ██║██╔══██╗██╔══╝
██║ ███████║╚██████╔╝██████╔╝██║
╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝
Omar Salazar
v.2.0.0
Usage: psobf -i -o -level <1|2|3|4|5|6> [options]
Obfuscation Levels: 1 - Char join encoding 2 - Base64 encoding 3 - Base64 encoding (alternate) 4 - GZip + Base64 compression 5 - Script fragmentation 6 - AES-256 CTR encryption (NEW in 2.0.0)
Transform Pipeline Options (use with -pipeline): iden - Identifier morphing (use with -iden obf) strenc - String encryption (use with -strenc xor|rc4) stringdict - String tokenization (use with -stringdict N) numenc - Number encoding fmt - Format jitter (use with -fmt jitter) cf - Control flow obfuscation (use with -cf-opaque, -cf-shuffle) dead - Dead code injection (use with -deadcode N) hexenc - Hex string encoding (NEW) alias - Cmdlet alias substitution (NEW) unicode - Unicode character encoding (NEW) antidebug - Anti-debugging/VM detection (NEW) iexobf - Invoke-Expression obfuscation (NEW)
Examples:
psobf -i script.ps1 -o out.ps1 -level 2
psobf -i script.ps1 -o out.ps1 -level 6 -profile heavy
psobf -i script.ps1 -o out.ps1 -level 4 -pipeline "iden,alias,hexenc,antidebug,iexobf" -iden obf
psobf -i script.ps1 -o out.ps1 -level 4 -pipeline "strenc" -strenc rc4 -strkey 0011223344556677
## विशेषताएँ
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/6598/11956ab9f65e8dc1b0460652042c601f70d28bb67e9fd6f0a89813ed5369997f.gif" alt="psobf" width="700px"></a>
<br>
</h1>
<h1 align="center">
<img src="https://raw.githubusercontent.com/taurusomar/psobf/HEAD/static/poc2.gif" alt="psobf" width="700px"></a>
<br>
</h1>
---
## स्थापना```bash
go install github.com/TaurusOmar/psobf/v2/cmd/[email protected]
psobf -i input.ps1 -o out.ps1 -level 1..6 [options] psobf -h # full help
## विशेषताएँ
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/6598/11956ab9f65e8dc1b0460652042c601f70d28bb67e9fd6f0a89813ed5369997f.gif" alt="psobf" width="700px"></a>
<br>
</h1>
<h1 align="center">
<img src="https://raw.githubusercontent.com/taurusomar/psobf/HEAD/static/poc2.gif" alt="psobf" width="700px"></a>
<br>
</h1>
---
## स्थापना```bash
go install github.com/TaurusOmar/psobf/cmd/[email protected]
psobf -i input.ps1 -o out.ps1 -level 1..6 [options] psobf -h # full help
---
## पूर्ण फ़्लैग संदर्भ
| फ़्लैग | प्रकार / मान | डिफ़ॉल्ट | विवरण | उदाहरण | | |
| ------------- | ----------------- | ---------------: | ------------------------------------------- | ------------------------------------------------------------ | ------------------------------- | ---------------------- |
| `-i` | string | — | इनपुट PS1 (पाइप से पढ़ने के लिए `-stdin` का उपयोग करें) | `-i script.ps1` | | |
| `-o` | string | `obfuscated.ps1` | आउटपुट (STDOUT में लिखने के लिए `-stdout` का उपयोग करें) | `-o out.ps1` | | |
| `-level` | 1..6 | 1 | अंतिम पैकर (स्तर देखें) | `-level 4` | | |
| `-noexec` | bool | false | केवल पेलोड उत्पन्न करें (कोई `Invoke-Expression` नहीं) | `-noexec` | | |
| `-stdin` | bool | false | STDIN से PS पढ़ें | `-stdin` | | |
| `-stdout` | bool | false | परिणाम STDOUT में लिखें | `-stdout` | | |
| `-seed` | int64 | random | पुनरुत्पादनीय यादृच्छिकता | `-seed 42` | | |
| `-q` | bool | false | शांत (कोई बैनर नहीं) | `-q` | | |
| `-pipeline` | csv | — | क्रम में लागू करने के लिए रूपांतरण | `-pipeline "iden,strenc,stringdict,numenc,fmt,cf,dead,frag"` | | |
| `-iden` | `keep`/`obf` | `keep` | पहचानकर्ता रूपांतरण (चर और फ़ंक्शन) | `-iden obf` | | |
| `-strenc` | `off`/`xor`/`rc4` | `off` | स्ट्रिंग शाब्दिक एन्क्रिप्शन | `-strenc rc4` | | |
| `-strkey` | hex | — | `-strenc` के लिए कुंजी | `-strkey 0011223344556677` | | |
| `-stringdict` | 0..100 | 0 | लंबी स्ट्रिंग्स को टोकनाइज़ करें; प्रति शाब्दिक % संभावना | `-stringdict 40` | | |
| `-numenc` | bool | false | संख्या को अंकगणितीय PS अभिव्यक्ति के रूप में एनकोड करें | `-numenc` | | |
| `-fmt` | `off`/`jitter` | `off` | व्हाइटस्पेस/लाइन ब्रेक को यादृच्छिक करें | `-fmt jitter` | | |
| `-cf-opaque` | bool | false | `if(1 -eq 1){...}` में लपेटें | `-cf-opaque` | | |
| `-cf-shuffle` | bool | false | **फ़ंक्शन ब्लॉक** को पुनर्व्यवस्थित करें | `-cf-shuffle` | | |
| `-deadcode` | 0..100 | 0 | डेड कोड इंजेक्ट करने की संभावना | `-deadcode 20` | | |
| `-frag` | \`profile=tight | medium | loose\` | — | फ्रैग्मेंटेशन प्रोफ़ाइल (स्तर 5) | `-frag profile=medium` |
| `-minfrag` | int | 10 | न्यूनतम टुकड़ा आकार (स्तर 5) | `-minfrag 8` | | |
| `-maxfrag` | int | 20 | अधिकतम टुकड़ा आकार (स्तर 5) | `-maxfrag 16` | | |
| `-profile` | \`light | balanced | heavy\` | — | पाइपलाइन/सीड आदि के लिए प्रीसेट | `-profile heavy` |
| `-fuzz` | int | 0 | N वेरिएंट उत्पन्न करें (विभिन्न सीड) | `-fuzz 5` | | |
| `-poly` | int | 0 | प्रति रूपांतरण बहुरूपी वेरिएंट | `-poly 3` | | |
> **पाइपलाइन** अंतिम **`-level`** पैकिंग से **पहले** चलती है।
---
## नमूना इनपुट स्क्रिप्ट (सुरक्षित)
उदाहरणों को सुरक्षित रखने के लिए, हम उपयोग करेंगे:```powershell
Write-Host "Hello, World!"
$answer = 42
function Greet($name) { Write-Host ("Hi, " + $name) }
Greet "Ada"
निम्नलिखित आउटपुट्स के आकार (स्निपेट्स) दिखाते हैं। वास्तविक पेलोड भिन्न होंगे।
psobf -i sample.ps1 -o out.ps1 -level 1
**आउटपुट (स्निपेट):**```powershell
$obfuscated = $([char[]](87,114,105,116,101,45,72,111,115,116,32,34,72,101,108,108,111,44,32,87,111,114,108,100,33,34,10,36,97,110,115,119,101,114,32,61,32,52,50,10,102,117,110,99,116,105,111,110,32,71,114,101,101,116,40,36,110,97,109,101,41,32,123,32,87,114,105,116,101,45,72,111,115,116,32,40,34,72,105,44,32,34,32,43,32,36,110,97,109,101,41,32,125,10,71,114,101,101,116,32,34,65,100,97,34,10) -join ''); Invoke-Expression $obfuscated
psobf -i sample.ps1 -o out.ps1 -level 2
**आउटपुट (स्निपेट):**```powershell
$obfuscated = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('V3JpdGUtSG9zdCAiSGVsbG8sIFdvcmxkISIKJGFuc3dlciA9IDQyCmZ1bmN0aW9uIEdyZWV0KCRuYW1lKSB7IFdyaXRlLUhvc3QgKCJIaSwgIiArICRuYW1lKSB9CkdyZWV0ICJBZGEiCg==')); Invoke-Expression $obfuscated
psobf -i sample.ps1 -o out.ps1 -level 3
**आउटपुट (स्निपेट):**```powershell
$e = [Convert]::FromBase64String('V3JpdGUtSG9zdCAiSGVsbG8sIFdvcmxkISIKJGFuc3dlciA9IDQyCmZ1bmN0aW9uIEdyZWV0KCRuYW1lKSB7IFdyaXRlLUhvc3QgKCJIaSwgIiArICRuYW1lKSB9CkdyZWV0ICJBZGEiCg=='); $obfuscated = [Text.Encoding]::UTF8.GetString($e); Invoke-Expression $obfuscated
psobf -i sample.ps1 -o out.ps1 -level 4
**आउटपुट (स्निपेट):**```powershell
$compressed = 'H4sIAAAAAAAA/wovyixJ1fXILy5RUPJIzcnJ11EIzy/KSVFU4lJJzCsuTy1SsFUwMeJKK81LLsnMz1NwL0pNLdFQyUvMTdVUqFZA0q+h5JGpo6CkoK0Ala3lAitWUHJMSVTiAgQAAP//m+Ey2GoAAAA='; $bytes = [Convert]::FromBase64String($compressed); $ms = New-Object IO.MemoryStream(,$bytes); $gz = New-Object IO.Compression.GzipStream($ms,[IO.Compression.CompressionMode]::Decompress); $sr = New-Object IO.StreamReader($gz); $obfuscated = $sr.ReadToEnd(); Invoke-Expression $obfuscated
psobf -i sample.ps1 -o out.ps1 -level 5
**आउटपुट (स्निपेट):**```powershell
$fragments = @('Write-Host "Hello',', World!"
$','answer = 42','
function G','reet($name)',' { Write-Ho','st ("Hi, " ','+ $name) }
','Greet "Ada"','
'); $script = $fragments -join ''; Invoke-Expression $script
psobf -i sample.ps1 -o out.ps1 -level 6
**आउटपुट (अंश):**```powershell
$k=[Convert]::FromBase64String('...base64key...');$iv=[Convert]::FromBase64String('...base64iv...');$e=[Convert]::FromBase64String('...base64ciphertext...');$a=New-Object Security.Cryptography.AesManaged;$a.Key=$k;$a.IV=$iv;$d=$a.CreateDecryptor();$bytes=$d.TransformFinalBlock($e,0,$e.Length);$dec=[Text.Encoding]::UTF8.GetString($bytes);Invoke-Expression $dec
पेलोड को निष्पादित किए बिना निरीक्षण करने के लिए
-noexecका उपयोग करें।
-iden)__$ से सुरक्षित करें।कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "iden" -iden obf -seed 11
**आउटपुट (स्निपेट)**```powershell
$WguE = 42
function QhZy($Chx){ Write-Host ("Hi, " + $Chx) }
QhZy "Ada"
-strenc xor|rc4)केवल स्ट्रिंग लिटरल्स को एन्क्रिप्ट करता है (कोई API टैम्परिंग नहीं)। रनटाइम पर ठीक समय पर डिक्रिप्ट करता है। फ़्लैग्स: -strenc xor|rc4, -strkey .
कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "strenc" -strenc xor -strkey a1b2c3d4 -seed 42
**आउटपुट (स्निपेट)**```powershell
$b=[Convert]::FromBase64String('EwAB...'); for($i=0;$i -lt $b.Length;$i++){$b[$i]=$b[$i] -bxor 0xA1}; [Text.Encoding]::UTF8.GetString($b)
कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "strenc" -strenc rc4 -strkey 0011223344556677 -seed 7
**आउटपुट (स्निपेट)**```powershell
function __decGWREVT($k,[byte[]]$d){ $s=0..255; $j=0; for($i=0;$i -lt 256;$i++){ $j=($j+$s[$i]+$k[$i%$k.Length])%256; $t=$s[$i];$s[$i]=$s[$j];$s[$j]=$t } $i=0;$j=0; for($x=0;$x -lt $d.Length;$x++){ $i=($i+1)%256;$j=($j+$s[$i])%256; $t=$s[$i];$s[$i]=$s[$j];$s[$j]=$t; $d[$x]=$d[$x] -bxor $s[($s[$i]+$s[$j])%256] } [Text.Encoding]::UTF8.GetString($d) }
...
( __decGWREVT ([byte[]](0..(8-1)|%{[Convert]::ToByte('0011223344556677'.Substring($_*2,2),16)})) ([Convert]::FromBase64String('m7m7...')) )
-stringdict)लंबे स्ट्रिंग्स को $D एरे में टोकनाइज़ करता है और रनटाइम पर उन्हें पुनर्निर्मित करता है। दोहराए जाने वाले सिग्नेचर को कम करता है।
फ़्लैग: -stringdict <0..100>
आदेश```bash psobf -i sample.ps1 -o out.ps1 -level 3 -pipeline "stringdict" -stringdict 40 -seed 1
**आउटपुट (स्निपेट)**```powershell
$D=@('Hello',', World','!','Hi, ', 'Ada');
Write-Host ($D[0]+$D[1]+$D[2])
function Greet($name){ Write-Host ($D[3] + $name) }
Greet $D[4]
-numenc)सादे संख्याओं को समतुल्य अंकगणितीय/बिटवाइज़ अभिव्यक्तियों से प्रतिस्थापित करता है (स्ट्रिंग्स के बाहर)।
कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "numenc" -numenc -seed 1337
**आउटपुट (स्निपेट)**```powershell
$answer = ((0x2A -bxor 0x00)+0)
सावधानी: 2>&1 जैसे रीडायरेक्ट को समान रहना चाहिए। यदि आपके स्रोत में अनकोटेड रीडायरेक्ट हैं और आप समस्याओं का सामना कर रहे हैं, तो -numenc अक्षम करें या उन रीडायरेक्ट को स्रोत में स्ट्रिंग्स में समाहित करें।
-fmt)स्पेसिंग और नई पंक्तियों को यादृच्छिक बनाता है।
कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "fmt" -fmt jitter -seed 20
**आउटपुट (स्निपेट)**```powershell
Write-Host "Hello, World!"
$answer=42
function Greet($name) { Write-Host ("Hi, "+$name) }
Greet "Ada"
-cf-opaque, -cf-shuffle)-cf-opaque: पूरे स्क्रिप्ट को कभी-गलत न होने वाली शाखा में लपेटता है।-cf-shuffle: फ़ंक्शन ब्लॉक को पुनर्क्रमित करता है (एकल कथन नहीं)। आप परिवर्तन तभी देखेंगे जब आपकी स्क्रिप्ट फ़ंक्शंस परिभाषित करती है।कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "cf" -cf-opaque -cf-shuffle -seed 77
**आउटपुट (स्निपेट)**```powershell
if(1 -eq 1){
function Greet($name){ Write-Host ("Hi, " + $name) }
Write-Host "Hello, World!"
$answer = 42
Greet "Ada"
}
-deadcode)नो-ऑप फंक्शन्स, 0-इटरेशन लूप्स, हानिरहित स्ट्रिंग्स आदि इंजेक्ट करता है। संभावना द्वारा नियंत्रित। फ्लैग: -deadcode <0..100> (स्निपेट इंजेक्शन संभावना)।
कमांड```bash psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "dead" -deadcode 25 -seed 5
**आउटपुट (स्निपेट)**```powershell
function __dummyzQJxJk { return }
for($i=0;$i -lt 0;$i++){Start-Sleep -Milliseconds 0}
$x='canary';$y=$x+$x|Out-Null
Write-Host "Hello, World!"
...
-frag, -minfrag, -maxfrag)केवल स्तर 5 (स्ट्रिंग विखंडन + रनटाइम जॉइन) को प्रभावित करता है।
प्रोफाइल:
profile=tight → छोटे टुकड़े (≈6–10)profile=medium → मध्यम टुकड़े (≈10–18)profile=loose → बड़े टुकड़े (≈14–28)या -minfrag / -maxfrag के साथ समायोजित करें।
कमांड```bash
psobf -i sample.ps1 -o out.ps1 -level 5 -frag profile=loose -seed 9
psobf -i sample.ps1 -o out.ps1 -level 5 -minfrag 8 -maxfrag 16 -seed 9
**आउटपुट (स्निपेट)**```powershell
$fragments=@('Write-Host "Hello,',' World!"',"`n", '$answer = 42',"`n",'function Greet($','name){ Write-Host ("Hi, "+$name)}',"`n",'Greet "Ada"');
$script=$fragments -join ''; Invoke-Expression $script
hexenc)स्ट्रिंग लिटरल को हेक्साडेसिमल के रूप में एनकोड करता है।```bash psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "hexenc" -seed 42
**आउटपुट (स्निपेट):**```powershell
[Text.Encoding]:https://raw.githubusercontent.com/taurusomar/psobf/HEAD/:UTF8.GetString(%5BConvert%5D::FromHexString(%2748656C6C6F%27))
alias)PowerShell कमांडलेट को उनके छोटे उपनामों से बदलता है।```bash psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "alias" -seed 42
**आउटपुट (स्निपेट):**```powershell
# Write-Host → echo/write/outright
# Get-ChildItem → dir/ls/gci
# ForEach-Object → foreach/%
unicode)स्ट्रिंग वर्णों को [char]0xNNNN प्रारूप में परिवर्तित करता है।```bash
psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "unicode" -seed 42
**आउटपुट (स्निपेट):**```powershell
"H[char]0x0065[char]0x006C[char]0x006Co"
antidebug)सैंडबॉक्स/वीएम/डिबगर पहचान स्निपेट्स इंजेक्ट करता है।```bash psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "antidebug" -seed 42
**आउटपुट (स्निपेट):**```powershell
if($env:COMPUTERNAME -match '^(SANDBOX|MALWARE|VIRUS)'){ exit }
if((Get-WmiObject Win32_ComputerSystem).Model -match '^(VirtualBox|VMware)'){ exit }
# ... original script ...
iexobf)Invoke-Expression को वैकल्पिक रूपों से प्रतिस्थापित करता है।```bash
psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "iexobf" -seed 42
**आउटपुट (स्निपेट):**```powershell
# Invoke-Expression → IEX or .
. $code # instead of Invoke-Expression $code
प्रीसेट सुविधाजनक शुरुआती बिंदु हैं। आपके द्वारा पास किया गया कोई भी स्पष्ट फ़्लैग प्रीसेट को ओवरराइड करता है। आपके द्वारा स्पष्ट रूप से पास किया गया कोई भी फ़्लैग प्रोफ़ाइल पर पूर्वता लेता है।
-seed N → दिए गए कॉन्फ़िगरेशन के लिए निर्धारित आउटपुट।-seed नहीं → क्रिप्टोग्राफिक रूप से बीजित यादृच्छिकता।-fuzz N → N वेरिएंट उत्पन्न करें (out.ps1.v1.ps1, out.ps1.v2.ps1, …), विविधता परीक्षण के लिए उत्तम।उदाहरण```bash psobf -i sample.ps1 -o out.ps1 -level 4 -profile heavy -fuzz 3
## STDIN/STDOUT और `-noexec`
* **Pipe इन / आउट** ```bash
cat sample.ps1 | psobf -stdin -stdout -level 2 > out.ps1
उद्देश्य आर्टिफैक्ट्स में विविधता लाना और अधिकृत वातावरणों में अनुसंधान के लिए स्थिर हस्ताक्षरों को कम करना है।
2. **अधिकतम विविधता (format + fragmentation + dead code)**```bash
psobf -i sample.ps1 -o out.ps1 -level 5 \
-pipeline "fmt,frag,dead" -fmt jitter -frag profile=loose -deadcode 15 \
-fuzz 5
4. **स्थिर IOCs कम करें (संख्याएँ + शब्दकोश)**```bash
psobf -i sample.ps1 -o out.ps1 -level 2 -pipeline "numenc,stringdict" -numenc -stringdict 35 -seed 9
---
## सर्वोत्तम प्रथाएं और रक्षात्मक नोट्स
* प्रति बिल्ड **`-strkey`** और **`-seed`** को घुमाएं।
* परतों को संयोजित करना पसंद करें: `-strenc` + `-stringdict` + `-fmt jitter` + विखंडन।
* पहचान परीक्षण के लिए वेरिएंट के परिवार उत्पन्न करने हेतु `-fuzz` का उपयोग करें।
* एक स्वच्छ, हानिरहित आधार रेखा रखें और रूपांतरण से पहले और बाद में सैंडबॉक्स के तहत कार्यात्मक समतुल्यता सत्यापित करें।
* यदि आपकी स्क्रिप्ट नाजुक PS सिंटैक्स (जैसे, रीडायरेक्शन) पर निर्भर करती है, तो उन्हें उद्धरणों के अंदर रखें या `-numenc` को अक्षम करें।
---
## आर्किटेक्चर आरेख```
┌──────────────┐
│ input.ps1 │
└──────┬───────┘
│ read (-i / -stdin)
▼
┌──────────────┐
│ Pipeline │ order you choose
│ iden │ rename vars/funcs
│ strenc │ XOR/RC4 literals
│ stringdict │ tokenize + rejoin
│ numenc │ numeric masking
│ fmt │ whitespace jitter
│ cf │ opaque/shuffle
│ dead │ harmless noise
└──────┬───────┘
│ mutated script
▼
┌──────────────┐
│ Level 1..5 │ final packing
└──────┬───────┘
│ + Invoke-Expression (unless -noexec)
▼
┌──────────────┐
│ out.ps1 │
└──────────────┘
psobf -i sample.ps1 -o out.ps1 -level 2 -seed 123
psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "strenc" -strenc rc4 -strkey 0011223344556677
psobf -i sample.ps1 -o out.ps1 -level 3 -pipeline "stringdict,numenc" -stringdict 40 -numenc
psobf -i sample.ps1 -o out.ps1 -level 5
-pipeline "iden,strenc,stringdict,numenc,fmt,cf,dead,frag"
-iden obf -strenc xor -strkey a1b2c3d4 -stringdict 35 -numenc
-fmt jitter -cf-opaque -deadcode 15 -frag profile=medium -seed 777
psobf -i sample.ps1 -o out.ps1 -level 6 -profile heavy -seed 999
psobf -i sample.ps1 -o out.ps1 -level 4 -pipeline "antidebug,alias,hexenc" -seed 42
psobf -i sample.ps1 -o out.ps1 -level 6
-pipeline "iden,alias,hexenc,unicode,antidebug,iexobf,strenc"
-iden obf -strenc rc4 -strkey 0011223344556677 -seed 42
psobf -i sample.ps1 -o payload.txt -level 4 -noexec
## Legal
यह परियोजना केवल **शैक्षिक** और **अधिकृत** परीक्षण के लिए है। आप अपने उपयोग के लिए पूरी तरह जिम्मेदार हैं। लेखक और योगदानकर्ता प्रत्यक्ष या अप्रत्यक्ष क्षति के लिए कोई दायित्व नहीं मानते हैं।