《Python网络渗透编程》 课件汇 刘开茗 1.1 课程介绍 - 4.2 DES加解密脚本的编写_第1页
《Python网络渗透编程》 课件汇 刘开茗 1.1 课程介绍 - 4.2 DES加解密脚本的编写_第2页
《Python网络渗透编程》 课件汇 刘开茗 1.1 课程介绍 - 4.2 DES加解密脚本的编写_第3页
《Python网络渗透编程》 课件汇 刘开茗 1.1 课程介绍 - 4.2 DES加解密脚本的编写_第4页
《Python网络渗透编程》 课件汇 刘开茗 1.1 课程介绍 - 4.2 DES加解密脚本的编写_第5页
已阅读5页,还剩198页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络渗透编程Networkpenetrationprogramming课程概况编程网络攻防技术网络渗透编程课程概况网络渗透测试网络渗透测试技术自己编写渗透测试软件Python程序设计语言工具软件无工具软件课程概况Python语言具有非常丰富强大的第三方库语法简单适合在渗透测试领域编写工具软件使用Python课程概况一些功能或操作的简单描述短小精悍软件解释执行Python脚本学习目标知识目标掌握利用Python语言编写信息收集、信息加密、口令破解、流量分析、漏洞检测等渗透测试脚本的方法能力目标综合运用所学的知识进行快速自动化渗透测试,以进一步提高信息安全防护的能力素质目标能够提升自己的信息安全意识、团队合作能力、专业技术交流表达能力、获取新知识的能力以及遵纪守法的职业道德前导课程《Python程序设计》掌握python基本语法,有助于更好地编写自己的脚本前导课程《网络攻防技术》网络攻防原理是学习本课程的理论基础定义渗透测试出于保护系统的目的,模拟黑客入侵的行为,对目标系统进行的一系列测试,从而寻找系统中存在的漏洞。前导课程明确目标信息搜集威胁建模漏洞分析漏洞利用后渗透攻击报告形成基本流程课堂导入渗透测试团队1、明确目标渗透测试目标范围限度需求渗透测试方案(全面、详细)确定制定课堂导入渗透测试团队利用各种方法,获取更多关于目标网络的相关信息2、信息搜集搜集方法被动扫描通过间接的方式,如通过whois查询或搜索引擎等搜集主动扫描通过专业的扫描工具对目标进行扫描3、威胁建模——制定战争的策略课堂导入对客户资产进行评估,可找出其中重要的资产分析哪些群体可能对目标发起攻击,可以更好地帮助确定渗透测试时所使用的技术和工具3、威胁建模资产攻击者课堂导入4、漏洞分析操作系统开放端口服务程序信息搜集时发现目标查找分析目标系统中可能存在的漏洞课堂导入主要目标:绕过目标的安全机制来控制目标系统或访问目标资源,以获取之前评估的重要资产测试目标系统漏洞漏洞渗透程序漏洞漏洞5、漏洞利用课堂导入测试目标系统漏洞漏洞渗透程序漏洞漏洞5、漏洞利用比较高级的控制权其他重要信息建立长期的控制通道利用目标作为跳板进而攻击内网中的其他主机6、后渗透攻击能否获得意外收获课堂导入书面形式目标系统所面临的重要威胁安全漏洞目标系统存在问题的修复方案当前安全机制的改进建议7、报告生成明确目标信息搜集威胁建模漏洞分析漏洞利用后渗透攻击报告形成学习内容学习内容网络渗透编程学习内容网络渗透编程学习内容网络渗透编程学习方法复习两门前导课程,掌握网络攻击的基本原理和编写程序的基本方法了解Python相关库中函数的使用方法程序的简洁高效Python基本语法Pythonbasicsyntaxpython的运行环境官方开发运行环境第三方集成开发环境Python的运行环境特点IDLE(IntegratedDevelopmentandLearningEnvironment)集成开发和学习环境官方运行环境简单易用,适合初学者交互式界面,所见即所得包含的编辑器,简洁易上手Python的运行环境第三方的集成开发环境特点集成度高比较适合开发大型的项目智能语法提示python程序的特点python程序的特点python语句的特点一般情况下,每行一条语句,不需要用“;”结尾,也可以每行多条语句,语句之间用“;”分隔python程序的特点python语句的特点

