Files
wlan-lanforge-scripts/wifi_diag/wifi_diag_python/scratch.py
2020-10-01 20:22:48 +05:30

833 lines
30 KiB
Python

"""
-----------------------------------------------------------------------------
Name : WIFI Diag
Author : Sushant Bawiskar
Date : 20 September 2020
------------------------------------------------------------------------------
"""
"""
Example: python PcaplibFiles.py --input "11ax.pcapng","sta1.pcap"
"""
import datetime
import pyshark
import pandas as pd
from bokeh.plotting import figure, output_file, show, save
from bokeh.io.export import get_screenshot_as_png, export_png, export_svgs, export_svg
import matplotlib.pyplot as plt
from plotly.offline import iplot, init_notebook_mode
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
import base64
from io import BytesIO
from htmlText import *
from Dataplot import Plot
import shutil
import argparse
import logging
import numpy as np
import os
def PacketHistogram(subtype_list, Managementls, Controlls, Data_framels, count):
# Created a Dictonary of Management Frame : {Subtype} , Control Frame : {Subtype} , Data Frame : {Subtype}
Type_Subtype = {"Management Frame": [Managementls], "Control Frame": [Controlls], "Data Frame": [Data_framels]}
Type_list = []
Sub_list = []
pack_list = []
per_list = []
# To calculate Total number of Subtype of packets in Type
# Ex. To calculate how many packets have a subtype which are in Management/Control/Data Frame Type
for Type, Subtype in Type_Subtype.items():
liskeys = []
for key in subtype_list.values():
if (key in liskeys):
continue
val = Subtype[0].count(key)
liskeys.append(key)
# liskeys.append(key)
if (val != 0):
# Type_list = [Type,key,val,(val*100)/count]
Type_list.append(str(Type))
Sub_list.append(key)
pack_list.append(val)
per_list.append((round((val * 100) / count, 2)))
# Type_list.append("")
Sub = Sub_list
NewSubList = Sub_list
# NewSubList.append("Sum: ")
#
# pack_list.append(sum(pack_list))
NewPerList = per_list
# NewPerList.append(sum(NewPerList))
# print(len(subtype_list),len(NewSubList),len(pack_list),print(NewPerList))
df_Type = pd.DataFrame(({" Type ": Type_list, " Subtype ": NewSubList, " Total Packets ": pack_list, "Percentage": NewPerList}))
# print("df_Type",df_Type)
df_Type = df_Type.to_html(index=False)
# NewPerList.pop()
# NewSubList.pop()
plot = Plot()
path = plot.bar(datax=NewSubList,datay=NewPerList,title="Type/SubType plot",xaxis="Subtype",yaxis="Percentage",figname="Type")
htmltable(" Packet Type histogram", df_Type, str(path), "0", "0","Summary ")
def RateHistogram(DataRate, PhyType, SignalStrength, count):
countUniqueData = []
perUniqueData = []
countUniquePhy = []
perUniquePhy = []
countUniqueSignal = []
perUniqueSignal = []
# This is for Data Table Histogram
uniqueData = np.unique(DataRate)
for i in uniqueData:
countUniqueData.append(DataRate.count(i))
uniqueData = [i for i in uniqueData]
# uniqueData.append("Sum: ")
# countUniqueData.append(sum(countUniqueData))
dictRate = (dict(zip(uniqueData, countUniqueData, )))
for c in countUniqueData:
perUniqueData.append(round((c * 100) / count, 2))
df_Rate = pd.DataFrame({" Rate MBPS ": [i for i in dictRate.keys()], " Total Packets ": [j for j in dictRate.values()], " Percentage ": [k for k in perUniqueData]})
# df_Rate = df_Rate.T
# df_Rate.columns = df_Rate.iloc[0]
# df_Rate = df_Rate.drop(df_Rate.iloc[0].index.name)
df_Rate = df_Rate.to_html(index=False)
# uniqueData.pop()
# perUniqueData.pop()
plot1 = Plot()
path = plot1.bar(datax=uniqueData, datay=perUniqueData, title="Rate plot", xaxis="Rate MBPS", yaxis="Percentage",
figname="rate")
htmltable(" Encoding rate histogram.", df_Rate, str(path), "0", "0","Summary ")
# This is for Phy Histogram
uniquePhy = np.unique(PhyType)
for j in uniquePhy:
countUniquePhy.append(PhyType.count(j))
uniquePhy = [i for i in uniquePhy]
# uniquePhy.append("Sum: ")
# countUniquePhy.append(sum(countUniquePhy))
dictPhy = (dict(zip(uniquePhy, countUniquePhy)))
for d in countUniquePhy:
perUniquePhy.append(round((d * 100) / count, 2))
df_Phy = pd.DataFrame({" PHY ": [i for i in dictPhy.keys()], " Total Packets ": [j for j in dictPhy.values()]," Percentage ": [k for k in perUniquePhy]})
# print("df_Phy",df_Phy)
# df_Phy = df_Phy.to_html()
# df_Phy = df_Phy.T
# df_Phy.columns = df_Phy.iloc[0]
# df_Phy = df_Phy.drop(df_Phy.iloc[0].index.name)
df_Phy = df_Phy.to_html(index=False)
dictphys = [i for i in dictPhy.keys()]
# dictphys.pop()
# perUniquePhy.pop()
plot2 = Plot()
path = plot2.bar(datax=dictphys, datay=perUniquePhy, title="Phy plot", xaxis="Subtype", yaxis="Percentage",
figname="Phy")
htmltable(" Phy Histogram.",df_Phy,str(path),"0","0","Summary ")
# This is for Signal Histogram
uniqueSignal = np.unique(SignalStrength)
for k in uniqueSignal:
countUniqueSignal.append(SignalStrength.count(k))
uniqueSignal = [i for i in uniqueSignal]
# uniqueSignal.append("Sum: ")
# countUniqueSignal.append(sum(countUniqueSignal))
dictSig = (dict(zip(uniqueSignal, countUniqueSignal)))
for e in countUniqueSignal:
perUniqueSignal.append(round((e * 100) / count, 2))
# perUniqueSignal.append(sum(perUniqueSignal))
# pd.DataFrame.reset_index(drop=True,inplace=True)
# df_Sig = pd.DataFrame({"Signal": [i for i in dictSig.keys()], "Packet to Packet": [j for j in dictSig.values()],
# "Percentage": [k for k in perUniqueSignal]})
# pd.DataFrame.reset_index(drop=True,inplace=True)
# print([k for k in dictSig.keys()])
# print([i for i in dictSig.values()])
# print("perUniqueSignal",perUniqueSignal)
# pd.DataFrame
df_Sig = pd.DataFrame({" Signal ":[k for k in dictSig.keys()]," Total Packets ":[i for i in dictSig.values()]," Percentage ":[j for j in perUniqueSignal]})
# df_Sig = df_Sig.T
# df_Sig.columns = df_Sig.iloc[0]
# df_Sig = df_Sig.drop(df_Sig.iloc[0].index.name)
# df_Sig.columns.name = None
# df_Sig.index.name = "Signal"
# print("df_Sig",df_Sig)
# print("df_Sig",df_Sig)
# df_Sig = df_Sig.to_html()
# df_Sig = df_Sig.transpose()
df_Sig = df_Sig.to_html(index=False)
# perUniqueSignal.pop()
dictSigs = [i for i in dictSig.keys()]
# dictSigs.pop()
plot3 = Plot()
path = plot3.bar(datax=dictSigs, datay=perUniqueSignal, title="Signal plot", xaxis="Signal", yaxis="Percentage",
figname="Signal")
htmltable(" Signal Histogram.", df_Sig, str(path), "0", "0","Summary ")
# print(dictSigs,perUniqueSignal)
def PHY_BW_MCS_NCS(MCSIndex, vMCS, Bandwidth, vBW, PHY, vPHY, Spatial_Stream, vNCS, count):
countUniqueMCSIndex = []
countUniqueBandwidth = []
countUniquePHY = []
countUniqueSpatial_stream = []
perUniqueMCS = []
perUniqueBW = []
perUniquePHY = []
perUniqueNCS = []
uniqueMCSIndex = np.unique(MCSIndex)
uniqueBandwidth = ((np.unique(Bandwidth)))
# uniquePHY = ((np.unique(PHY)))
uniqueSpatial_stream = ((np.unique(Spatial_Stream)))
for countMCS in uniqueMCSIndex:
countUniqueMCSIndex.append(MCSIndex.count(countMCS))
for cnt in countUniqueMCSIndex:
perUniqueMCS.append(round((cnt * 100) / count, 2))
dictMCS = dict(zip(uniqueMCSIndex,countUniqueMCSIndex))
df_MCS = pd.DataFrame({" MCS ": [k for k in dictMCS.keys()], " Total Packets ": [i for i in dictMCS.values()]," Percentage ":[j for j in perUniqueMCS]})
# df_MCS = df_MCS.T
# df_MCS.columns = df_MCS.iloc[0]
# df_MCS = df_MCS.drop(df_MCS.iloc[0].index.name)
# print("df_MCS", df_MCS)
df_MCS = df_MCS.to_html(index=False)
dictMCSs = [i for i in dictMCS.keys()]
plot4 = Plot()
path = plot4.bar(datax=dictMCSs, datay=perUniqueMCS, title="MCS plot", xaxis="MCS", yaxis="Percentage",
figname="MCS")
PacketInfo = ("Data packets having MCS field: "+str(vMCS)+"<br>")
htmltable("Data MCS Histogram.", df_MCS, str(path), "0", "0",PacketInfo)
# print(uniqueMCSIndex, countUniqueMCSIndex)
for countBandwidth in uniqueBandwidth:
countUniqueBandwidth.append(Bandwidth.count(countBandwidth))
for cnt in countUniqueBandwidth:
perUniqueBW.append(round((cnt * 100) / count, 2))
dictBW = dict(zip(uniqueBandwidth, countUniqueBandwidth))
df_BW = pd.DataFrame({" Bandwidth ": [k for k in dictBW.keys()], " Total Packets ": [i for i in dictBW.values()]," Percentage ":[j for j in perUniqueBW]})
# df_BW = df_BW.T
# df_BW.columns = df_BW.iloc[0]
# df_BW = df_BW.drop(df_BW.iloc[0].index.name)
# print("df_BW", df_BW)
df_BW = df_BW.to_html(index=False)
dictBWs = [i for i in dictBW.keys()]
plot5 = Plot()
path = plot5.bar(datax=dictBWs, datay=perUniqueBW, title="Bandwidth plot", xaxis="Bandwidth", yaxis="Percentage",
figname="Bandwidth")
PacketInfo = ("Data packets having BW field: " + str(vBW) + "<br>")
htmltable("Data Bandwidth Histogram.", df_BW, str(path), "0", "0",PacketInfo)
# print(uniqueBandwidth, countUniqueBandwidth)
"""
#For PHY
for countPHY in uniquePHY:
countUniquePHY.append(PHY.count(countPHY))
for cnt in countUniquePHY:
perUniquePHY.append(round((cnt * 100) / count, 2))
dictPHY = dict(zip(uniquePHY, countUniquePHY))
df_PHY = pd.DataFrame({"PHY": [k for k in dictPHY.keys()], "Packet": [i for i in dictPHY.values()],"Percentage":[j for j in perUniquePHY]})
df_PHY = df_PHY.T
df_PHY.columns = df_PHY.iloc[0]
df_PHY = df_PHY.drop(df_PHY.iloc[0].index.name)
print("df_PHY", df_PHY)
"""
for countNCS in uniqueSpatial_stream:
countUniqueSpatial_stream.append(Spatial_Stream.count(countNCS))
for cnt in countUniqueSpatial_stream:
perUniqueNCS.append(round((cnt * 100) / count, 2))
dictNCS = dict(zip(uniqueSpatial_stream, countUniqueSpatial_stream))
df_NCS = pd.DataFrame({" NSS ": [k for k in dictNCS.keys()], " Total Packets ": [i for i in dictNCS.values()]," Percentage ":[j for j in perUniqueNCS]})
# df_NCS = df_NCS.T
# df_NCS.columns = df_NCS.iloc[0]
# df_NCS = df_NCS.drop(df_NCS.iloc[0].index.name)
# print("df_NCS", df_NCS)
# df_NCS = df_NCS.T
df_NCS = df_NCS.to_html(index=False)
dictNCSs = [i for i in dictNCS.keys()]
plot6 = Plot()
path = plot6.bar(datax=dictNCSs, datay=perUniqueNCS, title="NCS plot", xaxis="Spatial stream", yaxis="Percentage",
figname="NSS")
PacketInfo = ("Data packets having NSS field: " + str(vNCS) + "<br>")
htmltable("Data NSS Histogram.", df_NCS, str(path), "0", "0",PacketInfo)
def RateAMPDU(AMPDU,count):
countAMPDU = []
# print("IN AMPDU")
# print("AMPDU: ",AMPDU)
countUniqueAMPDU = []
perUniqueAMPDU = []
chainCountAMPDU = []
uniqueAMPDU = np.unique(AMPDU)
uniqueAMPDU = [i for i in uniqueAMPDU]
# print("uniqueAMPDU",uniqueAMPDU)
#
# print("len(uniqueAMPDU)",len(uniqueAMPDU))
for countAMPDU in uniqueAMPDU:
countUniqueAMPDU.append(AMPDU.count(countAMPDU))
# print("countUniqueAMPDU",countUniqueAMPDU)
# print("len(countUniqueAMPDU)",len(countUniqueAMPDU))
chainUniqueAMPDU = np.unique(countUniqueAMPDU)
chainUniqueAMPDU = [i for i in chainUniqueAMPDU]
# print("chainUniqueAMPDU", chainUniqueAMPDU)
# print("len(chainUniqueAMPDU)", len(chainUniqueAMPDU))
for Acount in chainUniqueAMPDU:
chainCountAMPDU.append(countUniqueAMPDU.count(Acount))
# print(" len(chainCountAMPDU): ", len(chainCountAMPDU))
# print("chainCountAMPDU",chainCountAMPDU)
UniqueChainCountAMPDU = np.unique(chainCountAMPDU)
UniqueChainCountAMPDU = [i for i in UniqueChainCountAMPDU]
listAMPDU = []
for un in UniqueChainCountAMPDU:
listAMPDU.append(chainCountAMPDU.count(un))
print(chainUniqueAMPDU,chainCountAMPDU)
dictAMPDU = dict(zip(chainUniqueAMPDU,chainCountAMPDU))
for acnt in chainCountAMPDU:
perUniqueAMPDU.append(round((acnt * 100) / count, 4))
#
# print("dictAMPDU",dictAMPDU)
#
# print("len(perUniqueAMPDU)",len(perUniqueAMPDU))
# print("perUniqueAMPDU",perUniqueAMPDU)
#
df_AMPDU = pd.DataFrame({" Chain count ": [k for k in dictAMPDU.keys()], " Total Packets ": [i for i in dictAMPDU.values()],
" Percentage ": [j for j in perUniqueAMPDU]})
# df_AMPDU = df_AMPDU.T
# df_AMPDU.columns = df_AMPDU.iloc[0]
# df_AMPDU = df_AMPDU.drop(df_AMPDU.iloc[0].index)
# df_AMPDU = df_AMPDU.T
df_AMPDU = df_AMPDU.to_html(index=False)
# dictAMPDUs = [i for i in dictAMPDU.keys()]
#
plot6 = Plot()
path = plot6.bar(datax=chainUniqueAMPDU, datay=perUniqueAMPDU, title="AMPDU plot", xaxis="packet Chain", yaxis="Percentage",
figname="AMPDU")
PacketInfo = ("EMPTY")
htmltable("AMPDU chain count Histogram.", df_AMPDU, str(path), "0", "0", PacketInfo)
class shark:
def __init__(self):
# FilePath having pcap file
# self.FilePath = "wifi_diag.pcap"
# self.FilePath = "C:\Candela\Scripts\Lanforge scripts\lanforge-scripts-master\wifi_diag\wifi_diag.pcapng"
# self.FilePath = "wifi_diag.pcap"
# self.FilePath = "C:\candela\pcap\wifi.pcapng"
# self.FilePath = "C:\candela\pcap\\ac_28Sept.pcapng"
# self.FilePath = "C:\candela\pcap\\11ax.pcapng"
# self.FilePath = "C:\candela\pcap\\11ax_cap2_Copy.pcapng"
# self.FilePath = "C:\candela\pcap\sta1.pcap"
self.FilePath = output
self.cap = pyshark.FileCapture(self.FilePath)
# print("Strt time stamp :",datetime.datetime.now())
def Extract(self):
type_list = {"0": "Management frame", "1": "Control Frame", "2": "Data frame"}
subtype_list = {"80": "Beacon frame", "d0": "Action", "b4": "Request-to-send", "d4": "Acknowledgement", \
"88": "QoS Data", "84": "Block Ack Req", "94": "Block Ack Req", \
"40": "Probe Request", "50": "Probe Response", "b0": "Authentication",
"a2": "Disassociate", "a8": "QoS Data + CF-Poll", "c8":"QoS Null function", \
"10": "Association Response", "00": "Association Request", "c4": "Clear-to-send", \
"98": "QoS Data + CF-Acknowledgment", "24": "Trigger", "28": "Data + CF-Poll" ,\
"d8": "Unknown", "54": "VHT/HE NDP Announcement", "e8": "QoS CF-Poll", \
"b8" : "QoS Data + CF-Ack + CF-Poll", "18": "Data + CF-Ack", "48" : "Null function", \
"69" : "CF-Poll", "08": "Data"
}
Managementls = []
Controlls = []
Data_framels = []
PhyType = []
DataRate = []
SignalStrength = []
MCSIndex = []
Bandwidth = []
PHY = []
Spatial_Stream = []
AMPDU = []
vDataType = 0
count = 0
vWLAN_RADIO = 0
vsignalstrength = 0
vPhy = 0
vdatarate = 0
vWLAN = 0
vNotPHY = 0
vNotBW = 0
vNotMCS = 0
vNOTNCS = 0
vMCS = 0
vPHY = 0
vBW = 0
vNCS = 0
vAMPDU = 0
vNotAMPD = 0
""" Comment
"""
# print(wlan_radio_Fields_keys,wlan_radio_Fields_values)
# if "wlan_radio.phy" and "wlan_radio.11ac.bandwidth" and "wlan_radio.11ac.mcs" and "wlan_radio.11ac.nss" in wlan_radio_Fields_keys:
# # print(dir(packet.wlan_radio._all_fields["wlan_radio.phy"]))
# # print(packet.wlan_radio._all_fields["wlan_radio.phy"].showname_value) #for PHY
# # print(packet.wlan_radio._all_fields["wlan_radio.11ac.bandwidth"].showname_value) #for BW
# # print(packet.wlan_radio._all_fields["wlan_radio.11ac.mcs"].showname_value) #for MCS
# # print(packet.wlan_radio._all_fields["wlan_radio.11ac.nss"].showname_value) #for Spatial streams
# PHY.append(packet.wlan_radio._all_fields["wlan_radio.phy"].showname_value)
# Bandwidth.append(packet.wlan_radio._all_fields["wlan_radio.11ac.bandwidth"].showname_value)
# MCSIndex.append(packet.wlan_radio._all_fields["wlan_radio.11ac.mcs"].showname_value)
# Spatial_Stream.append(packet.wlan_radio._all_fields["wlan_radio.11ac.nss"].showname_value)
# _data = (packet.wlan_radio._all_fields)
# print(type(_data))
# phy, _11ac_short_gi, _11ac_bandwidth, _11ac_user, _11ac_mcs, _11ac_nss, _11ac_fec, _data_rate = (packet.wlan_radio._all_fields)
# print(phy.get_field_value)
"""
comment
"""
for packet in self.cap:
count += 1
# print("Count :",end= " ")
print(count)
try:
WLAN_RADIO = packet.wlan_radio
wlan_radio_Fields_keys = []
wlan_radio_Fields_values = []
for keys, values in packet.wlan_radio._all_fields.items():
# print(keys, ":", values)
wlan_radio_Fields_keys.append(keys)
wlan_radio_Fields_values.append(values)
# print("---------------------------------------------")
vWLAN_RADIO = 1
try:
signalstrength = WLAN_RADIO.signal_dbm
vsignalstrength = 1
except:
pass
try:
phy = WLAN_RADIO.phy.showname_value
vPhy = 1
except:
pass
try:
datarate = WLAN_RADIO.data_rate
vdatarate = 1
except:
pass
except:
pass
# print("WLAN RADIO NOT FOUND")
try:
RADIOTAP = packet.radiotap
# radiotap_field_keys = []
# radiotap_field_values = []
#
# for keys, values in packet.radiotap._all_fields.items():
# print(keys, ":", values)
# radiotap_field_keys.append(keys)
# radiotap_field_values.append(values)
# print("*****************RADIOTAP**************************")
except:
# print("RADIOTAP NOT FOUND")
pass
try:
WLAN = packet.wlan
# for keys, values in packet.wlan._all_fields.items():
# print(keys, ":", values)
# print("***********************************************")
vWLAN = 1
except:
pass
# print("WLAN NOT FOUND")
PacketCount = (packet.number)
if vWLAN == 1:
# print("WLAN found")
# Type/Subtype raw value
type_raw = (str(packet.wlan.fc_type.raw_value))
subtype_raw = ((packet.wlan.fc_type_subtype.raw_value))
# Name of values Types/Subtype
type = (str(packet.wlan.fc_type.showname_value))
subtype = (str(packet.wlan.fc_type_subtype.showname_value))
# Sorting Subtypes by Types as a refrence
if (type_raw == "0"):
try:
Managementls.append(subtype_list[subtype_raw])
except:
pass
elif (type_raw == "1"):
try:
Controlls.append(subtype_list[subtype_raw])
except:
print("Control Frame", subtype, subtype_raw)
elif (type_raw == "2"):
try:
vDataType += 1
Data_framels.append(subtype_list[subtype_raw])
checkType = packet.wlan_radio._all_fields["wlan_radio.phy"]
try:
if "wlan_radio.11ac.bandwidth" and "wlan_radio.11ac.mcs" and "wlan_radio.11ac.nss" in wlan_radio_Fields_keys:
print("in 11ac")
try:
if "wlan_radio.11ac.bandwidth" in wlan_radio_Fields_keys:
Bandwidth.append(packet.wlan_radio._all_fields["wlan_radio.11ac.bandwidth"].showname_value)
vBW += 1
# print("11 ac bandwidth")
if "wlan_radio.11ac.mcs" in wlan_radio_Fields_keys:
MCSIndex.append(packet.wlan_radio._all_fields["wlan_radio.11ac.mcs"].showname_value)
vMCS += 1
# print("11 ac MCS")
if "wlan_radio.11ac.nss" in wlan_radio_Fields_keys:
Spatial_Stream.append(packet.wlan_radio._all_fields["wlan_radio.11ac.nss"].showname_value)
vNCS += 1
# print("11 ac NSS")
except:
print("wlan_radio.11ac.bandwidth or wlan_radio.11ac.mcs or wlan_radio.11ac.nss not found")
try:
# print("in 11ax")
radiotap_field_keys = []
radiotap_field_values = []
for keys, values in packet.radiotap._all_fields.items():
# print(keys, ":", values)
radiotap_field_keys.append(keys)
radiotap_field_values.append(values)
if "radiotap.he.data_3.data_mcs" and "radiotap.he.data_5.data_bw_ru_allocation" and "radiotap.he.data_6.nsts" in radiotap_field_keys:
print("in 11ax inside")
try:
if "radiotap.he.data_3.data_mcs" in radiotap_field_keys:
# print("in 11ax radiotap")
MCSIndex.append(packet.radiotap._all_fields["radiotap.he.data_3.data_mcs"].showname_value)
vMCS += 1
except:
print("MCS not found in ax")
try:
if "radiotap.he.data_5.data_bw_ru_allocation" in radiotap_field_keys:
# print("in BW radiotap 11ax")
Bandwidth.append(packet.radiotap._all_fields["radiotap.he.data_5.data_bw_ru_allocation"].showname_value)
vBW += 1
except:
print("BW not found in ax")
try:
if "radiotap.he.data_6.nsts" in radiotap_field_keys:
# print("in 11ax radiotap nsts")
Spatial_Stream.append(packet.radiotap._all_fields["radiotap.he.data_6.nsts"].showname_value)
vNCS += 1
except:
print("NSTS not found in ax")
except:
print("radiotap.he.data_3.data_mcs or radiotap.he.data_5.data_bw_ru_allocation or radiotap.he.data_6.nsts not found")
if "wlan_radio.a_mpdu_aggregate_id" in wlan_radio_Fields_keys:
AMPDU.append((packet.wlan_radio._all_fields["wlan_radio.a_mpdu_aggregate_id"].showname_value))
vAMPDU += 1
if "wlan_radio.phy" in wlan_radio_Fields_keys:
PHY.append(packet.wlan_radio._all_fields["wlan_radio.phy"].showname_value)
vPHY += 1
except:
pass
# print("comming out through try in except")
except:
print("Data frame", subtype, subtype_raw)
else:
print("\nMissing Type in table : ", type_raw, subtype, subtype_raw, "\n")
else:
print("Packet Number :",count,":"," WLAN NOT FOUND")
vWLAN = 0
if vdatarate == 1:
DataRate.append(datarate)
if vPhy == 1:
PhyType.append(phy)
if vsignalstrength == 1:
SignalStrength.append(signalstrength)
try:
print("\r"+count,":",packet.wlan_radio._all_fields.items())
# if "wlan_radio.11ac.bandwidth" and "wlan_radio.11ac.bandwidth" and "wlan_radio.phy" and \
# "wlan_radio.11ac.mcs" and "wlan_radio.11ac.nss" in wlan_radio_Fields_keys:
# print(dir(packet.wlan_radio._all_fields["wlan_radio.phy"]))
# print(packet.wlan_radio._all_fields["wlan_radio.phy"].showname_value) #for PHY
# print(packet.wlan_radio._all_fields["wlan_radio.11ac.bandwidth"].showname_value) #for BW
# print(packet.wlan_radio._all_fields["wlan_radio.11ac.mcs"].showname_value) #for MCS
# print(packet.wlan_radio._all_fields["wlan_radio.11ac.nss"].showname_value) #for Spatial streams
# if "wlan_radio.phy" in wlan_radio_Fields_keys:
# PHY.append(packet.wlan_radio._all_fields["wlan_radio.phy"].showname_value)
# vPHY +=1
# else:
# vNotPHY +=1
# # print("PHY NF")
#
# if "wlan_radio.11ac.bandwidth" in wlan_radio_Fields_keys:
# Bandwidth.append(packet.wlan_radio._all_fields["wlan_radio.11ac.bandwidth"].showname_value)
# vBW +=1
# else:
# vNotBW += 1
# # print("Bandwidth NF")
#
# if "wlan_radio.11ac.mcs" in wlan_radio_Fields_keys:
# MCSIndex.append(packet.wlan_radio._all_fields["wlan_radio.11ac.mcs"].showname_value)
# vMCS +=1
# else:
# vNotMCS +=1
# # print("MCS Index NF")
#
# if "wlan_radio.11ac.nss" in wlan_radio_Fields_keys:
# Spatial_Stream.append(packet.wlan_radio._all_fields["wlan_radio.11ac.nss"].showname_value)
# vNCS += 1
# else:
# vNOTNCS += 1
# # print("Spatial stream NF")
except:
pass
# print("Here")
# print("MCSIndex",len(MCSIndex),MCSIndex)
# print("Bandwidth",len(Bandwidth),Bandwidth)
# print("PHY",len(PHY),PHY)
# print("Spatial_Stream",len(Spatial_Stream),Spatial_Stream)
if vAMPDU != 0:
RateAMPDU(AMPDU,count)
# print("Data Frames: ",vDataType)
# if vax11 == 1:
# print("vNOTNCS :", vNOTNCS, "vNotBW :", vNotBW, "vNotMCS:", vNotMCS, "vNotPHY:", vNotPHY)
# PHY_BW_MCS_NCS_11ax(MCSIndex, vMCS, vNotMCS, Bandwidth, vBW, vNotBW, PHY, vPHY, vNotPHY, count)
# else:
# print("vNotBW :",vNotBW,"vNotMCS:",vNotMCS,"vNotPHY:",vNotPHY)
PHY_BW_MCS_NCS(MCSIndex, vMCS, Bandwidth, vBW, PHY, vPHY, Spatial_Stream, vNCS, count)
# print("After appending time stamp :", datetime.datetime.now())
RateHistogram(DataRate, PhyType, SignalStrength, count)
# print("After RateHist time stamp :", datetime.datetime.now())
PacketHistogram(subtype_list, Managementls, Controlls, Data_framels, count)
# print("After PacketHist time stamp :", datetime.datetime.now())
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="To create a single pcap file combining multiple pcap files")
# parser.add_argument("-o", "--output", type=str, help="Enter the output pcap file name")
parser.add_argument("-i", "--input", type=str,
help="Enter the Name of the pcap files which needs to be combined")
args = None
try:
args = parser.parse_args()
output = "wifi_diag.pcap"
if (args.input is not None):
input = args.input # 'C:\candela\pcap\\11ax.pcapng','C:\candela\pcap\sta1.pcap'
input = input.split(",")
print(input)
# if (args.input is None):
# input = "11ax.pcapng", "sta1.pcap"
except Exception as e:
logging.exception(e)
exit(2)
with open(output, 'wb') as wfd:
print("input", input)
for f in (input):
with open(f, 'rb') as fd:
shutil.copyfileobj(fd, wfd)
htmlstart()
downloadBtn()
htmlobj("This is HTML objective")
htmlpointview()
htmlTableSummary("This is html table summary")
myUL()
Extract = shark()
Extract.Extract()
# htmltable()
closemyUl()
htmlclose()