python技巧积累
文章目录
- 0x01 十六进制与字符串之间的转换
- 字符串转换为16进制
- 十六进制转换为字符串
- 0x02 Python将字符串转换成字典
- 0x03 Python的permutations全排列函数
- 0X04 文件处理
- 压缩包处理
- 0x05 二进制转字符串(将字符串分为n个一组)
- 0x06 python实现将ip段解析为单个ip
- 0x07 python3 的url编码
0x01 十六进制与字符串之间的转换
字符串转换为16进制
示例:将字符串flag{081bc661-d62e-48da-b898-b43c73a42182}
转换为16进制
要用到binascii模块:
pip install binascii
b2a_hex()
转换代码:
# 导入模块binascii
import binasciiflag = "flag{081bc661-d62e-48da-b898-b43c73a42182}".encode()
hex = binascii.b2a_hex(flag).decode()
print(hex)输出:666c61677b30383162633636312d643632652d343864612d623839382d6234336337336134323138327d
hexlify()
代码:
import binasciiflag = "flag{081bc661-d62e-48da-b898-b43c73a42182}".encode()
hex = binascii.hexlify(flag).decode()
print(hex)
十六进制转换为字符串
示例:将666c61677b30383162633636312d643632652d343864612d623839382d6234336337336134323138327d
转换为字符串。
unhexlify
代码;
import binasciihex = "666c61677b30383162633636312d643632652d343864612d623839382d6234336337336134323138327d"
flag = binascii.unhexlify(hex).decode()
print(flag)
a2b_hex()
代码:
import binasciihex = "666c61677b30383162633636312d643632652d343864612d623839382d6234336337336134323138327d"
flag = binascii.a2b_hex(hex).decode()
print(flag)
0x02 Python将字符串转换成字典
来自:https://www.cnblogs.com/qi-yuan-008/p/11674135.html
- ast包
import ast
user_info = '{"name" : "南湖", "gender" : "male", "age": 28}'
user_dict = ast.literal_eval(user_info)
结果如下:来自Spdyer(python 3.7)
- 通过json格式转换
import json
user_info = '{"name" : "南湖", "gender" : "male", "age": 28}' #注意:此时里面必须都是双引号,否则会报错
user_dict_2 = json.loads(user_info)
- 通过eval函数转换
user_dict_3 = eval(user_info) #
0x03 Python的permutations全排列函数
作用:
列出所有排列组合
from itertools import permutations
flag = ["{hey", "_boy", "aaaa", "s_im", "ck!}", "_baa", "aaaa", "pctf"]item = permutations(flag)
for i in item:k = ''.join(list(i))if k.startswith('pctf{hey_boys') and k[-1] == '}':print(k)
结果:
pctf{hey_boys_imaaaa_baaaaaack!}
pctf{hey_boys_imaaaaaaaa_baack!}
pctf{hey_boys_im_baaaaaaaaaack!}
pctf{hey_boys_im_baaaaaaaaaack!}
pctf{hey_boys_imaaaaaaaa_baack!}
pctf{hey_boys_imaaaa_baaaaaack!}
0X04 文件处理
压缩包处理
ctfshow红包题第一弹(zip文件处理)
大佬的
import os
import zipfiledef zips(): #处理压缩包for i in range(1,87):zip_file = zipfile.ZipFile(str(i)+'.zip')zip_list = zip_file.namelist() #获取压缩包中的文件for f in zip_list:zip_file.extract(f, './a') #将压缩文件放入‘a’文件夹下zip_file.close()def base(): #处理图片中的base64flag=""for i in range(1,87):path ="a/"+ str(i)+".jpg"num = os.path.getsize(path) #获取图片的大小f = open(path,'rb')f.seek(int(num)-100) s = f.read(100) #读取最后100个字节flag+=bytes.decode(s) f.close() f1 = open('flag.txt','w')f1.write(flag)if __name__=="__main__":zips()base()
我的
import zipfilefor i in range(1, 87):# 读取压缩包z = zipfile.ZipFile('D:\desktop/flag/' + str(i)+'.zip', 'r')# 读取压缩包内的图片内容filename = z.namelist()[0]content = str(z.read(filename))# 把base64编码部分打印出来len1 = len(content)content1 = content[len1-101:len1-1]print(content1)
核心代码:
z = zipfile.ZipFile('D:\desktop/flag/' + str(i)+'.zip', 'r')
filename = z.namelist()
for i in filename:z.extract(i,'./a')
z.close()
z = zipfile.ZipFile()
打开zip文件。
z.namelist()
获取压缩包中的文件。
z.extract(a,b)
解压文件a到目录b
0x05 二进制转字符串(将字符串分为n个一组)
the_bin处输入要转换的二进制
# coding:utf-8# 换成要转换的二进制
the_bin = "0101100001001101010000010100111001111011001110010011011000110101001101110011010101100010011001010110010101100100001101000110010001100101011000010011000100111000011001000110010101100100001101000011011100110011001101010011011000110100001100110110000101100101011000110110011001100001001100110011010101111101"
flag = ""
n = 8
def binToAsc(tgtasc):try:bin_to_dec = int(tgtasc, 2)dec_to_asc = chr(bin_to_dec)return dec_to_ascexcept Exception as e:return eif len(the_bin) % 8 == 0:strs = [the_bin[i:i+n] for i in range(0, len(the_bin), n)]for i in strs:# print(i)flag += binToAsc(i)print("[+] "+flag)
else:print("[-] 转换失败,位数不对")
原理,将二进制分为8位一组,这个方法学习自:python – 每隔第n个字符拆分字符串?
>>> strs = "abcdefghijklmnopq"
>>> n = 8
>>> [strs[i:i+n] for i in range(0, len(strs), n)]
['abcdefgh', 'ijklmnop', 'q']
然后int函数将每一组八位二进制转换为十进制,再利用chr将ascii码转换为对应字符
>>> int("01011000", 2)
88
>>> chr(88)
'X'
运行效果
0x06 python实现将ip段解析为单个ip
https://blog.csdn.net/sakura_ll/article/details/106568139
0x07 python3 的url编码
- 导入urllib.parse模块,其中quote为编码,unquote为解码。
- 且下面代码的’utf-8’可不写,因为默认以utf-8格式使用的;也可以传入其他编码格式使用(根据需求编写)。
from urllib.parse import quote, unquotetext1 = "丽江"
print("text1结果为:" + quote(text1, 'utf-8'))text2 = "%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98"print("text1结果为:" + unquote(text2, 'utf-8'))'''
输出结果为:
text1结果为:%E4%B8%BD%E6%B1%9F
text1结果为:数据挖掘
'''
python技巧积累相关推荐
- python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...
日常工作几乎离不python.一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家.这些技巧将根据其首字母按A-Z的顺序进行展示. Python相关学习资料获取方式:转发文章+关注私 ...
- 你与数据科学家只差这26条python技巧
戳蓝字"CSDN云计算"关注我们哦! 作者 | Peter Gleeson 来源 | Python数据科学 编译 | wLsq Python是目前世界上最流行的编程语言之一.因为: ...
- 6个超酷的 Python 技巧
欢迎关注 "小白玩转Python",发现更多 "有趣" 近年来,数据科学经历了巨大的发展.作为数据科学领域中最常用的编程语言,Python 也越来越受欢迎. 在 ...
- 程序员必知的20个Python技巧
作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...
- 你需要知道的20个常用的Python技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 Python的可读性和简单性是其广受 ...
- python%20语言 20培训_Python语言学习之20个值得学习的Python技巧
点击蓝字获取更多精彩信息 1.字符串反转 使用切片反转字符串. str1="qwert" rev_str1=str1[::-1] #输出 # trewq 2.使首字母 ...
- 【python技巧】“”、“”等符号操作
[python技巧] 1)[关于'&' :按照二进制进行与操作,可以用作判断奇偶][https://zhidao.baidu.com/question/308587899.html] & ...
- 离散度计算公式 python_被多种离散化场景困扰?8种python技巧!让数据处理更简单...
前言 python数据处理与分析学习过程中,需要有这样的一种意识,即元"为什么选择了python而不是其他?"既然选择了python,那么在实际应用中,它到底哪里不一样?大家说的方 ...
- python大型项目经验_经验丰富程序员才知道的8种高级Python技巧
全文共2330字,预计学习时长11分钟 图源:unsplash 本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排 ...
- python初学者_面向初学者的20种重要的Python技巧
python初学者 Python is among the most widely used market programming languages in the world. This is be ...
最新文章
- html支持1080p,1080p完美支持
- DRAM、SRAM、SDRAM、DDRSDRAM的区别
- 【AI不惑境】网络的宽度如何影响深度学习模型的性能?
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类...
- lnmp 一键安装包部署ThinkPHP5
- 2022年软考信息安全工程师考试备考指南
- 解决CentOS出现“No package redis available“提示问题
- 文件系统在NVMe SSD上的性能表现分析
- mysql 存储过程代码_mysql存储过程语法与实例
- 163 Blog试用有感
- 编写java格式_编写Java程序打印个人信息,个人信息格式如下:
- Android 最新所有框架
- snaker并行任务示例
- zblog php wordpress,ZblogPHP转换WordPress教程
- 软件完整开发过程,以及项目的部署(精简)
- JAVA学习路线图 【黑马版】
- 【产品】设计时可用到的认知偏差与效应
- 在网页版 BOSS直聘 上实现 批量打招呼,发信息等操作
- 顺丰和百度外卖绯闻内幕披露
- fleury MATLAB,数学建模部分源码分享
热门文章
- 去掉百度地图API左下角的百度LOGO方法
- 互联网广告算法和系统实践-读书笔记
- 微信第三方服务商更新ticket时,aes解密失败
- 计算机中桌面中不显示U盘图标,电脑桌面右下角不能显示u盘图标解决方法
- 两表联合查询,求TOP100商品。。。。。。。。。。感激不尽!
- 好的vue框架-模板
- Android.Oldboot.1,腾讯手机管家发布全球首款可根除Oldboot病毒专杀
- 《人生十论》. 钱穆
- java文件输入流FileInputStream
- cad.net cad启动慢? cad2008启动慢? cad启动延迟? cad卡住? cad98%卡? 默认打印机!!