代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
扫描可疑文件(找到木马)
作者:
Dezai.CN
/ 发布于
2013/5/10
/
535
using System; using System.IO; using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using System.Net; namespace TrojanScanning { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void SetTextCallback(string text); delegate void SetTextCallback2(bool b); delegate void SetTextCallback3(ListViewItem item); private string fname, code; private Thread thr; private string[] sArray; private void button1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { scanpath.Text = folderBrowserDialog1.SelectedPath; } } private void startbtn_Click(object sender, EventArgs e) { list.Items.Clear(); fname = scanpath.Text; thr = new Thread(new ThreadStart(scan)); thr.IsBackground = true; thr.Start(); } private void scan(){ FileSystemInfo s = GetFileSystemInfo(fname); if (s != null) { scanbtn(false); ListFiles(s); scantext("扫描完成"); scanbtn(true); } else { MessageBox.Show("请先选择要扫描的目录"); } } public FileSystemInfo GetFileSystemInfo(string path){ if (File.Exists(path)) return new FileInfo(path); else if (Directory.Exists(path)) return new DirectoryInfo(path); else return null; } private void ListFiles(FileSystemInfo info){ if (info.Exists){ DirectoryInfo dir = info as DirectoryInfo; if (dir == null) return; try{ FileSystemInfo[] files = dir.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++){ FileInfo file = files[i] as FileInfo; if (file != null && (file.Extension.ToLower() == ".asp" || file.Extension.ToLower() == ".php" || file.Extension.ToLower() == ".aspx" || file.Extension.ToLower() == ".master")) { scantext("扫描 " + file.FullName); chkfile(file.FullName,file.Length); }else{ ListFiles(files[i]); } } } catch{} } } private void chkfile(string filepath,long filesize) { try{ if (IsFileInUse(filepath)) { System.Threading.Thread.Sleep(2000); chkfile(filepath,filesize); } StreamReader sr = new StreamReader(filepath); string content = sr.ReadToEnd(); sr.Close(); string chkr=chkcontent(content); if (chkr!=""){ ListViewItem item = new ListViewItem("可疑"); item.SubItems.Add(File.GetLastAccessTime(filepath).ToString()); item.SubItems.Add(chkr); item.SubItems.Add(filepath); item.SubItems.Add((filesize/1024).ToString() + " kb"); addtiem(item); } } catch { } } private string downurl(string url) { WebClient client = new WebClient(); string result = client.DownloadString(url); return result; } private void addtiem(ListViewItem item) { if (this.list.InvokeRequired){ SetTextCallback3 d = new SetTextCallback3(addtiem); this.Invoke(d, new object[] { item }); }else{ this.list.Items.Add(item); } } private void scantext(string text) { if (this.scanstate.InvokeRequired) { SetTextCallback d = new SetTextCallback(scantext); this.Invoke(d, new object[] { text }); }else{ this.scanstate.Text=text; } } private void scanbtn(bool b){ if (this.startbtn.InvokeRequired){ SetTextCallback2 d = new SetTextCallback2(scanbtn); this.Invoke(d, new object[] { b }); }else{ this.startbtn.Enabled = b; this.scanpath.Enabled = b; this.button1.Enabled = b; } } private string chkcontent(string content){ string returnval = ""; content = content.ToLower(); foreach (string i in sArray) { if (content.IndexOf(i)> -1){ returnval+=i+","; } } if (returnval != "") { returnval=returnval.Substring(0, returnval.Length - 1); } return returnval; } bool IsFileInUse(string fileName) { bool inUse = true; if (File.Exists(fileName)) { FileStream fs = null; try { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None); inUse = false; } catch { } finally { if (fs != null)fs.Close(); } return inUse; } else { return false; } } private void Form1_Load(object sender, EventArgs e) { try{ code = downurl("http://www.cqeh.com/txt/trojan.txt"); sArray = code.ToLower().Split('|'); } catch (Exception ex) { MessageBox.Show("错误:" + ex.Message, "无法启动程序!", MessageBoxButtons.OK); Application.Exit(); } } private void list_DoubleClick(object sender, EventArgs e) { System.Diagnostics.Process.Start("NOTEPAD.EXE", list.SelectedItems[0].SubItems[3].Text); } } }
试试其它关键字
扫描可疑文件
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3