Python工具和包
解包PyInstaller#
pip install --upgrade pydumpck
pydumpck Py.exe
即可递归解包所有模块、程序
如果未生效,就用下面的办法:
PyInstaller Extractor 解包出 pyc,然后 在线Python pyc文件编译与反编译 (lddgo.net)
使用方法
python pyinstxtractor.py Py.exe .\pycdc.exe .\PyLu.pyc > PyLu.py
有个 pylingual 这个也很不错,解包 pyc 的
常用函数#
n = 123
hex(n) # 0x7b
hex(n)[2:] # 7b
bin(n) # 0b1111011
chr(n) # {
ord('{') # 123
all([true, true, false]) # false
any([true, false, false]) # true
enumerate()
map()
格式化输出#
print("{:x} {:x}".format(12345,123456)) # 3039 1e240
print("%02X" % 0xa) # 和 C 的格式化参数一样,0A
u 码转换#
s = "\\u6700\\u5927\\u6b63\\u6570"
print(s.encode().decode('unicode-escape')) # 输出:最大正数
Crypto#
pip install pycryptodome z3-solver
bytes相关#
from Crypto.Util.number import bytes_to_long, long_to_bytes
from Crypto.Util.strxor import strxor
bytes.fromhex('7b') # b'{'
bytes([n]).hex() # 7b
bytearray.fromhex('7bab')
加密/解密相关#
from string import printable # 可打印字符集
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
print("c1 =", AES.new(key=key, nonce=iv,
mode=AES.MODE_CTR).encrypt(pad(flag.encode(), 16)))
MD5#
r = "HelloWorld"
import hashlib
print(hashlib.md5(r.encode()).hexdigest())
解方程#
z3一把梭
Introduction | Online Z3 Guide (microsoft.github.io)
import z3
solver = z3.Solver()
flag = [z3.Int("i_%s" % (i+1)) for i in range(32)]
solver.add()
print(solver.check())
m = solver.model()
print(m)
simplify(solver.assertions()[47]) # 打印出简化的表达式
C++的z3
参考
- Release z3-4.13.0 · Z3Prover/z3 (github.com) 下载 z3-4.13.0-x64-win.zip
- 在项目中添加三个文件夹,分别为include、lib、bin
- 将 zip 中的
include
所有头文件、libz3.lib
、libz3.dll
分别放进上面的文件夹 - 新建VS c++ 项目,右键解决方案,属性
- VC++目录---->包含目录 下拉 edit ---> 添加
$(ProjectDir)include
- VC++目录---->库目录 下拉 edit ---> 添加
$(ProjectDir)lib
- 调试 --->环境 设置 edit ---> 添加
PATH=$(ProjectDir)bin
- Linker ---> General ---> Additional Library Directories ---> 添加
$(ProjectDir)lib
- VC++目录---->包含目录 下拉 edit ---> 添加
- 在cpp源文件加上
#pragma comment (lib, "libz3.lib")
图形处理#
pip install opencv-contrib-python easyocr
import easyocr
# 创建reader对象
reader = easyocr.Reader(['en'],gpu=False, model_storage_directory="./Model") result = reader.readtext(f'./data2/{i}.jpg')
# 导入所有必要的库
import cv2
import os
# 从指定的路径读取视频
cam = cv2.VideoCapture( "./iGotSmokynomial.mp4" )
try :
# 创建名为data的文件夹
if not os.path.exists( 'data' ):
os.makedirs( 'data' )
# 如果未创建,则引发错误
except OSError:
print ( 'Error: Creating directory of data' )
# frame
currentframe = 0
count = 0
while ( True ):
# reading from frame
ret, frame = cam.read()
if ret:
# 如果视频仍然存在,继续创建图像
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
white_pixel_count = cv2.countNonZero(gray_frame)
total_pixels = frame.shape[0] * frame.shape[1]
# 写入提取的图像
if white_pixel_count > (0.99 * total_pixels):
name = './data/' + str (count) + '.jpg'
cv2.imwrite(name, gray_frame)
count += 1
# 增加计数器,以便显示创建了多少帧
currentframe += 1
else :
break
# 一旦完成释放所有的空间和窗口
cam.release()
cv2.destroyAllWindows()
ipython#
增强版交互式python,可以显示更多信息
pip install ipython
ipython