《Python网络安全项目实战》
- 项目1 Python 环境安装
- 任务1.1 Windows上安装Python
- 任务1.2 Ubuntu环境下安装Python
- 项目2 Python基础练习
- 任务2.1 使用数据类型
- 任务2.2 使用组合数据类型
- 任务2.3 使用控制结构
- 任务2.4 使用函数
- 任务2.5 使用模块
- 项目3 处理文件中的数据
- 任务3.1 读文件
- 任务3.2 写文件
- 任务3.3 处理文件数据
- 项目4 编写网络扫描程序
- 任务4.1 扫描内网有效IP地址
- 任务4.2 编写端口扫描工具
- 项目5 编写网站扫描程序
- 任务5.1 暴力破解网站目录和文件位置
- 任务5.2 制作网页JPG爬虫
- 项目6 编写密码工具程序
- 任务6.1 猜数字游戏
- 任务6.2 编写密码工具程序
- 项目7 编写Windows键盘和屏幕监控程序
- 任务7.1 编写键盘记录软件
- 任务7.2 屏幕截取快照
项目1 Python 环境安装
Python是一种面向对象的解释性语言,简单、易学、免费、开源,可以在程序开发期节省相当多的时间。阅读一个良好的Python程序就感觉像是在读英语一样,它使你能够专注于解决问题而不是去搞明白语言本身。 2017年7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。
项目目标:
熟悉Windows下Python开发环境的安装;
熟悉Ubuntu下Python开发环境的安装。
任务1.1 Windows上安装Python
任务描述
公司接到一个跨平台项目需要在Windows和Ubuntu两种操作系统环境下进行Python编程和运行。项目经理布置任务,需要我们小组在Windows系统环境下进行Python编程环境的搭建。请大家和我一起共同完成这个任务。
任务分析
所有版本的windows、Linux、Mac OS都有相应的Python版本支持,本次任务是在Windows10系统中下载、安装和使用Python3.6.1。
Python对硬件配置的要求,就是相应操作系统对硬件的最低要求。
安装Python开发环境,首先需要进行Windows系统的安装,然后去Python官方网站下载Python安装包,并且进行Python的安装。假定Windows 已经安装好,我们现在去Python官方网站下载Python并进行安装。
任务实施
进入Python的官方下载页面https://www.python.org/downloads/,如图1-1-1所示。
图1-1-1 Python官方网站下载页面
在这个页面上显示了两个主要版本的下载按钮,Python3.6.1是最新的发布的版本。因为比较新,所以Python3.6.1学习资料和例程会比较少,Python2.7.13是一个库文件和参考资料比较容易获得的常用版本,但是因为Python3.6.1具有新的功能和特性,代表了未来的方向所以我们还是选择新的版本。
由于Python在不同操作系统都有很多不同版本与之对应,我们在这里就不一一介绍了。但是有一点应该清楚,就是使用不同的操作系统,就必须下载与操作系统相对应的Python版本,在Windows中如果使用的32位的操作系统,就必须下载32位的Python版本,若使用的是64位的操作系统,那么就必须下载64位的Python版本。
最新版本的Python 3(Python 3.6.1)的二进制文件可从Python官方网站的下载页面: http://www.python.org/downloads/windows/ 下载,可以使用以下不同的安装选项。
这里我们选择下载Python3.6.1,进入下载页面选择windows x86-64 executable installer 进行下载并进行安装如下图1-1-2所示。
图1-1-2 Python官方网站下载选择页面
下载Windows x86-64 executable installer安装文件。在弹出的下载页面,选择保存路径,并点击保存文件按钮,下载完成后双击可执行文件python-3.6.1-amd64.exe。
【步骤1】:双击python-3.6.1-amd64.exe 可执行文件,显示安装选项,窗口下方的复选框:①Install lanuncher for all users(recommended);(使系统上的所有用户都可以使用python)②AddPython 3.6 to PATH;(添加python到系统的环境变量中)两个全部选中,并选择“Cusomize installation”定制安装如图1-1-3所示。
图1-1-3 Python安装参数选择
【步骤2】:在弹出的复选框中,我们选择安装文档,安装pip工具,可以通过pip下载第三方库文件,安装IDLE开发环境,安装python的测试套件,让所有用户都可以使用python,使用上一个版本python的全局路径,全部选中并点击“Next”下一步按钮,如图1-1-4所示。
图1-1-4 Python安装组件选择
【步骤3】:在弹出的高级选项中,我们选择前5个,前5个分别是,第一个让所有用户都安装,第二个是见文件跟python关联,第三个是为已经安装的应用程序创建快捷方式,第四个是将python添加到系统环境变量中,第五个是预编译标准库,安装路径选择安装在 D:\Program Files\Python36,并单击“Install”按钮,如图1-1-5所示
图1-1-5 Python安装高级选项
【步骤4】:开始安装,并等待安装完成,如图1-1-6所示。
图1-1-6 Python安装进度显示
【步骤5】:安装完成后选择关闭(Close),如图1-1-7所示。
图1-1-7 Python安装成功完成
由于我们在安装的第一步中,已经选择了“Add Python 3.6 to PATH”了,所以这里不需要单独去设置环境变量了。如果没有选择此项,则应该需要将Python 3.6添加到环境变量。假设您已经按照上面的步骤来安装完成,到此,在windows系统上安装Python 3.6.1已经完成了。
【步骤6】:在windows开始菜单中找到并打开Python IDEL,如图1-1-8所示。
图1-1-8 Python shell
【步骤7】:输入print(‘Hello world!’) 并按下Enter键,恭喜你,Python已经开始工作了,并且已经完成了所有编程语言学习的第一步:输出“Hello world!”,如图1-1-9所示。
图1-1-9 Hello world
【步骤8】:我们打开Python IDEL帮助系统中的Turtle Demo,如图1-1-10所示。
图1-1-10 教学示例程序
【步骤9】:可以看到这是一个编程示例教程,里面包含了多个绘图程序,如图1-1-11所示。
图1-1-11 example
【步骤10】:点开Examples菜单可以看到里面包含了多个绘图程序,如图1-1-12所示。
图1-1-12 example菜单
【步骤11】:点开第一个示例程序bytedesign,程序绘制图案,位图,如图1-1-13所示。
图1-1-13 程序绘制图案
【步骤12】:第二个示例程序chaos,噪声演示程序,如图1-1-14所示。
图1-1-14 噪声演示程序
【步骤14】:第三个示例程序Clock,时钟程序,如图1-1-15所示。
图1-1-15 时钟程序
相关知识
对于Windows系统,存在易于使用的图形界面安装包,只需要按照提示一步一步完成安装过程。安装工具包可以从www.python.org/downlaod处获取,该网站为Windows系统提供了3个独立的安装系统,一般需要下载的是普通的“Windows X86 MSI Installer”,除非确认自己的机器使用的是AMD64或Itanium处理器,这种情况需要下载处理器特定的安装程序。下载安装程序后,只需要运行并按提示进行操作,就可以安装好Python3了。
任务评价
请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
任务拓展
在Windows32位系统环境下安装Python3.6.0。
操作系统版本不同,相应下载的Python安装文件也会有所不同,特别是操作系统是32位的还是64位的要特别注意。
1、进入Python的官方下载页面,如图1-1-16所示。
https://www.python.org/downloads/
图1-1-16 Python的官方下载页面
在这个页面上显示了两个主要版本的下载按钮,Python3.6.1是最新的发布的版本,因为比较新所以学习资料和例程会比较少,Python2.7.13是一个库文件和参考资料比较容易获得的常用版本。
2、这里我们选择下载稳定版本Python3.6.0进入下载页面并进行安装,如图1-1-17所示。
图1-1-17 Python版本选择
3、选择windows x86 executable installer 进行下载,如图1-1-18所示。
https://www.python.org/downloads/release/python-360/
图1-1-18 Python安装文件
4、在下载页面,选择保存路径,并点击保存文件按钮,如图1-1-19所示。
图1-1-19 Python下载保存
5、下载并安装完毕,打开Python IDEL,如图1-1-20所示。
图1-1-20 Python shell
6、输入print(‘Hello world!’) 并回车,恭喜你Python已经开始工作了,并且已经完成了所有编程语言学习的第一步:输出“Hello world!”如图1-1-21所示。
图1-1-21 Hello world
任务1.2 Ubuntu环境下安装Python
任务描述
公司接到一个跨平台项目需要在Windows和Ubuntu两种操作系统环境下进行Python编程和运行。项目经理布置任务,需要我们小组在Ubuntu系统环境下进行Python编程环境的搭建。请大家和我一起共同完成这个任务。
任务分析
所有版本的windows、Linux、Mac OS都有相应的Python版本支持,本次任务是在ubuntu12.4LTS中下载安装和使用python3.2.3。
Python对硬件配置的要求,就是相应操作系统对硬件的最低要求。
Ubuntu系统当中有软件中心,在软件中心里的开发工具中我们可以找到Python,我们选择Python3.2进行安装。安装Python开发环境,首先需要进行操作系统的安装,然后去下载Python安装包,并且进行Python的安装。假定操作系统已经安装好,我们现在去下载Python并进行安装。
任务实施
【步骤1】:在Ubuntu桌面用鼠标点击打开Ubuntu软件中心,如图1-2-1所示。
图1-2-1 Ubuntu桌面
【步骤2】:在软件中心窗口左侧菜单栏中点击开发工具,如图1-2-2所示。
图1-2-2 软件中心
【步骤3】:在Ubuntu软件中心开发工具窗口当中用鼠标点击Python语言,如图1-2-3所示。
图1-2-3 开发工具
【步骤4】:在Ubuntu软件中心开发工具Python语言窗口当中点击IDLE(使用Python3.2),如图1-2-4所示。
图1-2-4 IDLE(使用Python3.2)
【步骤5】:Python语言窗口中点击IDLE(使用Python3.2)右侧的安装按钮,如图1-2-4所示。
图1-2-5 IDLE安装按钮
【步骤6】:Python安装完毕以后,屏幕左侧出现了Python开发工具的图标,右侧的安装按钮就变成了卸载,如图1-2-6所示。
图1-2-6 IDLE安装完毕
【步骤7】:打开Python交互操作窗口,如图1-2-7所示。
图1-2-7 Python shell
【步骤8】:点击Python交互操作窗口最大化图标,输入print(‘Hello world!’)并回车,这时Python 已经开始工作,如图1-2-8所示。
图1-2-8 Hello world
相关知识
如果使用的是较新版本的系统,并经过了及时的更新,就应该已经安装了Python3。检查是否已经安装,可以在控制台中输入命令Python V(注意是大写的V),如果版本为3.X,就说明系统已经安装了Python3,不需要自己再安装了。
任务评价
请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
任务拓展
在Ubuntu 16.04 安装python3.6 环境并设置为默认
【步骤1】:添加python3.6安装包,并且安装。
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
【步骤2】:修改系统默认python版本为3.6。
1 cd /user/bin
2 rm python
3 ln -s python3.6m python
【步骤3】:升级pip版本。
python pip install --upgrade pip
项目评价
未完待续。。。。。。点赞和收藏数量越多。。。。。。更新越快。。。。。
项目2 Python基础练习
Python是一门完整的编程语言;与 Shell 脚本或批处理文件相比,它为编写大型程序提供了更多的结构和支持。并且作为一门高级语言,它内置支持高级的数据结构类型,例如:灵活的列表和字典。Python 允许你将程序分割为不同的模块,以便在其他的 Python 程序中重用。Python 内置提供了大量的标准模块,你可以将其用作程序的基础,或者作为学习 Python 编程的示例。下面的网址含有大量的Python基础学习资料和操作指导,可以用来配合本项目的学习。
http://www.pythondoc.com/
http://www.runoob.com/python3/python3-tutorial.html
项目目标:
熟悉Python的关键要素:
数据类型
组合数据类型
控制结构
函数
模块
任务2.1 使用数据类型
任务描述
公司接到一个项目需要使用Python进行编程,项目经理布置任务需要我们小组进行编程的准备并写出个例子程序。请大家和我一起熟悉python数据类型的使用,进行准备并使用Python编程。
任务分析
Python具有高级的内置数据类型,比如灵活的数字和字符串。由于python提供了更为通用的数据类型,Python 操作数据会更简单明了。
输出
输入
数字
字符串
任务2.2 使用组合数据类型
任务描述
公司接到一个项目需要使用Python进行编程,项目经理布置任务需要我们小组进行编程的准备并写出例子程序。请大家和我一起熟悉python组合数据类型的使用,进行准备并使用Python编程。
任务分析
组合数据类型
列表
元组
集合
字典
任务2.3 使用控制结构
任务描述
公司接到一个项目需要使用Python进行编程,项目经理布置任务需要我们小组进行编程的准备并写出一个例子程序。请大家和我一起熟悉python控制结构的使用,进行准备并使用Python编程。
任务分析
控制结构
If
while
for
try
任务2.4 使用函数
任务描述
公司接到一个项目需要使用Python进行编程,项目经理布置任务需要我们小组进行编程的准备并写出一个例子程序。请大家和我一起熟悉python函数的使用,进行准备并使用Python编程。
任务分析
python函数的使用包括以下几个方面
函数的定义
函数参数的传递
函数的Lambda形式
文档字符串
函数的注解
任务2.5 使用模块
任务描述
公司接到一个项目需要使用Python进行编程,项目经理布置任务需要我们小组进行编程的准备并写出一个例子程序。请大家和我一起熟悉python模块的使用,进行准备并使用Python编程。
任务分析
python模块的使用包括以下几个方面:
模块—可重用的Python代码块
标准模块—纳入Python标准的Python可重用代码块
包—系列相关的可重用代码块的容身之地
项目3 处理文件中的数据
能够使用编程语言对文件进行操作,也是编程中最基本的技能,熟练掌握好python中处理文件的方法,带来的不仅仅是编程语言的提升,更是快捷的处理文件的能力。
项目目标:
熟练掌握python编程读取文件的方法;
熟练掌握python编程写入文件的方法;
能够正确替换文件中的数据。
任务3.1 读文件
任务描述
我们在平常经常会创建文件,文件夹,也会打开和删除文件和文件夹,掌握Python编程中对文件的操作,包括文件和文件夹的读写、修改、移动、复制、删除、重命名等。
任务分析
我们平常用鼠标键盘在对文件进行操作时,主要是四步,一是先找到文件,二是打开文件,三是读文件中的内容,四是关闭文件。而在Python中,对文件和文件夹进行操作也是同一个道理,对文件和文件夹的操作需要使用到os及shutil两个模块,所以需要对文件进行操作,要引用os模块,用os模块中的open()函数来进行文件的控制,用print()函数来将接收到的内容打印到屏幕上,再将用open()函数打开的文件用close()函数关闭。
任务3.2 写文件
任务描述
除了需要读取文件之外,我们也会需要用来创建文件,并向文件中写入内容。
任务分析
写文件同样是必须得先有个文件路径,用‘w’写模式,如果文件存在,是先将文件的内容清空,然后再对文件写入内容,如果文件不存在,则创建一个文件
任务3.3 处理文件数据
任务描述
在对文件的操作中,除了对文件的读取,文件的写入,有时还需要对文件中的内容进行修改操作。
任务分析
对文件中的内容进行修改, 首先是读取到这个文件的内容,将全部内容获取到之后,在内容中进行查找,查找到需要修改的内容,将内容进行替换或者增加。定义一个变量接收读取文件的内容,而接收到的读取内容则都是字符串,实际就是在对字符串进行操作,之后对操作完成的字符串再写入原先的文件当中。
项目4 编写网络扫描程序
许多扫描工具是由Python编写的。本项目中我们将用python写一个IP扫描工具,用来发现内网在线的IP以及开放的端口。
项目目标:
能够正确获取系统的类型,是Windows还是Linux;
能够正确获得本机IP的地址;
能够正确得到IP地址的在线和端口开放情况。
任务4.1 扫描内网有效IP地址
任务描述
在对局域网进行管理时,为了知道网段内的IP在线情况,知道网段IP地址的使用情况,我们可以对网段的所有IP地址进行一次扫描。
任务分析
判断一个IP是否在线,最简单的方法就是去ping这个IP,通过ping返回的信息来判断IP是否在线,在Windows中ping命令默认发送4个数据包,而Linux中默认是一直发送数据,但是这个值也是可以更改的,Windows中只需要加上-n参数后面跟上一个数字,就是发送多少个数据包,而Linux中为-c,为了统一发送数据包的个数,需要先判断系统为Linux还是Windows。
确定好系统之后就是本网段的所有网址,对于一个C类内网网段,,一共有256个内网地址,从0到255,通过获取自己的IP地址,再对IP地址进行编辑,就可以获得内网所有IP,再通过ping命令去ping所有的IP,再通过返回信息就可以得到内网所有有效的IP地址。
使用python编程进行内网的IP扫描,那么需要用到网络相关的模块,在扫描内网前,先要知道自己的IP地址,而自己的IP地址是本地系统上的信息,所以还需要用到os模块,为了一次ping多个IP同时进行,还需要treading模块。
任务4.2 编写端口扫描工具
任务描述
使用python对指定端口进行扫描。
任务分析
在对服务器的探测中,能否正确的判断端口的开放是十分重要的,一个服务器开放的端口越多,就代表着打开的窗户越多,而这些打开的窗户,难免就会存在一些问题,那么我们为了能够更好安全性,就必须了解一个服务器开放了哪些端口,利用python,就可以很好的实现端口的发现。
在python编程中,可以使用socket模块中的connect()来与指定IP的指定端口建立连接,连接建立成功则说明IP的端口是开放状态,若长时间没能成功建立连接,我们就认为这个端口是关闭的。
端口一共有65535个,周知端口为0-1023,注册端口为1024-49151,动态端口为49152-65535,而常用的服务一般都在0-1023之间,除了这个1024个端口外,还有一些常见端口,如1433,3389,4899等。
本任务要求在192.168.1网段对指定的IP地址区间进行扫描,扫描每一个IP地址的端口,并将扫描结果保存在一个文件中。
IP地址的生成。
端口号的生成。
扫描端口是否开放。
项目5 编写网站扫描程序
WEB网站安全渗透测试过程中需要进行目录扫描和网站爬行,网上可以找到一些不错的工具软件,但是对于别人写的工具是否安全可靠有待商榷,所以我们如果能够写出自己的网站扫描和爬行程序,对于我们的工作会有极大的帮助。
使用Python的标准网络模块编写网络工具软件非常方便,这里我们使用Python完成网站扫描程序的编写。
项目目标:
熟悉使用Python进行网站扫描程序的编写。
任务5.1 暴力破解网站目录和文件位置
任务描述
当我们通过sql注入等方式得到网站的数据库时,由于后台一般是隐藏起来的,所以我们想要登陆后台的话,还是要手工或者以暴力破解的方式找到后台。
任务分析
对一个站点目录和文件进行扫描,那么就需要用Python3环境下requests模块。扫描目录主要是对网站地址发出请求,若网站存在这个地址则会返回状态码200,如果不存在则会返回404,如果是没有权限访问,或者是其他一些情况,都会有相应的状态码,我们主要是需要访问成功的状态码和地址就可以了。
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库, 支持 HTTP 连接保持和连接池,支持使用cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。本次任务要扫描的WWW服务器就搭建在本机上,我们在本机搭建了一个Discuz网站,计划扫描的网址是:http://127.0.0.1/Discuz/upload。
任务5.2 制作网页JPG爬虫
任务描述
在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。
常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。
这里可以通过python来实现这样一个简单的爬虫功能,把我们想要的图片爬取并下载到本地。下面就看看如何使用python来实现这样一个功能。
任务分析
利用Python抓取网络图片的步骤:
- 根据给定的网址获取网页源代码。
- 利用正则表达式把源代码中的图片地址过滤出来。
- 根据过滤出来的图片地址下载网络图片。
项目6 编写密码工具程序
在密码的使用过程中,我们给出一个密码经常是弱密码,这样的密码有一定的规律可以比较容易记忆。但是使用弱密码,很容易就可以对你的密码进行破解。所以我们要编写一个密码工具程序,对给出的密码进行测试,确定这个密码是不是弱密码,是不是可以使用。并且我们给出的程序功能,需要自动生成强密码,并对密码进行测试确定不是弱密码。
项目目标:
熟悉Python的关键要素;
熟练使用Python语言对数据安全、系统安全编程。
任务6.1 猜数字游戏
任务描述
项目经理要求我们编写猜数字游戏,从而模拟纯数字密码的生成与猜测。
任务分析
- 编写基本的猜数字程序
(1)编写一个程序,用来进行输出。
(2)使用模块random中的函数randint()生成一个随机整数。
(3)使用Python内置函数input()提示用户输入一个整数。
(4)对比两个数字,输出对比结果。 - 加入新功能更新版本
(1)为猜数字程序加入连续猜数的功能。
(2)测试并修改程序。
(3)给程序增加注释。
任务6.2 编写密码工具程序
任务描述
使用python编写一个密码工具程序
任务分析
- 原形设计:
• 密码由大小写英文字母、数字、特殊符号组成,
• 将需要的字母、数字和符号放入列表,
• 使用random.sample()产生随机序列,
• 将选取的字符加入一个新的列表,
• 把生成的新列表中的字符连接成字符串作为密码 - 增加功能:
• 根据输入控制密码位数,
• 测试弱密码功能
• 菜单功能
项目7 编写Windows键盘和屏幕监控程序
在远程和本地监控Windows系统下用户操作行为的过程中,经常需要记录计算机键盘的输入和屏幕的输出。虽然网上可以找到类似的程序,但是自己写的程序更灵活并且安全可靠。
项目目标:
熟悉使用Python进行键盘记录和屏幕记录编程。
任务7.1 编写键盘记录软件
任务描述
键盘记录是最古老的黑客技术之一,至今仍在不同的层面广泛使用,攻击者使用它是因为它能有效的捕获所需的敏感信息,如账号密码和聊天记录等。强大的第三方Python库PyHook能够让我们很容易的捕获键盘事件。他利用了原生的Windows函数SetWindowsHookEx,这个函数允许我们安装自定义的钩子函数。当发生特殊的windows事件时,会调用这个钩子函数。通过注册键盘事件的钩子函数就能捕获目标机器触发的所有按键消息。
任务分析
这个工具会自动检查目标是否切换窗口,从而捕捉对应的窗口录入信息,在Python程序中输出结果。
利用Python捕获键盘信息的步骤:
- 加载相关模块。
- 分别构造进程和判断是否切换窗口的过程函数。
- 创建和注册钩子函数管理器和相关设置。
- 测试验证输出结果。
任务7.2 屏幕截取快照
任务描述
大部分渗透测试框架和恶意软件都具有截取远程目标屏幕的能力,他能捕获打开的图片、播放的视频帧和其他一些敏感信息,这些信息一般能由数据抓包或键盘记录来获取。
任务分析
本章使用第三方的PyWin32库,通过调用本地的Windows API的方式实现截屏功能。主要利用Windows图形设备借口(GUI)获得截取屏幕时必须的参数,如屏幕大小,分辨率等。