语句的缩进非常重要,同一子部分的语句缩进要相同python程序的特点python语句的特点

单行注释:#多行注释三个单引号(''')三个双引号(""")python的控制结构一句跟着一句执行顺序结构通过条件判断,最终选择出所需要的结果选择结构通过重复有规律性的操作,从而减少代码量,使代码表达更为简洁循环结构python的控制结构python的控制结构选择结构应用案例用户输入自己的成绩,如果成绩小于0或大于100,提示输入错误;

如果成绩大于等于60小于80,输出“还不错”;如果成绩大于80小于等于100,输出“非常棒!”输入成绩SS<0orS>100输入错误YESNOS<=60继续努力S<=80还不错非常棒YESNOYESNOpython的控制结构python的控制结构Python的选择结构单分支选择结构双分支选择结构多分支选择结构python的控制结构还可选择怎样的分支结构?思考python的控制结构循环结构应用案例用户输入若干成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答‘n’就停止输入成绩。python中主要有两种循环形式while循环结构for循环结构python的控制结构while循环结构for循环结构循环次数难以提前确定循环次数可以提前确定循环结构强制退出循环python的控制结构强制退出循环break:一旦break语句被执行,将使得break语句所属层次的循环提前结束。continue:作用是提前结束本次循环,并忽略continue之后的所有语句,直接回到循环的顶端,提前进入下一次循环。python的循环中还可以带有else子句python的控制结构else:循环因为条件表达式不成立或序列遍历结束而自然结束执行else结构中的语句不执行else中的语句循环因为执行了break语句而导致提前结束循环正常结束执行循环非正常结束不执行python的控制结构while循环for循环异常处理Exceptionhandling课堂导入引发错误的原因:程序中的异常:程序运行时引发的错误如零作为除数文件不存在下标越界网络异常这些错误得不到正确的处理将会导致程序崩溃并终止运行课堂导入异常处理合理使用异常处理结构程序更加健壮,具有更高的容错性不会因为用户不小心的错误而造成程序崩溃为用户提供更加友好的提示界面程序执行过程中出错而在正常控制流之外采取的行为教学目标掌握实现异常处理的语法。掌握异常处理的逻辑概念及含义。知识目标能力目标学会用Python内置的多种异常类,定义自己的异常类。运用Python多种不同形式的异常处理结构,处理可能发生的错误。异常处理的基本概念无法运行易发现解决可以运行错误结果语法错误拼写错误缩进不一致引号或括号不闭合逻辑错误异常处理的基本概念运行时由于某些条件不符合而引发的错误,一旦引发异常并且没有得到有效的处理,一般是直接导致程序崩溃。异常错误输入:60主程序处理输出:优秀!Python内置的异常类Python内置的异常类BaseException为所有异常的基类SystemExitKeyboardInterruptGeneratorExitException用户直接拿来使用继承这些类定义自己的异常类Python内置的异常类Exception为所有非系统退出类异常的基类,Python提倡继承Exception或其子类派生新的异常。Python内置的异常类Exception下包含异常MemoryError(内存溢出)BlockingIOError(IO异常)SyntaxError(语法错误异常)异常处理结构举例异常处理结构举例在python中提供了多种不同形式的异常处理结构基本思路尝试运行代码处理可能发生的错误在实际使用时,可以根据需要来选择使用哪一种异常处理结构举例——python异常处理结构中最基本的结构try...except...程序的执行流程执行try子句(在try和except关键字之间的部分)没有异常发生except子句在try语句执行完毕后就被忽略异常处理结构举例如果异常匹配于except关键字后面指定的异常类型就执行对应的except子句,然后继续执行异常处理结构之后的代码try...except...如果在try子句执行

