![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 57
hangshao0.0
道阻且长,行则降至。
展开
-
Python 代码实现迷宫问题(DFS 和 BFS)
虽然求最短路径更应该用 BFS ,但是本题限定了只有唯一解,所以可以使用 DFS原创 2023-03-07 13:44:15 · 1826 阅读 · 1 评论 -
Python连接PHP木马的后续分析(书接上回)
前面写的:Python连接PHP木马,并加密传输数据如果在服务器上写入最经典的那个一句话木马 ,然后传一个 命令,不进行加密,代码如下:那么抓取的流量如下:如果先进行 AES 加密,再使用 base64 编码,代码如下:那么抓取的流量如下:可以看出加密与不加密的效果对比。其实可以看到,我在 Python 代码里实现了加密,在 PHP 木马中实现了解密,因此,也就变成了 。如果仅仅通过一句话实现各种功能,同时还要实现流量的混淆该怎么做呢?那不就是蚁剑吗?(蚁剑本身是不加密的)虽然蚁剑可以通过一句话原创 2022-06-10 10:19:20 · 813 阅读 · 0 评论 -
Python连接PHP木马,并加密传输数据
前面写过两篇,但写的不多。使用python连接JSP一句话木马使用burpsuite对python的post请求进行抓包今天想起来,于是整合一下,再搞个加密。base64先是在 Linux 虚拟机里面写个 “两句话木马”。对传参进行一个 base64 解码,这就意味着在 Windows 本机上要进行一个 base64 编码。import requestsimport base64url = str(input('目标URL:')) # http://192.168.xxx.原创 2022-05-26 10:50:17 · 1830 阅读 · 1 评论 -
使用python连接JSP一句话木马
首先需要安装tomcat。去官网 http://tomcat.apache.org/ 下载对应的 Linux 版本。这里,我下载的是 apache-tomcat-8.5.70.tar.gz最好提前安装好 JDK1.8 ,因为 kali 自带的那个可能会出现一点问题。这是我遇到的问题,随手记录了一下。https://blog.csdn.net/weixin_45254208/article/details/119897865不过你也可以不重装,等出了问题再重装,万一你的电脑就没有我这种情况原创 2021-08-24 22:14:18 · 3562 阅读 · 0 评论 -
使用burpsuite对python的post请求进行抓包
目录准备好web环境测试代码测试结果使用burpsuite抓包准备好web环境Kali 中已经有 Apache 了,在 /etc 目录下 ls 即可显示出来,所以只需要进行配置就可以了。(这里用其他 Linux 或 Windows 虚拟机都行)打开 apache 服务的相关命令/etc/init.d/apache2 start (开启)/etc/init.d/apache2 restart (重启)/etc/init.d/apache2 status (查看状态)这里在 Kali原创 2021-08-21 17:33:26 · 3364 阅读 · 0 评论 -
Python实现简单的数据结构
目录单链表单向循环链表双向链表栈队列冒泡排序选择排序插入排序希尔排序快速排序归并排序单链表class SingleNode(object): """单个的节点""" def __init__(self, item): # item存放数据元素 self.item = item # next是下一个节点的标识(指针) self.next = Noneclass SingleLinkList(object): ""原创 2021-01-28 20:20:36 · 1707 阅读 · 0 评论 -
有手就行的python爬虫实战
目录爬取内容存储爬取的内容txt文本存储json文件存储csv文件存储数据库存储其他数据库存储爬取内容import requestsfrom pyquery import PyQuery as pqcategory = [] # 存储分类名称tag = [] # 存储文章标签title = [] # 存储文章标题url = 'https://www.zhihu.com/explore' # 目标URLheaders = { 'User-A原创 2021-01-14 22:18:09 · 1126 阅读 · 1 评论 -
爬虫基础回顾
前面提到过要复习一下python爬虫的知识,当然了,一些web的常识肯定也要温故一遍呀。静态网页和动态网页使用Hexo搭建的博客就是静态网页,而那些可动态解析URL参数变化,关联数据库,并且实现登陆注册功能的网页是动态网页,我们遇到的大多数网站都是动态网站。说到登录,就不得不提一下会话和Cookies,两者共同作用,才能拿到登录的凭证。会话和CookiesHTTP协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么状态,而会话和Cookies就是用来保持HTTP连接状态的。会话在服务原创 2021-01-14 22:16:50 · 950 阅读 · 0 评论 -
Python实现计算机网络课设(FTP文件传输)
我开始用socket实现FTP的文件传输,后来学习了松松的代码,不禁感慨,学习python还真的是学习模块啊,所以这里就不放socket实现的代码了。上一篇博客实现了将图片转换为字符画,在文末我提到了,接下来会把课设放到博客里,其实也就是总结一下python如何实现FTP的文件传输,现在来写一下。基础知识ftp登录链接from ftplib import FTP # 加载ftp模块ftp = FTP() # 初始化一个对象ftp.set_debuglevel(2) # 打开调试级别2,显示详细信原创 2021-01-10 16:30:53 · 1570 阅读 · 0 评论 -
使用python将图片转为字符画
学期末有个课设,要实现FTP传文件,我就想着在代码里加个“FTP”的字符画。首先输入命令pip install pillow安装相应的模块。然后通过代码实现图片向字符画的转换。from PIL import Image# 图片地址image = 'C:\\Users\hangshao\Desktop\\1.jpg'width = 60 # 宽度height = 20 # 高度ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzc原创 2021-01-10 11:29:08 · 1609 阅读 · 0 评论 -
Python使用pip安装模块(报错问题)
今天看到一位朋友被 spyder 的安装所折磨,于是突然想起来前段时间电脑出问题重装了win10系统,重装之后C盘里面,python的环境变量什么的都没了。既然如此,那就把python环境重新搞回来吧,同时装一下spyder,以前也没用过这个,正好学习一下。首先把 python3.8 和 python2.7 搞回来了,然后输入pip install spyder报错‘pip’不是内部命令,OK,那是必然的,环境变量还没搞回来呢。好的,设置完毕之后,pip install spyder又报错出现这原创 2020-11-29 22:00:33 · 4952 阅读 · 0 评论 -
Python实现简单的密码设计(基于古典密码)
想了一下,还是发出来吧。这是我们这学期的第一次密码学作业,要求用古典密码组合出一个加密算法,如果这对你来说也是作业,请记得修改。# 置换密码加密def shift_encrypt(m, key): l = len(key) c = "" for i in range(0, len(m), l): tmp_c = [""] * l if i+l > len(m): tmp_m = m[i:] else:原创 2020-11-22 20:46:50 · 5699 阅读 · 3 评论 -
SSRF浅析
CSRF与SSRF首先来说一下这两个长得这么像的东西,分别是什么,它们有什么区别?CSRF,全称为Cross-Site RequestForgery,也就是跨站请求伪造。SSRF,全称为Server Side RequestForgery,也就是服务器端请求伪造。XSS与CSRF说到CSRF,不得不提一下XSS。从名字上来看,同为跨站攻击,XSS是跨站脚本攻击,CSRF是跨站请求伪造,也就是说,CSRF攻击本不是出自用户之手,而是经过第三方恶意攻击者的处理之后,伪装成了受信任用户的“亲历亲为”。原创 2020-10-24 13:13:26 · 1457 阅读 · 0 评论 -
Python脚本-(简单置换密码的加密与解密)
看了简单移位密码加密和解密的那部分内容之后,想着自己写一遍脚本加密:def shift_encrypt(m, key): l = len(key) c = "" for i in range(0, len(m), l): tmp_c = [""] * l if i+l > len(m): tmp_m = m[i:] else: tmp_m = m[i:i+l] f原创 2020-07-30 23:03:51 · 3823 阅读 · 2 评论 -
Flask-ORM建立外键及其约束
from sqlalchemy import create_engine, and_, or_from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, Float, Text, ForeignKeyfrom sqlalchemy.orm import sessionmakerHOSTNAME = '127.0.0.1'DATABASE = 'stu原创 2020-09-12 16:41:49 · 1140 阅读 · 0 评论 -
Flask-ORM操作MYSQL(聚合函数)
查询过程中用到的聚合函数from sqlalchemy import funcfunc.count:统计行的数量func.avg:求平均值func.max:求最大值func.min:求最小值func.sum:求和实例:from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stri原创 2020-09-11 16:50:42 · 1592 阅读 · 0 评论 -
Flask-ORM操作MYSQL(实现增删改查)
首先实现增加数据的功能from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stringfrom sqlalchemy.orm import sessionmakerHOSTNAME = '127.0.0.1'DATABASE = 'student'PORT = 3306USERNAM原创 2020-09-11 15:23:30 · 1510 阅读 · 0 评论 -
Flask连接数据库(ORM操作)
Flask连接数据库from sqlalchemy import create_engineHOSTNAME = '127.0.0.1'DATABASE = 'student'PORT = 3306USERNAME = 'root'PASSWORD = 'root'# 创建数据库引擎DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)engine原创 2020-09-09 17:31:47 · 1133 阅读 · 0 评论 -
Python操作Redis-String,Redis-List
import redis# redis.StrictRedis()# r = redis.Redis(host='127.0.0.1', port=6379, db=0)# r = redis.Redis()# print(r)class StringRedis(object): def __init__(self): self.r = redis.Redis(host='127.0.0.1', port=6379, db=0) def string_set(原创 2020-07-27 16:34:12 · 875 阅读 · 0 评论 -
Python-(zip文件口令破解机)
1.创建一个加密过的zip文件和一个包含该文件密码的字典2.写一个简单的脚本来测试一下zipfile的使用方法import zipfilezFile = zipfile.ZipFile('C:/Users/Y/OneDrive/桌面/flag.zip')zFile.extractall(pwd='this_is_password')print("found it")从报错信息中,我们得知pwd参数的格式应该为bytes类型因此加上.encode('ascii')import zip原创 2020-06-12 17:17:06 · 336 阅读 · 0 评论 -
kali linux Python环境配置-(包的安装方法、工具的选择与使用)
kali linux下python的环境配置一、查看python的版本信息二、安装python软件包的三种方法pip安装手动安装eazy_install安装三、python开发工具一、查看python的版本信息Kali Linux默认已经安装了Python运行环境,运行python --version即可以查看当前Python版本二、安装python软件包的三种方法pip安装默认情况,kali2.0 也已经安装了python-pip,如果你的系统没有的话,可以使用命令apt-get instal原创 2020-06-12 10:45:04 · 12529 阅读 · 0 评论 -
Python进程实现多任务文件夹的复制
多任务文件夹复制:1 获取用户要复制的文件夹名字2 创建一个新的文件夹3 获取文件夹的所有待拷贝的文件名字4 创建进程池5 添加拷贝任务import multiprocessingimport osdef copy_file(q, file_name, new_folder_name, old_folder_name): '''完成文件拷贝''' with open(old_folder_name + "/" + file_name, "rb") as f1:原创 2020-06-07 09:43:06 · 261 阅读 · 0 评论 -
信息论与编码-python实现三种编码(香农编码,费诺编码,赫夫曼编码)
香农编码,费诺编码,赫夫曼编码(python实现)开始参考了网上其他人的代码,但后来都发现要么代码有错误,要么输出结果不符合自己的预期,于是就重新实现了一下,代码仍存在一些小问题,但是能够满足作业要求,重要的是看懂思路,然后按照自己的想法去实现代码存在的问题:香农编码和费诺编码起始的符号及其概率都已给出并且做了初步处理,有想法的可以改成用户自定义输入费诺编码的实现借助了字典和递归,但是如果初始输入的概率集中存在相同的key(也就是概率集中存在相同概率),那么字典update()方法的覆盖特性会使两原创 2020-05-15 13:30:59 · 7608 阅读 · 9 评论 -
Python-(生成由0到9组成的n位数字)
一个CTF题目需要爆破,但是呢,需要用到的爆破字典要求是4位数字组成的四位数单纯的循环输出并不能满足要求,因为4位数字都可以是0,每个四位数开头也可以是0这时,就要用到 zfill( ) 了str.zfill(width)width ---- 指定字符串的长度,原字符串右对齐,前面填充0start = int(input("请输入开始的数值:"))end = int(input("请输入结束的数值:"))num = int(input("请输入生成的位数:"))path = str(sta原创 2020-05-31 14:58:28 · 5677 阅读 · 0 评论 -
Python-(三种队列实现进程间的通信)
import multiprocessingdef download(q): """下载数据""" lis = [11, 22, 33] for item in lis: q.put(item) print("下载完成,并且保存到队列中...")def analysis(q): """数据处理""" analysis_data = list() while True: data = q.get()原创 2020-05-28 10:06:56 · 335 阅读 · 0 评论 -
Python总结-(socket编程--TCP)
流程见代码注释1.创建客户端import socketdef main(): # 创建TCP套接字 tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_ip = input("server ip:") server_port = int(input("server port:")) # 链接服务器 tcp_client.connect_ex((server_i原创 2020-05-20 15:22:16 · 273 阅读 · 0 评论 -
汉诺塔的递归与非递归(python代码实现)
递归实现def hanoi(n, a, b, c): if n == 1: print(a + '--->' + c) else: hanoi(n-1, a, c, b) print(a + '--->' + c) hanoi(n-1, b, a, c)hanoi(3, 'A', 'B', 'C')非递归实现def hanoi(n): tower_belong = [0] * n if原创 2020-05-15 15:02:37 · 4657 阅读 · 2 评论 -
Python-list实现大数相乘
def multipy(n1,n2): print(n1) print(n2) n1.reverse() n2.reverse() # n3存储结果,长为len(n1) + len(n2) n3=[] for i0 in range(len(n1)+len(n2)): n3.append(0) for i1 in range(len(n1)): for i2 in range(len(n2)):原创 2020-05-15 10:02:54 · 381 阅读 · 0 评论 -
Python总结-(socket编程--UDP)
1.创建套接字import socket'''创建套接字family=AF_INET协议族 AF_INET ipv4 AF_INET6 ipv6type=SOCK_STREAM套接字类型 TCP SOCK_STREAM 流式套接字 UDP SOCK_DGRAM 数据报套接字'''s = socket.socket(family=socket.AF_INET...原创 2020-04-30 16:07:50 · 316 阅读 · 0 评论 -
Python总结-(迭代器和生成器)
迭代在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代在Python中,迭代是通过 for … in 来完成的,而很多语言比如C或者Java,迭代是通过下标完成的Python的for语法功能非常强大,可以遍历任何可迭代的对象在Python中,list / tuple / string / dict / set /...原创 2020-04-27 12:38:31 · 241 阅读 · 0 评论 -
Python总结-(type创建类)
is有两种用法,一种是判断地址,一个是判断类型,type一样也有两个用法,一个是返回对象的类型,一个是创建类type创建类'''type(name, bases, dict) --> a new type(创建新类)'''User = type("User", (), {})obj = User()print(obj)# 添加属性User = type("User"...原创 2020-04-25 19:55:01 · 235 阅读 · 0 评论 -
Python总结-(getattr, map)
现有正方形,三角形和圆这三个类,他们求面积的方法名分别为get_area1(),get_area2(),get_area3()如果我们创建了多个对象,需要求多次面积,那么这无疑是很麻烦的,因为三个类求面积的方法名都不一样怎样解决呢?话不多说,先给出三个类# 三个类class Rectangle: def __init__(self, a, b): self.a, s...原创 2020-04-16 17:21:03 · 319 阅读 · 0 评论 -
Python总结-(类的比较)
有时我们希望自定义类的实例间可以使用<, <=, >, >=, ==, !=符号进行比较,我们自定义比较的行为比如,比较一个矩形实例和一个圆形实例我们希望它们比较的是面积from functools import total_ordering # 类对象的比较import math # 导入圆周率计算圆面积import abc # 抽象基类@total...原创 2020-04-11 20:03:45 · 425 阅读 · 0 评论 -
Python总结-(抽象基类)
抽象基类(abstract base class, abc)就是类里定义了纯虚成员函数的类。纯虚函数只提供接口,并没有具体实现。抽象基类不能被实例化,通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口在C++中,派生类需要重写基类中的所有虚函数,不然是无法创建对象的,python怎样实现抽象基类呢?class A(object): def get(self, key): ...原创 2020-04-08 14:33:46 · 1566 阅读 · 0 评论 -
Python总结-(type,isinstance 和 is)
n = 2131s = 'hangY'# type和isinstance的用法print(isinstance(n, int)) #Trueprint(isinstance(s, int)) #Falseprint(isinstance(s, str)) #Trueprint(type(n) is int) #Trueprint(type(s) is...原创 2020-04-08 13:06:09 · 444 阅读 · 0 评论 -
Python实现switch
Python中没有类似C++或者Java中的switch…case语句,可以使用多个if…elif…else进行模拟,但是这样的写法会让代码看起来很不“好看”,于是我们用字典来实现switch语句的功能,下面以PTA里的一个题目为例子吧。现在在学python,所以用python做了几道PTA的题目当作练习,python中不能用switch就是我在练习过程中才知道的。上题目上代码i = i...原创 2020-04-06 22:56:13 · 1468 阅读 · 0 评论