Как использовать python3 argparse для чтения и записи файла pcap между определенными временными рамками? - PullRequest
0 голосов
/ 18 февраля 2019

Мои конкретные вопросы приведены ниже.

  1. Как использовать библиотеку python argparse для поиска и чтения файла захвата пакета (PCAP) в течение определенного периода времени (например, от времени начала до конца и от двух раз)задается пользователем)

  2. Как мне прочитать pcap для этого конкретного периода времени и затем вывести другой файл pcap?

дополнительное примечание: я могу читать файлы pcap, но не могу понять, как использовать argparse для записи файла pcap.Подробности смотрите ниже.

Я пишу программу анализа пакетов на python3, и я хотел бы найти pcap или pcaps между начальным и конечным диапазоном времени.Я использую следующие библиотеки и хотел бы проанализировать pcaps с помощью dpkt.

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 и затем выводит стандартный вывод на терминал.Я пробовал миллион способов прочитать файл pcap, а затем написать файл pcap или текстовый файл с помощью argparse.Основной способ, которым я пишу файл out.txt, заключается в следующем:

program.py -r file.pcap -s > out.txt

Заранее благодарю за любую помощь в будущем.

J

...