计算机安全检查工具详细说明书.docx
- 文档编号:26901726
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:12
- 大小:44.76KB
计算机安全检查工具详细说明书.docx
《计算机安全检查工具详细说明书.docx》由会员分享,可在线阅读,更多相关《计算机安全检查工具详细说明书.docx(12页珍藏版)》请在冰豆网上搜索。
计算机安全检查工具详细说明书
计算机安全检查工具
详细设计说明书
项目组成员
任务分配
段凯旋
工具整体框架设计、USB记录功能模块实现以及功能整合
王铮
上网记录功能模块实现、异常处理以及功能整合
段晓冉
最近打开文件功能模块实现期测试以及功能整合
谭静
系统基本信息功能模块实现、MFC界面设计以及功能整合
祝星星
系统基本信息功能模块实现、MFC界面设计以及功能整合
目录
1.引言3
1.1编写目的3
1.2参考资料3
2.运行环境3
3.全局数据结构说明3
3.1常量3
3.2变量3
3.3数据结构3
4.模块设计4
4.1业务流程图4
4.2功能结构图5
4.3功能结构描述5
4.4可行性分析6
4.4.1基本信息查询6
4.4.2USB记录查询6
4.4.3上网记录查询7
4.4.4文件操作记录查询7
5.接口设计7
5.1内部接口7
5.2用户接口7
6.界面设计(demo)7
6.1登陆界面7
6.2主界面8
7.安全保密设计8
7.1说明8
7.2设计8
7.2.1身份验证部分8
8.系统出错处理9
1.
引言
1.1编写目的
该工具主要作为进行计算机安全性检查工具,具体功能包括对系统基本信息、USB设备信息、上网记录以及系统操作记录的查询显示。
能够基本满足对威胁计算机安全的常见恶意行为的发现。
本说明书的预期读者为:
系统设计人员、开发人员以及安全检查人员。
1.2参考资料
[1]LippmanSB,LajoieJ,MooBE.C++Primer[M].Addison-Wesley,2005.
[2]ProsiseJ,普罗西斯.MFCWindows程序设计[M].清华大学出版社,2007.
2.运行环境
Windows7/XP
3.模块设计
3.1浏览器历史记录查询功能实现
该部分的功能实现主要针对FireFox和Chrome浏览器的历史记录查询。
这两款浏览器将历史记录以sqlite数据库文件格式存放与对应程序存放目录下。
FireFOX的存放目录为:
C:
\Users\用户\AppData\Roaming\Mozilla\Firefox\Profiles下的随机命名的文件夹下的places.sqlite。
Chrome的存放目录为:
C:
\Users\用户\AppData\Local\Google\Chrome\UserData\Default\History。
对于sqlite文件,可以使用sqlite3类库进行数据的增删改查。
Sqlite文件操作过程:
//引入所需的头文件
#include"sqlite3.h"
初始化指针
sqlite3*pdb=NULL;
//打开数据库文件
res=sqlite3_open(FireFoxpath2,&pdb);
//执行修改操作或删除操作的执行函数,无返回值
sqlite3_exec(pdb,update,0,0,0);
//执行查询的函数,执行过程中会将查询结果通过回调函数print_result_cb1传出来
res=sqlite3_exec(pdb,sql,print_result_cb1,0,&errMsg);
在print_result_cb1函数中将结果依次放到定义好的vector容器中即可在需要时输出。
由于firefox和Chrome的路径存在当前用户名,且Firefox还存在随机文件夹名路径因此需要在构造文件路径时进行一个CString类型的字符串构造。
Firefox构造路径过程:
//初始化用户名参数以及一个CFileFind类对象用于查找名字随机生成的文件夹
CStringuserstr;
CFileFindfinder;
CStringrandomName;
LPWSTRpstr=(LPWSTR)(LPCWSTR)userstr;
GetUserName(pstr,&d);//获取当前用户的用户名
CStringFireFoxpath;//
FireFoxpath=L"C:
\\Users\\";
FireFoxpath=FireFoxpath+pstr;
FireFoxpath=FireFoxpath+L"\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles";
//接下来获取随机名字的文件夹,用CFileFind的findfile函数查找当前路径下的所有文件和文件夹,且该函数得到的结果包含两个文件夹名“.”和“..”需进行处理
BOOLworking=finder.FindFile(FireFoxpath+_T("\\*.*"));
while(working)
{
working=finder.FindNextFile();
if(finder.IsDots())//处理掉“.”和“..”
continue;
if(finder.IsDirectory())
{
randomName=finder.GetFileName();
}
}
FireFoxpath+=+_T("\\")+randomName+_T("\\places.sqlite");
对于该sqlite文件的删除功能的实现,只需构造一个合适的delete语句即可进行删除,删除之后清空vector中的内容并重新查询更新即可。
3.2文件记录查询功能实现
文件操作记录查询分为两个子模块。
第一个模块为记录查询模块,主要分为五个步骤。
首先,需要获取你所登陆系统所使用的用户名。
在导入系统头文件后(#include
其次,构建遍历文件的路径。
最近使用的文件记录存在个人文件夹中,但不同的系统存储的位置有所不同。
我们考虑了WindowsXP(C:
\DocumentsandSettings\用户\Recent\)和Windows7(C:
\Users\用户\AppData\Roaming\Microsoft\Windows\Recent\)两种情况,通过判断在计算机基本信息模块中获取的操作系统版本,来构造遍历文件操作记录的路径。
以Windows7系统为例:
recentpath=L"C:
\\Users\\";
recentpath=recentpath+pstr;
recentpath=recentpath+L"\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\"
然后,遍历文件操作记录。
在文件遍历过程中,当文件不是某几种不是需要的文件(如AutumaticDestination、desktop.ini、AutomaticDestinations、CustomDestinations等)后,我们也利用API函数获取文件名(GetFileName())、最后访问时间(GetLastAccessTime())等文件属性。
再次,根据快捷方式获得绝对路径。
由于文件操作记录是以快捷方式形式存储的,我们使用使用com库来通过快捷方式来获取它所指向的文件的绝对路径(pShell->GetPath(szPath,MAX_PATH,NULL,SLGP_UNCPRIORITY);)。
最后,在输出时,重复按“开始”时会重复刷新文件操作记录,为解决这个bug,需要在输出前将之前CtrlList所有的记录删除,重新遍历文件并输出。
while(file_recent_record>0)
{
m_fileDlg.CRecentFile_info.DeleteItem(0);
file_recent_record--;
}
第二个模块为记录删除模块,主要分为两大步骤。
首先,删除文件操作记录。
在记录输出时,在每条记录前添加勾选框以便于删除记录。
删除时,倒序遍历记录,如果被勾选(GetCheck(i)),根据获取的行号来获取快捷方式的路径,然后再删除之(DeleteFile(recentpath_del);)。
然后,删除文件记录。
根据获取的行号,可直接使用CtrlList的函数删除表中的记录(DeleteItem(i))。
状态栏及系统时间
我们在初始化函数中创建状态栏(Create(this))并将之分栏(SetIndicators(indicators,2);)。
首栏显示程序运行状态(m_bar.SetPaneInfo(0,IDS_INDICATOR_MESSAGE,SBPS_NORMAL,rect.Width()-100);),次栏显示系统时间(m_bar.SetPaneInfo(1,IDS_INDICATOR_TIME,SBPS_STRETCH,0);)。
系统时间分为两部分,首先需要获取系统时间(t1=CTime:
:
GetCurrentTime();),其次则需要实时更新(CDialogEx:
:
OnTimer(nIDEvent);)。
3.3功能结构图
3.4功能结构描述
名称
功能
基本信息查询
查询操作系统、硬盘以及网络等的相关信息
USB记录查询
查询USB名称、序列号、PID/VID和插拔时间
上网记录查询
查询浏览器名、URL信息、上网时间等
文件操作记录查询
查询最近打开的文件名、路径以及对应时间
用户管理
修改授权口令
3.5可行性分析
3.5.1基本信息查询
操作系统名称获取,可使用GetComputerName(pBuffer,lpnSize),pBuffer随同计算机名载入的字串缓冲区,nSize缓冲区的长度,这个变量随同返回计算机名的实际长度载入。
操作系统版本信息获取,通过匹配系统版本的majorversion和minorversion来进行系统版本的判断,通过结构OSVERSIONINFOEX的方法dwMajorVersion和dwMinorVersion来获取系统的majorversion和minorversion。
例如windows7的majorversion的值为6,minorversion的值为1.windows8的majorversion为6,minorversion的值为2.通过此方法,可以获得到操作系统的版本信息。
操作系统安装路径为系统目录位置,可以通过系统apiGetWindowsDirectory和GetSystemDirectory分别获得windows目录和系统目录。
获取系统初始安装时间,系统初始安装时间存放在注册表中,需要时就可以读取即,使用RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows7\CurrentVersion","InstallDate")。
硬盘信息的获取,使用GetLogicalDriver()获取系统逻辑驱动器的数量,函数返回值为32位的无符号整形数据,每一位对应了一个相应的逻辑驱动器是否存在,通过逻辑与操作,最后可以获得到系统逻辑驱动器的数量。
使用GetDriverType(nDriveString)来获取相应的驱动器的类型,参数为驱动器根目录路径。
通过返回值来做出相应的判断。
返回值DRIVE_FIXED为硬盘,DRIVE_CDROM为光驱,DRIVE_REMOVABLE为可移动式磁盘,DRIVE_REMOTE为网络磁盘,DRIVE_RAMDISK为虚拟RAM磁盘。
GetVolumeInformation()函数可以获取磁盘卷的有关信息,其中参数lpVolumeSerialNumber可以获取硬盘序列号,参数lpFileSystemFlags获取分区类型如NTFS等。
Api函数GetDiskFreeSpaceExcellent()获取磁盘的容量和剩余容量。
函数有四个参数分别是不包括卷名的磁盘根路径名,用于容纳调用者可用的字节数量,用于容纳磁盘上的总字节数和用于容纳磁盘上可用的字节数。
获取本机的Ip,IP地址等网络配置信息以PHOSTENT这一结构体的方式存放,我们使用使用了gethostname()和gethostbyname()分别获取主机名称然后在主机库中得到对应的主机
IP=inet_ntoa(*(structin_addr*)*hostinfo->h_addr_list);
3.5.2USB记录查询
USB名称和序列号的获取,类似于上面提到的关于关于硬盘信息的获取,getlogicaldriverstrings()先枚举所有的盘符,获取到所有的盘符信息,使用GetDriverType()判断出所需要寻找的U盘,然后就可以获取到USB名称和序列号。
USB的使用信息可以在注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB和HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR处获取,我们可以对注册表进行操作,从而获取所需要的内容。
PID|VID信息的获取,结合设备安装类GUID和设备接口类GUID来获取设备PID|VID的信息。
3.5.3上网记录查询
对于该功能,由于在大多数浏览器浏览页面后会在本地存放一个数据库文件用来存放历史记录。
以Firefox为例,在路径:
user\AppData\Roaming\Mozilla\Firefox\Profiles\idrzrwmn.default下存放一个places.sqlite数据库文件。
由此可通过SQLite提供的C++接口获取所需要的URL和访问时间、访问次数,之后可根据不同浏览器进行分类汇总。
3.5.4文件操作记录查询
对于该模块的实现,可通过调用API接口(GetUserName)获取本机正在使用的用户并构造最近打开的文件的路径(C:
\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent)。
在这一例中,需要将获取的用户名替换“Administrator”即是存放最近打开文件的快捷方式的绝对路径。
通过获取的绝对路径打开文件,使用句柄handle(fileName,fileInfo)遍历该文件中的快捷方式,即是最近访问的文件记录。
得到文件后,可用GetPath()的方式获取其指向的绝对路径即可。
4.接口设计
4.1内部接口
系统API:
对于功能模块所需的系统信息,通过调用API获取系统相关软硬件信息并输出。
具体包括:
基本信息功能模块、文件操作记录功能模块。
模块间接口:
通过配置模块与功能模块间的接口进行信息查询控制。
具体包括设置中对各模块的参数配置控制输出结果的显示。
4.2用户接口
UI设计:
通过合理的UI设计实现程序与用户间的信息交互,主要为设置项的交互以及输出信息的交互过程。
5.界面设计(demo)
5.1登陆界面
由于工具涉及计算机隐私信息,因此增加权限控制,通过对使用者的授权才可使用。
5.2主界面
文件设置帮助
程序主界面包括菜单栏,功能区以及状态栏(未实现)等。
菜单栏中文件包括对查询记录的保存,设置中包括对查询显示项的设置等,可通过选项自定义显示的内容。
帮助中包括版本信息等。
功能区由4个功能按钮构成,可查询四类信息,查询结果将呈现于右侧的文本框中。
状态栏将包括程序运行状态以及对查询结果的统计,由于未完成,由按钮代替。
6.安全保密设计
6.1说明
由于该工具设计计算机用户的隐私,使用不当可造成隐私、系统信息泄漏等问题。
因此工具增加了授权检查来保证安全性、保密性。
程序运行前要求进行身份验证确认用户身份的合法性。
6.2设计
采用复杂的加密算法将密文存放于本地目录中,当登陆验证时,采用相同加密方式进行加密后的密文比对密码输入是否正确。
6.2.1身份验证部分
给予授权用户身份验证口令,当用户口令验证通过后即可进行相关功能的使用。
用户可根据需要进行口令修改。
7.系统出错处理
暂无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 安全检查 工具 详细 说明书