forked from osmocom/wireshark
Add spell-checking script.
check_spelling.py scans Wireshark source or documentation files, using the general dictionary from pyspellcheck, augmented by the contents of wireshark_words.txt. Can scan: - entire folders (recursively) - individual files - open files - files affected by recent git changes
This commit is contained in:
parent
6a841ce4d5
commit
22e02a9d06
|
@ -0,0 +1,390 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# Wireshark - Network traffic analyzer
|
||||||
|
# By Gerald Combs <gerald@wireshark.org>
|
||||||
|
# Copyright 1998 Gerald Combs
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import argparse
|
||||||
|
import signal
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
# Looks for spelling errors among strings found in source or documentation files.
|
||||||
|
# TODO: deal with contractions - pyspellcheck doesn't seem to handle apostrophies..
|
||||||
|
|
||||||
|
# For text colouring/highlighting.
|
||||||
|
class bcolors:
|
||||||
|
HEADER = '\033[95m'
|
||||||
|
OKBLUE = '\033[94m'
|
||||||
|
OKGREEN = '\033[92m'
|
||||||
|
ADDED = '\033[45m'
|
||||||
|
WARNING = '\033[93m'
|
||||||
|
FAIL = '\033[91m'
|
||||||
|
ENDC = '\033[0m'
|
||||||
|
BOLD = '\033[1m'
|
||||||
|
UNDERLINE = '\033[4m'
|
||||||
|
|
||||||
|
|
||||||
|
# Try to exit soon after Ctrl-C is pressed.
|
||||||
|
should_exit = False
|
||||||
|
|
||||||
|
def signal_handler(sig, frame):
|
||||||
|
global should_exit
|
||||||
|
should_exit = True
|
||||||
|
print('You pressed Ctrl+C - exiting')
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Create spellchecker, and augment with some Wireshark words.
|
||||||
|
from spellchecker import SpellChecker
|
||||||
|
# Set up our dict with words from text file.
|
||||||
|
spell = SpellChecker()
|
||||||
|
spell.word_frequency.load_text_file('./tools/wireshark_words.txt')
|
||||||
|
|
||||||
|
|
||||||
|
# Track words that were not found.
|
||||||
|
missing_words = []
|
||||||
|
|
||||||
|
|
||||||
|
# Split camelCase string into separate words.
|
||||||
|
def camelCaseSplit(identifier):
|
||||||
|
matches = re.finditer('.+?(?:(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|$)', identifier)
|
||||||
|
return [m.group(0) for m in matches]
|
||||||
|
|
||||||
|
|
||||||
|
# A File object contains all of the strings to be checked for a given file.
|
||||||
|
class File:
|
||||||
|
def __init__(self, file):
|
||||||
|
self.file = file
|
||||||
|
self.values = []
|
||||||
|
|
||||||
|
filename, extension = os.path.splitext(file)
|
||||||
|
self.code_file = extension in {'.c', '.cpp'}
|
||||||
|
|
||||||
|
|
||||||
|
with open(file, 'r') as f:
|
||||||
|
contents = f.read()
|
||||||
|
|
||||||
|
if self.code_file:
|
||||||
|
# Remove comments so as not to trip up RE.
|
||||||
|
contents = removeComments(contents)
|
||||||
|
|
||||||
|
# Find protocol name and add to dict.
|
||||||
|
# N.B. doesn't work when a variable is used instead of a literal for the protocol name...
|
||||||
|
matches = re.finditer(r'proto_register_protocol\s*\([\n\r\s]*\"(.*)\",[\n\r\s]*\"(.*)\",[\n\r\s]*\"(.*)\"', contents)
|
||||||
|
for m in matches:
|
||||||
|
protocol = m.group(3)
|
||||||
|
# Add to dict.
|
||||||
|
spell.word_frequency.load_words([protocol])
|
||||||
|
spell.known([protocol])
|
||||||
|
print('Protocol is: ' + bcolors.BOLD + protocol + bcolors.ENDC)
|
||||||
|
|
||||||
|
# Add a string found in this file.
|
||||||
|
def add(self, value):
|
||||||
|
self.values.append(value)
|
||||||
|
|
||||||
|
# Whole word is not recognised, but is it 2 words concatenated (without camelcase) ?
|
||||||
|
def checkMultiWords(self, word):
|
||||||
|
if len(word) < 6:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Don't consider if mixed cases.
|
||||||
|
if not (word.islower() or word.isupper()):
|
||||||
|
# But make an exception if only the fist letter is uppercase..
|
||||||
|
if not word == (word[0].upper() + word[1:]):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Try splitting into 2 words recognised at various points.
|
||||||
|
length = len(word)
|
||||||
|
for idx in range(3, length-3):
|
||||||
|
word1 = word[0:idx]
|
||||||
|
word2 = word[idx:]
|
||||||
|
|
||||||
|
if not spell.unknown([word1, word2]):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
# Check the spelling of all the words we have found fir tgus fuke,
|
||||||
|
def spellCheck(self):
|
||||||
|
|
||||||
|
num_values = len(self.values)
|
||||||
|
this_item = 0
|
||||||
|
for v in self.values:
|
||||||
|
if should_exit:
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
this_value += 1
|
||||||
|
|
||||||
|
# Ignore includes.
|
||||||
|
if v.endswith('.h'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Store original (as want to include for context in error report).
|
||||||
|
original = str(v)
|
||||||
|
|
||||||
|
# Replace most punctuation with spaces, and eliminate common format specifiers.
|
||||||
|
v = v.replace('.', ' ')
|
||||||
|
v = v.replace(',', ' ')
|
||||||
|
v = v.replace('`', ' ')
|
||||||
|
v = v.replace(':', ' ')
|
||||||
|
v = v.replace(';', ' ')
|
||||||
|
v = v.replace('"', ' ')
|
||||||
|
v = v.replace('\\', ' ')
|
||||||
|
v = v.replace('+', ' ')
|
||||||
|
v = v.replace('|', ' ')
|
||||||
|
v = v.replace('(', ' ')
|
||||||
|
v = v.replace(')', ' ')
|
||||||
|
v = v.replace('[', ' ')
|
||||||
|
v = v.replace(']', ' ')
|
||||||
|
v = v.replace('{', ' ')
|
||||||
|
v = v.replace('}', ' ')
|
||||||
|
v = v.replace('<', ' ')
|
||||||
|
v = v.replace('>', ' ')
|
||||||
|
v = v.replace('_', ' ')
|
||||||
|
v = v.replace('-', ' ')
|
||||||
|
v = v.replace('/', ' ')
|
||||||
|
v = v.replace('!', ' ')
|
||||||
|
v = v.replace('?', ' ')
|
||||||
|
v = v.replace('=', ' ')
|
||||||
|
v = v.replace('*', ' ')
|
||||||
|
v = v.replace('%', ' ')
|
||||||
|
v = v.replace('#', ' ')
|
||||||
|
v = v.replace('&', ' ')
|
||||||
|
v = v.replace('@', ' ')
|
||||||
|
v = v.replace("'", ' ')
|
||||||
|
v = v.replace('"', ' ')
|
||||||
|
v = v.replace('%u', '')
|
||||||
|
v = v.replace('%d', '')
|
||||||
|
v = v.replace('%s', '')
|
||||||
|
|
||||||
|
# Split into words.
|
||||||
|
value_words = v.split()
|
||||||
|
# Further split up any camelCase words.
|
||||||
|
words = []
|
||||||
|
for w in value_words:
|
||||||
|
words += camelCaseSplit(w)
|
||||||
|
|
||||||
|
# Check each word within this string in turn.
|
||||||
|
for word in words:
|
||||||
|
# Strip trailing digits from word.
|
||||||
|
word = word.rstrip('1234567890')
|
||||||
|
|
||||||
|
# Quote marks found in some of the docs...
|
||||||
|
word = word.replace('“', '')
|
||||||
|
word = word.replace('”', '')
|
||||||
|
|
||||||
|
if len(word) > 4 and spell.unknown([word]) and not self.checkMultiWords(word):
|
||||||
|
print(self.file, this_value, '/', num_values, '"' + original + '"', bcolors.FAIL + word + bcolors.ENDC,
|
||||||
|
' -> ', '?')
|
||||||
|
# TODO: this can be interesting, but takes too long!
|
||||||
|
# bcolors.OKGREEN + spell.correction(word) + bcolors.ENDC
|
||||||
|
global missing_words
|
||||||
|
missing_words.append(word)
|
||||||
|
|
||||||
|
def removeComments(code_string):
|
||||||
|
code_string = re.sub(re.compile("/\*.*?\*/",re.DOTALL ) ,"" ,code_string) # C-style comment
|
||||||
|
# Remove this for now as can get tripped up if see htpps://www.... within a string!
|
||||||
|
#code_string = re.sub(re.compile("//.*?\n" ) ,"" ,code_string) # C++-style comment
|
||||||
|
return code_string
|
||||||
|
|
||||||
|
def removeSingleQuotes(code_string):
|
||||||
|
code_string = code_string.replace('\"\\\\\"', "")
|
||||||
|
code_string = code_string.replace("\\\"", " ")
|
||||||
|
code_string = code_string.replace("'\"'", "")
|
||||||
|
return code_string
|
||||||
|
|
||||||
|
def removeHexSpecifiers(code_string):
|
||||||
|
# TODO: replace with single regexp?
|
||||||
|
code_string = code_string.replace('0x%02X', "")
|
||||||
|
code_string = code_string.replace('0x%02x', "")
|
||||||
|
code_string = code_string.replace('0x%04X', "")
|
||||||
|
code_string = code_string.replace('0x%04x', "")
|
||||||
|
code_string = code_string.replace('0x%08X', "")
|
||||||
|
code_string = code_string.replace('0x%08x', "")
|
||||||
|
return code_string
|
||||||
|
|
||||||
|
|
||||||
|
# Create a File object that knows about all of the strings in the given file.
|
||||||
|
def findStrings(filename):
|
||||||
|
with open(filename, 'r') as f:
|
||||||
|
contents = f.read()
|
||||||
|
|
||||||
|
# Remove comments & embedded quotes so as not to trip up RE.
|
||||||
|
contents = removeComments(contents)
|
||||||
|
contents = removeSingleQuotes(contents)
|
||||||
|
contents = removeHexSpecifiers(contents)
|
||||||
|
|
||||||
|
# Create file object.
|
||||||
|
file = File(filename)
|
||||||
|
|
||||||
|
# What we check depends upon file type.
|
||||||
|
if file.code_file:
|
||||||
|
# Code so only checking strings.
|
||||||
|
matches = re.finditer(r'\"([^\"]*)\"', contents)
|
||||||
|
for m in matches:
|
||||||
|
file.add(m.group(1))
|
||||||
|
else:
|
||||||
|
# A documentation file, so examine all words.
|
||||||
|
words = contents.split()
|
||||||
|
for w in words:
|
||||||
|
file.add(w)
|
||||||
|
|
||||||
|
return file
|
||||||
|
|
||||||
|
|
||||||
|
# Test for whether the given file was automatically generated.
|
||||||
|
def isGeneratedFile(filename):
|
||||||
|
# Open file
|
||||||
|
f_read = open(os.path.join(filename), 'r')
|
||||||
|
lines_tested = 0
|
||||||
|
for line in f_read:
|
||||||
|
# The comment to say that its generated is near the top, so give up once
|
||||||
|
# get a few lines down.
|
||||||
|
if lines_tested > 10:
|
||||||
|
f_read.close()
|
||||||
|
return False
|
||||||
|
if (line.find('Generated automatically') != -1 or
|
||||||
|
line.find('Autogenerated from') != -1 or
|
||||||
|
line.find('is autogenerated') != -1 or
|
||||||
|
line.find('automatically generated by Pidl') != -1 or
|
||||||
|
line.find('Created by: The Qt Meta Object Compiler') != -1):
|
||||||
|
|
||||||
|
f_read.close()
|
||||||
|
return True
|
||||||
|
lines_tested = lines_tested + 1
|
||||||
|
|
||||||
|
# OK, looks like a hand-written file!
|
||||||
|
f_read.close()
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def isAppropriateFile(filename):
|
||||||
|
file, extension = os.path.splitext(filename)
|
||||||
|
return extension in { '.adoc', '.c', '.cpp', '.pod'} or file.endswith('README')
|
||||||
|
|
||||||
|
|
||||||
|
def findFilesInFolder(folder):
|
||||||
|
files_to_check = []
|
||||||
|
|
||||||
|
for root, subfolders, files in os.walk(folder):
|
||||||
|
for f in files:
|
||||||
|
if should_exit:
|
||||||
|
return
|
||||||
|
|
||||||
|
f = os.path.join(root, f)
|
||||||
|
if isAppropriateFile(f) and not isGeneratedFile(f):
|
||||||
|
files_to_check.append(f)
|
||||||
|
|
||||||
|
return files_to_check
|
||||||
|
|
||||||
|
|
||||||
|
# Check the given dissector file.
|
||||||
|
def checkFile(filename):
|
||||||
|
file = findStrings(filename)
|
||||||
|
file.spellCheck()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
# Main logic.
|
||||||
|
|
||||||
|
# command-line args. Controls which files should be checked.
|
||||||
|
# If no args given, will just scan epan/dissectors folder.
|
||||||
|
parser = argparse.ArgumentParser(description='Check calls in dissectors')
|
||||||
|
parser.add_argument('--file', action='store', default='',
|
||||||
|
help='specify individual dissector file to test')
|
||||||
|
parser.add_argument('--folder', action='store', default='',
|
||||||
|
help='specify folder to test')
|
||||||
|
parser.add_argument('--commits', action='store',
|
||||||
|
help='last N commits to check')
|
||||||
|
parser.add_argument('--open', action='store_true',
|
||||||
|
help='check open files')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
# Get files from wherever command-line args indicate.
|
||||||
|
files = []
|
||||||
|
if args.file:
|
||||||
|
# Add single specified file..
|
||||||
|
if not os.path.isfile(args.file):
|
||||||
|
print('Chosen file', args.file, 'does not exist.')
|
||||||
|
exit(1)
|
||||||
|
else:
|
||||||
|
files.append(args.file)
|
||||||
|
elif args.commits:
|
||||||
|
# Get files affected by specified number of commits.
|
||||||
|
command = ['git', 'diff', '--name-only', 'HEAD~' + args.commits]
|
||||||
|
files = [f.decode('utf-8')
|
||||||
|
for f in subprocess.check_output(command).splitlines()]
|
||||||
|
# Will examine dissector files only
|
||||||
|
files = list(filter(lambda f : isAppropriateFile(f), files))
|
||||||
|
elif args.open:
|
||||||
|
# Unstaged changes.
|
||||||
|
command = ['git', 'diff', '--name-only']
|
||||||
|
files = [f.decode('utf-8')
|
||||||
|
for f in subprocess.check_output(command).splitlines()]
|
||||||
|
# Only interested in dissector files.
|
||||||
|
files = list(filter(lambda f : isDissectorFile(f), files))
|
||||||
|
# Staged changes.
|
||||||
|
command = ['git', 'diff', '--staged', '--name-only']
|
||||||
|
files_staged = [f.decode('utf-8')
|
||||||
|
for f in subprocess.check_output(command).splitlines()]
|
||||||
|
# Only interested in dissector files.
|
||||||
|
files_staged = list(filter(lambda f : isDissectorFile(f), files_staged))
|
||||||
|
for f in files:
|
||||||
|
files.append(f)
|
||||||
|
for f in files_staged:
|
||||||
|
if not f in files:
|
||||||
|
files.append(f)
|
||||||
|
else:
|
||||||
|
# By default, scan dissectors
|
||||||
|
folder = os.path.join('epan', 'dissectors')
|
||||||
|
# But overwrite with any folder entry.
|
||||||
|
if args.folder:
|
||||||
|
folder = args.folder
|
||||||
|
if not os.path.isdir(folder):
|
||||||
|
print('Folder', folder, 'not found!')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# Find files from folder.
|
||||||
|
print('Looking for files in', folder)
|
||||||
|
files = findFilesInFolder(folder)
|
||||||
|
|
||||||
|
|
||||||
|
# If scanning a subset of files, list them here.
|
||||||
|
print('Examining:')
|
||||||
|
if args.file or args.commits or args.open:
|
||||||
|
if files:
|
||||||
|
print(' '.join(files), '\n')
|
||||||
|
else:
|
||||||
|
print('No files to check.\n')
|
||||||
|
else:
|
||||||
|
print('All dissector modules\n')
|
||||||
|
|
||||||
|
|
||||||
|
# Now check the chosen files.
|
||||||
|
for f in files:
|
||||||
|
# Jump out if control-C has been pressed.
|
||||||
|
if should_exit:
|
||||||
|
exit(1)
|
||||||
|
checkFile(f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Show the most commonly not-recognised words. TODO: depend upon a command-line option here?
|
||||||
|
print('')
|
||||||
|
counter = Counter(missing_words).most_common(100)
|
||||||
|
if len(counter) > 0:
|
||||||
|
for c in counter:
|
||||||
|
print(c[0], ':', c[1])
|
||||||
|
|
||||||
|
# Show error count.
|
||||||
|
print('\n' + bcolors.BOLD + str(len(missing_words)) + ' issues found' + bcolors.ENDC + '\n')
|
|
@ -0,0 +1,872 @@
|
||||||
|
|
||||||
|
0x%02x
|
||||||
|
0x%08x
|
||||||
|
1xrtt
|
||||||
|
3gpp2
|
||||||
|
80211n
|
||||||
|
accelerometer
|
||||||
|
accessors
|
||||||
|
acknowledgement
|
||||||
|
acp133
|
||||||
|
actuator
|
||||||
|
adwin
|
||||||
|
aes128
|
||||||
|
aes256
|
||||||
|
aggregator
|
||||||
|
agnss
|
||||||
|
aironet
|
||||||
|
airpcap
|
||||||
|
airtel
|
||||||
|
alcap
|
||||||
|
alljoyn
|
||||||
|
alloc
|
||||||
|
allocators
|
||||||
|
amperage
|
||||||
|
analyzers
|
||||||
|
analyzes
|
||||||
|
annexc
|
||||||
|
appdata
|
||||||
|
appid
|
||||||
|
arfcn
|
||||||
|
asn1cnf
|
||||||
|
asn2wrs
|
||||||
|
assymetric
|
||||||
|
async
|
||||||
|
asynchronously
|
||||||
|
atheros
|
||||||
|
atomically
|
||||||
|
attrib
|
||||||
|
attrs
|
||||||
|
authenticates
|
||||||
|
authenticator
|
||||||
|
authtoken
|
||||||
|
authtype
|
||||||
|
autoconfiguration
|
||||||
|
autodiscovery
|
||||||
|
available
|
||||||
|
avaya
|
||||||
|
backhaul
|
||||||
|
backoff
|
||||||
|
bacnet
|
||||||
|
bcast
|
||||||
|
beamformed
|
||||||
|
beamformee
|
||||||
|
beamformer
|
||||||
|
beamforming
|
||||||
|
bitfield
|
||||||
|
bitmask
|
||||||
|
bitrate
|
||||||
|
bitstring
|
||||||
|
blackhole
|
||||||
|
bnode
|
||||||
|
bootfile
|
||||||
|
bootloader
|
||||||
|
bootp
|
||||||
|
broadcom
|
||||||
|
bsmap
|
||||||
|
bssid
|
||||||
|
bssids
|
||||||
|
bssmap
|
||||||
|
btatt
|
||||||
|
btcommon
|
||||||
|
bthci
|
||||||
|
btmesh
|
||||||
|
btsdp
|
||||||
|
btsnoop
|
||||||
|
byte
|
||||||
|
byteorder
|
||||||
|
cablelabs
|
||||||
|
callback
|
||||||
|
callid
|
||||||
|
callsign
|
||||||
|
canceled
|
||||||
|
canceling
|
||||||
|
cancelled
|
||||||
|
cannot
|
||||||
|
canonicalized
|
||||||
|
capinfos
|
||||||
|
capsa
|
||||||
|
capwap
|
||||||
|
carrierfreq
|
||||||
|
carrierid
|
||||||
|
cccid
|
||||||
|
ccpch
|
||||||
|
cctrch
|
||||||
|
cdma2000
|
||||||
|
celcius
|
||||||
|
cellid
|
||||||
|
cellidentity
|
||||||
|
chan1
|
||||||
|
chan2
|
||||||
|
channelisation
|
||||||
|
charset
|
||||||
|
charsets
|
||||||
|
checkbox
|
||||||
|
checkout
|
||||||
|
chocolatey
|
||||||
|
chunked
|
||||||
|
ciphered
|
||||||
|
ciphering
|
||||||
|
ciphersuite
|
||||||
|
ciphertext
|
||||||
|
citrix
|
||||||
|
classmark
|
||||||
|
classmark3
|
||||||
|
cmake
|
||||||
|
cmdcontrol
|
||||||
|
codebook
|
||||||
|
codepoint
|
||||||
|
codeset
|
||||||
|
codingrate
|
||||||
|
coloring
|
||||||
|
colorise
|
||||||
|
colorization
|
||||||
|
colorize
|
||||||
|
colorized
|
||||||
|
colorizing
|
||||||
|
combiner
|
||||||
|
concatenate
|
||||||
|
concatenated
|
||||||
|
concatenates
|
||||||
|
concurrent
|
||||||
|
configitem
|
||||||
|
conformant
|
||||||
|
connectionless
|
||||||
|
connid
|
||||||
|
const
|
||||||
|
contactless
|
||||||
|
contiguously
|
||||||
|
copyfile
|
||||||
|
couchbase
|
||||||
|
cpdlc
|
||||||
|
cpich
|
||||||
|
cpuregisters
|
||||||
|
credential
|
||||||
|
credentials
|
||||||
|
criticalextensions
|
||||||
|
criticalextensionsfuture
|
||||||
|
crnti
|
||||||
|
crypto
|
||||||
|
cryptographic
|
||||||
|
csapi
|
||||||
|
ctype
|
||||||
|
customizable
|
||||||
|
customizing
|
||||||
|
datagram
|
||||||
|
datagrams
|
||||||
|
dataitem
|
||||||
|
datarate
|
||||||
|
datastate
|
||||||
|
datetime
|
||||||
|
dcerpc
|
||||||
|
deact
|
||||||
|
deactivated
|
||||||
|
deactivating
|
||||||
|
deactivation
|
||||||
|
deassertion
|
||||||
|
deauth
|
||||||
|
deauthenticated
|
||||||
|
deauthentication
|
||||||
|
debian
|
||||||
|
debug
|
||||||
|
dechunk
|
||||||
|
decompressing
|
||||||
|
decompressor
|
||||||
|
decremented
|
||||||
|
decrementing
|
||||||
|
decrypt
|
||||||
|
decrypted
|
||||||
|
decrypting
|
||||||
|
decryption
|
||||||
|
defragment
|
||||||
|
defragmentation
|
||||||
|
defragmented
|
||||||
|
defragmenting
|
||||||
|
dehumidification
|
||||||
|
delimiters
|
||||||
|
demultiplexer
|
||||||
|
demultiplexers
|
||||||
|
deprecated
|
||||||
|
deregister
|
||||||
|
deregistered
|
||||||
|
deregistering
|
||||||
|
des40
|
||||||
|
descr
|
||||||
|
desegment
|
||||||
|
desegmentation
|
||||||
|
desegmenting
|
||||||
|
deselect
|
||||||
|
devmode
|
||||||
|
dfilter
|
||||||
|
dfsauth
|
||||||
|
dhcpv
|
||||||
|
diffie
|
||||||
|
diplexer
|
||||||
|
directionality
|
||||||
|
dissection
|
||||||
|
dissector
|
||||||
|
dissectors
|
||||||
|
distinguisher
|
||||||
|
diversifier
|
||||||
|
dlmap
|
||||||
|
dlsch
|
||||||
|
dmepi
|
||||||
|
docsis
|
||||||
|
doesn't
|
||||||
|
double
|
||||||
|
downlink
|
||||||
|
dpauxmon
|
||||||
|
dpnss
|
||||||
|
drbid
|
||||||
|
dsmcc
|
||||||
|
dstport
|
||||||
|
dumpcap
|
||||||
|
earfcn
|
||||||
|
ebcdic
|
||||||
|
ecdhe
|
||||||
|
ecdsa
|
||||||
|
editcap
|
||||||
|
egprs
|
||||||
|
eigrp
|
||||||
|
elink
|
||||||
|
ellipsoid
|
||||||
|
encap
|
||||||
|
encaps
|
||||||
|
encapsulations
|
||||||
|
enciphered
|
||||||
|
encrypt
|
||||||
|
encrypting
|
||||||
|
endian
|
||||||
|
endianness
|
||||||
|
entryid
|
||||||
|
enumerations
|
||||||
|
epasv
|
||||||
|
errorcode
|
||||||
|
errored
|
||||||
|
errorportinfo
|
||||||
|
erspan
|
||||||
|
etheraddr
|
||||||
|
ethertype
|
||||||
|
ettarr
|
||||||
|
etype
|
||||||
|
eutra
|
||||||
|
eutran
|
||||||
|
extattr
|
||||||
|
extcap
|
||||||
|
extensibility
|
||||||
|
extrainformation
|
||||||
|
failover
|
||||||
|
fiber
|
||||||
|
fileset
|
||||||
|
firewall
|
||||||
|
flag1
|
||||||
|
flag2
|
||||||
|
flavored
|
||||||
|
flowid
|
||||||
|
flowmod
|
||||||
|
flowspec
|
||||||
|
format0
|
||||||
|
fortigate
|
||||||
|
fortinet
|
||||||
|
fpiur
|
||||||
|
framenum
|
||||||
|
framenumber
|
||||||
|
framenun
|
||||||
|
frametype
|
||||||
|
fsctl
|
||||||
|
functionalities
|
||||||
|
funkt
|
||||||
|
fvalue
|
||||||
|
ganss
|
||||||
|
gboolean
|
||||||
|
gchar
|
||||||
|
gcrypt
|
||||||
|
gendc
|
||||||
|
geoip
|
||||||
|
geonw
|
||||||
|
geran
|
||||||
|
getattr
|
||||||
|
getnext
|
||||||
|
gigamon
|
||||||
|
github
|
||||||
|
gitlab
|
||||||
|
gluster
|
||||||
|
gmprs
|
||||||
|
goaway
|
||||||
|
google
|
||||||
|
gprscdr
|
||||||
|
groupa
|
||||||
|
groupb
|
||||||
|
groupcast
|
||||||
|
groupmod
|
||||||
|
guint
|
||||||
|
handoff
|
||||||
|
hangup
|
||||||
|
harqid
|
||||||
|
hartip
|
||||||
|
hashed
|
||||||
|
hazelcast
|
||||||
|
heuristic
|
||||||
|
hfarr
|
||||||
|
HI2Operations
|
||||||
|
hnbap
|
||||||
|
homeplug
|
||||||
|
hopcount
|
||||||
|
hostname
|
||||||
|
hsdpa
|
||||||
|
hsdsch
|
||||||
|
hspdsch
|
||||||
|
http2
|
||||||
|
https
|
||||||
|
icmpv
|
||||||
|
ident
|
||||||
|
idl2wrs
|
||||||
|
iec60870
|
||||||
|
ieee17221
|
||||||
|
ieee80211
|
||||||
|
iface
|
||||||
|
ifconfig
|
||||||
|
ikev2
|
||||||
|
illuminance
|
||||||
|
implementor
|
||||||
|
incits
|
||||||
|
incrementing
|
||||||
|
infile
|
||||||
|
infiniband
|
||||||
|
infolist
|
||||||
|
informationitem
|
||||||
|
informationlist
|
||||||
|
initialise
|
||||||
|
initialising
|
||||||
|
initialization
|
||||||
|
initialize
|
||||||
|
initialized
|
||||||
|
initializer
|
||||||
|
initializers
|
||||||
|
initializes
|
||||||
|
initializing
|
||||||
|
inline
|
||||||
|
interleaving
|
||||||
|
interruptible
|
||||||
|
interworking
|
||||||
|
invalidation
|
||||||
|
ioctl
|
||||||
|
ipaddr
|
||||||
|
ipaddress
|
||||||
|
ipfix
|
||||||
|
ipprim
|
||||||
|
ipsec
|
||||||
|
iptrace
|
||||||
|
ipv4addr
|
||||||
|
isobus
|
||||||
|
iterator
|
||||||
|
itunes
|
||||||
|
iwarp
|
||||||
|
jetds
|
||||||
|
kademlia
|
||||||
|
keepalive
|
||||||
|
kerberos
|
||||||
|
keylen
|
||||||
|
keylog
|
||||||
|
keypress
|
||||||
|
keyring
|
||||||
|
keytab
|
||||||
|
knxip
|
||||||
|
l2cap
|
||||||
|
lanalyzer
|
||||||
|
lcgid
|
||||||
|
lcids
|
||||||
|
leasequery
|
||||||
|
libgcrypt
|
||||||
|
libpcap
|
||||||
|
linkaddr
|
||||||
|
linkinfo
|
||||||
|
linux
|
||||||
|
list1
|
||||||
|
lithionics
|
||||||
|
logcat
|
||||||
|
loghans
|
||||||
|
loglocal
|
||||||
|
logoff
|
||||||
|
logout
|
||||||
|
loopback
|
||||||
|
lscap
|
||||||
|
lucent
|
||||||
|
luminance
|
||||||
|
macaddr
|
||||||
|
macaddress
|
||||||
|
mailto
|
||||||
|
malloc
|
||||||
|
mcast
|
||||||
|
megaco
|
||||||
|
mellanox
|
||||||
|
memcache
|
||||||
|
menubar
|
||||||
|
mergecap
|
||||||
|
messageid
|
||||||
|
metadata
|
||||||
|
meteorological
|
||||||
|
microbit
|
||||||
|
midamble
|
||||||
|
miniport
|
||||||
|
minislot
|
||||||
|
minislots
|
||||||
|
minus1
|
||||||
|
mirrorlink
|
||||||
|
misconfiguration
|
||||||
|
misconfigured
|
||||||
|
mode01
|
||||||
|
mode7
|
||||||
|
modepage
|
||||||
|
modespecificinfo
|
||||||
|
mpeg4
|
||||||
|
mpsse
|
||||||
|
mrcpv
|
||||||
|
msgsend
|
||||||
|
mtftp
|
||||||
|
mtrace
|
||||||
|
multiband
|
||||||
|
multicarrier
|
||||||
|
multicast
|
||||||
|
multicasted
|
||||||
|
multicore
|
||||||
|
multiframe
|
||||||
|
multiframes
|
||||||
|
multihop
|
||||||
|
multilateration
|
||||||
|
multipacket
|
||||||
|
multipart
|
||||||
|
multipath
|
||||||
|
multiplexed
|
||||||
|
multiplexer
|
||||||
|
multiplexers
|
||||||
|
multiplexing
|
||||||
|
multirat
|
||||||
|
multirate
|
||||||
|
multislot
|
||||||
|
multistate
|
||||||
|
nacks
|
||||||
|
namelen
|
||||||
|
namespace
|
||||||
|
narrowband
|
||||||
|
nbrar
|
||||||
|
netboot
|
||||||
|
netfilter
|
||||||
|
netflow
|
||||||
|
nethop
|
||||||
|
netlink
|
||||||
|
netlogon
|
||||||
|
netmask
|
||||||
|
netmon
|
||||||
|
netscaler
|
||||||
|
nettl
|
||||||
|
newpw
|
||||||
|
nexthop
|
||||||
|
nfs4err
|
||||||
|
ngsniffer
|
||||||
|
niagra
|
||||||
|
nonblock
|
||||||
|
noncriticalextension
|
||||||
|
noncriticalextensions
|
||||||
|
notif
|
||||||
|
notifier
|
||||||
|
notused
|
||||||
|
npcap
|
||||||
|
nprach
|
||||||
|
nsapi
|
||||||
|
nstime
|
||||||
|
nstrace
|
||||||
|
objectid
|
||||||
|
objkey
|
||||||
|
obsoleted
|
||||||
|
octets
|
||||||
|
octetstring
|
||||||
|
ofdma
|
||||||
|
offloadability
|
||||||
|
ofpat
|
||||||
|
ofppf
|
||||||
|
ofpxmt
|
||||||
|
om2000
|
||||||
|
onduration
|
||||||
|
onoff
|
||||||
|
ontime
|
||||||
|
opcode
|
||||||
|
openvpn
|
||||||
|
opnum
|
||||||
|
optimizations
|
||||||
|
ospf6
|
||||||
|
outhdr
|
||||||
|
packetcable
|
||||||
|
packetization
|
||||||
|
packetized
|
||||||
|
param
|
||||||
|
parameterization
|
||||||
|
parameterized
|
||||||
|
params
|
||||||
|
parlay
|
||||||
|
parms
|
||||||
|
passcode
|
||||||
|
passkey
|
||||||
|
passthrough
|
||||||
|
passwd
|
||||||
|
pcapng
|
||||||
|
pcell
|
||||||
|
pcmax
|
||||||
|
pcmaxc
|
||||||
|
pdcch
|
||||||
|
pdsch
|
||||||
|
peeraddr
|
||||||
|
phich
|
||||||
|
phonebook
|
||||||
|
physcellid
|
||||||
|
picmg
|
||||||
|
pinfo
|
||||||
|
plaintext
|
||||||
|
plugin
|
||||||
|
plugins
|
||||||
|
pname
|
||||||
|
polestar
|
||||||
|
popup
|
||||||
|
portcounters
|
||||||
|
portinfo
|
||||||
|
portmod
|
||||||
|
portnumber
|
||||||
|
portstatus
|
||||||
|
powercontrol
|
||||||
|
prach
|
||||||
|
preconfiguration
|
||||||
|
preconfigured
|
||||||
|
preempting
|
||||||
|
preemption
|
||||||
|
prefs
|
||||||
|
preloaded
|
||||||
|
prepay
|
||||||
|
prepend
|
||||||
|
preshared
|
||||||
|
prioritized
|
||||||
|
privkey
|
||||||
|
procid
|
||||||
|
profidrive
|
||||||
|
profinet
|
||||||
|
protected
|
||||||
|
protoabbrev
|
||||||
|
protobuf
|
||||||
|
protocolie
|
||||||
|
pscell
|
||||||
|
pseudowire
|
||||||
|
ptvcursor
|
||||||
|
pubdir
|
||||||
|
pubkey
|
||||||
|
pucch
|
||||||
|
pusch
|
||||||
|
pytest
|
||||||
|
qam16
|
||||||
|
qam64
|
||||||
|
qnet6
|
||||||
|
radiotap
|
||||||
|
ranap
|
||||||
|
randomizer
|
||||||
|
randpkt
|
||||||
|
reachability
|
||||||
|
readme
|
||||||
|
realloc
|
||||||
|
realtime
|
||||||
|
reassigning
|
||||||
|
reauth
|
||||||
|
reauthentication
|
||||||
|
reauthorize
|
||||||
|
rebinding
|
||||||
|
recalculate
|
||||||
|
recalculating
|
||||||
|
recognizer
|
||||||
|
reconf
|
||||||
|
reconfig
|
||||||
|
reconfigure
|
||||||
|
reconfigured
|
||||||
|
reconfrqst
|
||||||
|
redelivery
|
||||||
|
redistributable
|
||||||
|
redistributables
|
||||||
|
reencyption
|
||||||
|
reestablishment
|
||||||
|
referer
|
||||||
|
referrer
|
||||||
|
regex
|
||||||
|
reimplemented
|
||||||
|
reinitialize
|
||||||
|
reinitializing
|
||||||
|
rekey
|
||||||
|
rekeying
|
||||||
|
reoptimization
|
||||||
|
reordercap
|
||||||
|
reorigination
|
||||||
|
representable
|
||||||
|
reprogrammable
|
||||||
|
reprogramming
|
||||||
|
requester
|
||||||
|
requestor
|
||||||
|
rerouting
|
||||||
|
resend
|
||||||
|
reservable
|
||||||
|
reserved
|
||||||
|
reserved0
|
||||||
|
reserved1
|
||||||
|
reserved2
|
||||||
|
reserved3
|
||||||
|
reserved4
|
||||||
|
reserved5
|
||||||
|
resize
|
||||||
|
resolver
|
||||||
|
resynchronization
|
||||||
|
retrans
|
||||||
|
retransmission
|
||||||
|
retransmissions
|
||||||
|
retransmit
|
||||||
|
retransmits
|
||||||
|
retransmitted
|
||||||
|
retries
|
||||||
|
retry
|
||||||
|
retyping
|
||||||
|
rfcomm
|
||||||
|
rlcmac
|
||||||
|
rnsap
|
||||||
|
roamer
|
||||||
|
routable
|
||||||
|
rpcap
|
||||||
|
rtpmidi
|
||||||
|
sanitize
|
||||||
|
satisfiable
|
||||||
|
scaler
|
||||||
|
scannable
|
||||||
|
scell
|
||||||
|
scoped
|
||||||
|
scrollbar
|
||||||
|
segno
|
||||||
|
semiautomatic
|
||||||
|
seqno
|
||||||
|
seqnum
|
||||||
|
sequenceno
|
||||||
|
serialize
|
||||||
|
serialized
|
||||||
|
sessionid
|
||||||
|
setattr
|
||||||
|
setuid
|
||||||
|
severities
|
||||||
|
sflow
|
||||||
|
sha256
|
||||||
|
sha384
|
||||||
|
sha512
|
||||||
|
sharkd
|
||||||
|
shouldn't
|
||||||
|
siapp
|
||||||
|
sidelink
|
||||||
|
signaling
|
||||||
|
slsch
|
||||||
|
sname
|
||||||
|
snaplen
|
||||||
|
snow3g
|
||||||
|
someip
|
||||||
|
spare
|
||||||
|
spare1
|
||||||
|
spare2
|
||||||
|
spare3
|
||||||
|
spare4
|
||||||
|
spare5
|
||||||
|
spare6
|
||||||
|
spare7
|
||||||
|
spare8
|
||||||
|
spare9
|
||||||
|
spcell
|
||||||
|
spnego
|
||||||
|
spooled
|
||||||
|
srbid
|
||||||
|
srcport
|
||||||
|
ssupervisor
|
||||||
|
stateful
|
||||||
|
statusbar
|
||||||
|
streamid
|
||||||
|
struct
|
||||||
|
subaddress
|
||||||
|
subband
|
||||||
|
subcarrier
|
||||||
|
subcarriers
|
||||||
|
subchannel
|
||||||
|
subcode
|
||||||
|
subdevice
|
||||||
|
subdissector
|
||||||
|
subdissectors
|
||||||
|
subelem
|
||||||
|
subelement
|
||||||
|
subelements
|
||||||
|
subframes
|
||||||
|
subheader
|
||||||
|
subheaders
|
||||||
|
subids
|
||||||
|
subindex
|
||||||
|
subm
|
||||||
|
submode
|
||||||
|
subnet
|
||||||
|
subnets
|
||||||
|
subobj
|
||||||
|
subobject
|
||||||
|
suboption
|
||||||
|
suboptions
|
||||||
|
subparam
|
||||||
|
subpdu
|
||||||
|
subpm
|
||||||
|
subquery
|
||||||
|
subselect
|
||||||
|
subselection
|
||||||
|
subslot
|
||||||
|
subtlv
|
||||||
|
subtree
|
||||||
|
subtrees
|
||||||
|
switchinfo
|
||||||
|
synchronizing
|
||||||
|
synphasor
|
||||||
|
sysdig
|
||||||
|
sysex
|
||||||
|
sysframe
|
||||||
|
syslog
|
||||||
|
systemd
|
||||||
|
tablemod
|
||||||
|
tcpip
|
||||||
|
tcpudp
|
||||||
|
tdd128
|
||||||
|
tdd384
|
||||||
|
tdd768
|
||||||
|
teredo
|
||||||
|
text2pcap
|
||||||
|
timeout
|
||||||
|
timeslot
|
||||||
|
timestamp
|
||||||
|
timestamps
|
||||||
|
timezone
|
||||||
|
toggling
|
||||||
|
toolongfragment
|
||||||
|
tooltip
|
||||||
|
touchlink
|
||||||
|
traceroute
|
||||||
|
transcoder
|
||||||
|
truncate
|
||||||
|
tshark
|
||||||
|
tspec
|
||||||
|
tunneled
|
||||||
|
tunneling
|
||||||
|
tvbuff
|
||||||
|
type1
|
||||||
|
type2
|
||||||
|
type3
|
||||||
|
typedef
|
||||||
|
uarfcn
|
||||||
|
uboot
|
||||||
|
ubuntu
|
||||||
|
udpcp
|
||||||
|
uint16
|
||||||
|
uint32
|
||||||
|
uint8
|
||||||
|
ulmap
|
||||||
|
ulsch
|
||||||
|
unaligned
|
||||||
|
unassign
|
||||||
|
unauthenticated
|
||||||
|
uncalculated
|
||||||
|
unciphered
|
||||||
|
uncompress
|
||||||
|
uncompressing
|
||||||
|
uncompression
|
||||||
|
unconfigurable
|
||||||
|
unconfigured
|
||||||
|
unconfirm
|
||||||
|
uncorrectable
|
||||||
|
undecipherable
|
||||||
|
undecodable
|
||||||
|
undecoded
|
||||||
|
undecryptable
|
||||||
|
undecrypted
|
||||||
|
undeliverable
|
||||||
|
underflow
|
||||||
|
underrun
|
||||||
|
undissected
|
||||||
|
unencrypted
|
||||||
|
unescaped
|
||||||
|
unfragmented
|
||||||
|
unhandled
|
||||||
|
unicast
|
||||||
|
unicode
|
||||||
|
unignore
|
||||||
|
unimplemented
|
||||||
|
uninitialized
|
||||||
|
uninstall
|
||||||
|
uninstaller
|
||||||
|
unknown1
|
||||||
|
unlink
|
||||||
|
unmarshal
|
||||||
|
unparsable
|
||||||
|
unparsed
|
||||||
|
unpunctuated
|
||||||
|
unreassembled
|
||||||
|
unrecoverable
|
||||||
|
unrecovered
|
||||||
|
unregister
|
||||||
|
unregistration
|
||||||
|
unreportable
|
||||||
|
unresponded
|
||||||
|
unroutable
|
||||||
|
unsecure
|
||||||
|
unsegmented
|
||||||
|
unsequenced
|
||||||
|
unsubscribe
|
||||||
|
unsynchronized
|
||||||
|
untagged
|
||||||
|
untruncated
|
||||||
|
untrusted
|
||||||
|
untunelled
|
||||||
|
uplink
|
||||||
|
upload
|
||||||
|
uploaded
|
||||||
|
uploading
|
||||||
|
urlencoded
|
||||||
|
urnti
|
||||||
|
userdata
|
||||||
|
userinfo
|
||||||
|
userlist
|
||||||
|
userplane
|
||||||
|
utilization
|
||||||
|
utran
|
||||||
|
v1250
|
||||||
|
v1310
|
||||||
|
v1410
|
||||||
|
v1530
|
||||||
|
v1610
|
||||||
|
verizon
|
||||||
|
version2
|
||||||
|
version3
|
||||||
|
version4
|
||||||
|
version5
|
||||||
|
version6
|
||||||
|
version7
|
||||||
|
versioning
|
||||||
|
virtualization
|
||||||
|
volerr
|
||||||
|
wakeup
|
||||||
|
webcam
|
||||||
|
websocket
|
||||||
|
wideband
|
||||||
|
wikipedia
|
||||||
|
wimax
|
||||||
|
winpcap
|
||||||
|
winspool
|
||||||
|
wireshark
|
||||||
|
wiretap
|
||||||
|
withfcs
|
||||||
|
withoutfcs
|
||||||
|
wksta
|
||||||
|
writable
|
||||||
|
wslua
|
||||||
|
wsluarm
|
||||||
|
x509sat
|
||||||
|
xchannel
|
||||||
|
xmlns
|
||||||
|
z3950
|
||||||
|
zigbee
|
Loading…
Reference in New Issue