重新拾起c# 写点小东西玩玩,“浏览记录清理&启动项管理”
信息安全实验课题
——上网痕迹清除
1.实验目的及要求:
上网痕迹自动清除、显示系统自启动项并能实现清除。
说明:实现一个软件,类似优化大师的部分功能,首先要列举出上网的过程中都会在系统中留下哪些痕迹,系统都包含哪些自启动项,然后能对指定的上网痕迹和指定的自启动项进行清除。
2. 实验环境:
开发平台:WindowsXP sp2 中文版,framework2.0
开发工具:visual studio 2005.NET
开发语言:c#
3. 实验内容:
1.上网浏览痕迹的类型:
上网历史
C:\Documents and Settings\ Username \Local Settings\History
上网保存在系统缓存中的网页
C:\Documents and Settings\cyher\Local Settings\Temporary Internet Files
Ie自动保存的密码
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
Ie6是HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\spw
Ie自动完成的表单资料
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage1
Windows的临时文件夹
C:\Documents and Settings\Username\Local Settings\Temp
C:\WINDOWS\Temp
开始菜单中的文档记录
C:\Documents and Settings\Username\Recent
上网产生的cookies
C:\Documents and Settings\Username\Cookies
Ie地址栏下拉菜单
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
上 面的内容从原理上分,其中上网历史记录,上网保存在系统缓存中的网页,Windows的临时文件夹,开始菜单中的文档记录,上网产生的cookies这几 项都是缓存在Windows的特别文件夹中的。而Ie自动保存的密码,Ie地址栏下拉菜单,Ie自动完成的表单资料是在注册表中存放。
基本原理就是删除不想要的文件和注册表项就可以了。
所以,用c#编写的时候基本上就是两个类 一个DeleteFolder删除文件夹和文件,一个 DeleteKey删除注册表项。
public void DeleteFolder(string dir)
{
try
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
string a = Path.GetExtension(d).ToString();
//if (d == dir+”\\index.dat“)
if (a == “.dat”)
continue;
else
{
if (File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d);
}//递归删除子文件夹
}
// Directory.Delete(dir); //删除已空文件夹
// Response.Write(dir+” 文件删除成功”);
}
else
MessageBox.Show(dir + ” 该文件夹不存在”); //如果文件夹不存在则提示
}
catch { }
}//删除文件夹类
private void DeleteKey(string keyName ,string keyUrl)//删除注册表值类
{
RegistryKey hklm = Registry.CurrentUser;
RegistryKey runs = hklm.OpenSubKey(keyUrl, true);
try
{
string[] runsName = runs.GetSubKeyNames();
foreach (string strName in runsName)
{
if (strName.ToUpper() == keyName.ToUpper())
runs.DeleteSubKey(strName);
}
}
catch { }
}
这两个类基本能实现要实现的两个功能。
4.算法描述即实现步骤
程序界面分两个部分
1. 上网浏览记录清除。
2. 启动项清除部分
基本由这两个部分构成,算法就是上面表示出来的两个类。其他的都是控件编程。
3. 在编程过程中遇到的困难。
1. 就是在删除浏览记录的时候,有个重要的index.dat文件删不掉,导致程序无法执行,于是就有这样的语句
if (a == “.dat”)
continue;
else
来跳过index.dat文件和其他删不了的.dat文件。等全部处理完以后在用算法处理index.dat文件。
2. 在写清除ie保存的密码的时候,发现了一个软件,能利用我要删除的着两个注册表项把密码还原出来
这两个注册表项分别为:
HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider\S-1-5-21-725345543-1788223648-839522115-1003\Data
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
密码和帐号保存在下面的注册表项中,是加密过的,经过看这个软件的文档,密钥就应该在第一个注册表项中。至于怎么提取并解密,还需进一步研究。(详见http://www.nirsoft.net/)
5.项目小结
经过这次项目,了解了Windows的浏览记录保存机制,发现Windows的这种机制是很不安全的,很容易被黑客利用。做个这个软件能有效的从表面上,遏制一下不安全的操作,不过还是需要我们在使用电脑的时候有一个安全的意识。