python pwntools库使用指北

在做Cryptohack中迪菲赫尔曼协议部分时,题目需要我们连接到某个端口,获取和发送数据

此处应有做题记录,如果没有就是我忘了放

pwntools库可以作为我们写解题脚本的一种选择

这里只展示crypto中需要用到的功能

安装和引用

1
2
3
pip install pwntools

from pwn import *

与程序交互

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#本地交互
p = process('') #内填本地程序路径

#远程连接
r = remote( , ) #左填地址,右填端口

#发送数据
r.send(data)
r.sendline(data) #发送单行数据(末尾有换行符)

#接受数据
r.recv(data)
r.recvline(data)
r.recvuntil() #接收数据直到出现括号内分隔符
r.recvregex() #接收数据直到出现与括号内重合内容
r.clean() 清楚缓存数据

#获取shell
r.interactive() #进入交互模式

#关闭连接
r.close()

好用的小功能

1
2
3
4
5
6
7
8
#逐字节异或
xor(a,b) #a和b为两个字节串

#循环左移
rol(data,shift,bits=32) #data为要移位的整数,shift为移位的位数,bits为数据的总位数

#循环右移
ror(data,shift,bits=32)

目前只接触到这几个