python-3.x - 如何使用 python3 argparse 在特定时间范围内读取和写入 pcap 文件?
问题描述
我的具体问题如下。
如何使用 python argparse 库搜索和读取特定时间范围内的数据包捕获文件 (PCAP)?(示例从开始时间到结束时间,以及用户给出的两次之间)
如何读取特定时间范围内的 pcap,然后输出另一个 pcap 文件?
附加说明:我可以读取 pcap 文件,但是我不明白如何使用 argparse 来编写 pcap 文件。请参阅下面的更多细节。
我正在编写一个 python3 数据包分析程序,我想在开始和停止时间范围之间搜索 pcap 或 pcaps。我正在使用以下库,我想坚持使用 dpkt 解析 pcap。
import os
import sys
import socket
import glob
import datetime
import argparse
from binascii import hexlify
import dpkt
我有一些功能可以验证提交的日期和时间。最后我想添加秒和毫秒,见下文
def valid_date_type(arg_date_str):
"""custom argparse *date* type for user dates values given from the command line"""
try:
return datetime.datetime.strptime(arg_date_str, "%Y-%m-%d")
except ValueError:
msg = "Given Date ({0}) not valid! Expected format, YYYY-MM-DD!".format(arg_date_str)
raise argparse.ArgumentTypeError(msg)
def valid_datetime_type(arg_datetime_str):
"""custom argparse type for user datetime values given from the command line"""
try:
return datetime.datetime.strptime(arg_datetime_str, "%Y-%m-%d %H:%M")
except ValueError:
msg = "Given Datetime ({0}) not valid! Expected format, 'YYYY-MM-DD HH:mm'!".format(arg_datetime_str)
raise argparse.ArgumentTypeError(msg)
我能够有效地解析数据包,并且我的所有 argparse 参数都可以正常工作,但日期和时间参数除外。下面是几个论据
parser = argparse.ArgumentParser(description='This is a program to fetch information from pcaps')
#below is the first argument to read the pcap into fetchit. The type is read binary(rb)
parser.add_argument("-r", "--read", required=False, type=argparse.FileType('rb'), help="reads a pcapfile")
parser.add_argument("-s", "--session", required=False, action='store_true', help="print the raw session data from a pcap")
parser.add_argument("-dns", "--dns", required=False, action='store_true', help="use the dns decoder")
#below are my switched for dates and times, these do not work yet.
parser.add_argument('-sd', "--startdate", required=False, dest='start_datetime', type=valid_datetime_type, help='start datetime in format "YYYY-MM-DD HH:mm"')
parser.add_argument('-ed', "--enddate", required=False, dest='end_datetime', type=valid_datetime_type, help='end datetime in format "YYYY-MM-DD HH:mm"')
args = parser.parse_args()
程序读取整个 pcap,然后将 stdout 输出到终端。我已经尝试了一百万种方法来读取 pcap 文件,然后使用 argparse 编写 pcap 文件或文本文件。我编写 out.txt 文件的主要方式是使用以下内容
program.py -r file.pcap -s > out.txt
提前感谢您对未来的任何帮助。
Ĵ
解决方案
推荐阅读
- python - Tensorflow 对象检测“使用 fn_output_signature 代替”警告
- node.js - 从 node.js 中的 API 数据中提取值
- javascript - 使用 axios / heroku api 反应 Native 和 httpS
- ios - 有没有办法使用 SwiftUI 将 Memoji 字符添加到 TextEditor 的键盘
- java - 正确使用 Java 标签
- javascript - 如何将温度从摄氏度转换为华氏度?
- arrays - Typescript - 在启用 noUncheckedIndexedAccess 的情况下向后循环数组
- linux - ryu.exception.OFPUnknownVersion:snort 警报的未知版本 50
- dbt - 在 dbt 中的 yml 文件中引用全局变量
- python - 如何让wait_for等待大家的反应?