最近因为log4j漏洞,工作量急剧增加,卑微小乙没日没夜地进行应急处理,为了能测试是否能检测到log4j攻击,我专门写了一个脚本,当然这个脚本也不只是检测log4j,只要是pcap包放在指定目录下则可以重放。

我写脚本的时候总喜欢先确认功能点,毕竟这是我们写代码的前提了。
功能点:将指定目录中所有pcap文件全部找出重放
1,找到指定目录(pcaps)中所有pcap文件

def find_pcap(dir,filelist):for i in os.listdir(dir):#将目录下所有内容拉出来判断path = os.path.join(dir,i)#拼接单个内容和路径if os.path.isfile(path):#判断path是否是文件if os.path.splitext(path)[1] == '.pcap':#判断是否是pcap文件filelist.append(path)#将pcap文件添加到filelist表中elif os.path.isdir(path):#判断是否是目录newdir = path#拼接成新的目录路径find_pcap(newdir,filelist)#递归再次寻找pcap文件return filelist#返回最终获取到的pcap表

2,将pcap文件全部重放

#这里直接调用了系统自带的tcpreplay工具
def run_pcap(pcap,net_card):tmp_pcap = os.path.splitext(os.path.basename(pcap))[0]#提取出文件名print("[+] 正在重放%s" % tmp_pcap)#提示正在重放文件名os.system('tcpreplay -i %s -x 3.0 -K %s ' % (net_card,pcap))#拼接命令net_card是网卡,pcap是文件

主要功能点已经写出来了,那么剩下的就是一些优化代码:
1,加入重放日志,以便排查
2,利用多线程的方式,可以同时重放pcap包
3,判断目录是否存在pcap文件
4,将输出的字体以颜色来显示高亮
5,指定重放pcaps目录中的某个或多个目录中的pcap

代码

import sys
import os
import os.path
import threading
#导入sys(获取输入的值),os(运行系统命令).os.path(运行系统文件操作),threading(多线程)模块def find_pcap(dir,filelist):for i in os.listdir(dir):#将目录下所有内容拉出来判断path = os.path.join(dir,i)#拼接单个内容和路径if os.path.isfile(path):#判断path是否是文件if os.path.splitext(path)[1] == '.pcap':#判断是否是pcap文件filelist.append(path)#将pcap文件添加到filelist表中elif os.path.isdir(path):#判断是否是目录newdir = path#拼接成新的目录路径find_pcap(newdir,filelist)#递归再次寻找pcap文件return filelist#返回最终获取到的pcap表def run_pcap(pcap,net_card):tmp_pcap = os.path.splitext(os.path.basename(pcap))[0]#提取出文件名print("\033[1;32;40m[+] 正在重放%s\033[0m" % tmp_pcap)#提示正在重放文件名os.system('touch %s%s.log' % (log_dir,tmp_pcap))#创建log文件file_log = log_dir + tmp_pcap#拼接log路径os.system('tcpreplay -i %s -x 3.0 -K %s > %s.log 2>&1' % (net_card,pcap,file_log))#拼接命令net_card是网卡,pcap是文件def main():global current_dir,file_dir,log_dir,filelist#将目录以及pcap列表都设置为全局变量current_dir = os.getcwd()#获取当前目录file_dir = os.path.join(current_dir,'pcaps/')#获取pcaps目录log_dir = os.path.join(os.getcwd(),'log/')#获取日志目录filelist = []#初始化pcap表if len(sys.argv) >= 2:#判断用户是否输入目录名称for i in range(1,len(sys.argv)):#将输入的目录依次执行以下操作path = sys.argv[i]#获取目录名称choice_file_dir = os.path.join(file_dir,path)#拼接目录try:find_pcap(choice_file_dir, filelist)#尝试获取指定目录下的pcap文件except:print("\033[1;31;40m[-] 运行失败,请检查是否将目录放在pcaps目录中!\033[0m")#如果出现报错,则检查是否是输入有问题或目录是否不存在exit(0)#退出程序else:print("\033[1;34m[*] 未选择目录,默认重放pcaps目录下所有pcap包\033[0m")#如果没有输入指令,则将pcaps目录下所有pcap文件重放find_pcap(file_dir,filelist)#获取所有pcap文件if len(filelist) == 0:#如果pcaps中没有pcap文件则退出程序print("\033[1;31;40m[-] 运行失败,请检查是否将文件或目录放在pcaps目录中!\033[0m")exit(0)else:net_card = input("请输入重放数据包的网卡名称:")#输入从哪个网卡发送流量包#设置多线程重放for i in choice_file:t = threading.Thread(target=pcap_poc, args=(i,log_dir,net_card))t.start()print("\033[1;34m[*]如有pcap未重放,可以在log/xxx.log查看重放信息\033[0m")if __name__ == "__main__":main()