过程中发生了异常该子句其余的部分就会被忽略异常处理结构举例异常匹配于except关键字后面指定的异常类型,就执行对应的except子句,然后继续执行异常处理结构之后的代码try...except...在try子句执行过程中发生了异常该子句其余的部分就会被忽略异常处理结构举例最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息try...except...发生了一个异常在except子句中没有与之匹配的分支,它就会传递到上一级try语句中异常处理结构举例try...except...else...else代表try子句中的代码没有引发异常,则继续执行这里引发异常,这部分就不执行异常处理结构举例else内的“执行完毕”就可以显示出来当程序出现异常后,就没有显示通过输出结果看到当程序无异常时异常处理结构举例try...except...finally...从功能上来说,有没有finally子句,在try...except...结构执行完后,都会继续执行后面的语句,使用finally子句将使程序结构更加清晰。finally中的代码常用来做一些清理工作以释放try子句中申请的资源。异常处理结构举例为了减少代码量,python允许把多个异常类型放到一个元组中,然后使用一个except子句同时捕捉多种异常,并共用同一段异常处理代码。总结对异常和错误的正确理解Python如何进行异常处理重点:异常处理课堂导入渗透测试工作编写渗透测试工具软件编写渗透测试工具软件Socket网络编程SocketnetworkprogrammingSocket的概念Socket的概念定义计算机之间基于TCP/IP协议进行网络通信的一套程序接口(套接字),最初由加利福尼亚大学伯克利分校研发,目前已经成为网络编程的标准,可以实现跨平台的数据传输。表示层应用层传输层会话层数据链路层网络层物理层10100001111000110011000(比特流)AH数据数据PH数据SH数据TH数据NH数据DHDH表示层应用层传输层会话层数据链路层网络层物理层数据发送进程接收进程Socket的概念Socket的概念通信协议SocketSocket复杂

