pwntool类型转换

news/2025/1/20 2:01:43/文章来源:https://www.cnblogs.com/betty-123/p/18239153

pwntools:类型转换

编码是什么?编码就是把一个字符用一个二进制来表示。

ASCII编码为例,它规定1个字节8个比特位代表1个字符的编码,也就是"00000000"这么宽,一个一个字节的解读。例如:01000001表示大写字母A,有时我们会“偷懒"的用65这个十进制来表示A在ASCII中的编码。8个比特位,可以没有重复的最多表示2的8次方(255)个字符。

bytes和str区别

回到bytes和str的身上。bytes是一种比特流,它的存在形式是01010001110这种。计算机里都是0101串,怎样显示给人看,则需解码,但因编码方式不同,对它解读也很不同。

如下用python处理编码解码问题

#字符串(str) 👉 字节流(bytes)
encoded_str=bytes('中国', encoding="utf-8")
#b'\xe4\xb8\xad\xe5\x9b\xbd'
#解释b'\xe4\xb8\xad\xe5\x9b\xbd'这种形式,开头的表示这是一个bytes类型。Xe4是十六进制的示方式,它占用1个字节的长度,因此”中文“被编码成utf-8后,我们可以数得出一共用了6个字节,每个
orencoded_str=str.encode("utf-8")#字节流(bytes) 👉 字符串(str)
decoded_str=bytes(encoded_str, encoding="utf-8")
#or
decoded_str=encoded_str.decode('utf-8')

注意:

1.字节流不支持编码(encode) , 字符串不支持解码(decode)

2.字节流数据不支持str函数的使用如split()等

总结

pwntools常用转换

hex

hex(x)x --  10进制整数返回16进制数,以字符串形式表示。

p32、p64(打包成服务器端的数据)

p32(x)x--  一个整型数据返回byte型。

u32、u64(解包)

u32(x)x--  byte型返回整型。

int类型转换

int(a,base=x)a-- 可以是byte也可以是str型x是a本身的的进制。返回10进制数,整型。

你可能有疑惑了,为什么byte型str型不是整数,却还有进制?

借鉴16进制: A表示10,B–1,C–12,D–13,E–14,F–15
int('A',base=9)#错
int('A',base=11)#对

send、sendline、recv

在pwn中,recv和send、sendline都是使用的byte型。

也就是说,我们在接收时,收到的是byte型,发送时,发送的是byte型。

from pwn import *
a='0x80489632'
print(type(a))#stra1=int(a,16)
print(a1)
print(type(a1))#intprint(hex(a1))
print(type(hex(a1)))#strprint(p32(a1))
print(type(p32(a1)))#byte
'''
a2=u32(a)
print(a2)
print(type(a2))#int
'''b=b'0x8048000'
print(type(b))#byteb1=int(b,16)
print(b1)
print(type(b1))#intprint(hex(b1))
print(type(hex(b1)))#strprint(p32(b1))
print(type(p32(b1)))#byteb=b'\xb0\x9a\t\x86\xe8\x7f\x00\x00'
'''
鉴于能够执行u32、u64的byte型数据是有要求的,我上面写的那个byte型数据b不符合要求,所以我换了一个b,只要能明白这些东西的类型转换就行,不要太纠结
'''
b2=u64(b)
print(b2)
print(type(b2))#int

字符串割片

bytes=b'The content of the address : 0xf7db9cd0\nLeave some message for me :'
#提取地址值
print(bytes.decode('utf-8').split("\n")[0][-10::])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/722076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git-jenkins阶段01 DevOps介绍, 版本控制系统, Git的安装与应用(内容对比,历史记录,恢复,分支)

1.DevOps介绍铁三角 开发 测试 运维老板的想法 产品经理的构造 开发的代码实现 测试的功能测试 运维平台构建 代码的上线开发 测试 变化 代码的更新 运维 稳定 网站能够正常运行下去2. 版本控制系统vcs 记录文件的所有的历史变化 随时…

mysql阶段04 连接工具, 连接方式, 启动关闭mysql

一、mysql连接管理 1.连接工具 1)mysql自带的连接命令 mysql#常见用于连接的参数: -u: 指定用户 mysql -uroot -p: 指定密码 mysql -uroot -p123 -h: 指定连接的主机 mysql -uroot -p123 -h10.0.0.51 -P: 指定端口 mysql -uroot …

OOP4-6次作业

OOP4-6次作业 一.前言: 1.第四次PTA: ①题目理解: 延续前面的四次PTA,只不过在此基础上进行更全面的处理,新增了其他的一些点。例如增加了多选题,的输入方式,这样,也就增加了多选题的输出方式。增加了一些填空题,对其部分正确的判断变成了一个难点,也增加了其输出的难…

第4到6次PTA大作业课后分析与反思 BLOG

前言 第4到6次大作业分为两个部分,第4次大作业是对上三次大作业的最终迭代,第5到第6次是新的大作业,是关于电路的迭代。 设计与分析 第四次大作业题目: 设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目…

ch2 信息与行为

信息与行为重点(from 裴雷)阿莱悖论(独立性) 冯诺依曼公式 贝叶斯信念 信息搜寻预期收益(大题)理性人 经济理性的两个基本假定是:自利性和极大化原则自利性:在行为选择中个体总是倾向选择对自身最具有优势的选择方案 极大化原则,也可以包括极小化原则,指个体对最大幸福…

关于第四到六次PTA作业总结

一.第四到六次PTA作业的分析 1.第四次PTA作业的分析 (1). 理解题目的需求 在编程之前,准确理解题目需求至关重要。本题中,输入格式和输出格式的细节非常多,包括各种异常情况的处理,这些都需要仔细阅读题目描述,确保理解了每一个细节。在实际操作中,我采取了以下措施: …

WebLogic XMLDecoder反序列化漏洞

有关WebLogic的XMLDecoder反序列化漏洞包括CVE-2017-3506、CVE-2017-10271、CVE-2019-2725、CVE-2019-2729等,其漏洞原理相似,差异主要在于出问题的包、黑名单过滤的标签。目录前言XMLDecoder概述XMLDecoder反序列化漏洞漏洞复现 前言 上篇复现了T3反序列化漏洞,XMLDecoder反…

第四日

4. 从前序与中序遍历序列构造二叉树 题目描述:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,nul…