Hola amigos hoy vengo con un cifrador sencillo, les digo sencillo por que solo utiliza un xor nada mas y creo que es revertible en fin....pero ustedes pueden crear un cifrado mas complicado yo solo muestro uno secillo para este tema, ya que no soy experto en powershell.
bueno empesemos este cifrador cifra archivos texto y binarios este es.
si se que hay formas de cifrar archivos en powershell pero quise crear uno por mi cuenta para el blog y que seden una idea de como funcionan los cifradores y como manipular los archivos binarios y si lo hice sencillo en fin.... por otro lado quise verificar tambien que se puede estar utilizando comandos powershell desde javascript y vbscript, ya que para ejecutar archivos .ps1 se necesitan permisos seguimos.
este es el codigo completo en powershell separado linea por linea para que no se confundan
$Ruta = ruta
$Password = pass
# ===== Generar MD5 de la contraseña =====
$md5 = [System.Security.Cryptography.MD5]::Create()
$passBytes = [System.Text.Encoding]::UTF8.GetBytes($Password)
$hashBytes = $md5.ComputeHash($passBytes)
# ===== Leer archivo en binario =====
$fileBytes = [System.IO.File]::ReadAllBytes($Ruta)
# ===== Aplicar XOR =====
for ($i = 0; $i -lt $fileBytes.Length; $i++) {
$fileBytes[$i] = $fileBytes[$i] -bxor $hashBytes[$i % 16]
}
# ===== Guardar archivo =====
[System.IO.File]::WriteAllBytes($Ruta, $fileBytes)
ese es el codigo en powershell pero lo uniremos en una sola cadena string para poderlo ejecutar en javascript, asi que les dejo el codigo en html y javascript
<html>
<head>
<title>Cifrador De Archivos</title>
</head>
<body>
<marquee>Cifrador De Archivos By Flamer</marquee><br><br>
<center>
Direccion Del Archivo:<input type="file" id="archivo" size="100"><br><br>
Password:<input type="text" id="pass" size="50" style="text-align:center;"><br><br>
<input type="button" value="Aceptar" onclick="proceso()">
</center>
<script>
function proceso()
{
var shell=new ActiveXObject("wscript.shell");
var ruta=document.getElementById("archivo").value;
var pass=document.getElementById("pass").value;
if ( /['"&|]/.test(pass) )
{
alert("Contiene caracteres problemáticos");
}
else
{
shell.run("powershell $Ruta = '" + ruta + "';$Password = '" + pass + "'; \
$md5 = [System.Security.Cryptography.MD5]::Create();$passBytes = [System.Text.Encoding]::UTF8.GetBytes($Password); \
$hashBytes = $md5.ComputeHash($passBytes);$fileBytes = [System.IO.File]::ReadAllBytes($Ruta); \
for ($i = 0; $i -lt $fileBytes.Length; $i++){$fileBytes[$i] = $fileBytes[$i] -bxor $hashBytes[$i % 16]}; \
[System.IO.File]::WriteAllBytes($Ruta, $fileBytes)");
alert("Proceso Terminado....");
}
}
</script>
</body>
</html>
como ven creamos el archivo con la extencion .hta y su codigo en html que crea el boton y los campos de texto.
en el codigo creamos el objecto shell para poder ejecutar los comandos powershell con el metodo run para hacerlo unimos todo el codigo de powershell con ; y como todo va en una sola linea y quiero que se vea completo y no una linea larga y estensa le agregue un \ al final con un espacio despues del ;
bueno creo que no hay mas que agregar eso es todo saludos Flamer y ya use el codigo en un ejecutable y si funciona