调用协议栈中的协议进行通信方便统一的接口(Socket接口)去调用Socket的概念Socket套接字:应用层与TCP/IP协议簇通信的中间软件抽象层是一组接口把复杂的TCP/IP协议簇隐藏在Socket接口后面Socket的概念Socket接口网络通信组织数据调用符合指定的协议基于TCP的Socket通信模型基于UDP的Socket通信模型bind()listen()accept()recv()send()close()Socket()connect()send()recv()close()创建Socket接口监听客户端的连接绑定IP和端口接受客户端的连接接收客户端的数据向客户端发送数据关闭Socket接口向服务端请求连接向服务端发送数据接收服务端的数据关闭Socket接口Socket()创建Socket接口服务端客户端基于TCP的Socket通信模型Python中如何调用Socket套接字socket基于TCP的Socket网络编程socket.SOCK_STREAM:使用TCP协议创建Socket对象服务端用到的Socket模块方法socket.AF_INET:使用IPv4协议(socket.AF_INET6:使用IPv6协议)server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)server:返回一个Socket对象基于TCP的Socket网络编程bind_port:绑定的端口号绑定IP地址和端口号服务端用到的Socket模块方法bind_ip:绑定的IP地址server.bind((bind_ip,bind_port))这两个参数以一个元组的形式出现server.listen(client_num)绑定IP地址和端口号client_num:能够接收的客户端连接数基于TCP的Socket网络编程conn:一个新的socket对象,用来接收和发送数据接受客户端的连接请求服务端用到的Socket模块方法conn,addr=server.accept()addr:客户端的IP地址和端口号基于TCP的Socket网络编程接收到的数据data是bytes类型,需要使用data.decode()转换成字符串才能正常读取接收数据服务端用到的Socket模块方法bufsize:一次能够接收的数据块大小data=conn.recv(bufsize)基于TCP的Socket网络编程发送数据服务端用到的Socket模块方法返回值是发送字节的数量,可能未全部发送指定的内容conn.send(data)conn.sendall(data)尝试发送所有数据,成功返回None,失败抛出异常注意:发送数据data需要是bytes类型,因此如果原始数据是string类型,需要使用data.encode()转换成bytes类型才能正确发送要发送的信息关闭连接服务端用到的Socket模块方法关闭此发送接收数据的接口conn.close()server.close()关闭此次连接接口基于TCP的Socket网络编程基于TCP的Socket网络编程target_port:服务端口号客户端用到的Socket模块中的socket、send、recv方法与服务端相同。不同的是连接服务端connect方法target_ip:服务器的IP地址client.connect((target_ip,target_port))这两个参数以一个元组的形式给出Socket模块SocketSendrecvSocket()bind()listen()accept()recv()send()close()Socket()connect()send()recv()close()创建Socket接口监听客户端的连接绑定IP和端口接受客户端的连接显示客户端的地址信息显示客户端发送的信息关闭Socket接口提示用户输入信息向服务端发送信息接收服务端的信息关闭Socket接口Ok,Ihavereceivedprint(addr)print(data)接收客户端的信息向客户端发送信息print()input()创建Socket接口向服务器请求连接显示服务端的信息Hello,server!服务端Socket网络编程实例客户端多线程Multithreading课堂导入进程是程序的一次执行过程,是系统进行资源分配和调度的独立单位电脑中有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的课堂导入要想使进程中的代码真正运行起来,必须拥有至少一个能够在这个环境中运行代码的执行单元进程是“懒惰”的,本身并不是可执行单元,从来不执行任何任务线程课堂导入进程的一部分进程的实际运作单位操作系统中最小运算调度单位课程目标掌握多线程的核心概念及含义实现多线程的模块和方法知识目标学会运用多线程的逻辑思维解决问题使用标准库threading创建和管理线程对象能力目标多线程的基本概念多线程的基本概念进程主线程线程1线程2线程3线程4标准库threading是python支持多线程编程的重要模块多线程的创建和管理多线程的创建和管理继续Thread类并在派生类中重写__init__()和run()方法两种方式创建线程标准库threading创建了线程对象以后,可以调用其start()方法来启动,该方法自动调用该类对象的run()方法,此时该线程处于alive状态,直到线程的run()方法结束运行直接使用Thread类实例化一个线程对象并传递一个可调用对象作为参数多线程的创建和管理Threading主要对象成员函数和变量__init__(self,group=None,target=None,name=None,args=(),kwargs=None,verbose=None)该线程要调用的函数多线程的创建和管理Threading主要对象成员函数和变量__init__(self,group=None,target=None,name=None,args=(),kwargs=None,verbose=None)该线程的名字如果不指定默认为“Thread-N”(N为一个十进制数)多线程的创建和管理Threading主要对象成员函数和变量__init__(self,group=None,target=None,name=None,args=(),kwargs=None,verbose=None)Target(调用函数)的参数形式为元组多线程的创建和管理Threading主要对象成员函数和变量__init__(self,group=None,target=None,name=None,args=(),kwargs=None,verbose=None)以字典形式向target传入参数参数名为字典的key参数值为key对应的value多线程的实际应用多线程的应用举例一个线程对象并传递一个可调用对象作为参数运行结果方法一直接使用Thread类实例化两个线程一个进程中的线程是并发执行的,两个线程交替输出多线程的应用举例添加join方法,强制要求等待t1执行结束或者等待5秒(按照先出现的情况)再执行下面的句子运行结果改进多线程的应用举例在派生类中重写__init__()和run()方法运行结果方法二继续Thread类课程总结多线程的创建使程序的响应速度更快,因为用户界面可以在进行其它工作的同时一直处于活动状态当前没有进行处理的任务时可以将处理器时间让给其它任务多线程Multithreading进程和线程的关系线程的基础概念标准库的创建方法直接创建线程继承派生线程课堂导入各种信息收集脚本的编写方法信息收集工具自己编写脚本渗透测试信息收集目标主机知识目标DNS解析的基本方法和操作基于ICMP的主机发现,实现目标主机的信息搜集被动搜集和主动搜集的基本概念掌握信息搜集目标主机的基本概念信息搜集概述主动搜集信息搜集概述被动搜集信息搜集DNSICMP被动搜集:DNS被动搜集:DNSDNS解析通过目标网站的域名注册人信息注册时间IP地址IP查询whois查询IP查询被动搜集:DNS例2-1通过Socket库函数中的gethostbyname()获取域名所对应的IP地址。通过当前所获取到的URL去查询对应IP地址的过程查询所对应IP地址的过程Whois查询被动搜集:DNS用来查询域名的所有者信息的传输协议Whois一个数据库域名是否已经被注册注册域名的详细信息域名所有人域名注册商Whois查询被动搜集:DNSpython-whois是一个第三方模块,需要额外安装。python中的模块python-whois可用于whois查询查询的注册信息例2-2主动搜集:ICMP获得信息传递消息主机AICMP(InternetControlMessageProtocol,Internet)报文协议位于TCP/IP协议簇中的网络层的协议,其目的是用于在IP主机、路由器之间传递控制消息。基于ICMP的主机发现通过与主机进行直接交互,主动获得信息。主动搜集:ICMP主动搜集:ICMPEchoRequestREchoReply服务器A.1.2RRTA.1.2RTB/24/24差错通知当IP数据包在对方计算机处理过程中出现未知的发送错误时,ICMP会向发送者传送错误事实以及错误原因等信息。ICMP工作流程主动搜集:ICMP信息查询向目标发送一个请求数据包,如果收到了来自目标的回应,就可以判断目标是活跃的主机,否则可以判断目标是非活跃主机。发送端主机路由器1路由器2路由器4路由器5接受端主机①ICMP回送请求②ICMP回送响应ICMP工作流程主动搜集:ICMP常见的Ping命令来测试本地与目标之间的连通性目标主机Ping命令发送ICMP请求应答响应ICMP主机探测过程自己编写符合要求的脚本实现目标主机活跃性探测使用scapy模块实现Scapy是python中的一个第三方库,在Scapy库中已经实现了大量的网络协议,如TCP、UDP、IP、ARP等,使用Scapy可以灵活编写各种网络工具;ICMP主机探测过程scapy库支持几乎所有主流的网络协议,因此,用户可以根据需要先构造自己的协议数据包;构造方式为:协议名称缩写(参数),参数为协议中的各字段。主动搜集:ICMP主动搜集:ICMP在pythonIDLE中使用交互命令查看各个参数的详细信息构造好的数据包合成数据发送数据并接收返回结果主动搜集:ICMP构造一个ICMP数据包测试目标主机是否在线(3-1)交互方式,可自行输入被测试的主机的IP地址使用Scapy库创建数据包、发送数据包返回应答数据,输出相应的检测结果通过输出结果发现被访问主机在线运行结果检测:一整个网段的主机是否在线主动搜集:ICMP实现访问一个网段的功能(3-2)改进为了能够扫描一整个网段的活跃主机,使用ipaddress模块用来创建IP地址同时为了使程序员轻松编写友好的命令行界面,再加入增加参数选项argparse和多线程运行结果基于TCP和UDP的主机发现探测主机存活端口开放服务类型系统类型课堂导入被动信息搜集主动信息搜集基于ICMP的主机发现屏蔽策略基于传输层的主机发现基于TCP的主机发现基于UDP的主机发现扫描结果不正确可靠用途广知识目标掌握基于TCP的主机发现和端口状态的基本概念掌握基于UDP的主机发现的基本概念学会对应方法的脚本编写TCP探测主机存活TCP探测主机存活TCP

