# 🪟 PowerShell Base64 Encode & Decode

***

## 🪟 PowerShell Base64 Encode & Decode

**Transfer files without using the network** — especially in red-team or penetration testing situations. If you've got **terminal access**, this method lets you **convert a file to Base64**, move the string manually (like copy-paste ✂️📋), and **decode it** on the other side!

***

### ✅ Step 1: Verify File Integrity with `md5sum` 🧬

Before and after transferring the file, generate the **MD5 hash** to verify it later once transfered

```bash
md5sum id_rsa
```

### 🟢 Output:

```bash
4e301756a07ded0a2dd6953abf015278  id_rsa
```

This is your "file fingerprint" 🔍 — it should match after the transfer.

***

### 🔄 Step 2: Encode File to Base64 on Linux 🧾➡️🔡

```bash
cat id_rsa | base64 -w 0; echo
```

📋 This gives you a **Base64 string** of your file — copy it all!

{% code overflow="wrap" %}

```
LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFsd0FBQUFkemMyZ3RjbgpOaEFBQUFBd0VBQVFBQUFJRUF6WjE0dzV1NU9laHR5SUJQSkg3Tm9Yai84YXNHRUcxcHpJbmtiN2hIMldRVGpMQWRYZE9kCno3YjJtd0tiSW56VmtTM1BUR3ZseGhDVkRRUmpBYzloQ3k1Q0duWnlLM3U2TjQ3RFhURFY0YUtkcXl0UTFUQXZZUHQwWm8KVWh2bEo5YUgxclgzVHUxM2FRWUNQTVdMc2JOV2tLWFJzSk11dTJONkJoRHVmQThhc0FBQUlRRGJXa3p3MjFwTThBQUFBSApjM05vTFhKellRQUFBSUVBeloxNHc1dTVPZWh0eUlCUEpIN05vWGovOGFzR0VHMXB6SW5rYjdoSDJXUVRqTEFkWGRPZHo3CmIybXdLYkluelZrUzNQVEd2bHhoQ1ZEUVJqQWM5aEN5NUNHblp5SzN1Nk40N0RYVERWNGFLZHF5dFExVEF2WVB0MFpvVWgKdmxKOWFIMXJYM1R1MTNhUVlDUE1XTHNiTldrS1hSc0pNdXUyTjZCaER1ZkE4YXNBQUFBREFRQUJBQUFBZ0NjQ28zRHBVSwpFdCtmWTZjY21JelZhL2NEL1hwTlRsRFZlaktkWVFib0ZPUFc5SjBxaUVoOEpyQWlxeXVlQTNNd1hTWFN3d3BHMkpvOTNPCllVSnNxQXB4NlBxbFF6K3hKNjZEdzl5RWF1RTA5OXpodEtpK0pvMkttVzJzVENkbm92Y3BiK3Q3S2lPcHlwYndFZ0dJWVkKZW9VT2hENVJyY2s5Q3J2TlFBem9BeEFBQUFRUUNGKzBtTXJraklXL09lc3lJRC9JQzJNRGNuNTI0S2NORUZ0NUk5b0ZJMApDcmdYNmNoSlNiVWJsVXFqVEx4NmIyblNmSlVWS3pUMXRCVk1tWEZ4Vit0K0FBQUFRUURzbGZwMnJzVTdtaVMyQnhXWjBNCjY2OEhxblp1SWc3WjVLUnFrK1hqWkdqbHVJMkxjalRKZEd4Z0VBanhuZEJqa0F0MExlOFphbUt5blV2aGU3ekkzL0FBQUEKUVFEZWZPSVFNZnQ0R1NtaERreWJtbG1IQXRkMUdYVitOQTRGNXQ0UExZYzZOYWRIc0JTWDJWN0liaFA1cS9yVm5tVHJRZApaUkVJTW84NzRMUkJrY0FqUlZBQUFBRkhCc1lXbHVkR1Y0ZEVCamVXSmxjbk53WVdObEFRSURCQVVHCi0tLS0tRU5EIE9QRU5TU0ggUFJJVkFURSBLRVktLS0tLQo=
```

{% endcode %}

> ⚠️ Make sure you use `-w 0` so there's no line break!

***

### 🪟 Step 3: Decode Base64 in PowerShell 🖥️

Paste your Base64 string into this PowerShell command to **recreate the file**:

```powershell
[IO.File]::WriteAllBytes("C:\Users\Public\id_rsa", [Convert]::FromBase64String("PASTE-YOUR-BASE64-HERE"))
```

💾 This writes the file back in its original form!

***

### 🔐 Step 4: Confirm the File Integrity (again)

Now check the hash on Windows to confirm the file was transferred **correctly**:

```powershell
Get-FileHash C:\Users\Public\id_rsa -Algorithm md5
```

✅ If the hash matches `4E301756A07DED0A2DD6953ABF015278` — mission accomplished! 🎉

***

### ⚠️ Notes & Limitations 🚧

* 🪟 **cmd.exe** has a max string limit of **8191 characters**
* 🕸️ Some **web shells** can error if strings are too long
* 🧩 For large files, consider other tools (like `certutil`, `bitsadmin`, etc.)

***

### This method is **perfect for small files** like:

* SSH keys
* Scripts
* Tiny DLLs

Let me know if you'd like a PowerShell script version or to automate hash checks! 💻✨
