diff --git a/decode.py b/decode.py index e92b564..610359a 100644 --- a/decode.py +++ b/decode.py @@ -5,10 +5,8 @@ import numpy as np from tqdm import tqdm import pandas as pd import pcapng -from struct import unpack -import matplotlib.pyplot as plt +from struct import unpack from PIL import Image -from PIL import Image, ImageDraw import cv2 @@ -22,7 +20,7 @@ def tryget(obj, att): if hasattr(obj, att): return getattr(obj, att) return None - + df = pd.DataFrame([{'index': i, 'length': tryget(obj, 'packet_len')} for i, obj in enumerate(blocks)]) # get udp packets @@ -39,7 +37,8 @@ def parse(data): del ret['hdr'] ret['data'] = data[hdr:] return ret - + + df = pd.DataFrame([parse(d) for d in raw]) df2 = df[[c for c in df.columns if c != 'data']] @@ -60,33 +59,36 @@ def getframes(df): def image16(frame, width, height, pixelformat='>H'): - return [Image.fromarray(np.frombuffer(frame, dtype=pixelformat).reshape(width, height)) for frame in frames if len(frame) == 2 * width * height] + return [ + Image.fromarray(np.frombuffer(frame, dtype=pixelformat).reshape(width, height)) for frame in frames + if len(frame) == 2 * width * height + ] def showvideo(images): # wip videodims = images[0].size - fourcc = cv2.VideoWriter_fourcc(*'avc1') - video = cv2.VideoWriter("test.mp4",fourcc, 60,videodims) - img = Image.new('RGB', videodims, color = 'darkred') - #draw stuff that goes on every frame here - for i in range(0,60*60): + fourcc = cv2.VideoWriter_fourcc(*'avc1') + video = cv2.VideoWriter("test.mp4", fourcc, 60, videodims) + img = Image.new('RGB', videodims, color='darkred') + # draw stuff that goes on every frame here + for i in range(0, 60*60): imtemp = img.copy() # draw frame specific stuff here. video.write(cv2.cvtColor(np.array(imtemp), cv2.COLOR_RGB2BGR)) video.release() -#def shape(frames, width, height, mode='RGB'): -# return [Image.frombytes('RGB', (width, height), frame) for frame in frames if len(frame) == width * height * 3] +# def shape(frames, width, height, mode='RGB'): +# return [Image.frombytes('RGB', (width, height), frame) for frame in frames if len(frame) == width * height * 3] frames = getframes(df) images = image16(frames, 384, 288) for i, img in enumerate(tqdm(images)): img.save(f'{i:04}.png') -#frame = b''.join(df.iloc[:32]['data']) -#Image.frombytes('RGB', (288, 256), frame).show() -start_len = len(b'T=(-1.665884e-08)*X^4+(1.347094e-05)*X^3+(-4.396264e-03)*X^2+(9.506939e-01)*X+(-6.353247e+01)\r\n ') +# frame = b''.join(df.iloc[:32]['data']) +# Image.frombytes('RGB', (288, 256), frame).show() +start_len = len(b'T=(-1.665884e-08)*X^4+(1.347094e-05)*X^3+(-4.396264e-03)*X^2+(9.506939e-01)*X+(-6.353247e+01)\r\n') # 250 bytes at start of frame equations = {x[:250].decode().strip() for x in df[df.part == 0]['data']}