是一种面向连接的、可靠的传输通信协议当向目标主机直接发送ACK数据包时,如果目标主机存活,就会返回一个RST数据包以终止这个不正常的连接。发送端接收端ACK数据包RST数据包三次握手原理TCP探测主机存活发送正常的SYN数据包,如果目标主机返回SYN+ACK的数据包或RST数据包,也可以证明目标主机为存活状态。发送端接收端标有SYN数据包发你了明白(发送ACK数据包)收到数据包(发送SYN+ACK数据包)三次握手原理TCP探测主机存活利用TCP探测目标主机存活的工作原理主要依据目标主机响应数据包中flags字段。flags字段有值,表示主机存活SYNFINACKPSHRSTURGTCP探测主机存活根据以上TCP发现主机存活的原理,可编写相应的Python工具实现参数选项argparse多线程例(1-1)实验结果展示该网段里各个主机是否存活TCP探测主机存活UDP探测主机存活UDP的探测流程UDP提供无连接的网络通信服务当向目标主机发送一个UDP数据包后,目标主机不会发回任何UDP数据包目标主机处于活跃状态目标端口是关闭状态时返回一个ICMP数据包数据包的状态是unreachableUDP的探测流程根据以上UDP发现主机存活的原理,可编写相应Python工具实现UDP的探测流程相对简单例(3-1)搜集结果信息基于UDP的主机发现实现很清晰UDP的探测流程总结基于TCP的主机发现基于UDP的主机发现重点:主机发现脚本的编写TCP探测目标端口探测主机存活端口开放服务类型系统类型课堂导入被动信息搜集主动信息搜集基于ICMP的主机发现屏蔽策略基于传输层的主机发现基于TCP的主机发现基于UDP的主机发现扫描结果不正确可靠用途广知识目标掌握基于TCP的端口状态的基本概念学会对应方法的脚本编写TCP探测目标端口利用TCP-三次握手的原理向目标主机而端口发送SN教据包,自标王机的路合打开 ——返回SYN+ACK数据包自标王机的路合关闭 ——返回RST数据包根据返回的数据包类型可判断目标端口是否打开TCP探测目标端口根据以上TCP探测目标端口的原理,我们可以编写相应的Python工具进行实现测试目标端口种类不多,程序运行速度符合实验要求,未创建线程例(2-1)搜集结果信息展示目标端口的状态TCP探测目标端口服务类型识别课堂导入信息收集主机是否存活目标端口状态信息搜集的方法目标系统信息收集服务识别操作系统类型的识别知识目标掌握服务识别的基本概念学会服务识别的脚本编写服务识别入侵者——利用这些软件上的漏洞入侵目标目标主机的服务攻击者Web服务器防护墙版本信息网络安全的维护者——提前发现系统的漏洞,预防入侵行为服务识别很多扫描工具根据端口判断服务类型,因为常见的服务都会运行在固定的端口上,但利用该方式进行服务识别存在明显的缺陷:修改服务运行的端口FTP服务——运行在21号端口上HTTP服务——运行在80号端口上根据端口号来判断运行的服务不准确服务识别向目标开放的端口发送探针数据包进而确定运行的服务类型根据获取的banner信息对运行的服务类型进行判断进而可确定开放端口对应的服务类型及版本号目标主机返回的banner信息

