我们打低级别的(如县级市)CTF比赛,有时候流量分析会有一道签到题,flag会已明文或者简单编码(如16进制,base64等),这边提供一个python的脚本文件,可以批量的扫本目录的
pcapng文件,你甚至不用装Wireshark就可以找出flag.
# encoding:utf-8
import os
import os.path
import sys
import subprocess
#打印可打印字符串
def str_re(str1):
str2=""
for i in str1.decode('utf8','ignore'):
try:
#print(ord(i))
if ord(i) <= 126 and ord(i) >= 33:
str2 += i
except:
str2 += ""
#print(str2)
return str2
#写入文本函数
def txt_wt(name,txt1):
with open("output.txt","a") as f:
f.write('filename:'+name)
f.write("\n")
f.write('flag:'+txt1)
f.write("\n")
#第一次运行,清空output文件
def clear_txt():
with open("output.txt","w") as f:
print("clear output.txt")
# 递归遍历的所有文件
def file_bianli():
# 路径设置为当前目录
path = os.getcwd()
# 返回文件下的所有文件列表
file_list = []
for i, j, k in os.walk(path):
for dd in k:
#if ".py" not in dd and "output.txt" not in dd and ".zip" not in dd and ".txt" not in dd:
if ".pcapng" in dd:
file_list.append(os.path.join(i, dd))
return file_list
#查找文件中可能为flag的字符串
def flag(file_list,flag):
for i in file_list:
try:
with open(i,"rb") as f:
for j in f.readlines():
j1=str_re(j)#可打印字符串
#print j1
for k in flag:
if k in j1:
txt_wt(i, j1)
#print("filename:"+i)
print(str(flag.index(k))+":flag="+j1)
except:
print("error")
flag_txt = ['flag', '666c6167','Zmxh','f', '666C6167']
#清空输出的文本文件
clear_txt()
#遍历文件名
file_lt=file_bianli()
#查找flag关键字
flag(file_lt,flag_txt)
版权声明:本文发布于指方向抖音培训网,内容部分来源于互联网,如有侵权联系删除。