所需目录

实验截图

未指定目录

指定目录

查看log文件

Python安全工具编写-pcap流量包重放相关推荐

  1. 2021-09-28 网安实验-取证分析-Pcap流量包取证

    相关知识 关于wireshark Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用W ...

  2. wireshark提取流量包中的文件_返璞归真——流量中提取文件的五种方法

    0×00  简介 本期主要会教大家如何从流量中还原出来文件.下面我将会用5种办法来讲解. 0×01  网络流量提取文件(方法1) 1.  安装依赖 Default yum install -y lib ...

  3. 数据流量包-Python辅助分析脚本

    流量包往往大而繁杂,所以编写了该Python脚本辅助. 需用Linux环境,因为调用了Tcpdump.将该脚本放入pcap数据包的目录中运行,可以输入1-4. 1可以批量改名,3批量过滤,4将包合成  ...

  4. MISC:流量包取证(pcap文件修复、协议分析、数据提取)

    文章目录 1.流量包修复 2.协议分析 2.1 wireshark基本操作 2.2 一些例题(各种协议) 3.数据提取 1.流量包修复 这个方向的考点较少 当我们用 wireshark 打开流量包时, ...

  5. python软件怎么使用-Python快速入门—如何选择使用包管理工具?

    原标题:Python快速入门-如何选择使用包管理工具? 源 | cnblogs文 | 包子 在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序. 例如,很多时候Python开发 ...

  6. python自动化脚本编写教程_开发工具pycharm写第一个Python自动化程序案例|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...

  7. python离线安装pip.whl_20180903 - Python Pip 工具下载whl包与离线安装

    20180903 - Python Pip 工具下载whl包与离线安装 1. 我的Blog 2. 简介信息 摘要:Linux下,python,pip工具离线安装包 Author: andy_yhm@y ...

  8. python可视化工具bokeh_浅谈python可视化包Bokeh

    本文研究的主要是python可视化包Bokeh的相关内容,具体如下. 问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适. 解决:在网上搜了一下,找到一篇介绍 ...

  9. 【wireshark、MISC】将pcapng文件转为pcap文件,再用NetworkMiner分析流量包

    有的时候,我们在wireshark分析流量包,一直找,都找不到有用的信息,看又看不太懂,那么NetworkMiner就是一个很好的选择. 我们在NetworkMiner里面可以很清晰地看出啥给谁发送了 ...

最新文章

  1. 搜索github项目stars排名
  2. SQL alter 的几种用法
  3. (转)双系统卸载Ubuntu
  4. 收集下关系数据库处理亿万级别的数据
  5. python比较日期大小_Python日期的处理——datetime模块
  6. win98 支持html5,win98 ghost ghost在WIN98怎么使用
  7. 极化码生成矩阵的构造
  8. 机器视觉入门,网友推荐的书目
  9. Win10在桌面上怎么添加此电脑、网络图标、回收站等图标?
  10. 启动虚拟机,电脑蓝屏强制自动重启问题解决
  11. mac 备份文件 太大 时间机器_关于MAC 的TimeMechine备份,如何手动清除备份占用的空间?...
  12. ITU-R BT.601 Y'CbCr
  13. 超越 FPN 和 NAS-FPN!商汤港中文提出 FPG,特征金字塔网格强势登场!
  14. (VKL系列)超低功耗LCD液晶显示驱动IC-VKL076 SSOP28,19*4 76点阵,超低工作电流约7.5微安,适用水电表/温湿度计/温控器/传感器等,FAE技术支持
  15. 这个世界依聪明才智的先天高下得三种人:先知先觉的发明家,后知后觉的宣传家,不知不觉的实践家...
  16. 大数据学习中应该确立怎样的学习目标
  17. PyCaret2.0函数模型及使用示例
  18. startuml动态模型工具_StarUML建模工具
  19. CnOpenData中国专利详细地址数据
  20. win10 uwp 获得缩略图

热门文章

  1. 软件测试工程师职业规划
  2. ThreadX移植——STM32H7+MDK-AC6平台
  3. zynq获取程序运行时间
  4. android 涟漪背景,Android 水波效果 | 涟漪效果 实现
  5. Linux中tar和scp
  6. 戴尔寄希望于区块链在印度服务器市场保持竞争力
  7. android倒计时小工具,为五一放假倒计时《倒数日小工具》
  8. python——文档字符串
  9. 计算机语言学大学排名,法国语言学专业大学排名(2020年QS)_快飞留学
  10. 这个AI算法可以生成动漫人物-styleGAN2神经网络模型