存储总结的banner信息VS服务识别实现服务识别例(1-1)定义常用服务类型的特征库定义扫描函数,返回数据处理等设置主函数服务识别脚本顺利识别出访问端口的服务类型操作系统类型识别课堂导入信息收集主机是否存活目标端口状态信息搜集的方法目标系统信息收集服务识别操作系统类型的识别知识目标掌握操作系统类型识别的基本概念学会操作系统类型识别的脚本编写操作系统类型识别网络渗透减少不必要的测试成本缩小测试范围更精确地针对目标进行渗透测试目标主机操作系统的类型和版本操作系统类型识别操作系统类型繁多指纹识别对目标的操作系统进行猜测原理向目标主机发送一段特定的数据包判断目标主机中可能的操作系统类型分析目标主机对数据包做出的回应操作系统类型识别Windows操作系统TCP/IP实现方式不同响应数据包的内容Linux操作系统两种系统对特定格式的数据包有不同的响应结果响应时间操作系统的指纹操作系统类型识别Windows操作系统TCP/IP实现方式不同响应数据包的内容Linux操作系统两种系统对特定格式的数据包有不同的响应结果响应时间操作系统的指纹对目标主机进行ping操作后根据其返回的TTL值对系统类型进行判断Windows系统的TTL起始值为128Linux系统的TTL起始值为64且每经过一跳路由,TTL值减1运行结果:例(2-1)根据目标主机返回的响应数据包中的TTL值,可编写python程序,来判断目标系统的类型操作系统类型识别脚本调用了OS库,对比服务识别步骤较为简单通过输出结果可看到脚本顺利识别出目标系统的类型Base64编码脚本的编写信息安全课堂导入密码学编码学破译学编制密码以保守通信秘密破译密码以获取通信情报研究编制密码和破译密码的科学技术课堂导入根据明文处理方式分组密码序列密码根据密钥的使用个数非对称加密算法对称加密算法课堂导入利用python工具脚本进行检测密码学应用范广泛围介绍常见的加密算法原理通过Python脚本的方式实现对数据的加解密计算教学目标掌握Base64编/解码的原理学会Base64编/解码的脚本实现知识目标能力目标Base64编/解码的原理Base64编/解码的原理定义:由任意二进制到文本字符串的编码方法常用于在URL、Cookie、网页中传输少量二进制数据Base64Base64编/解码的原理Base64编码的图片请求的数据包被Base64编码Base64编码的数据都可利用Base64的可逆性解码二进制文件包含很多无法显示和打印的字符文本处理软件处理二进制数据二进制数据特定字符串Base64编码Base64编/解码的原理Base64编/解码的原理采用Base64的编码方式将二进制数据编码为适合放在URL中的形式垃圾信息转播者采用Base64编码的方式规避反垃圾邮件工具简短性不可读性保护敏感数据每3个8位字节编码成4个6位的字节在每个6位字节前面补充两个0,形成4个8位字节的形式将字符串中的字符换其ASCII码转换为二进制数Base64的编码规则Base64编/解码的原理将每个8位字节转换为十进制数并以对应的字符来表示(3×8=24位)(4×6=24位)

