02 2018 档案
摘要:封装的redis_config Redis发布端 Redis订阅端 运行结果 也可以直接通过redis发布消息
阅读全文
摘要:首先开启redis的外连 把bind 127.0.0.1这行注释掉 然后重启redis 这样ubuntu的redis本机就可以连接了 连接并操作 运行结果 ubuntu上redis的结果 连接池 python操作redis,操作一次就请求一次连接,操作完成就断开连接,连接池把redis的连接请求放入
阅读全文
摘要:集合为不重复的列表 无序集合 sadd(name,values):在name对应的集合中添加元素 smembers(name):获取name对应的集合的所有成员 scard(name):获取name对应的集合中元素个数 sdiff(keys, *args):在第一个name对应的集合中且不在其他na
阅读全文
摘要:Redis列表是简单的字符串列表,一个列表可以包含超过40亿个元素 lpush(name,values):在name对应的list中添加元素,每个新的元素都添加到列表的最左边 rpush(name, values):在name对应的list中添加元素,每个新的元素都添加到列表的最右边 lrange(
阅读全文
摘要:Redis的hash是一个string类型的field和value的映射表,特别适合用于存储对象,每个hash可以存储40多亿键值对 hset(name, key, value):创建一个name的类别,类别里创建key-value键值对,如果已经存在就修改 hgetall(name):获取name
阅读全文
摘要:Ubuntu安装Redis get(key):获取key中的值 keys *:获取全部的key del(key):删除指定的key set(key, value, ex=None, px=None, nx=False, xx=False):设置值,不存在则创建,存在则覆盖 ex为值的过期时间,单位为
阅读全文
摘要:客户端通过发送命令来调用服务端的某些服务,服务端把结果再返回给客户端 这样使得RabbitMQ的消息发送端和接收端都能发送消息 返回结果的时候需要指定另一个队列 服务器端 客户端 开启一个客户端和一个服务端 执行结果: 服务器端 客户端
阅读全文
摘要:RabbitMQ消息队列的发布与订阅类似于广播,一端发送消息,多个客户端可以同时接收到消息 fanout:所有绑定到exchange的queue都可以接收消息 消息发布端 消息订阅端 消息发布端需要在消息订阅端运行之后运行,不然消息订阅端收不到消息 开启3个消息订阅端和一个消息发布端 消息发布端发布
阅读全文
摘要:python中的线程queue可以实现不同线程间的通信,进程queue可以实现python不同进程间的通信 RabbitMQ消息队列就相当于中间人,可以实现独立进程间的通信,也可以实现在不同编程语言中进行通信 windows环境下安装完成RabbitMQ后,输入cmd命令services.msc,然
阅读全文
摘要:元组为不可改变的列表,元组只有两个方法,一个count(),一个index() 定义一个元组 元组中值的查询 count()获取元组中某个元素的个数 index()获取元组中某个元素的索引 元组里面的元素是不可以修改的,但是如果元素是可修改的数据类型就能修改,如列表
阅读全文
摘要:列表的生成 列表中值的查询 列表中值的个数 列表的切片 给列表插入数据 修改列表中的数据 删除列表中的值 循环列表 列表排序 列表的拼接 列表的复制 清空列表
阅读全文
摘要:select实现socket server多并发服务器端 客户端 selector模块 selector模块可以使用select和epoll,它会根据所处的平台来选出最适合的I/O多路复用机制,在windows下为select,在linux下为epoll 通过selector模块实现单线程上万并发的
阅读全文
摘要:事件驱动模型:有个事件队列,把事件放到队列里,然后循环这个队列,取出事件执行 5种IO模式: 阻塞 I/O(blocking IO) 非阻塞 I/O(nonblocking IO) I/O 多路复用(IO multiplexing) 信号驱动 I/O(signal driven IO) 异步 I/O
阅读全文
摘要:关于ms17_010,可参考http://www.cnblogs.com/sch01ar/p/7672454.html 目标IP:192.168.220.139 本机IP:192.168.220.145 运行结果 通过生成.rc的文件,把相关的msf命令写入,然后通过msf调用.rc的文件
阅读全文
摘要:首先要安装python-nmap库,还要安装配置好nmap 实验机器IP:192.168.220.139 端口开放情况 代码 nmap.PortScanner()中的nmap_search_path参数后要跟上nmap的绝对路径,才能成功执行 运行结果 filtered为端口被防火墙 IDS/IPS
阅读全文
摘要:实验机器IP:192.168.220.139,端口开放情况 代码 运行结果
阅读全文
摘要:break用于完全结束一个循环,跳出循环体,执行循环后面的语句 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" count = 0 while count <=10: print('loop',count) if count == 4: brea
阅读全文
摘要:建立一个SocketServer,首先要创建一个请求处理类,这个类要继承BaseRequestHandler,还要重写父类里handle()方法,handle()方法在父类中为空的 然后实例化TCPServer,并且传递server ip和创建的请求处理类给这个TCPServer 服务器端 客户端
阅读全文
摘要:datetime.datetime.now() 返回当前的datetime日期类型 datetime.date.fromtimestamp() 把一个时间戳转为datetime日期类型 datetime.timedelta:表示时间间隔,即两个时间点之间的长度
阅读全文
摘要:time.time():返回当前时间的时间戳 time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数如果未提供,则以当前时间为准 time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为
阅读全文
摘要:logging模块记录日志有四个主要类:logger,handler,formatter,filter logger提供了应用程序可以直接使用的接口,每个程序在输出信息之前都要获得一个Logger handler将(logger创建的)日志记录发送到合适的目的输出,handler可以把信息输出到控制
阅读全文
摘要:logging模块用来写日志文件 有5个级别,debug(),info(),warning(),error()和critical(),级别最高的为critical() debug()为调试模式,info()为正常情况下的信息,warning()为警告,error()为错误,critical()为严重
阅读全文
摘要:shelve模块也是用来序列化的,可以持久化任何pickle可支持的python数据格式,比pickle好用,也是python专属,可以dump多次数据,也可以直接修改数据 序列化 生成了三个文件 反序列化 运行结果
阅读全文
摘要:sys.version 获取Python解释程序的版本信息 sys.platform 返回操作系统平台名称 sys.getrecursionlimit() #获取最大递归层数 sys.setrecursionlimit() #设置最大递归层数 sys.getdefaultencoding() #获取
阅读全文
摘要:chardet模块用来获取文件的编码 运行结果 以字典形式返回结果 编码为GB2312,对结果正确的把握为78%左右,语言为中文
阅读全文
摘要:首先看一个简单的条件判断语句 a的值为3,b的值为6,如果a的值大于b的值,c的值就等于a的值,否则c的值为1 运行结果 这4行条件判断语句,用一行语句就可以了 如果a的值大于b的值,则c的值为a的值,否则c的值为1 运行结果
阅读全文
摘要:configparse模块用来解析配置文件 配置文件 读取解析配置文件 运行结果 删除添加修改等操作
阅读全文
摘要:re正则匹配,如果没有匹配到就返回None,匹配结果加上.group()就会以字符串形式返回匹配结果 re的匹配语法 re的匹配语法 re.match() 从头开始匹配 只能从左边第一个开始匹配 re.search() 匹配包含 从字符串中的任意位置开始匹配 re.match()和re.search
阅读全文
摘要:服务器端要先根据客户端要下载的文件进行判断是否存在,还要根据文件大小来进行传送,最后还要比对文件的md5值来判断传送的文件是否正确,通过判断剩余字节来解决粘包问题 服务器端 客户端 运行结果 服务器端 文件传输结果
阅读全文
摘要:对字符串的内容进行判断,返回布尔类型 字符串的分割 运行结果 字符串的格式化 运行结果 字符串的索引操作 运行结果 字符串大小写的操作 运行结果 字符串的填充 运行结果 字符串的计算 运行结果 删除字符串的空格和换行符 运行结果 字符串的替换 运行结果 字符串的连接 运行结果
阅读全文
摘要:默认参数 默认参数 set_defaults()可以设置一些参数的默认值 解析器级别的默认值会覆盖参数级别的默认值 get_defaults()方法可以获取add_argument()和set_defaults()中设置的默认值 参数部分使用 参数部分使用 如果脚本只使用所传参数中的几个参数,要把其
阅读全文
摘要:只需用while条件判断来实现 服务器端 客户端 运行结果 服务器端结果
阅读全文
摘要:协程又称微线程,在单线程里多并发 协程修改同一份数据可以不用加锁 协程拥有自己的寄存器上下文和栈,协程遇到IO操作就会自动切换到其它协程,协程切换时,会保留上一次调用时的状态,协程切换回来的时候,就会恢复先前保留的状态继续运行 运行结果 遇到IO操作就切换,但是还是没有自动地进行io切换 运行结果
阅读全文
摘要:会话对象 会话对象 会话对象能够跨请求保持某些参数。 它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。 所以如果向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。 会话
阅读全文
摘要:参数组 参数组 默认情况下,当显示帮助消息时,ArgumentParser将命令行参数分组为“位置参数”和“可选参数”。 当比这个默认参数有更好的参数概念分组时,可以使用add_argument_group()方法创建适当的组: add_argument_group()方法返回一个参数组对象,它具有
阅读全文
摘要:使用requests模块请求一个证书无效的网站的话会直接报错 可以设置verify参数为False解决这个问题 但是设置verify=False会抛出一个InsecureRequestWarning的警告 这样看起来很不好 解决办法: 运行结果 成功消除了警告
阅读全文
摘要:判断mysql网站是否存在注入漏洞的几个方法: 注入点后加上一个单引号会报错 and 1=1返回正常页面,and 1=2返回的页面不同于正常页面 and sleep(3) 网页会等待3秒左右 根据返回的页面情况我们就能知道是否存在注入漏洞 要获取页面返回的结果是不是一样的,我们可以通过获取请求头中的
阅读全文
摘要:需要安装pillow,tesseract-ocr,tesseract库 tesseract-ocr需要去下载exe安装,然后要配置环境变量 要识别的验证码为 运行结果 识别成功
阅读全文
摘要:requests不是python自带的,使用前需要安装 发送请求 发送请求 HTTP请求类型有GET,POST,PUT,DELETE,HEAD和OPTIONS 使用requests发送请求的方法如下: 传递URL参数 传递URL参数 params参数会对传入的参数进行拼接处理 通常使用params传
阅读全文
摘要:pickle是python的数据交互,把数据进行序列化,需要的时候再进行读取 pickle序列化 生成的文件 一些乱七八糟的数据 pickle反序列化 运行结果 pickle序列化不仅可以存储数据,还能存储函数 pickle反序列化可以调用反序列化的函数,只要函数名相同就可以,内容不一定要相同
阅读全文
摘要:json方便不同的编程语言间进行数据的交互 json序列化 对数据进行json序列化处理 生成的json数据文件 json反序列化 对生成的json.txt进行反序列化读取数据 运行结果 在Python2中能dump和load多次,在Python3中能dump多次,但不能load多次
阅读全文
摘要:字符串,列表,元组,字典,集合,生成器这些能通过for循环来遍历的数据类型都是可迭代对象 可通过isinstance判断是不是可迭代对象 isinstance也可以判断是不是迭代器 可见可迭代对象不一定是迭代器,但迭代器是可迭代对象 如果要把可迭代对象变为迭代器,可以使用iter()方法 迭代器可以
阅读全文
摘要:首先看一下什么是列表生成式 这一句代码就实现了三句代码的效果,这一句代码就是列表生成式 列表如果存的数据太多,就会占用很大的存储空间 如果只取列表中的一些数据,那么其它不用的数据占用的存储空间就白占了 生成器也能存储数据,但是它只记录当前数据,剩下的数据都还没生成,这样就不会占用太多的存储空间 怎么
阅读全文
摘要:如果多个函数想通过一个装饰器来实现不同的功能的话,可以给装饰器传入参数,让装饰器里的函数对参数进行判断,来实现不同的功能 运行结果
阅读全文
摘要:如果给被装饰器装饰的函数传递参数的话,需要在装饰器里修改 运行结果 但是有两个或者多个被装饰的函数需要传递参数的话,这种情况就不太方便了 所以可以直接用*args和**kwargs,不管被装饰的函数有几个,传递的参数有多少,不管是什么类型的参数 运行结果
阅读全文
摘要:装饰器通过函数来定义,用来装饰函数 装饰器的结构为高阶函数和内嵌函数 装饰器不改变被装饰函数的源代码和运行方式 如何实现这个效果呢? 既没有改变被装饰函数的源代码,也没有改变它的运行方式 运行 这么写有些复杂,可以直接在函数前调用装饰器 调用装饰器的格式为:@装饰器名 运行 执行过程: 先走test
阅读全文
摘要:函数就是变量,定义一个函数就是把一个函数体赋值给一个函数名,函数和变量的回收机制也是一样的 匿名函数不需要指定函数名,只需要有函数体,然后把这个函数体赋给一个变量 Python中使用lambda来创建匿名函数,lambda的主体是一个表达式 运行结果
阅读全文
摘要:嵌套函数就是在一个函数里再嵌套一个或多个函数 运行结果 如果要修改嵌套作用域中的变量,则需要nonlocal关键字 运行结果
阅读全文
摘要:项目地址:https://github.com/UltimateHackers/Striker 首先下载项目,并打开 然后安装所需的库 安装完成后运行脚本 输入目标站,回车 脚本首先对网站的信息进行检测 然后查询whois 端口查询 还有DNS和漏洞方面的检测
阅读全文