CTF-Misc--处理压缩包大量文件将其转为二进制->10进制->字符串 脚本
生活随笔
收集整理的這篇文章主要介紹了
CTF-Misc--处理压缩包大量文件将其转为二进制->10进制->字符串 脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import zipfile
lis = []
result = ""
data = ""
size = 1
with zipfile.ZipFile('love.zip', 'r') as zipobj: #讀取壓縮包for file_name in zipobj.namelist(): #遍歷名稱info = zipobj.getinfo(file_name)file_name = file_name.encode('cp437').decode('gbk')lis.append([file_name,info.file_size])
# print(lis)
del lis[0]
for i in range(len(lis)): #處理文件名和數據lis[i][0] = lis[i][0].replace("out/","")lis[i][0] = lis[i][0].replace(".png", "")lis[i][0] = int(lis[i][0])if lis[i][1]==262:lis[i][1]='0'else:lis[i][1]='1'
# print(lis)
lis = sorted(lis)
# print(lis)
for i in range(len(lis)):data += lis[i][1] #數據大小if len(data)%8==0: #集齊八位二進制時result+=chr(int(data,2))data=""
with open("2.txt","w") as fp:fp.write(result)
- 先提取壓縮包內的所有文件名和文件大小
- 因為zipobj.namelist()文件列表中的文件名不是按遞增排序的,所以需要先將文件名和文件大小提取到另一個列表內
- 第一條數據是空的需要刪除
- 這個大列表內存在著許多的小列表,每個子列表代表一個文件,子列表的第一個元素是文件名稱,第二個元素是文件大小
- 因為文件名稱是以out/名稱為格式的,所以需要刪除后綴和out/字符串,保留數字后再轉換成數字類型
- 使用sorted()函數對大列表進行遞增,如果列表的元素都為列表時,默認會按每個子列表的第一個元素遞增排序
- 之后的操作就是將文件大小替換成0和1,每8位二進制就轉換成十進制,然后再從十進制轉換成ASCII碼對應的字符
- 最后把字符結果寫入文件
總結
以上是生活随笔為你收集整理的CTF-Misc--处理压缩包大量文件将其转为二进制->10进制->字符串 脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python zipfile 文件名称编
- 下一篇: 数据库SQL语句 使用DML语言 插入数