文章目录

  • 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

  1. ast包
import ast
user_info = '{"name" : "南湖", "gender" : "male", "age": 28}'
user_dict = ast.literal_eval(user_info)

结果如下:来自Spdyer(python 3.7)

  1. 通过json格式转换
import json
user_info = '{"name" : "南湖", "gender" : "male", "age": 28}' #注意:此时里面必须都是双引号,否则会报错
user_dict_2 = json.loads(user_info)
  1. 通过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技巧积累相关推荐

  1. python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...

    日常工作几乎离不python.一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家.这些技巧将根据其首字母按A-Z的顺序进行展示. Python相关学习资料获取方式:转发文章+关注私 ...

  2. 你与数据科学家只差这26条python技巧

    戳蓝字"CSDN云计算"关注我们哦! 作者 | Peter Gleeson 来源 | Python数据科学 编译 | wLsq Python是目前世界上最流行的编程语言之一.因为: ...

  3. 6个超酷的 Python 技巧

    欢迎关注 "小白玩转Python",发现更多 "有趣" 近年来,数据科学经历了巨大的发展.作为数据科学领域中最常用的编程语言,Python 也越来越受欢迎. 在 ...

  4. 程序员必知的20个Python技巧

    作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...

  5. 你需要知道的20个常用的Python技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 Python的可读性和简单性是其广受 ...

  6. python%20语言 20培训_Python语言学习之20个值得学习的Python技巧

    点击蓝字获取更多精彩信息 1.字符串反转 使用切片反转字符串. str1="qwert"   rev_str1=str1[::-1]   #输出    # trewq 2.使首字母 ...

  7. 【python技巧】“”、“”等符号操作

    [python技巧] 1)[关于'&' :按照二进制进行与操作,可以用作判断奇偶][https://zhidao.baidu.com/question/308587899.html] & ...

  8. 离散度计算公式 python_被多种离散化场景困扰?8种python技巧!让数据处理更简单...

    前言 python数据处理与分析学习过程中,需要有这样的一种意识,即元"为什么选择了python而不是其他?"既然选择了python,那么在实际应用中,它到底哪里不一样?大家说的方 ...

  9. python大型项目经验_经验丰富程序员才知道的8种高级Python技巧

    全文共2330字,预计学习时长11分钟 图源:unsplash 本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排 ...

  10. python初学者_面向初学者的20种重要的Python技巧

    python初学者 Python is among the most widely used market programming languages in the world. This is be ...

最新文章

  1. html支持1080p,1080p完美支持
  2. DRAM、SRAM、SDRAM、DDRSDRAM的区别
  3. 【AI不惑境】网络的宽度如何影响深度学习模型的性能?
  4. Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类...
  5. lnmp 一键安装包部署ThinkPHP5
  6. 2022年软考信息安全工程师考试备考指南
  7. 解决CentOS出现“No package redis available“提示问题
  8. 文件系统在NVMe SSD上的性能表现分析
  9. mysql 存储过程代码_mysql存储过程语法与实例
  10. 163 Blog试用有感
  11. 编写java格式_编写Java程序打印个人信息,个人信息格式如下:
  12. Android 最新所有框架
  13. snaker并行任务示例
  14. zblog php wordpress,ZblogPHP转换WordPress教程
  15. 软件完整开发过程,以及项目的部署(精简)
  16. JAVA学习路线图 【黑马版】
  17. 【产品】设计时可用到的认知偏差与效应
  18. 在网页版 BOSS直聘 上实现 批量打招呼,发信息等操作
  19. 顺丰和百度外卖绯闻内幕披露
  20. fleury MATLAB,数学建模部分源码分享

热门文章

  1. 去掉百度地图API左下角的百度LOGO方法
  2. 互联网广告算法和系统实践-读书笔记
  3. 微信第三方服务商更新ticket时,aes解密失败
  4. 计算机中桌面中不显示U盘图标,电脑桌面右下角不能显示u盘图标解决方法
  5. 两表联合查询,求TOP100商品。。。。。。。。。。感激不尽!
  6. 好的vue框架-模板
  7. Android.Oldboot.1,腾讯手机管家发布全球首款可根除Oldboot病毒专杀
  8. 《人生十论》. 钱穆
  9. java文件输入流FileInputStream
  10. cad.net cad启动慢? cad2008启动慢? cad启动延迟? cad卡住? cad98%卡? 默认打印机!!