Estoy intentando, con WSH JavaScript, decodificar una cadena base64 que contiene un archivo ejecutable y escribir el EXE en un archivo. Esta es la función que tengo para decodificar:
decodeBase64 = function(s) { var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length; var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for(i=0;i<64;i++){e[A.charAt(i)]=i;} for(x=0;x<L;x++){ c=e[s.charAt(x)];b=(b<<6)+c;l+=6; while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));} } return r; };Funciona para la decodificación, pero cuando intento escribir la cadena decodificada en un archivo, aparece un error que dice "Argumento o llamada de procedimiento no válido". Sospecho que se debe a que la codificación es incorrecta. Aquí está ese código:
var FSO = new ActiveXObject("Scripting.FileSystemObject"); var f = FSO.CreateTextFile(Path, true, false); f.Write(decodeBase64(data)); f.Close();Ahora, sé que puede hacer un ADODB.Stream con codificación ISO-8859-1 y leerlo como codificación Windows-1252, pero no tengo eso en el entorno en el que estoy. ¿Es posible que haya otro? forma de decodificar una cadena Base64, que contiene un EXE en JavaScript, en la codificación ANSI de Windows y luego guardarla en un archivo? ¿Posiblemente una forma de convertir la codificación del resultado de la función decodeBase64 en una codificación que podría escribir como un EXE válido?