Base64的编码规则A—Z0—9a—z+,/64个字符Base64编/解码的原理Base64编/解码的原理0000000000000000末尾补0凑够24位

注意:例(1-2)Base64编/解码的原理Base64编/解码的脚本实现python中的base64库可以实现base64编码与解码。其用于编码和解码的方法有8个,两两分为4组:Base64编/解码的脚本实现专门用来编码和解码文件的,也可以StringIO里的数据做编解码encodedecode用来编码和解码字符串,并且有一个替换符号字符的功能Encodestringdecodestring用来编码和解码字符串,并且有一个替换符号字符的功能b64encodeb64decode专门对url进行base64编解码urlsafe_b64encodeurlsafe_b64decodeBase64编/解码的脚本实现编码与解码的处理对象:byte原数据str→byte编码byte→str解码字符串和Bytes互相转换方法:Base64编/解码的脚本实现encode()编码脚本解码脚本decode()总结国际解密码的详细介绍base64编/解码脚本的编写重点:base64编/解码脚本的编写DES加解密脚本的编写课堂导入计划:开发一个单独的标准密码算法保护计算机和通信数据美国国家标准局美国国家标准局课堂导入1973年NBS公开征集标准密码算法1974年NBS二次征集到一个候选算法,该算法从IBM1970年初开发出的Lucifer算法发展而来1975年3月NBS公布算法细节1976年11月DES被美国政府采纳作为联邦标准,授权在非密级的政府通信中使用1981年美国国家标准研究所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论