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

    第3课-网络安全基础编程-PowerPointPres.pptx

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

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

    第3课-网络安全基础编程-PowerPointPres.pptx

    1、第三章 网络安全编程基础,3,*内容提要,Windows的内部机制C语言的四个发展阶段实现Socket编程、注册表编程、定时器编程驻留程序编程和多线程编程。,3.1 网络安全编程概述,C语言可以在Windows下编程,同样也可以在Linux下编程。编程是一项比较综合的工作,除了熟练使用编程工具以外,还要了解系统本身的内部工作机理和编程语言。,3.1.1 Windows内部机制,Windows是一个“基于事件的,消息驱动的”操作系统。,用户进行了影响窗口的动作,触发,“事件”,系统检测到后发给应用程序,“消息”,处理,*八个基本概念,与Windows系统密切相关的八个基本概念分别是:窗口、程序、

    2、进程、线程消息、事件、句柄、API与SDK。,*窗 口,窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位窗口是显示在屏幕上的一个矩形区域具有标题栏、状态栏、最大化、最小化按钮的标准方框叫窗口,按钮也是特殊窗口是用户与生成该窗口的应用程序间的直观接口窗口是受应用程序控制的一部分矩形屏幕区控制窗口的大小、风格、位置及内容,用户角度,应用程序角度,*程 序,通常说的程序都是指一个能让计算机识别的文件接触得最多的是以exe或者com作为扩展名的文件。程序一组指令的集合例如:QQ程序,主要包括 界面外观控制指令集 socket网络通讯指令集 数据信息存储指令集可以任何语言形式表

    3、现:高级语言、汇编语言、机器语言,*进 程,进程就是应用程序的执行实例(或称一个执行程序),进程是程序动态的描述。一个以exe作为扩展名的文件,在没有被执行的时候称之为应用程序,当用鼠标双击执行以后,就被操作系统作为一个进程执行了。当关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命。进程经历了由“创建”到“消亡”的生命期,而程序自始至终存在于你的硬盘上,不管计算机是否启动。查看当前进程如下图,*查看当前进程,*线 程,线程是进程的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一个堆栈。可以从下载工具看出来原来的下载工具是单进程单线程目

    4、前的下载工具是单进程多线程,*消 息,消息是应用程序和计算机交互的途径,在计算机上几乎做每一个动作都会产生一个消息鼠标被移动会产生WM_MOUSEMOVE消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息鼠标右键按下便产生WM_RBUTTONDOWN消息,*事件、句柄,事件如在程序运行的过程中改变窗口的大小或者移动窗口等,都会触发相应的“事件”,从而调用相关的事件处理函数。例如:BUTTONCLICK事件,触发ONBUTTON CLICK()事件处理函数句柄句柄是一个指针,通过句柄就可以控制该句柄指向的对象。编写程序总是要和各种句柄打交道的句柄是系统用来标识不同对象类型的工具,如窗口

    5、、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。例如:HWND、HDC、HBRUSH、HMENU、HPEN等等,*API与SDK,API是系统为应用程序提供的一系列函数接口。英文Application Programming Interface 的缩写,意思是“应用程序接口”,SDK是英文Software Development Kit的缩写,意思是“软件开发工具包”,微软提供了许多专门的SDK开发包,比如DirectX开发包和语音识别开发包等等。,3.1.2 学习Windows下编程,学习语言,选择语言和工具是第一步目前的编程语言有C、C+、C#、Java和汇编语

    6、言等等。从实用的角度来讲,C/C+是最好的选择,微软公司的Visual C+是其相应开发工具,*开发工具,在开发工具上,选择比较流行的VC+6.0,而且最好是英文版本,主界面如图所示,*学习编程需要经历三大步,1、读程序在没有阅读过一份完整的源代码之前,别指望能写出有多好的程序!2、写程序“万丈高楼平底起”,编程贵在动手,只要动手去写就可以了。还要依照自身的能力循序渐进地写3、积累功能代码将平时自己写的和自己已经读通的程序分类保存起来,建一个属于自己的代码库,3.1.3 选择编程工具,目前流行两大语法体系:Basic语系和C语系。同一个语系下语言的基本语法是一样。两大语系如图所示。C语系中,目

    7、前两大语言如日中天:C+和Java。C+适宜做系统软件的开发、Java更适宜做网络应用开发。虽然VC+.NET已经面世很久了,但是C+的开发工具目前主流依然是VC+6.0和C+Builder6.0。Java流行的开发工具比较多,比如:IBM公司的Visual Age和Websphere Studio、Eclipse,Insprise公司JBuilder等等。,*VC+6.0,目前最常用的版本是VC+6.0。VC+有一套集成开发工具,其中包括各种编辑器、编译工具、集成调试器等等下面通过一个程序来说明开发工具使用:File-New选择project,输入各项值,如图:,新建的是一个控制台程序,在左

    8、图的界面下选择创建工程的模板,选择空模板“An empty project”,点击按钮“Finish”,出现工程总结窗口,如右图所示。,为工程新加一个程序文件:File-New-FILES选择C+Source File,取名,后进入下面界面,选择 BUILD-Execute执行程序,出现结果,*说明,程序proj3_1.cpp代码包括三行第一行:“#include”意思是引入C+的基本输入输出函数库,在C语言中引入的是“stdio.h”库。在iostream.h文件中定义了cout的功能是输出,endl的功能是回车换行。第二行:“void main()”,main()函数是C/C+的主函数,v

    9、oid表示该函数没有返回值。第四行:“cout Hello C+endl;”,“cout”功能是向屏幕输出。,3.2 C语言发展的四个阶段,C语言经过不断的发展,在编程体系中可以将其分成四个阶段。1、面向过程的C语言。2、面向对象的C+语言。3、SDK编程。4、MFC编程(Microsoft Foundation Class:微软基类库)。,3.2.1 面向过程的C语言,C语言功能非常强大Linux/Unix操作系统就是用C语言写的,C语言直接调用操作系统提供的API函数可以编写非常强大的程序。C和C+的最主要区别是:C语言中没有类的概念,C+在C的语法基础上引入了类(Class)。面向过程编

    10、程,最基本的程序用C语言编写如proj3_2.cpp所示。案例名称:使用C语言编程程序名称:proj3_2.cpp#include main()printf(Hello DOSn);,*案例3-1 读取命令行参数,案例名称:读取命令行参数程序名称:proj3_3.cpp#include int main(int argc,char*argv)int i;for(i=1;i argc;i+)printf(%sn,argvi);return 0;,参数个数,参数的值,编译后在命令行下运行如下,3.2.2 面向对象的C+语言,面向对象程序设计语言可以将一些变量和函数封装到类(Class)中当变量被类

    11、封装后,称之为属性或者数据成员当函数被类封装后,称之为方法或者成员函数定义好的一个类,然后定义一个类的实例,这个实例就叫做对象,在C+中可以用类定义对象,使用方法如程序proj3_4.cpp所示。,类,属性,方法,*在C+中定义类,案例名称:在C+中使用类程序名称:proj3_4.cpp#include class person public:int heart;char*name;int run()/定义成员函数run()heart=heart+20;return heart;,定义person类,属性,方法,private、protected,*在C+中使用类,void main()int

    12、 iRunStop;person ZhangSan;ZhangSan.name=张三;ZhangSan.heart=72;cout姓名:ZhangSan.name endl;cout跑步前心跳 ZhangSan.heart endl;/run()为对象的方法iRunStop=ZhangSan.run();cout跑步后心跳iRunStopendl;编译运行输出结果如图,*将类定义与实现分离,类的定义放在.h文件中,实现放在.cpp文件中,具体如proj3_5所示在proj3_5.h中有class person public:int heart;char*name;int run();,*将类定

    13、义与实现分离,在proj3_5.cpp中有#include#include“proj3_5.h”int person:run()heart=heart+20;return heart;void main()int iRunStop;person ZhangSan;ZhangSan.name=张三;ZhangSan.heart=72;cout姓名:ZhangSan.name endl;cout跑步前心跳 ZhangSan.heart endl;iRunStop=ZhangSan.run();cout跑步后心跳iRunStopendl;,3.2.3 SDK编程,C库提供了许多函数,可以直接拿来使用

    14、。比如利用C库提供的DeleteFile函数来删除一个文件,如程序proj3_6.cpp所示。案例名称:调用C库函数程序名称:proj3_6.cpp#include#include int main()DeleteFile(C:test.txt);printf(删除成功n);return 0;执行结果如右图,C库函数提供,*编写窗口应用程序,编写对话框的语法如下面程序案例名称:编写对话框程序名称:proj3_7.cpp#include int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,in

    15、t iCmdShow)MessageBox(NULL,TEXT(Hello,Windows!),TEXT(HelloMsg),MB_OK);return 0;编译执行结果如图,*编写窗口应用程序,工程类型要改为WIN32 Application,如图WIN32 Console Application主函数为main()WIN32 Application主函数为WinMain(),*编写窗口应用程序,WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)参数一:hInstance 是当前实例

    16、的句柄。在这里hInstance表示应用程序本身。参数二:hPrevInstance总是为NULL,在Windows早期版本中使用,在32位版本中,统一程序运行方式改变了,不在需要了!参数三:szCmdLine是运行程序的命令行参数四:iCmdShow用于指定程序窗口最初的显示模式,可以正常显示,也可以在初始化就最大化或者最小化。,案例3-2 利用SDK函数创建窗口,程序名称:proj3_8.cpp#include WNDCLASS wc;HWND h_wnd;MSG msg;/*消息处理函数wndProc的声明*/long WINAPI WindowProc(HWND,UINT,WPARAM

    17、,LPARAM);,窗口对象,窗口句柄,Windows消息对象,案例3-2 利用SDK函数创建窗口,/*winMain 函数的声明*/int PASCAL WinMain(HINSTANCE h_CurInstance,HINSTANCE h_PrevInstance,LPSTR p_CmdLine,int m_Show)/*初始化wndclass结构变量*/wc.lpfnWndProc=WindowProc;wc.hInstance=h_CurInstance;wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszClassN

    18、ame=TheMainClass;/*注册WndClass结构变量*/RegisterClass(,案例3-2 利用SDK函数创建窗口,/*创建窗口*/h_wnd=CreateWindow(TheMainClass,Our first Window,WS_OVERLAPPEDWINDOW,0,0,400,500,0,0,h_CurInstance,0);/*显示窗口*/ShowWindow(h_wnd,SW_SHOWMAXIMIZED);/*消息循环*/while(GetMessage(,注册的窗口名,窗口标题,窗口样式,窗口左上角的位置,窗口宽度与高度,程序当前句柄,将消息发送给Window

    19、proc,案例3-2 利用SDK函数创建窗口,/*定义消息处理函数*/long WINAPI WindowProc(HWND h_wnd,UINT WinMsg,WPARAM w_param,LPARAM l_param)if(WinMsg=WM_DESTROY)PostQuitMessage(0);return DefWindowProc(h_wnd,WinMsg,w_param,l_param);执行结果如右图,3.2.4 MFC编程,SDK的功能非常强大,需要记很多的函数微软将SDK的函数分类进行封装,这样就诞生了MFC(Microsoft Foundation Class)。MFC程序

    20、的最基本的程序骨架如proj3_9.cpp所示。,3.2.4 MFC编程,#includeclass sample:public CFrameWndpublic:sample()/构造函数Create(NULL,My Window);MessageBox(My Window,CFrame constructor);class App:public CWinApppublic:BOOL InitInstance();BOOL ExitInstance();,类继承,3.2.4 MFC编程,/InitInstance函数的定义/BOOL App:InitInstance()MessageBox(0

    21、,My Window,InitInstance,MB_OK|MB_ICONASTERISK);sample*obj;obj=new sample;m_pMainWnd=obj;obj-ShowWindow(SW_SHOWMAXIMIZED);return TRUE;/ExitInstance函数定义BOOL App:ExitInstance()MessageBox(0,My Window,ExitInstance,MB_OK|MB_ICONHAND);return TRUE;/创建应用程序对象App appobject;,3.2.4 MFC编程,如果配置的执行方式与前面一样,则会出错,3.2.

    22、4 MFC编程,两种解决办法新建工程时选择 MFC AppWizard(exe)在原来基础上,project-setting设置中修改,如图,3.2.4 MFC编程,程序首先执行最一行:App appobject;申明了一个App对象实例,将自动调用InitInstance()执行第一句 MessageBox(0,My Window,InitInstance,MB_OK|MB_ICONASTERISK);弹出第一个对话框,3.2.4 MFC编程,接着程序执行 sample*obj;obj=new sample;当Sample类对象实例化时自动调用构造函数 sample()/构造函数Create

    23、(NULL,My Window);MessageBox(My Window,CFrame constructor);弹出对话框,3.2.4 MFC编程,接着程序执行m_pMainWnd=obj;obj-ShowWindow(SW_SHOWMAXIMIZED);显示主窗口(最大化),3.2.4 MFC编程,当退出主窗口时,系统自动调用ExitInstance()执行MessageBox(0,My Window,ExitInstance,MB_OK|MB_ICONHAND);弹出窗口如右图,案例3-3 MFC的事件处理机制,#includeclass sample:public CFrameWnd

    24、public:sample()/构造函数Create(NULL,My Window);void OnLButtonDown(UINT,CPoint)MessageBox(“You clicked the left Mouse Button,“Hello world“,0);void OnRButtonDown(UINT,CPoint)MessageBox(“You clicked the right Mouse Button,“Hello world“,0);DECLARE_MESSAGE_MAP();,案例3-3 MFC的事件处理机制,BEGIN_MESSAGE_MAP(sample,CFr

    25、ameWnd)ON_WM_LBUTTONDOWN()ON_WM_RBUTTONDOWN()END_MESSAGE_MAP()class App:public CWinApppublic:BOOL InitInstance();BOOL ExitInstance();/InitInstance函数的定义/BOOL App:InitInstance()sample*obj;obj=new sample;m_pMainWnd=obj;obj-ShowWindow(SW_SHOWMAXIMIZED);return TRUE;,案例3-3 MFC的事件处理机制,/ExitInstance函数定义BOOL

    26、 App:ExitInstance()return TRUE;/创建应用程序对象App appobject;编译运行会在按下左键,右键时弹出对话框,3.3 网络安全编程,网络安全基础编程技术主要包括6个方面:Socket编程注册表编程文件系统编程定时器编程驻留程序编程多线程编程。,3.3.1 Socket编程,谈网络安全编程离开网络编程就会大失其味,凡是基于网络应用的程序都离不开Socket。Socket的意思是套接字,是计算机与计算机之间通信的接口。Socket网络编程一般采用服务器/客户机模式,有两种不同的套接字流套接字数据报套接字,流套接字的编程时序图如下,服务器 客户机,Socket(

    27、),bind(),listen(),accept(),read(),write(),close(),Socket(),connect(),read(),write(),close(),连接请求,数据请求,应答数据,数据报套接字的编程时序图如下,服务器 客户机,Socket(),bind(),readfrom(),sendto(),close(),Socket(),bind(),readfrom(),sendto(),close(),服务请求,服务应答,3.3.1 Socket编程,使用Winsock提供的API函数是最基本的网络编程技术程序proj3_11.cpp利用Socket获得本机的IP

    28、地址和机器名附加:利用socket编程实现扫描网站端口,3.3.1 Socket编程,案例名称:使用Socket得到IP地址程序名称:proj3_11.cpp#include#include void CheckIP(void)/CheckIP函数,用于获取本机IP地址 WORD wVersionRequested;/用于存放Winsock版本的值 WSADATA wsaData;char name255;/用于存放主机名PHOSTENT hostinfo;wVersionRequested=MAKEWORD(2,0);/调用MAKEWORD()函数获得Winsock的版本,用于加载Winso

    29、ck库,3.3.1 Socket编程,if(WSAStartup(wVersionRequested,3.3.1 Socket编程,由于采用main()函数,所以工程采用“WIn32 Console Application”编译执行,出现错误,如图,3.3.1 Socket编程,消除错误的方法是在project-settings-link-Object/library modules,加入“WS_32.lib”,3.3.1 Socket编程,再编译执行就可得到,*利用Socket实现简单扫描器,程序清单如下:#include#include“stdio.h”#progma comment(li

    30、b,”ws2_32”)#include#include void main()WSADATA ws;SOCKET s;struct sockaddr_in addr;int RESULT;long lRESULT;,*利用Socket实现简单扫描器,for(int i=1;i200;i+)lRESULT=WSAStartup(0 x0101,这样可以实现对某一网站的端口扫描,建立连接,3.3.2 注册表编程,注册表在计算机中由键名和键值组成,注册表中存储了Window操作系统的所有配置。黑客90%以上对Windows的攻击手段都离不开读写注册表。在运行窗口中输入“regedit”命令可以进入注

    31、册表,注册表的界面如图所示。,3.3.2 注册表编程,注册表的句柄可以由调用RegOpenKeyEx()和RegCreateKeyEx()函数得到的通过函数RegQueryValueEx()可以查询注册表某一项的值;通过函数RegSetValueEx()可以设置注册表某一项的值RegCreateKeyEx()函数和RegSetValueEx()函数的使用方法如程序proj3_12.cpp所示,案例名称:操作注册表,#include#include main()HKEY hKey1;DWORD dwDisposition;LONG lRetCode;/创建 lRetCode=RegCreateK

    32、eyEx(HKEY_LOCAL_MACHINE,SOFTWAREMicrosoftWindows NTCurrentVersionIniFileMappingWebSecurity,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,/设置第一个键值lRetCode=RegSetValueEx(hKey1,Hack_Name,0,REG_SZ,(byte*)sixage,100);/设置第二个键值lRetCode=RegSetValueEx(hKey1,Hack_Hobby,0,REG_SZ,(byte*)Running,100);/如果创建失败,显示出

    33、错信息 if(lRetCode!=ERROR_SUCCESS)printf(Error in setting Section1 valuen);return(0);printf(注册表编写成功!n);return(0);,编译运行结果:,*判断是否中了“冰河”,中了“冰河”的计算机注册表都将被修改了,修改了扩展名为txt的文件的打开方式,在注册表中txt文件的打开方式定义在HKEY_CLASSES_ROOT主键下的“txtfileshellopencommand”中,如图所示。,*判断是否中了“冰河”,案例名称:判断是否中了“冰河”程序名称:proj3_13.cpp#include#include main()HKEY hKEY;LPCTSTR data_Set=txtfileshellopencommand;long ret0=(RegOpenKeyEx(HKEY_CLASSES_ROO


    注意事项

    本文(第3课-网络安全基础编程-PowerPointPres.pptx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




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

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

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


    收起
    展开