欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    网络工具软件开发实训指导书.docx

    • 资源ID:11494413       资源大小:137.89KB        全文页数:29页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络工具软件开发实训指导书.docx

    1、网络工具软件开发实训指导书网络工具软件开发实训指导书课程类别: 专业必修课适用对象:信息安全技术专业(3年制)独立实践学时:27一、实训内容及要求 网络工具软件开发实训目的是培养学生使用Visual C+平台开发网络工具软件的开发能力。(一)实训内容如下:1. 讨论组程序设计与开发2. 远程关机与远程唤醒工具开发3. sniffer、IP工具开发(二)实训要求如下: 按照实训指导书的要求完成程序源代码的编写,并调试、运行成功。(三)需提交资料实训结束时,学生需要提供以下资料:1. 实训报告2. 程序源代码二、实训过程(含步骤)1. 查看实训指导书的要求,分析实现方法2. 编写程序源代码3. 调

    2、试程序4. 完成实训报告三、实训报告的编写指导要规定详细的报告格式,要求明确,可操作性强,审批报告的评分标准等四、实训学时分配学时分配: 实训教学总学时数为27学时,其中讲授学时5,实操22学时分配表序号实 训 内 容学时其 中讲授实操其他1讨论组程序设计与开发122102远程关机与远程唤醒工具开发6153sniffer、IP工具开发6154总结、实训报告312学 时 总 计27522五、参考资料:讨论组程序开发指导书一. 任务描述界面如图所示: 通过点击单选按钮,选择要进入的聊天室,然后单击“进入”按钮,弹出聊天信息对话框,如下图:具体的聊天功能参考教材第5章的实例。二. 要点提示如何弹出新

    3、的对话框?首先,在左侧的资源列表里,插入一个新的对话框。然后,用鼠标双击对话框,选择为其创建一个新的类,类名叫CChat。最后在需要弹出该对话框的地方写出如下代码:测试,是否能够弹出对话框?三. 实现步骤1. 创建工程,在工程中添加一个新的对话框,并给它建立类。(具体步骤见上面)2. 在主界面上给每个单选按钮添加消息响应函数(即鼠标双击每个单选按钮,自动生成函数),在每个函数中给聊天室的IP地址赋值。如图:一共有6个单选按钮,仿照上面,要给6个聊天室的IP地址都赋值。变量roomIP是自己定义的类的成员变量,CString类型,用来保存每个聊天室的多播地址。3. 给聊天对话框界面上添加相应的功

    4、能。1. 在对话框类的构造函数里添加代码,创建新线程。2. 在线程里实现循环接收所有发到指定聊天室的聊天信息,并显示在界面上的ListBox控件里。3. 给“发送”按钮添加消息响应函数,实现发送聊天信息的功能。4. 给“退出聊天室”按钮添加消息响应函数,实现退出和关闭的功能。此部分的代码参考教材第五章的实例完成四. 任务扩展要求:在聊天室界面上添加两个新的按钮,分别是“保存”和“浏览”。单击“保存”按钮,程序将聊天信息保存到本地文件bc.txt。单击“浏览”按钮,程序将本地文件bc.txt的内容显示到界面上的列表中。提示:文件新建、写、读关闭等操作参考教材第3章。CFile 类应用:CFile

    5、类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能。CFile类的声明保存在afx.h头文件中。CFile类的成员变量:m_hFile:表示一个打开文件的操作系统文件句柄。 创建文件创建一个CFile对象时,可以采用3种方法实现:(1)CFile myFile; myFile.Open(LPCTSTR lpFileName,UINT nOpenFlags,CFileException * pError = NULL); (2)CFile myFile(int hFile); 采用句柄方

    6、式创建。使用该创建方法,在之前需要调用 CreateFile()函数,该函数的声明如下:HANDLE CreateFile(LPCTSTR lpFileName, /文件名称DWORD dwDesiredAccess, /文件访问的模式DWORD dwShareMode, /文件的共享模式LPSECURITY_ATTTRIBUTE lpSecurityAttribute, DWORD dwCreationDisposition, /访问方式DWORD dwFlagsAndAttribute, /文件属性HANDLE hTemplateFile, /临时文件句柄);(3)CFile(LPCTST

    7、R lpFileName,UINT nOpenFlags); lpFileName是文件名称,可以是相对路径,绝对路径或者网络路径。nOpenFlags是打开文件的方式。打开文件可选用的方式有:CFile:modeCreate:构造新文件,如果文件存在,则长度变为0。CFile:modeNoTruncate:该属性和modeCreate联合使用,可以达到如下效果:如果文件存在,则不会将文件的长度置为0,如果不存在,则会由modeCreate属性来创建一个新文件。CFile:modeRead:以只读方式打开文件CFile:modeWrite:以写方式打开文件CFile:modeReadWrite

    8、:以读、写方式打开文件CFile:modeNoInherit:阻止文件被子进程继承CFile:shareDenyNone:不禁止其它进程读写访问文件,但如果文件已经被其它进程以兼容模式打开,则创建文件失败。CFile:shareDenyRead:打开文件,禁止其它进程读此文件,如果文件已经被其它进程以兼容模式打开,或被其它进程读,则create失败。CFile:shareDenyWrite:打开文件,禁止其它进程写此文件,如果文件已经被其它进程以兼容模式打开,或被其它进程写,则create失败。CFile:shareExclusive:以独占模式打开文件,禁止其它进程对文件的读写,如果文件已经

    9、被其它模式打开读写(即使是当前进程),则构造失败。CFile:typeText:对回车、换行设置特殊进程(仅用于派生类)CFile:typeBinary:设置二进制模式(仅用于派生类)(4)virtual void Close();关闭文件和对应的CFile对象。如果在删除了对象之前没有关闭文件,那么析构函数会关闭文件。如果是用new方式创建的CFile对象,那么你必须在删除了CFile对象后关闭文件。Close函数将设置m_hFile为CFile:hFileNull。该函数和创建CFile对象函数成对使用。 (5)virtual BOOL Open(LPCTSTR lpFileName,UI

    10、NT nOpenFlags,CFileException* pError = NULL); 参数前面已有详解,此处不做赘述。 读写文件(1)virtual UINT CFile:Read( void* lpBuf, UINT nCount );该函数的功能是从文件中读取文件内容。返回值是读出的字节数,可能与nCount相等,也可能小于nCount。参数lpBuf:存放读出的文件内容的空间地址。参数nCount:从文件读出的最大字节数。(2)virtual void Write( const void* lpBuf, UINT nCount );该函数的功能是向文件中写数据。参数lpBuf:存储

    11、要写入文件的数据的空间地址。参数nCount:要写入文件的数据的字节数。远程关机shutdown程序设计与实现InitiateSystemShutdown()有一个参数LPTSTR lpMachineName,可以指定为网络上的计算机名字(或IP地址),也就是说,可以远程关闭网络上的他计算机(如果你的用户在该计算机上有足够的权限的话)。调用InitiateSystemShutdown()函数关闭远程计算机需要先获得SE_SHUTDOWN_NAME权限,可以通过AdjustTokenPrivileges()函数来修改进程的权限。远程关机应用程序运行界面如图8-2所示:图8-2 远程关机程序运行界

    12、面创建一个基于对话框的应用程序,界面上有一个文本输入框,用来输入要被关闭的计算机名(或IP地址),界面下方有三个按钮,第一个按钮实现远程重启计算机的功能,第二个按钮实现远程关闭计算机的功能,第三个按钮关闭对话框。给文本编辑框添加一个关联的成员变量m_host,类型是CString。给“重启”和“关机”按钮添加消息处理函数。“重启”按钮的消息处理函数实现源代码如下:void CShutDownDlg:OnRestart() UpdateData(TRUE); char *host; host=m_host.GetBuffer(m_host.GetLength(); shutdownHost(ho

    13、st,TRUE);/调用shutdownHost函数实现远程重启计算机功能 “关机”按钮的消息处理函数实现源代码如下:void CShutDownDlg:OnShutdown() UpdateData(TRUE); char *host; host=m_host.GetBuffer(m_host.GetLength(); shutdownHost(host,FALSE);/调用shutdownHost函数实现远程关闭计算机功能/*-线程函数名:shutdownHost属性:CShutDownDlg类的成员函数(需自定义)功能:远程关闭或重启计算机参数hostName-将被关闭的计算机名或IP地

    14、址参数flag-值为TRUE表示要重启,值为FALSE表示要关机-*/BOOL CShutDownDlg:shutdownHost(char * hostName,bool flag) HANDLE hToken; TOKEN_PRIVILEGES tkp; BOOL fResult; /得到进程的令牌句柄 if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) MessageBox(获取进程的令牌句柄出错,Error, MB_OK); return false; /获

    15、得一个权限对应的LUID值 LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges0.Luid); tkp.PrivilegeCount = 1; /数组元素的个数 tkp.Privileges0.Attributes = SE_PRIVILEGE_ENABLED;/ 使能一个权限 /对访问令牌进行修改 AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); if (GetLastError() != ERROR_SUCCESS) M

    16、essageBox(修改访问令牌出错,Error, MB_OK); return false; fResult = InitiateSystemShutdown(hostName, /要关闭的计算机名或IP地址 程序将要关闭, /被关闭计算机上显示的信息 10, / 关机前的延迟时间 FALSE, / 对未保存的应用程序是否强制关闭 flag); / TRUE表示要重启,值为FALSE表示要关机 if (!fResult) MessageBox(远程关机调用出错, Error, MB_OK); return false; tkp.Privileges0.Attributes = 0; Adju

    17、stTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); if (GetLastError() != ERROR_SUCCESS) MessageBox(AdjustTokenPrivileges disable failed.,Error, MB_OK); return false; return true;远程关机木马程序设计与实现程序分成两个部分,一个是控制端程序,一个是木马。控制端程序功能是由用户输入要控制的计算机,并选择“注销”、“关闭”或者“重启”操作,控制端程序将用户的要求发送给目标计算机上木马

    18、程序,由木马程序针对目标计算机进行相应操作。运行界面如图8-3所示:图8-3 控制端程序运行界面界面上部有一个文本编辑框,让用户输入要操作的计算机,给该文本编辑框添加一个关联的成员变量m_ip,类型是CString。界面中间部分是上个单选按钮控件,让用户选择要进行的操作。鼠标双击每个单选按钮,会自动给每个单选按钮添加消息处理函数,一旦用户选中该按钮,就会执行该按钮的消息处理函数。三个单选按钮的消息处理函数代码如下:void CControlerDlg:OnRadio0() m_nType=0;/注销void CControlerDlg:OnRadio1() m_nType=1;/重启void

    19、CControlerDlg:OnRadio2() m_nType=2;/关机其中的变量m_nType是用户自定义的CControlerDlg类的成员变量,类型是int。(在CControlerDlg类的定义中写入代码:int m_nType;)界面下部是两个按钮,“远程控制”实现发送远程控制信息给木马程序的功能。“关闭”按钮功能是关闭对话框。“远程控制”按钮的消息处理函数实现代码如下:void CControlerDlg:OnShut() UpdateData(true); /发送数据对象的定义 UpdateData(true); CSocket m_SendSocket;/构造一个套接字对象

    20、 int port=8888; /数据发送 m_SendSocket.Create(6666,SOCK_DGRAM);/创建一个套接字句柄(UDP) m_SendSocket.SendTo( &m_nType,sizeof(int),port,m_ip);/发送数据给本地计算机 m_SendSocket.Close(); 木马程序的功能是接收控制端程序发送来的操作要求,针对本地计算机进行“注销”、“关闭”或者“重启”操作。程序运行界面如图8-4所示:图8-4 关闭计算机的木马程序界面 “启动”按钮实现接收控制端发送来的要求,并按照要求对本地计算机进行“注销”、“关闭”或者“重启”操作。实现代码

    21、如下:void CShutDownDlg:OnShutdown() CSocket m_ReceiveSocket;/构造一个套接字对象 int nMeg; /接收数据 m_ReceiveSocket.Create(8888,SOCK_DGRAM); m_ReceiveSocket.Receive(&nMeg,sizeof(int); OSVERSIONINFO OsInfo;/获取操作系统版本信息 switch(nMeg) case 0: ExitWindowsEx(EWX_LOGOFF,0); /控制端要求注销 break; case 1:/控制端要求重启 /获取操作系统版本信息 OsIn

    22、fo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&OsInfo); /Windows 98重启 if(OsInfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) :ExitWindowsEx(EWX_REBOOT,0); /Windows 2000以上版本重启 if(OsInfo.dwPlatformId=VER_PLATFORM_WIN32_NT) HANDLE hToken; TOKEN_PRIVILEGES tkp; if(!OpenProcessToken(GetCurrentPr

    23、ocess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken) MessageBox(无法打开存取令牌); return; LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges0.Luid); tkp.PrivilegeCount=1; tkp.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); if(GetLa

    24、stError()!=ERROR_SUCCESS) MessageBox(无法重启); return; if(!ExitWindowsEx(EWX_REBOOT,0) MessageBox(无法重启); break; case 2:/控制端要求关机 /获取操作系统版本信息 OsInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&OsInfo); /Windows 98重启 if(OsInfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) :ExitWindowsEx(EWX_SHUTDO

    25、WN,0); /Windows 2000以上版本重启 if(OsInfo.dwPlatformId=VER_PLATFORM_WIN32_NT) HANDLE hToken; TOKEN_PRIVILEGES tkp;if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken) MessageBox(无法打开存取令牌); return; LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges0.Luid); tkp.Pr

    26、ivilegeCount=1; tkp.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); if(GetLastError()!=ERROR_SUCCESS) MessageBox(无法重启); return; if(!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE,0) MessageBox(无法重启); break; default: break; m_ReceiveSocket.Clo

    27、se(); 远程唤醒程序设计与实现要想使用远程唤醒功能,首先必须知道要唤醒机器的MAC (Medium Access Control)地址,MAC地址由用户输入。程序运行后界面如图8-5所示:图8-5 远程唤醒程序运行界面界面上有6个文本编辑框,用来输入网卡的MAC地址,这六个文本编辑框的关联成员变量是m_mac1、m_mac2、m_mac3、m_mac4、m_mac5、m_mac6。“唤醒”按钮的功能是生成魔术包,并将魔术包以广播的发式发送出去,实现唤醒远程计算机的功能。实现原代码如下:void CPowerOnDlg:OnPoweron() UpdateData(true); CStrin

    28、g macAddr =m_mac1+m_mac2+m_mac3+m_mac4+m_mac5+m_mac6; /生成魔术包 BYTE magicP108;/存放魔术包数据 for (int i=0;i6;i+) magicPi = 0xff; for (i=0;i6;i+) magicPi+6 = HexStrToInt(macAddr.Mid(i*2,2); for (i=0;i15;i+) memcpy(&magicP(i+2)*6,&magicP6,6); /启动WinSock WSADATA WSAData; if (WSAStartup( MAKEWORD(2, 0), &WSAData)!=0) MessageBox(WSAStartup failed!); return; /创建socket SOCKET sock=socket(AF_INET, SOCK_DGRAM, 0); if (sock=INVALID_SOCKET) MessageBox(Socket create error!); return; /设置为广播发送 BOOL bOptVal=TRUE; if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&bOptVal, sizeof(BOOL)=SOCKET_ERROR)


    注意事项

    本文(网络工具软件开发实训指导书.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开