日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTF-Misc--处理压缩包大量文件将其转为二进制->10进制->字符串 脚本

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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进制->字符串 脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。