Pasa de Base64 a ASCII. Uso libre.
encoder https://foro.elhacker.net/desarrollo_web/ascii_a_base64_encoder_javascript-t498409.0.html
Etiquetas javascript omitidas debido a filtro cloudflare.
<html>
<head><title>Decoder Base64</title>
</head>
<body>
//EtiquetaJavascript
var CadenaEnTextoq = "";
var CadenaEnTextoTamanhoq;
var CadenaEnASCIIq = "";
var contadorIguales = 0;
var CadenaEnASCIIq2 = "";
var CadenaEnASCIIqTamanho = 0;
var BitsDe8en8 = "";
var CadenaDecoded = "";
var CadenaEnASCIIq2Tamanho = 0;
var contador_x = 0;
var contador_z = 0;
var mantenerseEnBucleq = true;
CadenaEnTextoq = prompt("Pon el texto");
CadenaEnTextoTamanhoq = CadenaEnTextoq.length;
for (var i = 0; i < CadenaEnTextoTamanhoq; ++i)
{
if (CadenaEnTextoq[i] == 'A')
{
CadenaEnASCIIq += "000000";
}
if (CadenaEnTextoq[i] == 'B')
{
CadenaEnASCIIq += "000001";
}
if (CadenaEnTextoq[i] == 'C')
{
CadenaEnASCIIq += "000010";
}
if (CadenaEnTextoq[i] == 'D')
{
CadenaEnASCIIq += "000011";
}
if (CadenaEnTextoq[i] == 'E')
{
CadenaEnASCIIq += "000100";
}
if (CadenaEnTextoq[i] == 'F')
{
CadenaEnASCIIq += "000101";
}
if (CadenaEnTextoq[i] == 'G')
{
CadenaEnASCIIq += "000110";
}
if (CadenaEnTextoq[i] == 'H')
{
CadenaEnASCIIq += "000111";
}
if (CadenaEnTextoq[i] == 'I')
{
CadenaEnASCIIq += "001000";
}
if (CadenaEnTextoq[i] == 'J')
{
CadenaEnASCIIq += "001001";
}
if (CadenaEnTextoq[i] == 'K')
{
CadenaEnASCIIq += "001010";
}
if (CadenaEnTextoq[i] == 'L')
{
CadenaEnASCIIq += "001011";
}
if (CadenaEnTextoq[i] == 'M')
{
CadenaEnASCIIq += "001100";
}
if (CadenaEnTextoq[i] == 'N')
{
CadenaEnASCIIq += "001101";
}
if (CadenaEnTextoq[i] == 'O')
{
CadenaEnASCIIq += "001110";
}
if (CadenaEnTextoq[i] == 'P')
{
CadenaEnASCIIq += "001111";
}
if (CadenaEnTextoq[i] == 'Q')
{
CadenaEnASCIIq += "010000";
}
if (CadenaEnTextoq[i] == 'R')
{
CadenaEnASCIIq += "010001";
}
if (CadenaEnTextoq[i] == 'S')
{
CadenaEnASCIIq += "010010";
}
if (CadenaEnTextoq[i] == 'T')
{
CadenaEnASCIIq += "010011";
}
if (CadenaEnTextoq[i] == 'U')
{
CadenaEnASCIIq += "010100";
}
if (CadenaEnTextoq[i] == 'V')
{
CadenaEnASCIIq += "010101";
}
if (CadenaEnTextoq[i] == 'W')
{
CadenaEnASCIIq += "010110";
}
if (CadenaEnTextoq[i] == 'X')
{
CadenaEnASCIIq += "010111";
}
if (CadenaEnTextoq[i] == 'Y')
{
CadenaEnASCIIq += "011000";
}
if (CadenaEnTextoq[i] == 'Z')
{
CadenaEnASCIIq += "011001";
}
if (CadenaEnTextoq[i] == 'a')
{
CadenaEnASCIIq += "011010" ;
}
if (CadenaEnTextoq[i] == 'b')
{
CadenaEnASCIIq += "011011";
}
if (CadenaEnTextoq[i] == 'c')
{
CadenaEnASCIIq += "011100";
}
if (CadenaEnTextoq[i] == 'd')
{
CadenaEnASCIIq += "011101";
}
if (CadenaEnTextoq[i] == 'e')
{
CadenaEnASCIIq += "011110";
}
if (CadenaEnTextoq[i] == 'f')
{
CadenaEnASCIIq += "011111";
}
if (CadenaEnTextoq[i] == 'g')
{
CadenaEnASCIIq += "100000";
}
if (CadenaEnTextoq[i] == 'h')
{
CadenaEnASCIIq += "100001";
}
if (CadenaEnTextoq[i] == 'i')
{
CadenaEnASCIIq += "100010";
}
if (CadenaEnTextoq[i] == 'j')
{
CadenaEnASCIIq += "100011";
}
if (CadenaEnTextoq[i] == 'k')
{
CadenaEnASCIIq += "100100";
}
if (CadenaEnTextoq[i] == 'l')
{
CadenaEnASCIIq += "100101";
}
if (CadenaEnTextoq[i] == 'm')
{
CadenaEnASCIIq += "100110";
}
if (CadenaEnTextoq[i] == 'n')
{
CadenaEnASCIIq += "100111";
}
if (CadenaEnTextoq[i] == 'o')
{
CadenaEnASCIIq += "101000";
}
if (CadenaEnTextoq[i] == 'p')
{
CadenaEnASCIIq += "101001";
}
if (CadenaEnTextoq[i] == 'q')
{
CadenaEnASCIIq += "101010";
}
if (CadenaEnTextoq[i] == 'r')
{
CadenaEnASCIIq += "101011";
}
if (CadenaEnTextoq[i] == 's')
{
CadenaEnASCIIq += "101100";
}
if (CadenaEnTextoq[i] == 't')
{
CadenaEnASCIIq += "101101";
}
if (CadenaEnTextoq[i] == 'u')
{
CadenaEnASCIIq += "101110";
}
if (CadenaEnTextoq[i] == 'v')
{
CadenaEnASCIIq += "101111";
}
if (CadenaEnTextoq[i] == 'w')
{
CadenaEnASCIIq += "110000";
}
if (CadenaEnTextoq[i] == 'x')
{
CadenaEnASCIIq += "110001";
}
if (CadenaEnTextoq[i] == 'y')
{
CadenaEnASCIIq += "110010";
}
if (CadenaEnTextoq[i] == 'z')
{
CadenaEnASCIIq += "110011";
}
if (CadenaEnTextoq[i] == '0')
{
CadenaEnASCIIq += "110100";
}
if (CadenaEnTextoq[i] == '1')
{
CadenaEnASCIIq += "110101";
}
if (CadenaEnTextoq[i] == '2')
{
CadenaEnASCIIq += "110110";
}
if (CadenaEnTextoq[i] == '3')
{
CadenaEnASCIIq += "110111";
}
if (CadenaEnTextoq[i] == '4')
{
CadenaEnASCIIq += "111000";
}
if (CadenaEnTextoq[i] == '5')
{
CadenaEnASCIIq += "111001";
}
if (CadenaEnTextoq[i] == '6')
{
CadenaEnASCIIq += "111010";
}
if (CadenaEnTextoq[i] == '7')
{
CadenaEnASCIIq += "111011";
}
if (CadenaEnTextoq[i] == '8')
{
CadenaEnASCIIq += "111100";
}
if (CadenaEnTextoq[i] == '9')
{
CadenaEnASCIIq += "111101";
}
if (CadenaEnTextoq[i] == '+')
{
CadenaEnASCIIq += "111110";
}
if (CadenaEnTextoq[i] == '/')
{
CadenaEnASCIIq += "111111";
}
if (CadenaEnTextoq[i] == '=')
{
contadorIguales++;
}
}
CadenaEnASCIIqTamanho = CadenaEnASCIIq.length;
if (contadorIguales == 1)
{
for (var i = 0; i < (CadenaEnASCIIqTamanho -2) ; ++i)
{
CadenaEnASCIIq2 += CadenaEnASCIIq[i];
}
}
if (contadorIguales == 2)
{
for (var i = 0; i < (CadenaEnASCIIqTamanho -4) ; ++i)
{
CadenaEnASCIIq2 += CadenaEnASCIIq[i];
}
}
CadenaEnASCIIq2Tamanho = CadenaEnASCIIq2.length;
do
{
BitsDe8en8 += CadenaEnASCIIq2[contador_z];
++contador_x;
++contador_z;
if (contador_x == 8)
{
if ( BitsDe8en8 == "01000001")
{
CadenaDecoded += "A";
}
if ( BitsDe8en8 == "01000010")
{
CadenaDecoded += "B";
}
if ( BitsDe8en8 == "01000011")
{
CadenaDecoded += "C";
}
if ( BitsDe8en8 == "01000100")
{
CadenaDecoded += "D";
}
if ( BitsDe8en8 == "01000101")
{
CadenaDecoded += "E";
}
if ( BitsDe8en8 == "01000110")
{
CadenaDecoded += "F";
}
if ( BitsDe8en8 == "01000111")
{
CadenaDecoded += "G";
}
if ( BitsDe8en8 == "01001000")
{
CadenaDecoded += "H";
}
if ( BitsDe8en8 == "01001001")
{
CadenaDecoded += "I";
}
if ( BitsDe8en8 == "01001010")
{
CadenaDecoded += "J";
}
if ( BitsDe8en8 == "01001011")
{
CadenaDecoded += "K";
}
if ( BitsDe8en8 == "01001100")
{
CadenaDecoded += "L";
}
if ( BitsDe8en8 == "01001101")
{
CadenaDecoded += "M";
}
if ( BitsDe8en8 == "01001110")
{
CadenaDecoded += "N";
}
if ( BitsDe8en8 == "01001111")
{
CadenaDecoded += "O";
}
if ( BitsDe8en8 == "01010000")
{
CadenaDecoded += "P";
}
if ( BitsDe8en8 == "01010001")
{
CadenaDecoded += "Q";
}
if ( BitsDe8en8 == "01010010")
{
CadenaDecoded += "R";
}
if ( BitsDe8en8 == "01010011")
{
CadenaDecoded += "S";
}
if ( BitsDe8en8 == "01010100")
{
CadenaDecoded += "T";
}
if ( BitsDe8en8 == "01010101")
{
CadenaDecoded += "U";
}
if ( BitsDe8en8 == "01010110")
{
CadenaDecoded += "V";
}
if ( BitsDe8en8 == "01010111")
{
CadenaDecoded += "W";
}
if ( BitsDe8en8 == "01011000")
{
CadenaDecoded += "X";
}
if ( BitsDe8en8 == "01011001")
{
CadenaDecoded += "Y";
}
if ( BitsDe8en8 == "01011010")
{
CadenaDecoded += "Z";
}
if ( BitsDe8en8 == "01100001")
{
CadenaDecoded += "a";
}
if ( BitsDe8en8 == "01100010")
{
CadenaDecoded += "b";
}
if ( BitsDe8en8 == "01100011")
{
CadenaDecoded += "c";
}
if ( BitsDe8en8 == "01100100")
{
CadenaDecoded += "d";
}
if ( BitsDe8en8 == "01100101")
{
CadenaDecoded += "e";
}
if ( BitsDe8en8 == "01100110")
{
CadenaDecoded += "f";
}
if ( BitsDe8en8 == "01100111")
{
CadenaDecoded += "g";
}
if ( BitsDe8en8 == "01101000")
{
CadenaDecoded += "h";
}
if ( BitsDe8en8 == "01101001")
{
CadenaDecoded += "i";
}
if ( BitsDe8en8 == "01101010")
{
CadenaDecoded += "j";
}
if ( BitsDe8en8 == "01101011")
{
CadenaDecoded += "k";
}
if ( BitsDe8en8 == "01101100")
{
CadenaDecoded += "l";
}
if ( BitsDe8en8 == "01101101")
{
CadenaDecoded += "m";
}
if ( BitsDe8en8 == "01101110")
{
CadenaDecoded += "n";
}
if ( BitsDe8en8 == "01101111")
{
CadenaDecoded += "o";
}
if ( BitsDe8en8 == "01110000")
{
CadenaDecoded += "p";
}
if ( BitsDe8en8 == "01110001")
{
CadenaDecoded += "q";
}
if ( BitsDe8en8 == "01110010")
{
CadenaDecoded += "r";
}
if ( BitsDe8en8 == "01110011")
{
CadenaDecoded += "s";
}
if ( BitsDe8en8 == "01110100")
{
CadenaDecoded += "t";
}
if ( BitsDe8en8 == "01110101")
{
CadenaDecoded += "u";
}
if ( BitsDe8en8 == "01110110")
{
CadenaDecoded += "v";
}
if ( BitsDe8en8 == "01110111")
{
CadenaDecoded += "w";
}
if ( BitsDe8en8 == "01111000")
{
CadenaDecoded += "x";
}
if ( BitsDe8en8 == "01111001")
{
CadenaDecoded += "y";
}
if ( BitsDe8en8 == "01111010")
{
CadenaDecoded += "z";
}
if ( BitsDe8en8 == "00110000")
{
CadenaDecoded += "0";
}
if ( BitsDe8en8 == "00110001")
{
CadenaDecoded += "1";
}
if ( BitsDe8en8 == "00110010")
{
CadenaDecoded += "2";
}
if ( BitsDe8en8 == "00110011")
{
CadenaDecoded += "3";
}
if ( BitsDe8en8 == "00110100")
{
CadenaDecoded += "4";
}
if ( BitsDe8en8 == "00110101")
{
CadenaDecoded += "5";
}
if ( BitsDe8en8 == "00110110")
{
CadenaDecoded += "6";
}
if ( BitsDe8en8 == "00110111")
{
CadenaDecoded += "7";
}
if ( BitsDe8en8 == "00111000")
{
CadenaDecoded += "8";
}
if ( BitsDe8en8 == "00111001")
{
CadenaDecoded += "9";
}
if ( BitsDe8en8 == "00101011")
{
CadenaDecoded += "+";
}
if ( BitsDe8en8 == "00101111")
{
CadenaDecoded += "/";
}
contador_x = 0;
BitsDe8en8 = "";
}
if ( contador_z == CadenaEnASCIIq2Tamanho )
{
mantenerseEnBucleq = false;
}
} while (mantenerseEnBucleq == true)
document.write(CadenaDecoded);
alert (CadenaDecoded);
//Cerrar etiqueta javascript
</body>
</html>
Cita de: Shell Root en 9 Agosto 2019, 23:09 PM
No entiendo nada de eso! :silbar:
Ayer no me dio problemas en los test que hice, hoy me los está dando. Tengo que repararlo. Pondré alerts durante todo el proceso y ya voy viendo donde deja de imprimirse y lo arreglo.
Qué no entiendies? Lo que es base64 y ascii? Para que sirven? Como se pasa de base64 a ascii? Como he decidido hacerlo yo? O entiendes todo lo anterior pero no entiendes el código en sí, las funciones, el uso de cadenas, etc?
El proceso es pasar la cadena en base64 a ascii.
-Paso base64 letras a representación de la tabla en bits. Es decir:
A = 000000
B = 000001
Hasta hacer los 64 carácteres que se pueden representar con 6bits en binario.
-Uno todos los bits para tener una cadena tipo: AB = 000000000001
-Los divido de 8 en 8 para poder representarlos en ASCII. Son 255 posibles caracteres distintos representados con números del 0 al 255.
Eso es exacamente lo que puedes representar con los 8 bits.
-Una vez que tengo los bits de 8 en 8 los traduzco a su correspondiente valor númerico(este paso lo omito) y ese número numérico a su representación en la tabla ASCII.
Por alguna parte del proceso tengo que manejar ceros en el caso de que la cadena tenga en Base64 tenga el símbolo =.
Hay una explicación en el encoder de esa parte del proceso. Creo que en este código está mal implementado y necesito primero comprobar la cadena en búsqueda del símbolo igual y en caso de encontrarlo añadir 2 ceros al final de la cadena por cada igual.
No sé si está ahí el error o antes. Lo encontraré fácil cuando lo mire.