pentoo-overlay/net-wireless/rfcat/files/71.patch
2020-05-25 11:40:05 +08:00

9101 lines
363 KiB
Diff

From 638d7bac7b608b64d01e3d7879c1125eb60a7d22 Mon Sep 17 00:00:00 2001
From: PlantDaddy <CqP5TZ77NYBf5uQt@protonmail.com>
Date: Fri, 10 Apr 2020 23:00:54 -0500
Subject: [PATCH 1/4] Updated code to be Python 3 compliant and a Python 3
package could be built successfully, fixed some bugs, found some possible
bugs, tightened code to be more in-line with the PEP8 style guide (thus
improving pylint score), made this so it should be python 2 and 3 compatible.
---
.gitignore | 1 +
CC-Bootloader/rfcat_bootloader | 177 +++++-----
package.sh | 1 +
requirements.txt | 1 +
rfcat | 19 +-
rfcat_msfrelay | 127 ++++----
rfcat_server | 58 ++--
rflib/__init__.py | 41 +--
rflib/bits.py | 319 +++++++++---------
rflib/cc111Xhparser.py | 65 ++--
rflib/ccrecvdump.py | 8 +-
rflib/ccspecan.py | 84 ++---
rflib/chipcon_nic.py | 568 ++++++++++++++++-----------------
rflib/chipcon_usb.py | 2 +-
rflib/chipcondefs.py | 4 +-
rflib/const.py | 3 +-
rflib/intelhex.py | 205 ++++++------
rflib/rflib_version.py | 2 +-
setup.py | 7 +-
tests/test_basics.py | 4 +-
tests/test_fakedongle.py | 36 ++-
21 files changed, 884 insertions(+), 848 deletions(-)
diff --git a/.gitignore b/.gitignore
index 368fb11..b463531 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,3 +46,4 @@ venv/
ENV/
env.bak/
venv.bak/
+.idea/
diff --git a/CC-Bootloader/rfcat_bootloader b/CC-Bootloader/rfcat_bootloader
index 7a040b5..34fdf8c 100755
--- a/CC-Bootloader/rfcat_bootloader
+++ b/CC-Bootloader/rfcat_bootloader
@@ -7,43 +7,45 @@ from serial.serialutil import SerialException
bootloader_error_codes = {
- '0' : "OK",
- '1' : "Intel HEX Invalid",
- '2' : "Bad Checksum",
- '3' : "Bad Address",
- '4' : "Bad Record Type",
- '5' : "Record Too Long"
+ '0': "OK",
+ '1': "Intel HEX Invalid",
+ '2': "Bad Checksum",
+ '3': "Bad Address",
+ '4': "Bad Record Type",
+ '5': "Record Too Long"
}
+
def download_code(ihx_file, serial_port):
for line in ihx_file.readlines():
record_type = int(line[7:9], 16)
- if (record_type == 0x00):
- print "Writing", line[:-1],
+ if record_type == 0x00:
+ print("Writing {}".format(line[:-1]))
serial_port.write(line)
rc = serial_port.read()
- print " RC =", rc,
+ print(" RC = {}".format(rc))
if rc in bootloader_error_codes:
- print "(%s)" % bootloader_error_codes[rc]
+ print("(%s)".format(bootloader_error_codes[rc]))
else:
- print "(Unknown Error)"
- if (rc != '0'):
- print "Error downloading code!"
+ print("(Unknown Error)")
+ if rc != '0':
+ print("Error downloading code!")
return False
else:
- print "Skipping non data record: '%s'" % line[:-1]
+ print("Skipping non data record: '%s'".format(line[:-1]))
return True
+
def verify_code(ihx_file, serial_port):
- can_read_any= None
+ can_read_any = None
for line in ihx_file.readlines():
record_type = int(line[7:9], 16)
- if (record_type == 0x00):
+ if record_type == 0x00:
length = int(line[1:3], 16)
start_addr = int(line[3:7], 16)
data = line[9:9+(length*2)]
# first time around, check if we can only read 16 byte chunks
- if can_read_any == None:
+ if can_read_any is None:
can_read_any = False
do_flash_read(serial_port, start_addr, 1)
for read_data in serial_port:
@@ -55,82 +57,87 @@ def verify_code(ihx_file, serial_port):
else:
break
if not can_read_any:
- print "*** warning! this version of CC-Bootloader can only read 16 byte blocks!"
- print "*** upgrade recommended!"
+ print("*** warning! this version of CC-Bootloader can only read 16 byte blocks!")
+ print("*** upgrade recommended!")
if can_read_any:
- block_length= length
+ block_length = length
else:
- block_length= ((length / 16) + 1) * 16
- print "\rVerifying %04d bytes at address: %04X" % (length, start_addr),
+ block_length = ((length / 16) + 1) * 16
+ print("\rVerifying %04d bytes at address: %04X".format(length, start_addr))
do_flash_read(serial_port, start_addr, block_length)
- verify_data= ''
+ verify_data = ''
for read_data in serial_port:
- read_data= read_data.strip()
- if (not data or read_data == ":00000001FF"):
+ read_data = read_data.strip()
+ if not data or read_data == ":00000001FF":
break
# strip header and checksum
verify_data += read_data[9:-2]
- if (data == verify_data[:length*2]):
- print '(OK)',
+ if data == verify_data[:length * 2]:
+ print('(OK) ')
else:
- print 'Failed! Expected:', data, 'Got:', verify_data[:length*2]
+ print('Failed! Expected: ' + str(data) + ' Got: ' + str(verify_data[:length*2]))
exit(1)
sys.stdout.flush()
else:
- print "Skipping non data record: '%s'" % line[:-1]
+ print("Skipping non data record: '{}'".format(line[:-1]))
return True
+
def run_user_code(serial_port):
# User code is entered on intel HEX EOF record
serial_port.write(":00000001FF\n")
return True
-
+
+
def reset_bootloader(serial_port):
serial_port.write(":00000022DE\n")
rc = serial_port.read()
- print "RC =", rc,
+ print("RC = {}".format(rc))
if rc in bootloader_error_codes:
- print "(%s)" % bootloader_error_codes[rc]
+ print("(%s)".format(bootloader_error_codes[rc]))
else:
- print "(Unknown Error)"
- if (rc != '0'):
- print "Error resetting bootloader!"
+ print("(Unknown Error)")
+ if rc != '0':
+ print("Error resetting bootloader!")
return False
return True
+
def erase_all_user(serial_port):
serial_port.write(":00000023DD\n")
rc = serial_port.read()
- print "RC =", rc,
+ print("RC = ".format(rc))
if rc in bootloader_error_codes:
- print "(%s)" % bootloader_error_codes[rc]
+ print("(%s)".format(bootloader_error_codes[rc]))
else:
- print "(Unknown Error)"
- if (rc != '0'):
- print "Error erasing all user flash!"
+ print("(Unknown Error)")
+ if rc != '0':
+ print("Error erasing all user flash!")
return False
return True
-
+
+
def erase_user_page(serial_port, page):
chksum = (0xDB + 0x100 - page) & 0xFF
serial_port.write(":01000024%02X%02X\n" % (page, chksum))
rc = serial_port.read()
- print "RC =", rc,
+ print("RC = ".format(rc))
if rc in bootloader_error_codes:
- print "(%s)" % bootloader_error_codes[rc]
+ print("(%s)".format(bootloader_error_codes[rc]))
else:
- print "(Unknown Error)"
- if (rc != '0'):
- print "Error erasing user flash page!"
+ print("(Unknown Error)")
+ if rc != '0':
+ print("Error erasing user flash page!")
return False
return True
+
def do_flash_read(serial_port, start_addr, length):
- chksum = (0xD9 +
+ chksum = (0xD9 +
(0x100 - (start_addr & 0xFF)) +
- (0x100 - ((start_addr>>8) & 0xFF)) +
+ (0x100 - ((start_addr >> 8) & 0xFF)) +
(0x100 - (length & 0xFF)) +
- (0x100 - ((length>>8) & 0xFF))
+ (0x100 - ((length >> 8) & 0xFF))
) & 0xFF
serial_port.write(":02%04X25%04X%02X\n" % (start_addr, length, chksum))
@@ -139,16 +146,17 @@ def flash_read(ihx_file, serial_port, start_addr, length):
do_flash_read(serial_port, start_addr, length)
for line in serial_port:
if not line == "\n":
- if(ihx_file):
+ if ihx_file:
ihx_file.write(line)
else:
- print line,
- if (line == ":00000001FF\n"):
+ print(line)
+ if line == ":00000001FF\n":
break
+
def print_usage():
import sys
- print """
+ print("""
CC Bootloader Download Utility
Usage: %s serial_port command
@@ -193,14 +201,15 @@ Commands:
verify <hex_file>
Verify hex_file matches device flash memory.
- """ % sys.argv[0]
+ """ % sys.argv[0])
+
if __name__ == '__main__':
import sys
- if (len(sys.argv) < 3):
+ if len(sys.argv) < 3:
print_usage()
sys.exit(1)
-
+
serial_port_name = sys.argv[1]
command = sys.argv[2]
options = sys.argv[3:]
@@ -210,59 +219,61 @@ if __name__ == '__main__':
serial_port = serial.Serial(serial_port_name, timeout=1)
break
- except SerialException,e:
- print "\nSomething is talking to the RfCat dongle (Modem Manager, most likely). Retrying again after 5 seconds. This can take a minute, please be patient. (error: %r)" % e
+ except SerialException as e:
+ print("\nSomething is talking to the RfCat dongle (Modem Manager, most"
+ "likely). Retrying again after 5 seconds. This can take a "
+ "minute, please be patient. (error: {})".format(e))
time.sleep(6)
except KeyboardInterrupt:
- print "Caught <CTRL-C>, exitting..."
- exit (-2)
- except Exception,e:
+ print("Caught <CTRL-C>, exitting...")
+ exit(-2)
+ except Exception as e:
sys.excepthook(*sys.exc_info())
- print e
- exit (-1)
-
+ print(e)
+ exit(-1)
+
try:
- if (command == 'download' or command == 'verify'):
- if (len(options) < 1):
+ if command == 'download' or command == 'verify':
+ if len(options) < 1:
print_usage()
else:
ihx_filename = options[0]
ihx_file = open(ihx_filename, 'r')
- if (command == 'download'):
+ if command == 'download':
download_code(ihx_file, serial_port)
else:
verify_code(ihx_file, serial_port)
-
- elif (command == 'run'):
+
+ elif command == 'run':
run_user_code(serial_port)
-
- elif (command == 'reset'):
+
+ elif command == 'reset':
reset_bootloader(serial_port)
-
- elif (command == 'erase_all'):
+
+ elif command == 'erase_all':
erase_all_user(serial_port)
-
- elif (command == 'erase'):
- if (len(options) < 1):
+
+ elif command == 'erase':
+ if len(options) < 1:
print_usage()
else:
erase_user_page(serial_port, int(options[0]))
-
- elif (command == 'read'):
- if (len(options) < 2):
+
+ elif command == 'read':
+ if len(options) < 2:
print_usage()
else:
ihx_file = None
- if(len(options) == 3):
+ if len(options) == 3:
try:
ihx_filename = options[2]
ihx_file = open(ihx_filename, 'w')
- print 'reading to:', ihx_filename
+ print('reading to: {}'.format(ihx_filename))
except:
- print "couldn't open output file:", ihx_filename
+ print("couldn't open output file: {}".format(ihx_filename))
exit(2)
flash_read(ihx_file, serial_port, int(options[0], 16), int(options[1], 16))
-
+
else:
print_usage()
finally:
diff --git a/package.sh b/package.sh
index e34e334..6400abe 100755
--- a/package.sh
+++ b/package.sh
@@ -1,3 +1,4 @@
+#!/usr/bin/env bash
echo "=== set revision: `./revision.sh` ==="
if ( which sdcc )
diff --git a/requirements.txt b/requirements.txt
index 98ab555..3f68644 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
+pyserial
PySide2
pyusb
future
diff --git a/rfcat b/rfcat
index 30a3e53..6c13457 100755
--- a/rfcat
+++ b/rfcat
@@ -10,7 +10,7 @@ readline.parse_and_bind("tab: complete")
from rflib import *
-logging.basicConfig(level=logging.DEBUG, format='%(asctime)s:%(levelname)s:%(name)s: %(message)s')
+logging.basicConfig(level=logging.DEBUG, format='{asctime:!s}:{levelname:!s}:{name:!s}: {message:!s}')
logger = logging.getLogger(__name__)
@@ -34,20 +34,26 @@ if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
- parser.add_argument('-r', '--research', default=False, action="store_true", help='Interactive Python and the "d" instance to talk to your dongle. melikey longtime.')
+ parser.add_argument('-r', '--research', default=False, action="store_true", help='Interactive Python and the "d" '
+ 'instance to talk to your dongle. '
+ ' melikey longtime.')
parser.add_argument('-i', '--index', default=0, type=int)
parser.add_argument('-s', '--specan', default=False, action="store_true", help='start spectrum analyzer')
parser.add_argument('-f', '--centfreq', default=902e6, type=float)
parser.add_argument('-c', '--inc', default=250e3, type=float)
parser.add_argument('-n', '--specchans', default=104, type=int)
- parser.add_argument('--bootloader', default=False, action="store_true", help='trigger the bootloader (use in order to flash the dongle)')
- parser.add_argument('--force', default=False, action="store_true", help='use this to make sure you want to set bootloader mode (you *must* flash after setting --bootloader)')
+ parser.add_argument('--bootloader', default=False, action="store_true", help='trigger the bootloader (use in order '
+ 'to flash the dongle)')
+ parser.add_argument('--force', default=False, action="store_true", help='use this to make sure you want to set '
+ 'bootloader mode (you *must* flash after '
+ 'setting --bootloader)')
ifo = parser.parse_args()
if ifo.bootloader:
if not ifo.force:
- print("Protecting you from yourself. If you want to trigger Bootloader mode (you will then *have* to flash a new RfCat image on it) use the --force argument as well")
+ print("Protecting you from yourself. If you want to trigger Bootloader mode (you will then *have* to "
+ "flash a new RfCat image on it) use the --force argument as well")
exit(-1)
print("Entering RfCat Bootloader mode, ready for new image...")
@@ -55,7 +61,7 @@ if __name__ == "__main__":
exit(0)
elif ifo.specan:
- RfCat(ifo.index).specan(ifo.centfreq,ifo.inc,ifo.specchans)
+ RfCat(ifo.index).specan(ifo.centfreq, ifo.inc, ifo.specchans)
elif ifo.research:
interactive(ifo.index, DongleClass=RfCat, intro=intro)
@@ -64,4 +70,3 @@ if __name__ == "__main__":
# do the full-rfcat thing
d = RfCat(ifo.index, debug=False)
d.rf_redirection((sys.stdin, sys.stdout))
-
diff --git a/rfcat_msfrelay b/rfcat_msfrelay
index a682165..800de1d 100644
--- a/rfcat_msfrelay
+++ b/rfcat_msfrelay
@@ -13,8 +13,8 @@ import base64
import socket
import threading
-from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
-from urlparse import parse_qs,urlparse
+from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
+from urlparse import parse_qs, urlparse
from rflib import *
# Global Nic used for MSFHandler
@@ -26,6 +26,7 @@ last_sent = 0
username = None
password = None
+
class MSFHandler(BaseHTTPRequestHandler):
def status(self):
status = {}
@@ -37,7 +38,7 @@ class MSFHandler(BaseHTTPRequestHandler):
except:
hw_version = "not supported"
status["operational"] = 1 # Possibly connect this to ping?
- status["hw_specialty"] = { "rftransceiver": True }
+ status["hw_specialty"] = { "rftransceiver": True}
status["hw_capabilities"] = { "cc11xx": True}
status["last_10_errors"] = last_errors
status["api_version"] = "0.0.2"
@@ -55,33 +56,34 @@ class MSFHandler(BaseHTTPRequestHandler):
return stats
def datetime(self):
- return { "sytem_datetime": int(time.time()) }
+ return {"sytem_datetime": int(time.time())}
def timezone(self):
- return { "system_timezone": time.strftime("%Z") }
+ return {"system_timezone": time.strftime("%Z")}
def supported_idx(self):
- return { "indexes": [ nic.idx ] }
+ return {"indexes": [nic.idx]}
def reset(self):
nic.resetup()
- return { "status": "Resetting" }
+ return {"status": "Resetting"}
def set_freq(self, args):
mhz = 24
- if not "freq" in args:
+ if "freq" not in args:
return self.not_supported()
if "mhz" in args:
mhz = int(args["mhz"])
nic.setFreq(int(args["freq"][0]), mhz)
- return { "success": True }
+ return {"success": True}
def get_modulations(self):
- mods = [ "2FSK", "GFSK", "4FSK", "ASK/OOK", "MSK", "2FSK/Manchester", "GFSK/Manchester", "ASK/OOK/Manchester", "MSK/Manchester" ]
+ mods = ["2FSK", "GFSK", "4FSK", "ASK/OOK", "MSK", "2FSK/Manchester", "GFSK/Manchester", "ASK/OOK/Manchester",
+ "MSK/Manchester"]
return mods
def set_modulation(self, args):
- if not "mod" in args:
+ if "mod" not in args:
return self.not_supported()
modvalue = -1
for modv, modstr in MODULATIONS.items():
@@ -92,31 +94,31 @@ class MSFHandler(BaseHTTPRequestHandler):
try:
nic.setMdmModulation(modvalue)
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
# Fixed Len
def make_packet_flen(self, args):
- if not "len" in args:
+ if "len" not in args:
return self.not_supported()
try:
nic.makePktFLEN(int(args["len"][0]))
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
# Variable Len
def make_packet_vlen(self, args):
- if not "len" in args:
+ if "len" not in args:
return self.not_supported()
try:
nic.makePktVLEN(int(args["len"][0]))
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
def set_mode(self, args):
- if not "mode" in args:
+ if "mode" not in args:
return self.not_supported()
mode = args["mode"][0]
if mode == "TX" or mode == "tx":
@@ -127,21 +129,21 @@ class MSFHandler(BaseHTTPRequestHandler):
nic.setModeIDLE()
else:
return self.not_supported()
- return { "success": True }
+ return {"success": True}
def enablePktCRC(self):
nic.setEnablePktCRC()
- return { "success": True }
+ return {"success": True}
def enableManchester(self):
nic.setEnableMdmManchester()
- return { "success": True}
+ return {"success": True}
def set_channel(self, args):
- if not "channel" in args:
+ if "channel" not in args:
return self.not_supported()
nic.setChannel(int(args["channel"]))
- return { "success": True }
+ return {"success": True}
def set_channel_bandwidth(self, args):
mhz = 24
@@ -150,7 +152,7 @@ class MSFHandler(BaseHTTPRequestHandler):
if "mhz" in args:
mhz = int(args["mhz"][0])
nic.setMdmChanBW(int(args["bw"]), mhz)
- return { "success": True }
+ return {"success": True}
def set_channel_spc(self, args):
chanspc = None
@@ -166,69 +168,69 @@ class MSFHandler(BaseHTTPRequestHandler):
try:
nic.setMdmChanSpc(chanspc, chanspc_m, chanspc_e, mhz)
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
def set_baud_rate(self, args):
mhz = 24
- if not "rate" in args:
+ if "rate" not in args:
return self.not_supported()
if "mhz" in args:
mhz = int(args["mhz"][0])
try:
nic.setMdmDRate(int(args["rate"][0]), mhz)
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
def set_deviation(self, args):
mhz = 24
- if not "deviat" in args:
+ if "deviat" not in args:
return self.not_supported()
if "mhz" in args:
mhz = int(args["mhz"][0])
try:
nic.setMdmDeviatn(int(args["deviat"][0]), mhz)
except:
- return { "success": False }
- return { "success": True }
+ return {"success": False}
+ return {"success": True}
def set_sync_word(self, args):
- if not "word" in args:
+ if "word" not in args:
return self.not_supported()
nic.setMdmSyncWord(int(args["word"][0]))
- return { "success": True}
+ return {"success": True}
def set_sync_mode(self, args):
- if not "mode" in args:
+ if "mode" not in args:
return self.not_supported()
nic.setMdmSyncMode(int(args["mode"][0]))
- return { "success": True }
+ return {"success": True}
def set_number_preamble(self, args):
- if not "num" in args:
+ if "num" not in args:
return self.not_supported()
nic.setMdmNumPreamble(int(args["num"][0]))
- return { "success": True }
+ return {"success": True}
def set_lowball(self):
nic.lowball(1)
- return { "success": True }
+ return {"success": True}
def set_maxpower(self):
nic.setMaxPower()
- return { "success": True }
+ return {"success": True}
def set_power(self, args):
- if not "power" in args:
+ if "power" not in args:
return self.not_supported()
nic.setPower(int(args["power"][0]))
- return { "success": True }
+ return {"success": True}
def rfxmit(self, args):
repeat = 0
offset = 0
- if not "data" in args:
+ if "data" not in args:
return self.not_supported()
if "repeat" in args:
repeat = int(args["repeat"][0])
@@ -236,11 +238,11 @@ class MSFHandler(BaseHTTPRequestHandler):
offset = int(args["offset"][0])
data = base64.urlsafe_b64decode(args["data"][0])
nic.RFxmit(data, repeat, offset)
- return { "success": True } # Should do some checks here eventually
+ return {"success": True} # Should do some checks here eventually
def rfrecv(self, args):
- timeout=USB_RX_WAIT
- blocksize=None
+ timeout = USB_RX_WAIT
+ blocksize =None
if "timeout" in args:
timeout = int(args["timeout"][0])
if "blocksize" in args:
@@ -250,15 +252,14 @@ class MSFHandler(BaseHTTPRequestHandler):
except:
return {}
msg, ts = data
- return { "data": base64.urlsafe_b64encode(msg), "timestamp": ts }
-
+ return {"data": base64.urlsafe_b64encode(msg), "timestamp": ts}
def not_supported(self):
- return { "status": "not supported" }
+ return {"status": "not supported"}
def send(self, data, resp=200):
self.send_response(resp)
- self.send_header('Content-type','application/json')
+ self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(data))
return
@@ -271,8 +272,8 @@ class MSFHandler(BaseHTTPRequestHandler):
self.wfile.write("Please Authenticate")
def do_GET(self):
- if not password == None:
- if self.headers.getheader('Authorization') == None:
+ if not password is None:
+ if self.headers.getheader('Authorization') is None:
print("Did not authenticate")
self.do_AUTHHEAD()
return
@@ -282,23 +283,23 @@ class MSFHandler(BaseHTTPRequestHandler):
return
url = urlparse(self.path)
args = parse_qs(url.query)
- if self.path=="/status":
+ if self.path == "/status":
self.send(self.status())
- elif self.path=="/statistics":
+ elif self.path == "/statistics":
self.send(self.statistics())
- elif self.path=="/settings/datetime":
+ elif self.path == "/settings/datetime":
self.send(self.datetime())
- elif self.path=="/settings/timezone":
+ elif self.path == "/settings/timezone":
self.send(self.timezone())
- elif self.path=="/control/factory_reset":
+ elif self.path == "/control/factory_reset":
self.send(self.reset())
- elif self.path=="/rftransceiver/supported_idx":
+ elif self.path == "/rftransceiver/supported_idx":
self.send(self.supported_idx())
elif self.path.startswith("/rftransceiver/"):
re_idx = re.compile("/rftransceiver/(\d+)/")
m = re_idx.match(self.path)
if m:
- idx = m.group(1)
+ idx = m.group(1) # FIXME idx isn't used, remove?
if self.path.find("/set_freq?") > -1:
self.send(self.set_freq(args))
elif self.path.find("/get_modulations") > -1:
@@ -349,6 +350,7 @@ class MSFHandler(BaseHTTPRequestHandler):
self.send(self.not_supported(), 404)
return
+
class CC1111NIC_MSFRelay(cmd.Cmd):
intro = """
cc1111usb Metasploit Relay
@@ -375,7 +377,7 @@ class CC1111NIC_MSFRelay(cmd.Cmd):
try:
buf = ''
self._nicsock = HTTPServer((self._ip, self._nicport), MSFHandler)
- starttime = int(time.time())
+ starttime = int(time.time()) # FIXME starttime isn't used, remove?
print("RfCat MSFRelay running.")
self._nicsock.serve_forever()
except KeyboardInterrupt:
@@ -386,7 +388,6 @@ class CC1111NIC_MSFRelay(cmd.Cmd):
sys.excepthook(*sys.exc_info())
-
if __name__ == "__main__":
import argparse
diff --git a/rfcat_server b/rfcat_server
index e64173f..350af57 100644
--- a/rfcat_server
+++ b/rfcat_server
@@ -13,6 +13,7 @@ from rflib import *
DATA_START_IDX = 4 # without the app/cmd/len bytes, the data starts at byte 4
+
def splitargs(cmdline):
cmdline = cmdline.replace('\\\\"', '"').replace('\\"', '')
patt = re.compile('\".+?\"|\S+')
@@ -38,6 +39,7 @@ SYNC_MODES = {
READLINE_MAX_READ_LEN = 1000
+
class FileSocket(socket.socket):
def __init__(self, sock):
self._buf = ''
@@ -48,7 +50,6 @@ class FileSocket(socket.socket):
return getattr(self._sock, attr)
elif hasattr(self, attr):
return getattr(self.__class__, attr)
-
def write(self, data):
return self.sendall(data)
@@ -67,7 +68,6 @@ class FileSocket(socket.socket):
return data
-
def flush(self):
pass
@@ -75,6 +75,7 @@ class FileSocket(socket.socket):
class KillCfgLoop(Exception):
pass
+
class CC1111NIC_Server(cmd.Cmd):
intro = """
welcome to the cc1111usb interactive config tool. hack fun!
@@ -85,7 +86,7 @@ class CC1111NIC_Server(cmd.Cmd):
self.use_rawinput = rawinput
self.printable = printable
- #self.nic = FHSSNIC(nicidx)
+ # self.nic = FHSSNIC(nicidx)
self.nic = RfCat(nicidx)
self._ip = ip
self._nicport = nicport
@@ -105,7 +106,7 @@ class CC1111NIC_Server(cmd.Cmd):
while self._go:
# serve the NIC port
try:
- buf = ''
+ buf = '' # FIXME buf isnt used, remove?
self._nicsock = socket.socket()
s = self._nicsock
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
@@ -114,7 +115,7 @@ class CC1111NIC_Server(cmd.Cmd):
while True:
# implement pipe between the usb RF NIC and the TCP socket
try:
- print(("Listening for NIC connection on port %d" % self._nicport), file=sys.stderr)
+ print(("Listening for NIC connection on port {:d}".format(self._nicport)), file=sys.stderr)
self._nicsock = s.accept()
rs, addr = self._nicsock
rs.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
@@ -123,7 +124,7 @@ class CC1111NIC_Server(cmd.Cmd):
# handing off the socket for rf_redirection, socket-style
self.nic.rf_redirection( (rs,) )
- print(("NIC connection on port %d terminated" % self._nicport), file=sys.stderr)
+ print(("NIC connection on port {:d} terminated".format(self._nicport)), file=sys.stderr)
except KeyboardInterrupt:
self._go = False
@@ -135,8 +136,6 @@ class CC1111NIC_Server(cmd.Cmd):
except:
sys.excepthook(*sys.exc_info())
-
-
def startConfigThread(self):
self._cfgthread = threading.Thread(target=self._cfgRun)
self._cfgthread.setDaemon(True)
@@ -175,15 +174,13 @@ class CC1111NIC_Server(cmd.Cmd):
#ok so just kill the connection :)
def Print(self, info):
- print((info), file=self.stdout)
-
+ print(info, file=self.stdout)
def do_stop(self, line):
"""
stop the nic
"""
self._pause = True
-
def do_start(self, line):
"""
@@ -197,10 +194,10 @@ class CC1111NIC_Server(cmd.Cmd):
'''
* SPECAN - spectrum analysis mode
'''
- basefreq=902e6
- inc=25e3
- count=104
- self.nic._doSpecAn(basefreq,inc,count)
+ basefreq = 902e6
+ inc = 25e3
+ count = 104
+ self.nic._doSpecAn(basefreq, inc, count)
def do_stopspecan(self,line):
'''
@@ -226,7 +223,7 @@ class CC1111NIC_Server(cmd.Cmd):
'''
self.Print("Calibrating radio...")
self.nic.setModeCAL()
- while (self.getMARCSTATE()[1] not in (MARC_STATE_IDLE, MARC_STATE_RX, MARC_STATE_TX)):
+ while self.getMARCSTATE()[1] not in (MARC_STATE_IDLE, MARC_STATE_RX, MARC_STATE_TX):
sys.stdout.write('.')
self.Print("done calibrating.")
@@ -238,7 +235,7 @@ class CC1111NIC_Server(cmd.Cmd):
'''
self.Print("Calibrating radio...")
self.nic.setModeTX()
- while (self.getMARCSTATE()[1] not in (MARC_STATE_TX)):
+ while self.getMARCSTATE()[1] not in MARC_STATE_TX:
sys.stdout.write('.')
self.Print("Radio has reached the TX state.")
@@ -252,7 +249,7 @@ class CC1111NIC_Server(cmd.Cmd):
'''
self.Print("Radio entering RX state...")
self.nic.setModeTX()
- while (self.getMARCSTATE()[1] not in (MARC_STATE_RX)):
+ while self.getMARCSTATE()[1] not in MARC_STATE_RX:
sys.stdout.write('.')
self.Print("Radio has reached the RX state.")
@@ -265,7 +262,7 @@ class CC1111NIC_Server(cmd.Cmd):
'''
self.Print("Radio entering IDLE state...")
self.nic.setModeIDLE()
- while (self.getMARCSTATE()[1] not in (MARC_STATE_IDLE)):
+ while self.getMARCSTATE()[1] not in MARC_STATE_IDLE:
sys.stdout.write('.')
self.Print("Radio has reached the IDLE state.")
@@ -275,7 +272,7 @@ class CC1111NIC_Server(cmd.Cmd):
'''
self.Print("Radio entering FSTXON state...")
self.nic.setModeFSTXON()
- while (self.getMARCSTATE()[1] not in (MARC_STATE_FSTXON)):
+ while self.getMARCSTATE()[1] not in MARC_STATE_FSTXON:
sys.stdout.write('.')
self.Print("Radio has reached the FSTXON state.")
@@ -284,7 +281,8 @@ class CC1111NIC_Server(cmd.Cmd):
* MODULATION - set the RF modulation scheme. values include "2FSK", "GFSK", "4FSK", "MSK", "ASK_OOK". note: GFSK/OOK/ASK only up to 250kbaud, MSK only above 26kbaud and no manchester encoding.
'''
if not len(line) or line not in ("2FSK", "GFSK", "4FSK", "MSK", "ASK_OOK"):
- self.Print('need to give me one of the values "2FSK", "GFSK", "4FSK" (experimental), "MSK", "ASK_OOK" got: "%s"' % line)
+ self.Print('need to give me one of the values "2FSK", "GFSK", "4FSK" '
+ '(experimental), "MSK", "ASK_OOK" got: "{}"'.format(line))
return
mod = eval("MOD_"+line.strip())
@@ -292,7 +290,6 @@ class CC1111NIC_Server(cmd.Cmd):
self.nic.setMdmModulation(mod)
self.nic.setModeRX()
-
def complete_modulation(self, text, line, begidx, endidx):
self.Print("complete_modulation: %s %s %s %s") % (repr(text), repr(line), repr(begidx), repr(endidx))
@@ -653,13 +650,13 @@ class CC1111NIC_Server(cmd.Cmd):
(be very cautious! the firmware expects certain things like return-to-RX, and no RX-timeout, etc..)
'''
- def do_show_config(self, line):
+ def do_show_config(self, line): # FIXME Line isnt used, remove?
'''
* show_config - Print a represented string of the radio configuration
'''
self.Print(self.nic.reprRadioConfig())
- def do_dump_config(self, line):
+ def do_dump_config(self, line): # FIXME line isnt used, remove?
'''
* dump_config - Print a hex representation of the radio configuration registers
'''
@@ -690,15 +687,14 @@ class CC1111NIC_Server(cmd.Cmd):
'''
* save_config <filename> - save the radio configuration to a file you specify
'''
- file(line, "wb").write(repr(self.nic.getRadioConfig()))
-
+ open(line, "wb").write(repr(self.nic.getRadioConfig()).encode())
def do_load_config(self, line):
'''
* load_config
(be very cautious! the firmware expects certain things like return-to-RX, and no RX-timeout, etc..)
'''
- config = file(line, "rb").read()
+ config = open(line, "rb").read()
self.nic.setModeIDLE()
print("loading config from bytes: %s" % repr(config))
self.setRadioConfig(config)
@@ -712,7 +708,7 @@ class CC1111NIC_Server(cmd.Cmd):
if 0 < len(args) < 3:
if len(args) == 1:
args.append('1')
- self.Print(self.peek(int(args[0])), int(args[1]).encode('hex'))
+ self.Print(self.peek(int(args[0])), int(args[1]).encode('hex')) # FIXME more arguments than self.Print takes?
else:
self.Print("please provide exactly one xdata address and an optional length!")
@@ -726,7 +722,6 @@ class CC1111NIC_Server(cmd.Cmd):
except:
self.Print("please provide exactly one xdata address and hex data")
-
def do_ping(self, line):
'''
* ping - hello? is the dongle still responding?
@@ -769,7 +764,7 @@ class CC1111NIC_Server(cmd.Cmd):
if len(args) > 1:
self.nic.setRFRegister(val)
else:
- self.Print("%s : %x" % (args[0], ord(self.nic.peek(val))))
+ self.Print("{} : {:x}".format(args[0], ord(self.nic.peek(val))))
except:
self.Print(sys.exc_info())
@@ -791,7 +786,7 @@ class CC1111NIC_Server(cmd.Cmd):
else:
self.printable = True
- self.Print("printable output is: %s" % ('disabled','enabled')[self.printable])
+ self.Print("printable output is: %s" % ('disabled', 'enabled')[self.printable])
def do_rawinput(self, line):
'''
@@ -824,7 +819,6 @@ class CC1111NIC_Server(cmd.Cmd):
'''
-
if __name__ == "__main__":
dongleserver = CC1111NIC_Server()
diff --git a/rflib/__init__.py b/rflib/__init__.py
index 5b1ecc2..c18883f 100755
--- a/rflib/__init__.py
+++ b/rflib/__init__.py
@@ -3,8 +3,6 @@
from __future__ import print_function
from __future__ import absolute_import
-from builtins import str
-from builtins import range
from .chipcon_nic import *
import rflib.bits as rfbits
@@ -13,12 +11,13 @@
MAX_FREQ = 936e6
+
class RfCat(FHSSNIC):
def RFdump(self, msg="Receiving", maxnum=100, timeoutms=1000):
try:
for x in range(maxnum):
y, t = self.RFrecv(timeoutms)
- print("(%5.3f) %s: %s" % (t, msg, y.encode('hex')))
+ print("({:5.3f}) {}: {}".format(t, msg, y.encode('hex')))
except ChipconUsbTimeoutException:
pass
@@ -34,7 +33,7 @@ def scan(self, basefreq=902e6, inc=250e3, count=104, delaysec=2, drate=38400, lo
try:
print("(press Enter to quit)")
for freq in range(int(basefreq), int(basefreq+(inc*count)), int(inc)):
- print("Scanning for frequency %d..." % freq)
+ print("Scanning for frequency {:d}...".format(freq))
self.setFreq(freq)
self.RFdump(timeoutms=delaysec*1000)
if keystop():
@@ -76,8 +75,8 @@ def _doSpecAn(self, centfreq, inc, count):
halfspec = spectrum / 2.0
basefreq = centfreq - halfspec
if (count * inc) + basefreq > MAX_FREQ:
- raise Exception("Sorry, %1.3f + (%1.3f * %1.3f) is higher than %1.3f" %
- (basefreq, count, inc))
+ raise Exception("Sorry, {:1.3f} + ({:1.3f} * (:1.3f}) is "
+ "higher than {:1.3f}".format(basefreq, count, inc))
self.getRadioConfig()
self._specan_backup_radiocfg = self.radiocfg
@@ -87,7 +86,7 @@ def _doSpecAn(self, centfreq, inc, count):
freq, fbytes = self.getFreq()
delta = self.getMdmChanSpc()
- self.send(APP_NIC, RFCAT_START_SPECAN, "%c" % (count) )
+ self.send(APP_NIC, RFCAT_START_SPECAN, "{:c}".format(count))
return freq, delta
def _stopSpecAn(self):
@@ -98,14 +97,13 @@ def _stopSpecAn(self):
self.radiocfg = self._specan_backup_radiocfg
self.setRadioConfig()
-
- def rf_configure(*args, **kwargs):
+ def rf_configure(self, *args, **kwargs):
self.setRFparameters(*args, **kwargs)
def rf_redirection(self, fdtup, use_rawinput=False, printable=False):
buf = ''
- if len(fdtup)>1:
+ if len(fdtup) > 1:
fd0i, fd0o = fdtup
else:
fd0i, = fdtup
@@ -117,11 +115,11 @@ def rf_redirection(self, fdtup, use_rawinput=False, printable=False):
try:
while True:
- #if self._pause:
+ # if self._pause:
# continue
try:
- x,y,z = select.select([fd0i ], [], [], .1)
+ x, y, z = select.select([fd0i], [], [], .1)
if fd0i in x:
# FIXME: make this aware of VLEN/FLEN and the proper length
if fdsock:
@@ -137,10 +135,10 @@ def rf_redirection(self, fdtup, use_rawinput=False, printable=False):
if vlen:
pktlen = ord(buf[0])
- #FIXME: probably want to take in a length struct here and then only send when we have that many bytes...
+ # FIXME: probably want to take in a length struct here and then only send when we have that many bytes...
data = buf[:pktlen]
if use_rawinput:
- data = eval('"%s"'%data)
+ data = eval('"{}"'.format(data))
if len(buf) >= pktlen:
self.RFxmit(data)
@@ -164,7 +162,7 @@ def rf_redirection(self, fdtup, use_rawinput=False, printable=False):
except ChipconUsbTimeoutException:
pass
- #special handling of specan dumps... somewhat set in solid jello
+ # special handling of specan dumps... somewhat set in solid jello
try:
data, time = self.recv(APP_SPECAN, 1, 1)
data = struct.pack("<L", time) + struct.pack("<H", len(data)) + data
@@ -174,23 +172,25 @@ def rf_redirection(self, fdtup, use_rawinput=False, printable=False):
fd0o.write(data)
except ChipconUsbTimeoutException:
- #print "this is a valid exception, run along... %x"% APP_SPECAN
+ # print "this is a valid exception, run along... %x"% APP_SPECAN
pass
except KeyboardInterrupt:
self.setModeIDLE()
+
class InverseCat(RfCat):
def setMdmSyncWord(self, word, radiocfg=None):
FHSSNIC.setMdmSyncWord(self, word ^ 0xffff, radiocfg)
def RFrecv(self, timeout=1000):
global data
- data,timestamp = RfCat.RFrecv(self, timeout)
- return rfbits.invertBits(data),timestamp
+ data, timestamp = RfCat.RFrecv(self, timeout)
+ return rfbits.invertBits(data), timestamp
def RFxmit(self, data):
- return RfCat.RFxmit(self, rfbits.invertBits(data) )
+ return RfCat.RFxmit(self, rfbits.invertBits(data))
+
def cleanupInteractiveAtExit():
try:
@@ -200,6 +200,7 @@ def cleanupInteractiveAtExit():
except:
pass
+
def interactive(idx=0, DongleClass=RfCat, intro=''):
global d
import rflib.chipcon_nic as rfnic
@@ -237,7 +238,7 @@ def interactive(idx=0, DongleClass=RfCat, intro=''):
print(intro)
ipsh.mainloop()
- except ImportError, e:
+ except ImportError as e:
print(e)
shell = code.InteractiveConsole(gbls)
print(intro)
diff --git a/rflib/bits.py b/rflib/bits.py
index 485760b..8213ba8 100644
--- a/rflib/bits.py
+++ b/rflib/bits.py
@@ -10,10 +10,12 @@
fmtsLSB = [None, "B", "<H", "<I", "<I", "<Q", "<Q", "<Q", "<Q"]
fmtsMSB = [None, "B", ">H", ">I", ">I", ">Q", ">Q", ">Q", ">Q"]
-sizes = [ 0, 1, 2, 4, 4, 8, 8, 8, 8]
-masks = [ (1<<(8*i))-1 for i in range(9) ]
+sizes = [0, 1, 2, 4, 4, 8, 8, 8, 8]
+masks = [(1 << (8 * i)) - 1 for i in range(9)]
PYVER = int(sys.version[0])
+
+
def correctbytes(val):
global PYVER
@@ -22,9 +24,10 @@ def correctbytes(val):
return bytes([val])
+
def wtfo(string):
outstr = []
- bitlen = len(outstr) * 8
+ bitlen = len(outstr) * 8 # FIXME bitlen is not used, remove?
for x in range(8):
outstr.append(shiftString(string, x))
@@ -34,6 +37,7 @@ def wtfo(string):
return outstr
+
def strBitReverse(string):
# FIXME: this is really dependent upon python's number system. large strings will not convert well.
# FIXME: break up array of 8-bit numbers and bit-swap in the array
@@ -42,23 +46,24 @@ def strBitReverse(string):
# convert to MSB number
for x in range(len(string)):
ch = string[x]
- #num |= (ord(ch)<<(8*x)) # this is LSB
+ # num |= (ord(ch)<<(8*x)) # this is LSB
num <<= 8
num |= ord(ch)
- print (hex(num))
+ print(hex(num))
rnum = bitReverse(num, bits)
- print (hex(rnum))
+ print(hex(rnum))
# convert back from MSB number to string
out = []
for x in range(len(string)):
- out.append(correctbytes(rnum&0xff))
+ out.append(correctbytes(rnum & 0xff))
rnum >>= 8
out.reverse()
print(''.join(out).encode('hex'))
return ''.join(out)
+
def strXorMSB(string, xorval, size):
'''
lsb
@@ -77,27 +82,27 @@ def strXorMSB(string, xorval, size):
out.append(tempstr)
return ''.join(out)
-
-
def bitReverse(num, bitcnt):
newnum = 0
for idx in range(bitcnt):
newnum <<= 1
- newnum |= num&1
+ newnum |= num & 1
num >>= 1
return newnum
+
def shiftString(string, bits):
- carry = 0
+ carry = 0 # FIXME carry is never used, remove it?
news = []
for x in range(len(string)-1):
newc = ((ord(string[x]) << bits) + (ord(string[x+1]) >> (8-bits))) & 0xff
- news.append("%c"%newc)
- newc = (ord(string[-1])<<bits) & 0xff
- news.append("%c"%newc)
+ news.append("{:c}".format(newc))
+ newc = (ord(string[-1]) << bits) & 0xff
+ news.append("{:c}".format(newc))
return "".join(news)
+
def getNextByte_feedbackRegister7bitsMSB():
'''
this returns a byte of a 7-bit feedback register stemming off bits 4 and 7
@@ -106,15 +111,16 @@ def getNextByte_feedbackRegister7bitsMSB():
global fbRegister
retval = 0
- for x in range(8): #MSB,
+ for x in range(8): # MSB,
retval <<= 1
retval |= (fbRegister >> 6) # start with bit 7
- nb = ( ( fbRegister>>3) ^ (fbRegister>>6)) &1
- fbRegister = ( ( fbRegister << 1 ) | nb ) & 0x7f # do shifting
- #print "retval: %x fbRegister: %x bit7: %x nb: %x" % (retval, fbRegister, (fbRegister>>6), nb)
+ nb = ((fbRegister >> 3) ^ (fbRegister >> 6)) & 1
+ fbRegister = ((fbRegister << 1) | nb) & 0x7f # do shifting
+ # print "retval: %x fbRegister: %x bit7: %x nb: %x" % (retval, fbRegister, (fbRegister>>6), nb)
return retval
+
def getNextByte_feedbackRegister7bitsLSB():
'''
this returns a byte of a 7-bit feedback register stemming off bits 4 and 7
@@ -123,13 +129,13 @@ def getNextByte_feedbackRegister7bitsLSB():
global fbRegister
retval = 0
- for x in range(8): #MSB,
+ for x in range(8): # MSB,
retval >>= 1
- retval |= ((fbRegister << 1)&0x80) # start with bit 7
+ retval |= ((fbRegister << 1) & 0x80) # start with bit 7
- nb = ( ( fbRegister>>3) ^ (fbRegister>>6)) &1
- fbRegister = ( ( fbRegister << 1 ) | nb ) & 0x7f # do shifting
- #print "retval: %x fbRegister: %x bit7: %x nb: %x" % (retval, fbRegister, (fbRegister>>6), nb)
+ nb = ((fbRegister >> 3) ^ (fbRegister >> 6)) & 1
+ fbRegister = ((fbRegister << 1) | nb) & 0x7f # do shifting
+ # print "retval: %x fbRegister: %x bit7: %x nb: %x" % (retval, fbRegister, (fbRegister>>6), nb)
return retval
@@ -138,13 +144,14 @@ def whitenData(data, seed=0xffff, getNextByte=getNextByte_feedbackRegister7bitsM
global fbRegister
fbRegister = seed
- carry = 0
+ carry = 0 # FIXME carry is never used, remove it?
news = []
for x in range(len(data)-1):
- newc = ((ord(data[x]) ^ getNextByte() ) & 0xff)
- news.append("%c"%newc)
+ newc = ((ord(data[x]) ^ getNextByte()) & 0xff)
+ news.append("{:c}".format(newc))
return "".join(news)
+
def findSyncWord(byts, sensitivity=4, minpreamble=2):
'''
seek SyncWords from a raw bitstream.
@@ -153,10 +160,10 @@ def findSyncWord(byts, sensitivity=4, minpreamble=2):
possDwords = []
# find the preamble (if any)
while True: # keep searching through string until we don't find any more preamble bits to pick on
- sbyts = byts
- pidx = byts.find("\xaa"*minpreamble)
+ sbyts = byts # FIXME sbyts is never used, after assigning it the value of byts, remove it?
+ pidx = byts.find("\xaa" * minpreamble)
if pidx == -1:
- pidx = byts.find("\x55"*minpreamble)
+ pidx = byts.find("\x55" * minpreamble)
byts = shiftString(byts, 1)
if pidx == -1:
@@ -164,46 +171,46 @@ def findSyncWord(byts, sensitivity=4, minpreamble=2):
# chop off the nonsense before the preamble
sbyts = byts[pidx:]
- #print "sbyts: %s" % repr(sbyts)
+ # print "sbyts: %s" % repr(sbyts)
# find the definite end of the preamble (ie. it may be sooner, but we know this is the end)
- while (sbyts[0] == '\xaa' and len(sbyts)>2):
+ while sbyts[0] == '\xaa' and len(sbyts) > 2:
sbyts = sbyts[1:]
- #print "sbyts: %s" % repr(sbyts)
+ # print "sbyts: %s" % repr(sbyts)
# now we look at the next 16 bits to narrow the possibilities to 8
# at this point we have no hints at bit-alignment aside from 0xaa vs 0x55
- dwbits, = struct.unpack(">H", sbyts[:2])
- #print "sbyts: %s" % repr(sbyts)
- #print "dwbits: %s" % repr(dwbits)
- if len(sbyts)>=3:
- bitcnt = 0
+ dwbits, = struct.unpack(">H", sbyts[:2]) # FIXME dwbits is not used, remove it?
+ # print "sbyts: %s" % repr(sbyts)
+ # print "dwbits: %s" % repr(dwbits)
+ if len(sbyts) >= 3:
+ bitcnt = 0 # FIXME bitcnt is never used, remove it?
# bits1 = aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb
# bits2 = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bits1, = struct.unpack(">H", sbyts[:2])
bits1 = bits1 | (ord('\xaa') << 16)
bits1 = bits1 | (ord('\xaa') << 24)
bits1 <<= 8
- bits1 |= (ord(sbyts[2]) )
- #print "bits: %x" % (bits1)
+ bits1 |= (ord(sbyts[2]))
+ # print "bits: %x" % (bits1)
bit = (5 * 8) - 2 # bytes times bits/byte #FIXME: MAGIC NUMBERS!?
- while (bits1 & (3<<bit) == (2<<bit)):
+ while bits1 & (3 << bit) == (2 << bit):
bit -= 2
- #print "bit = %d" % bit
+ # print "bit = %d" % bit
bits1 >>= (bit-16)
- #while (bits1 & 0x30000 != 0x20000): # now we align the end of the 101010 pattern with the beginning of the dword
+ # while (bits1 & 0x30000 != 0x20000): # now we align the end of the 101010 pattern with the beginning of the dword
# bits1 >>= 2
- #print "bits: %x" % (bits1)
+ # print "bits: %x" % (bits1)
- bitcount = min( 2 * sensitivity, 17 )
+ bitcount = min(2 * sensitivity, 17)
for frontbits in range( bitcount ): # with so many bit-inverted systems, let's not assume we know anything about the bit-arrangement. \x55\x55 could be a perfectly reasonable preamble.
poss = (bits1 >> frontbits) & 0xffff
if not poss in possDwords:
possDwords.append(poss)
byts = byts[pidx+1:]
- return possDwords
+ return possDwords # FIXME this code is unreachable due to 'while True' loop.
def findSyncWordDoubled(byts):
possDwords = []
@@ -220,54 +227,57 @@ def findSyncWordDoubled(byts):
byts = byts[pidx:]
# find the definite end of the preamble (ie. it may be sooner, but we know this is the end)
- while (byts[0] == ('\xaa', '\x55')[bitoff] and len(byts)>2):
+ while byts[0] == ('\xaa', '\x55')[bitoff] and len(byts) > 2:
byts = byts[1:]
# now we look at the next 16 bits to narrow the possibilities to 8
# at this point we have no hints at bit-alignment
- dwbits, = struct.unpack(">H", byts[:2])
- if len(byts)>=5:
- bitcnt = 0
+ dwbits, = struct.unpack(">H", byts[:2]) # FIXME dwbits is never used, remove?
+ if len(byts) >= 5:
+ bitcnt = 0 # FIXME bitcnt is never used, remove it?
# bits1 = aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb
# bits2 = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bits1, = struct.unpack(">H", byts[:2])
- bits1 = bits1 | (ord(('\xaa','\x55')[bitoff]) << 16)
- bits1 = bits1 | (ord(('\xaa','\x55')[bitoff]) << 24)
+ bits1 = bits1 | (ord(('\xaa', '\x55')[bitoff]) << 16)
+ bits1 = bits1 | (ord(('\xaa', '\x55')[bitoff]) << 24)
bits1 <<= 8
- bits1 |= (ord(byts[2]) )
+ bits1 |= (ord(byts[2]))
bits1 >>= bitoff
bits2, = struct.unpack(">L", byts[:4])
bits2 <<= 8
- bits2 |= (ord(byts[4]) )
+ bits2 |= (ord(byts[4]))
bits2 >>= bitoff
-
frontbits = 0
- for frontbits in range(16, 40, 2): #FIXME: if this doesn't work, try 16, then 18+frontbits
- dwb1 = (bits1 >> (frontbits)) & 3
- dwb2 = (bits2 >> (frontbits)) & 3
- print("\tfrontbits: %d \t\t dwb1: %s dwb2: %s" % (frontbits, bin(bits1 >> (frontbits)), bin(bits2 >> (frontbits))))
+ for frontbits in range(16, 40, 2): # FIXME: if this doesn't work, try 16, then 18+frontbits
+ dwb1 = (bits1 >> frontbits) & 3
+ dwb2 = (bits2 >> frontbits) & 3
+ print("\tfrontbits: {:d} \t\t dwb1: {} dwb2: {}".format(frontbits,
+ bin(bits1 >> frontbits),
+ bin(bits2 >> frontbits)))
if dwb2 != dwb1:
break
# frontbits now represents our unknowns... let's go from the other side now
for tailbits in range(16, -1, -2):
- dwb1 = (bits1 >> (tailbits)) & 3
- dwb2 = (bits2 >> (tailbits)) & 3
- print("\ttailbits: %d\t\t dwb1: %s dwb2: %s" % (tailbits, bin(bits1 >> (tailbits)), bin(bits2 >> (tailbits))))
+ dwb1 = (bits1 >> tailbits) & 3
+ dwb2 = (bits2 >> tailbits) & 3
+ print("\ttailbits: {:d}\t\t dwb1: {} dwb2: {}".format(tailbits, bin(bits1 >> tailbits),
+ bin(bits2 >> tailbits)))
if dwb2 != dwb1:
tailbits += 2
break
# now, if we have a double syncword, iinm, tailbits + frontbits >= 16
- print("frontbits: %d\t\t tailbits: %d, bits: %s " % (frontbits, tailbits, bin((bits2>>tailbits & 0xffffffff))))
- if (frontbits + tailbits >= 16):
- tbits = bits2 >> (tailbits&0xffff)
- tbits &= (0xffffffff)
- print("tbits: %x" % tbits)
-
- poss = tbits&0xffffffff
+ print("frontbits: {:d}\t\t tailbits: {:d}, bits: {} ".format(frontbits, tailbits,
+ bin((bits2 >> tailbits & 0xffffffff))))
+ if frontbits + tailbits >= 16:
+ tbits = bits2 >> (tailbits & 0xffff)
+ tbits &= 0xffffffff
+ print("tbits: {:x}".format(tbits))
+
+ poss = tbits & 0xffffffff
if poss not in possDwords:
possDwords.append(poss)
else:
@@ -277,50 +287,49 @@ def findSyncWordDoubled(byts):
possDwords.reverse()
return possDwords
-#def test():
+# def test():
+
def visBits(data):
pass
-
def getBit(data, bit):
idx = old_div(bit, 8)
bidx = bit % 8
char = data[idx]
- return (ord(char)>>(7-bidx)) & 1
-
+ return (ord(char) >> (7 - bidx)) & 1
def detectRepeatPatterns(data, size=64, minEntropy=.07):
- #FIXME: convert strings to bit arrays before comparing.
+ # FIXME: convert strings to bit arrays before comparing.
c1 = 0
c2 = 0
d1 = 0
p1 = 0
- mask = (1<<size) - 1
- bitlen = 8*len(data)
+ mask = (1 << size) - 1
+ bitlen = 8 * len(data)
- while p1 < (bitlen-size-8):
+ while p1 < (bitlen - size - 8):
d1 <<= 1
d1 |= getBit(data, p1)
d1 &= mask
- #print bin(d1)
+ # print bin(d1)
- if c1 < (size):
+ if c1 < size:
p1 += 1
c1 += 1
continue
d2 = 0
- p2 = p1+size
- while p2 < (bitlen):
+ p2 = p1 + size
+ while p2 < bitlen:
d2 <<= 1
d2 |= getBit(data, p2)
d2 &= mask
- #print bin(d2)
+ # print bin(d2)
- if c2 < (size):
+ if c2 < size:
p2 += 1
c2 += 1
continue
@@ -328,19 +337,19 @@ def detectRepeatPatterns(data, size=64, minEntropy=.07):
if d1 == d2 and d1 > 0:
s1 = p1 - size
s2 = p2 - size
- print("s1: %d\t p1: %d\t " % (s1, p1))
- print("s2: %d\t p2: %d\t " % (s2, p2))
+ print("s1: {:d}\t p1: {:d}\t ".format(s1, p1))
+ print("s2: {:d}\t p2: {:d}\t ".format(s2, p2))
# complete the pattern until the numbers differ or meet
while True:
p1 += 1
p2 += 1
- #print "s1: %d\t p1: %d\t " % (s1, p1)
- #print "s2: %d\t p2: %d\t " % (s2, p2)
+ # print "s1: %d\t p1: %d\t " % (s1, p1)
+ # print "s2: %d\t p2: %d\t " % (s2, p2)
if p2 >= bitlen:
break
- b1 = getBit(data,p1)
- b2 = getBit(data,p2)
+ b1 = getBit(data, p1)
+ b2 = getBit(data, p2)
if p1 == s2 or b1 != b2:
break
@@ -349,12 +358,13 @@ def detectRepeatPatterns(data, size=64, minEntropy=.07):
c2 = 0
p2 -= size
- bitSection, ent = bitSectString(data, s1, s1+length)
+ bitSection, ent = bitSectString(data, s1, s1 + length)
if ent > minEntropy:
print("success:")
- print(" * bit idx1: %4d (%4d bits) - '%s' %s" % (s1, length, bin(d1), bitSection.encode("hex")))
- print(" * bit idx2: %4d (%4d bits) - '%s'" % (s2, length, bin(d2)))
- #else:
+ print(" * bit idx1: {:4d} ({:4d} bits) - '{}' {}".format(s1, length, bin(d1),
+ bitSection.encode("hex")))
+ print(" * bit idx2: {:4d} ({:4d} bits) - '{}'".format(s2, length, bin(d2)))
+ # else:
# print " * idx1: %d - '%s' * idx2: %d - '%s'" % (p1, d1, p2, d2)
p2 += 1
p1 += 1
@@ -377,17 +387,17 @@ def bitSectString(string, startbit, endbit):
while bit < endbit:
- byte1 = ord( string[Bidx] )
+ byte1 = ord(string[Bidx])
try:
- byte2 = ord( string[Bidx+1] )
+ byte2 = ord(string[Bidx+1])
except IndexError:
byte2 = 0
byte = (byte1 << bidx) & 0xff
byte |= (byte2 >> (8-bidx))
- #calculate entropy over the byte
+ # calculate entropy over the byte
for bi in range(8):
- b = (byte>>bi) & 1
+ b = (byte >> bi) & 1
entropy[b] += 1
bit += 8
@@ -395,17 +405,16 @@ def bitSectString(string, startbit, endbit):
if bit > endbit:
diff = bit-endbit
- mask = ~ ( (1<<diff) - 1 )
+ mask = ~ ((1 << diff) - 1)
byte &= mask
s += correctbytes(byte)
- ent = old_div((min(entropy)+1.0), (max(entropy)+1))
- #print "entropy: %f" % ent
+ ent = old_div((min(entropy) + 1.0), (max(entropy) + 1))
+ # print "entropy: %f" % ent
return (s, ent)
-
def genBitArray(string, startbit, endbit):
'''
bitsects a string... ie. chops out the bits from the middle of the string
@@ -417,43 +426,43 @@ def genBitArray(string, startbit, endbit):
for byte in binStr:
byte = ord(byte)
for bitx in range(7, -1, -1):
- bit = (byte>>bitx) & 1
+ bit = (byte >> bitx) & 1
s.append(bit)
return (s, ent)
chars_top = [
- " ", #000
- " ", #001
- "^", #010
- "/", #011
- " ", #100
- " ", #101
- "\\",#110
- "-", #111
+ " ", # 000
+ " ", # 001
+ "^", # 010
+ "/", # 011
+ " ", # 100
+ " ", # 101
+ "\\", # 110
+ "-", # 111
]
chars_mid = [
- " ", #000
- "|", #001
- "#", #010
- " ", #011
- "|", #100
- "#", #101
- " ", #110
- " ", #110
+ " ", # 000
+ "|", # 001
+ "#", # 010
+ " ", # 011
+ "|", # 100
+ "#", # 101
+ " ", # 110
+ " ", # 110
]
chars_bot = [
- "-", #000
- "/", #001
- " ", #010
- " ", #011
- "\\",#100
- "V", #101
- " ", #110
- " ", #110
+ "-", # 000
+ "/", # 001
+ " ", # 010
+ " ", # 011
+ "\\", # 100
+ "V", # 101
+ " ", # 110
+ " ", # 110
]
@@ -464,38 +473,39 @@ def reprBitArray(bitAry, width=194):
arylen = len(bitAry)
# top line
- #FIXME: UGGGGLY and kinda broken.
+ # FIXME: UGGGGLY and kinda broken.
fraction = 1.0 * arylen/width
- expand = [bitAry[int(x*fraction)] for x in range(width)]
+ expand = [bitAry[int(x * fraction)] for x in range(width)]
for bindex in range(width):
bits = 0
- if bindex>0:
- bits += (expand[bindex-1]) << (2)
+ if bindex > 0:
+ bits += (expand[bindex - 1]) << (2)
bits += (expand[bindex]) << (1)
if bindex < width-1:
bits += (expand[bindex+1])
- top.append( chars_top[ bits ] )
- mid.append( chars_mid[ bits ] )
- bot.append( chars_bot[ bits ] )
+ top.append(chars_top[bits])
+ mid.append(chars_mid[bits])
+ bot.append(chars_bot[bits])
tops = "".join(top)
mids = "".join(mid)
bots = "".join(bot)
return "\n".join([tops, mids, bots])
+
def invertBits(data):
output = []
ldata = len(data)
off = 0
- if ldata&1:
- output.append( correctbytes( ord( data[0] ) ^ 0xff) )
+ if ldata & 1:
+ output.append(correctbytes(ord(data[0]) ^ 0xff))
off = 1
- if ldata&2:
- output.append( struct.pack( "<H", struct.unpack( "<H", data[off:off+2] )[0] ^ 0xffff) )
+ if ldata & 2:
+ output.append(struct.pack("<H", struct.unpack("<H", data[off:off + 2])[0] ^ 0xffff))
off += 2
#method 1
@@ -505,8 +515,8 @@ def invertBits(data):
#method2
count = old_div(ldata, 4)
#print ldata, count
- numlist = struct.unpack( "<%dI" % count, data[off:] )
- modlist = [ struct.pack("<L", (x^0xffffffff) ) for x in numlist ]
+ numlist = struct.unpack("<%dI" % count, data[off:])
+ modlist = [struct.pack("<L", (x ^ 0xffffffff)) for x in numlist]
output.extend(modlist)
return ''.join(output)
@@ -533,29 +543,30 @@ def diff_manchester_decode(data, align=False):
for y in range(6, -1, -2):
if not syncd:
diff = last & 1
- bit0 = (byte >> (y+1)) & 1
+ bit0 = (byte >> (y + 1)) & 1
bit1 = (byte >> y) & 1
else:
diff = last >> 1
bit0 = last & 1
- bit1 = (byte >> (y+1)) & 1
+ bit1 = (byte >> (y + 1)) & 1
if bit0 == bit1:
if syncd or not align:
- raise Exception("Differential Manchester Decoder cannot work with this data. Sync fault at index %d,%d" % (bidx, y))
+ raise Exception("Differential Manchester Decoder cannot work with this data. Sync fault at index "
+ "{:d},{:d}".format(bidx, y))
syncd = 1
# redo the last stuff with new info
diff = last >> 1
bit0 = last & 1
- bit1 = (byte >> (y+1)) & 1
+ bit1 = (byte >> (y + 1)) & 1
obyte <<= 1
if diff != bit0:
obyte |= 1
last = (bit0 << 1) | bit1
- if (bidx & 1):
+ if bidx & 1:
out.append(correctbytes(obyte))
obyte = 0
@@ -565,7 +576,6 @@ def diff_manchester_decode(data, align=False):
return ''.join(out)
-
def biphase_mark_coding_encode(data):
# FIXME: broken? this looks more like BMC (biphase mark encoding)
# FIXME: write encoder as well
@@ -592,6 +602,7 @@ def biphase_mark_coding_encode(data):
return ''.join(out)
+
def manchester_decode(data, hilo=1):
out = []
last = 0
@@ -611,15 +622,16 @@ def manchester_decode(data, hilo=1):
obyte |= 1
last = bit
- if (bidx & 1):
+ if bidx & 1:
out.append(correctbytes(obyte))
obyte = 0
if not (bidx & 1):
- obyte << 4 # pad 0's on end
+ obyte << 4 # pad 0's on end
out.append(correctbytes(obyte))
return ''.join(out)
+
def manchester_encode(data, hilo=1):
'''
for the sake of testing.
@@ -634,15 +646,16 @@ def manchester_encode(data, hilo=1):
for bidx in range(len(data)):
byte = ord(data[bidx])
obyte = 0
- for bitx in range(7,-1,-1):
- bit = (byte>>bitx) & 1
+ for bitx in range(7, -1, -1):
+ bit = (byte >> bitx) & 1
obyte <<= 2
obyte |= bits[bit]
out.append(struct.pack(">H", obyte))
return ''.join(out)
-def findManchesterData(data, hilo=1):
+
+def findManchesterData(data, hilo=1): # FIXME hilo is never used, remove?
poss = []
for x in range(8):
@@ -653,6 +666,7 @@ def findManchesterData(data, hilo=1):
except:
pass
+
def findManchester(data, minbytes=10):
print("DEBUG: DATA=" + repr(data))
success = []
@@ -666,9 +680,9 @@ def findManchester(data, minbytes=10):
byt = ord(data[bidx])
for btidx in range(0, 8, 2):
# compare every other bits
- bit = (byt>>(8-btidx)) & 1
+ bit = (byt >> (8 - btidx)) & 1
- if (bit + last + last2) in (1,2):
+ if (bit + last + last2) in (1, 2):
lastCount += 1
else:
# we're done, or not started
@@ -681,7 +695,7 @@ def findManchester(data, minbytes=10):
lenbits -= 8
startbit = btidx - lenbits
- stopbyte = startbyte + lenbytes + (0,1)[lenbits>0]
+ stopbyte = startbyte + lenbytes + (0, 1)[lenbits > 0]
bytez = data[startbyte:stopbyte]
success.append((bidx, startbyte, startbit, bytez))
@@ -690,4 +704,3 @@ def findManchester(data, minbytes=10):
last2 = last
last = bit
return success
-
diff --git a/rflib/cc111Xhparser.py b/rflib/cc111Xhparser.py
index a89f22e..db08ef3 100644
--- a/rflib/cc111Xhparser.py
+++ b/rflib/cc111Xhparser.py
@@ -52,26 +52,26 @@ def parseLines(lines):
for line in lines:
# find single-line comments
slc = line.find("//")
- if (slc > -1):
- line = line[:slc] + "#" + line[slc+2:]
+ if slc > -1:
+ line = line[:slc] + "#" + line[slc+2:]
# find /* */ comments
mlcs = line.find("/*")
mlce = line.find("*/")
- if (mlcs>-1):
- if (mlce>-1): # both are in this line
- if (mlce>mlcs): # they are "together"
- if (mlce >= len(line.strip())-3):
- line = line[:mlcs] + '#' + line[mlcs+2:mlce]
+ if mlcs > -1:
+ if mlce > -1: # both are in this line
+ if mlce > mlcs: # they are "together"
+ if mlce >= len(line.strip())-3:
+ line = line[:mlcs] + '#' + line[mlcs + 2:mlce]
else:
- line = line[:mlcs] + '"""' + line[mlcs+2:mlce] + '"""' + line[mlce+2:]
+ line = line[:mlcs] + '"""' + line[mlcs + 2:mlce] + '"""' + line[mlce + 2:]
else: # they are *not* together
- line = line[mlce+2:mlcs]
+ line = line[mlce + 2:mlcs]
else: # only the beginning is in this line, treat like a single-line comment for now
line = line[:mlcs]
incomment = True
elif incomment: # no mlc-starter found... are we incomment? then ignore until the end of comment
- if (mlce>-1):
- line = line[mlce+2:]
+ if mlce > -1:
+ line = line[mlce + 2:]
incomment = False
else:
line = ''
@@ -82,37 +82,37 @@ def parseLines(lines):
line = line.strip()
# now we can actually parse the line
- if (line.startswith("#define ")):
+ if line.startswith("#define "):
line = line[8:].strip() # peel off any additional spaces after the #define
pieces = line.split(" ", 1)
- if len(pieces)<2:
+ if len(pieces) < 2:
continue
name, value = pieces
if "(" in name:
- print(("SKIPPING: %s"%(line)), file=sys.stderr)
+ print(("SKIPPING: {}".format(line)), file=sys.stderr)
continue # skip adding "function" defines
defs[name.strip()] = value.strip()
- elif (line.startswith("SFR(")):
+ elif line.startswith("SFR("):
endparen = line.find(")")
- if (endparen == -1):
- print(("ERROR: SFR without end parens: '%s'"%(line)), file=sys.stderr)
+ if endparen == -1:
+ print(("ERROR: SFR without end parens: '{}'".format(line)), file=sys.stderr)
continue
line = line[4:endparen].strip()
name, value = line.split(",", 1)
defs[name.strip()] = value.strip()
- elif (line.startswith("SFRX(")):
+ elif line.startswith("SFRX("):
endparen = line.find(")")
- if (endparen == -1):
- print(("ERROR: SFRX without end parens: '%s'"%(line)), file=sys.stderr)
+ if endparen == -1:
+ print(("ERROR: SFRX without end parens: '{}'".format(line)), file=sys.stderr)
continue
line = line[5:endparen].strip()
name, value = line.split(",", 1)
defs[name.strip()] = value.strip()
- elif (line.startswith("SBIT")):
+ elif line.startswith("SBIT"):
endparen = line.find(")")
- if (endparen == -1):
- print(("ERROR: SBIT without end parens: '%s'"%(line)), file=sys.stderr)
+ if endparen == -1:
+ print(("ERROR: SBIT without end parens: '{}'".format(line)), file=sys.stderr)
continue
line = line[5:endparen].strip()
name, val1, val2 = line.split(",", 2)
@@ -123,28 +123,19 @@ def parseLines(lines):
if __name__ == '__main__':
defs = {}
- defs.update(parseLines(file('../includes/cc1110-ext.h')))
- defs.update(parseLines(file('../includes/cc1111.h')))
- defs.update(parseLines(file('/usr/share/sdcc/include/mcs51/cc1110.h')))
+ defs.update(parseLines(open('../includes/cc1110-ext.h', 'r')))
+ defs.update(parseLines(open('../includes/cc1111.h', 'r')))
+ defs.update(parseLines(open('/usr/share/sdcc/include/mcs51/cc1110.h', 'r')))
skeys = list(defs.keys())
skeys.sort()
- out = ["%-30s = %s"%(key,defs[key]) for key in skeys]
+ out = ["%-30s = %s" % (key, defs[key]) for key in skeys]
trueout = []
for x in out:
try:
- compile(x,'stdin','exec')
+ compile(x, 'stdin', 'exec')
trueout.append(x)
print(x)
except:
sys.excepthook(*sys.exc_info())
-
-
-
-
-
-
-
-
-
diff --git a/rflib/ccrecvdump.py b/rflib/ccrecvdump.py
index 744d5aa..0f51fcb 100644
--- a/rflib/ccrecvdump.py
+++ b/rflib/ccrecvdump.py
@@ -11,12 +11,12 @@
dport = "/dev/tty" + port
-print("Opening serial port %s for listening..." % dport)
+print("Opening serial port {} for listening...".format(dport))
s=serial.Serial(dport, 115200)
counter = 0
while True:
- print ("%d: %s" % (counter, repr(s.read(12))))
+ print("{:d} {}".format(counter, repr(s.read(12))))
counter += 1
- #sys.stdout.write(s.read(1))
- #sys.stdout.flush()
+ # sys.stdout.write(s.read(1))
+ # sys.stdout.flush()
diff --git a/rflib/ccspecan.py b/rflib/ccspecan.py
index f6bd796..69dba9a 100755
--- a/rflib/ccspecan.py
+++ b/rflib/ccspecan.py
@@ -24,8 +24,6 @@
from future import standard_library
standard_library.install_aliases()
-from builtins import bytes
-from builtins import range
from past.utils import old_div
import sys
import time
@@ -42,6 +40,7 @@
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt, QPointF, QLineF
+
def ensureQapp():
global _qt_app
if not globals().get("_qt_app"):
@@ -51,6 +50,7 @@ def ensureQapp():
APP_SPECAN = 0x43
SPECAN_QUEUE = 1
+
class SpecanThread(threading.Thread):
def __init__(self, data, low_frequency, high_frequency, freq_step, delay, new_frame_callback):
threading.Thread.__init__(self)
@@ -68,16 +68,20 @@ def __init__(self, data, low_frequency, high_frequency, freq_step, delay, new_fr
def run(self):
# this is where we pull in the data from the device
- #frame_source = self._device.specan(self._low_frequency, self._high_frequency)
+ # frame_source = self._device.specan(self._low_frequency, self._high_frequency)
num_chans = int(old_div((self._high_frequency - self._low_frequency), self._freq_step))
+ # FIXME num_chans isnt used, remove it?
if type(self._data) == list:
for rssi_values, timestamp in self._data:
- rssi_values = [ (old_div((ord(x)^0x80),2))-88 for x in rssi_values[4:] ]
+ rssi_values = [(old_div((ord(x) ^ 0x80), 2)) - 88 for x in rssi_values[4:]]
# since we are not accessing the dongle, we need some sort of delay
time.sleep(self._delay)
- frequency_axis = numpy.linspace(self._low_frequency, self._high_frequency, num=len(rssi_values), endpoint=True)
+ frequency_axis = numpy.linspace(self._low_frequency,
+ self._high_frequency,
+ num=len(rssi_values),
+ endpoint=True)
self._new_frame_callback(numpy.copy(frequency_axis), numpy.copy(rssi_values))
if self._stop:
@@ -86,8 +90,11 @@ def run(self):
while not self._stop:
try:
rssi_values, timestamp = self._data.recv(APP_SPECAN, SPECAN_QUEUE, 10000)
- rssi_values = [ (old_div((ord(x)^0x80),2))-88 for x in rssi_values ]
- frequency_axis = numpy.linspace(self._low_frequency, self._high_frequency, num=len(rssi_values), endpoint=True)
+ rssi_values = [(old_div((ord(x) ^ 0x80), 2)) - 88 for x in rssi_values]
+ frequency_axis = numpy.linspace(self._low_frequency,
+ self._high_frequency,
+ num=len(rssi_values),
+ endpoint=True)
self._new_frame_callback(numpy.copy(frequency_axis), numpy.copy(rssi_values))
except:
@@ -99,6 +106,7 @@ def stop(self):
self.join(3.0)
self._stopped = True
+
class RenderArea(QtWidgets.QWidget):
def __init__(self, data, low_freq=2.400e9, high_freq=2.483e9, freq_step=1e6, delay=0, parent=None):
QtWidgets.QWidget.__init__(self, parent)
@@ -113,9 +121,9 @@ def __init__(self, data, low_freq=2.400e9, high_freq=2.483e9, freq_step=1e6, del
self._persisted_frames_depth = 350
self._path_max = None
- self._low_frequency = low_freq #2.400e9
- self._high_frequency = high_freq #2.483e9
- self._frequency_step = freq_step #1e6
+ self._low_frequency = low_freq # 2.400e9
+ self._high_frequency = high_freq # 2.483e9
+ self._frequency_step = freq_step # 1e6
self._high_dbm = 0.0
self._low_dbm = -100.0
@@ -155,8 +163,8 @@ def minimumSizeHint(self):
return QtCore.QSize(x_points * 4, y_points * 1)
def _new_frame(self, frequency_axis, rssi_values):
- #print repr(frequency_axis)
- #print repr(rssi_values)
+ # print repr(frequency_axis)
+ # print repr(rssi_values)
self._frame = (frequency_axis, rssi_values)
if self._persisted_frames is None:
self._new_persisted_frames(len(frequency_axis))
@@ -211,32 +219,34 @@ def _draw_graph(self):
pen.setBrush(Qt.red)
pen.setStyle(Qt.DotLine)
painter.setPen(pen)
- painter.drawText(QPointF(x_axis[max_max] + 4, 30), '%.06f' % (old_div(self._x_to_hz(x_axis[max_max]), 1e6)))
- painter.drawText(QPointF(30, y_max[max_max] - 4), '%d' % (self._y_to_dbm(y_max[max_max])))
+ painter.drawText(QPointF(x_axis[max_max] + 4, 30), '{:.06f}'.format(old_div(
+ self._x_to_hz(x_axis[max_max]),
+ 1e6)))
+ painter.drawText(QPointF(30, y_max[max_max] - 4), '{:d}'.format(self._y_to_dbm(y_max[max_max])))
painter.drawLine(QPointF(x_axis[max_max], 0), QPointF(x_axis[max_max], self.height()))
painter.drawLine(QPointF(0, y_max[max_max]), QPointF(self.width(), y_max[max_max]))
if self._mouse_x:
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 58), '(%.06f)' % ((old_div(self._x_to_hz(x_axis[max_max]), 1e6)) - (old_div(self._mouse_x, 1e6))))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 58), '({:.06f})'.format((old_div(self._x_to_hz(x_axis[max_max]), 1e6)) - (old_div(self._mouse_x, 1e6))))
pen.setBrush(Qt.yellow)
painter.setPen(pen)
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 44), '%.06f' % (old_div(self._mouse_x, 1e6)))
- painter.drawText(QPointF(54, self._dbm_to_y(self._mouse_y) - 4), '%d' % (self._mouse_y))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 44), '{:.06f}'.format(old_div(self._mouse_x, 1e6)))
+ painter.drawText(QPointF(54, self._dbm_to_y(self._mouse_y) - 4), '{:d}'.format(self._mouse_y))
painter.drawLine(QPointF(self._hz_to_x(self._mouse_x), 0), QPointF(self._hz_to_x(self._mouse_x), self.height()))
painter.drawLine(QPointF(0, self._dbm_to_y(self._mouse_y)), QPointF(self.width(), self._dbm_to_y(self._mouse_y)))
if self._mouse_x2:
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 118), '(%.06f)' % ((old_div(self._mouse_x, 1e6)) - (old_div(self._mouse_x2, 1e6))))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 118), '({:.06f})'.format((old_div(self._mouse_x, 1e6)) - (old_div(self._mouse_x2, 1e6))))
if self._mouse_x2:
pen.setBrush(Qt.red)
painter.setPen(pen)
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 102), '(%.06f)' % ((old_div(self._x_to_hz(x_axis[max_max]), 1e6)) - (old_div(self._mouse_x2, 1e6))))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 102), '({:.06f})'.format((old_div(self._x_to_hz(x_axis[max_max]), 1e6)) - (old_div(self._mouse_x2, 1e6))))
pen.setBrush(Qt.magenta)
painter.setPen(pen)
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 88), '%.06f' % (old_div(self._mouse_x2, 1e6)))
- painter.drawText(QPointF(78, self._dbm_to_y(self._mouse_y2) - 4), '%d' % (self._mouse_y2))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x2) + 4, 88), '{:.06f}'.format(old_div(self._mouse_x2, 1e6)))
+ painter.drawText(QPointF(78, self._dbm_to_y(self._mouse_y2) - 4), '{:d}'.format(self._mouse_y2))
painter.drawLine(QPointF(self._hz_to_x(self._mouse_x2), 0), QPointF(self._hz_to_x(self._mouse_x2), self.height()))
painter.drawLine(QPointF(0, self._dbm_to_y(self._mouse_y2)), QPointF(self.width(), self._dbm_to_y(self._mouse_y2)))
if self._mouse_x:
- painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 74), '(%.06f)' % ((old_div(self._mouse_x2, 1e6)) - (old_div(self._mouse_x, 1e6))))
+ painter.drawText(QPointF(self._hz_to_x(self._mouse_x) + 4, 74), '({:.06f})'.format((old_div(self._mouse_x2, 1e6)) - (old_div(self._mouse_x, 1e6))))
finally:
painter.end()
@@ -263,10 +273,10 @@ def _draw_reticle(self):
painter.setPen(Qt.blue)
# TODO: Removed to support old (<1.0) PySide API in Ubuntu 10.10
- #painter.drawLines(dbm_lines)
+ # painter.drawLines(dbm_lines)
for dbm_line in dbm_lines: painter.drawLine(dbm_line)
# TODO: Removed to support old (<1.0) PySide API in Ubuntu 10.10
- #painter.drawLines(frequency_lines)
+ # painter.drawLines(frequency_lines)
for frequency_line in frequency_lines: painter.drawLine(frequency_line)
painter.setPen(Qt.white)
@@ -305,7 +315,7 @@ def _hz_to_x(self, frequency_hz):
delta = frequency_hz - self._low_frequency
range = self._high_frequency - self._low_frequency
normalized = old_div(delta, range)
- #print "freq: %s \nlow: %s \nhigh: %s \ndelta: %s \nrange: %s \nnormalized: %s" % (frequency_hz, self._low_frequency, self._high_frequency, delta, range, normalized)
+ # print "freq: %s \nlow: %s \nhigh: %s \ndelta: %s \nrange: %s \nnormalized: %s" % (frequency_hz, self._low_frequency, self._high_frequency, delta, range, normalized)
return normalized * self.width()
def _x_to_hz(self, x):
@@ -326,6 +336,7 @@ def _y_to_dbm(self, y):
delta = tmp * range
return self._high_dbm - delta
+
class Window(QtWidgets.QWidget):
def __init__(self, data, low_freq, high_freq, spacing, delay=.01, parent=None):
QtWidgets.QWidget.__init__(self, parent)
@@ -333,7 +344,7 @@ def __init__(self, data, low_freq, high_freq, spacing, delay=.01, parent=None):
self._low_freq = low_freq
self._high_freq = high_freq
self._spacing = spacing
- self._delay= delay
+ self._delay = delay
self._data = self._open_data(data)
@@ -359,7 +370,7 @@ def _open_data(self, data):
numChans = int(old_div((self._high_freq-self._low_freq), self._spacing))
data._doSpecAn(freq, spc, numChans)
else:
- data = pickle.load(file(data,'rb'))
+ data = pickle.load(open(data, 'rb'))
if data is None:
raise Exception('Data not found')
return data
@@ -391,21 +402,21 @@ def mousePressEvent(self, event):
def keyPressEvent(self, event):
# test for non-alphanumeric keys first
# arrow key
- if event.key() >= Qt.Key_Left and event.key() <= Qt.Key_Down:
+ if Qt.Key_Left <= event.key() <= Qt.Key_Down:
# left
if event.key() == Qt.Key_Left:
- self._low_freq -= self._spacing
- self._high_freq -= self._spacing
+ self._low_freq -= self._spacing
+ self._high_freq -= self._spacing
# up
if event.key() == Qt.Key_Up:
- self._spacing = int(self._spacing * 1.1)
+ self._spacing = int(self._spacing * 1.1)
# right
if event.key() == Qt.Key_Right:
- self._low_freq += self._spacing
- self._high_freq += self._spacing
+ self._low_freq += self._spacing
+ self._high_freq += self._spacing
# down
if event.key() == Qt.Key_Down:
- self._spacing = int(self._spacing / 1.1)
+ self._spacing = int(self._spacing / 1.1)
# this will redraw window with the correct labels etc., but we also need to re-start
# specan on the dongle, and I'm not sure how best to do that!
self.layout().removeWidget(self.render_area)
@@ -416,7 +427,7 @@ def keyPressEvent(self, event):
# anything else is alphanumeric
try:
- key= correctbytes(event.key()).upper()
+ key = correctbytes(event.key()).upper()
event.accept()
except:
print('Unknown key pressed: 0x%x' % event.key())
@@ -449,6 +460,7 @@ def keyPressEvent(self, event):
return
print('Unsupported key pressed:', key)
+
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
f = sys.argv[1]
@@ -461,6 +473,6 @@ def keyPressEvent(self, event):
delay = .01
window = Window(f, fbase, fhigh, fdelta, delay)
- #window = Window('../data.again', 902.0, 928.0, 3e-1)
+ # window = Window('../data.again', 902.0, 928.0, 3e-1)
window.show()
sys.exit(app.exec_())
diff --git a/rflib/chipcon_nic.py b/rflib/chipcon_nic.py
index dfeec3d..9255360 100644
--- a/rflib/chipcon_nic.py
+++ b/rflib/chipcon_nic.py
@@ -4,10 +4,6 @@
from __future__ import absolute_import
from __future__ import division
-from builtins import bytes
-from builtins import hex
-from builtins import range
-from builtins import object
from past.utils import old_div
import re
import sys
@@ -21,6 +17,7 @@
from .bits import correctbytes
from .const import *
+
def makeFriendlyAscii(instring):
out = []
start = 0
@@ -28,36 +25,34 @@ def makeFriendlyAscii(instring):
instrlen = len(instring)
for cidx in range(instrlen):
- if (0x20 < ord(instring[cidx]) < 0x7f):
- if last < cidx-1:
- out.append( "." * (cidx-1-last))
+ if 0x20 < ord(instring[cidx]) < 0x7f:
+ if last < cidx - 1:
+ out.append("." * (cidx - 1 - last))
start = cidx
last = cidx
else:
if last == cidx-1:
- out.append( instring[ start:last+1 ] )
+ out.append(instring[start:last + 1])
if last != cidx:
out.append( "." * (cidx-last) )
- else: # if start == 0:
- out.append( instring[ start: ] )
+ else: # if start == 0:
+ out.append(instring[start:])
return ''.join(out)
-
-
def calculateT2(tick_ms, mhz=24):
# each tick, not each cycle
- TICKSPD = [(old_div(mhz*1000000,pow(2,x))) for x in range(8)]
+ TICKSPD = [(old_div(mhz * 1000000, pow(2, x))) for x in range(8)]
- tick_ms = 1.0*tick_ms/1000
+ tick_ms = 1.0 * tick_ms / 1000
candidates = []
for tickidx in range(8):
for tipidx in range(4):
for PR in range(256):
T = 1.0 * PR * TIP[tipidx] / TICKSPD[tickidx]
- if abs(T-tick_ms) < .010:
+ if abs(T - tick_ms) < .010:
candidates.append((T, tickidx, tipidx, PR))
diff = 1024
best = None
@@ -66,30 +61,35 @@ def calculateT2(tick_ms, mhz=24):
best = c
diff = abs(c[0] - tick_ms)
return best
- #return ms, candidates, best
+ # return ms, candidates, best
class EnDeCode(object):
def encode(self, msg):
raise Exception("EnDeCode.encode() not implemented. Each subclass must implement their own")
+
def decode(self, msg):
raise Exception("EnDeCode.encode() not implemented. Each subclass must implement their own")
def savePkts(pkts, filename):
- pickle.dump(pkts, file(filename, 'a'))
+ pickle.dump(pkts, open(filename, 'a'))
+
+
def loadPkts(filename):
- return pickle.load( file(filename, 'r'))
+ return pickle.load(open(filename, 'r'))
+
def printSyncWords(syncworddict):
print("SyncWords seen:")
tmp = []
- for x,y in list(syncworddict.items()):
- tmp.append((y,x))
+ for x, y in list(syncworddict.items()):
+ tmp.append((y, x))
tmp.sort()
- for y,x in tmp:
- print("0x%.4x: %d" % (x,y))
+ for y, x in tmp:
+ print("{:#x}: {:d}".format(x[0:3], y))
+
class NICxx11(USBDongle):
'''
@@ -115,7 +115,7 @@ def setRfMode(self, rfmode, parms=''):
sets the radio state to "rfmode", and makes
'''
self._rfmode = rfmode
- r = self.send(APP_SYSTEM, SYS_CMD_RFMODE, "%c" % (self._rfmode) + parms)
+ r = self.send(APP_SYSTEM, SYS_CMD_RFMODE, "{:c}".format(self._rfmode) + parms)
### set standard radio state to TX/RX/IDLE (TX is pretty much only good for jamming). TX/RX modes are set to return to whatever state you choose here.
def setModeTX(self):
@@ -138,38 +138,37 @@ def setModeIDLE(self):
AND: set radio to return to IDLE state when done with other states
'''
self.setRfMode(RFST_SIDLE)
-
### send raw state change to radio (doesn't update the return state for after RX/TX occurs)
def strobeModeTX(self):
'''
set radio to TX state (transient)
'''
- self.poke(X_RFST, "%c"%RFST_STX)
+ self.poke(X_RFST, "{:c}".format(RFST_STX))
def strobeModeRX(self):
'''
set radio to RX state (transient)
'''
- self.poke(X_RFST, "%c"%RFST_SRX)
+ self.poke(X_RFST, "{:c}".format(RFST_SRX))
def strobeModeIDLE(self):
'''
set radio to IDLE state (transient)
'''
- self.poke(X_RFST, "%c"%RFST_SIDLE)
+ self.poke(X_RFST, "{:c}".format(RFST_SIDLE))
def strobeModeFSTXON(self):
'''
set radio to FSTXON state (transient)
'''
- self.poke(X_RFST, "%c"%RFST_SFSTXON)
+ self.poke(X_RFST, "{:c}".format(RFST_SFSTXON))
def strobeModeCAL(self):
'''
set radio to CAL state (will return to whichever state is configured (via setMode* functions)
'''
- self.poke(X_RFST, "%c"%RFST_SCAL)
+ self.poke(X_RFST, "{:c}".format(RFST_SCAL))
def strobeModeReturn(self, marcstate=None):
"""
@@ -180,10 +179,7 @@ def strobeModeReturn(self, marcstate=None):
#marcstate = self.radiocfg.marcstate
#if self._debug: print("MARCSTATE: %x returning to %x" % (marcstate, MARC_STATE_MAPPINGS[marcstate][2]) )
#self.poke(X_RFST, "%c"%MARC_STATE_MAPPINGS[marcstate][2])
- self.poke(X_RFST, "%c" % self._rfmode)
-
-
-
+ self.poke(X_RFST, "{:c}".format(self._rfmode))
#### radio config #####
def getRadioConfig(self):
@@ -191,7 +187,7 @@ def getRadioConfig(self):
self.radiocfg.vsParse(bytedef)
return bytedef
- def setRadioConfig(self, bytedef = None):
+ def setRadioConfig(self, bytedef=None):
if bytedef is None:
bytedef = self.radiocfg.vsEmit()
@@ -211,7 +207,6 @@ def setRadioConfig(self, bytedef = None):
return bytedef
-
##### GETTER/SETTERS for Radio Config/Status #####
### radio state
def setLedMode(self, ledmode):
@@ -219,7 +214,7 @@ def setLedMode(self, ledmode):
sets the led state to "ledmode"
'''
self._ledmode = ledmode
- r = self.send(APP_SYSTEM, SYS_CMD_LED_MODE, "%c" % (self._ledmode))
+ r = self.send(APP_SYSTEM, SYS_CMD_LED_MODE, "{:c}".format(self._ledmode))
def getMARCSTATE(self, radiocfg=None):
if radiocfg is None:
@@ -254,7 +249,7 @@ def setRFRegister(self, regaddr, value, suppress=False):
def setRFbits(self, addr, bitnum, bitsz, val, suppress=False):
''' sets individual bits of a register '''
- mask = ((1<<bitsz) - 1) << bitnum
+ mask = ((1 << bitsz) - 1) << bitnum
rmask = ~mask
temp = ord(self.peek(addr)) & rmask
@@ -273,7 +268,7 @@ def setEnableCCA(self, mode=3, absthresh=0, relthresh=1, magn=3, radiocfg=None):
if radiocfg is None:
radiocfg = self.radiocfg
else:
- applyConfig = False
+ applyConfig = False # FIXME applyConfig is never used. Remove it and the else clause?
mcsm1 = radiocfg.mcsm1 & 0xf
mcsm1 |= (mode << 4)
@@ -299,13 +294,13 @@ def setFreq(self, freq=902000000, mhz=24, radiocfg=None, applyConfig=True):
freqmult = old_div((0x10000 / 1000000.0), mhz)
num = int(freq * freqmult)
radiocfg.freq2 = num >> 16
- radiocfg.freq1 = (num>>8) & 0xff
+ radiocfg.freq1 = (num >> 8) & 0xff
radiocfg.freq0 = num & 0xff
- if (freq > FREQ_EDGE_900 and freq < FREQ_MID_900) or (freq > FREQ_EDGE_400 and freq < FREQ_MID_400) or (freq < FREQ_MID_300):
+ if (FREQ_EDGE_900 < freq < FREQ_MID_900) or (FREQ_EDGE_400 < freq < FREQ_MID_400) or (freq < FREQ_MID_300):
# select low VCO
radiocfg.fscal2 = 0x0A
- elif freq <1e9 and ((freq > FREQ_MID_900) or (freq > FREQ_MID_400) or (freq > FREQ_MID_300)):
+ elif freq < 1e9 and ((freq > FREQ_MID_900) or (freq > FREQ_MID_400) or (freq > FREQ_MID_300)):
# select high VCO
radiocfg.fscal2 = 0x2A
@@ -324,16 +319,16 @@ def setFreq(self, freq=902000000, mhz=24, radiocfg=None, applyConfig=True):
def getFreq(self, mhz=24, radiocfg=None):
freqmult = old_div((0x10000 / 1000000.0), mhz)
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- num = (radiocfg.freq2<<16) + (radiocfg.freq1<<8) + radiocfg.freq0
+ num = (radiocfg.freq2 << 16) + (radiocfg.freq1 << 8) + radiocfg.freq0
freq = old_div(num, freqmult)
return freq, hex(num)
def getFreqEst(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -344,7 +339,7 @@ def getFreqEst(self, radiocfg=None):
# the TI design note for this is missing from TI's main website but can be found here:
# http://e2e.ti.com/cfs-file/__key/telligent-evolution-components-attachments/00-155-01-00-00-73-46-38/DN015_5F00_Permanent_5F00_Frequency_5F00_Offset_5F00_Compensation.pdf
def adjustFreqOffset(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -354,7 +349,7 @@ def adjustFreqOffset(self, mhz=24, radiocfg=None):
# set 'standard' power - for more complex power shaping this will need to be done manually
def setPower(self, power=None, radiocfg=None, invert=False):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -379,63 +374,63 @@ def setPower(self, power=None, radiocfg=None, invert=False):
# max power settings are frequency dependent, so set frequency before calling
def setMaxPower(self, radiocfg=None, invert=False):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
freq= self.getFreq(radiocfg=radiocfg)[0]
if freq <= 400000000:
- power= 0xC2
+ power = 0xC2
elif freq <= 464000000:
- power= 0xC0
+ power = 0xC0
elif freq <= 900000000:
- power= 0xC2
+ power = 0xC2
else:
- power= 0xC0
+ power = 0xC0
self.setPower(power, radiocfg=radiocfg, invert=invert)
def setMdmModulation(self, mod, radiocfg=None, invert=False):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- if (mod) & ~MDMCFG2_MOD_FORMAT:
+ if mod & ~MDMCFG2_MOD_FORMAT:
raise Exception("Please use constants MOD_FORMAT_* to specify modulation and ")
radiocfg.mdmcfg2 &= ~MDMCFG2_MOD_FORMAT
- radiocfg.mdmcfg2 |= (mod)
+ radiocfg.mdmcfg2 |= mod
- power= None
+ power = None
# ASK_OOK needs to flip power table
if mod == MOD_ASK_OOK and not invert:
if radiocfg.pa_table1 == 0x00 and radiocfg.pa_table0 != 0x00:
- power= radiocfg.pa_table0
+ power = radiocfg.pa_table0
else:
if radiocfg.pa_table0 == 0x00 and radiocfg.pa_table1 != 0x00:
- power= radiocfg.pa_table1
+ power = radiocfg.pa_table1
self.setRFRegister(MDMCFG2, radiocfg.mdmcfg2)
self.setPower(power, radiocfg=radiocfg, invert=invert)
def getMdmModulation(self, radiocfg=None):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
mdmcfg2 = radiocfg.mdmcfg2
- mod = (mdmcfg2) & MDMCFG2_MOD_FORMAT
+ mod = mdmcfg2 & MDMCFG2_MOD_FORMAT
return mod
def getMdmChanSpc(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
chanspc_m = radiocfg.mdmcfg0
chanspc_e = radiocfg.mdmcfg1 & 3
- chanspc = 1000000.0 * mhz/pow(2,18) * (256 + chanspc_m) * pow(2, chanspc_e)
+ chanspc = 1000000.0 * mhz/pow(2, 18) * (256 + chanspc_m) * pow(2, chanspc_e)
#print "chanspc_e: %x chanspc_m: %x chanspc: %f hz" % (chanspc_e, chanspc_m, chanspc)
return (chanspc)
@@ -449,11 +444,11 @@ def setMdmChanSpc(self, chanspc=None, chanspc_m=None, chanspc_e=None, mhz=24, ra
* chanspc
* chanspc_m and chanspc_e
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- if (chanspc != None):
+ if chanspc is not None:
for e in range(4):
m = int(((old_div(chanspc * pow(2,18), (1000000.0 * mhz * pow(2,e))))-256) +.5) # rounded evenly
if m < 256:
@@ -469,11 +464,11 @@ def setMdmChanSpc(self, chanspc=None, chanspc_m=None, chanspc_e=None, mhz=24, ra
radiocfg.mdmcfg1 &= ~MDMCFG1_CHANSPC_E # clear out old exponent value
radiocfg.mdmcfg1 |= chanspc_e
radiocfg.mdmcfg0 = chanspc_m
- self.setRFRegister(MDMCFG1, (radiocfg.mdmcfg1))
- self.setRFRegister(MDMCFG0, (radiocfg.mdmcfg0))
+ self.setRFRegister(MDMCFG1, radiocfg.mdmcfg1)
+ self.setRFRegister(MDMCFG0, radiocfg.mdmcfg0)
def makePktVLEN(self, maxlen=RF_MAX_TX_BLOCK, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -488,12 +483,12 @@ def makePktVLEN(self, maxlen=RF_MAX_TX_BLOCK, radiocfg=None):
def makePktFLEN(self, flen=RF_MAX_TX_BLOCK, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
if flen > EP5OUT_BUFFER_SIZE - 4:
- raise Exception("Packet too large (%d bytes). Maximum fixed length packet is %d bytes." % (flen, EP5OUT_BUFFER_SIZE - 6))
+ raise Exception("Packet too large ({:d} bytes). Maximum fixed length packet is {:d} bytes.".format(flen, EP5OUT_BUFFER_SIZE - 6))
radiocfg.pktctrl0 &= ~PKTCTRL0_LENGTH_CONFIG
# if we're sending a large block, pktlen is dealt with by the firmware
@@ -502,8 +497,8 @@ def makePktFLEN(self, flen=RF_MAX_TX_BLOCK, radiocfg=None):
radiocfg.pktlen = 0x00
else:
radiocfg.pktlen = flen
- self.setRFRegister(PKTCTRL0, (radiocfg.pktctrl0))
- self.setRFRegister(PKTLEN, (radiocfg.pktlen))
+ self.setRFRegister(PKTCTRL0, radiocfg.pktctrl0)
+ self.setRFRegister(PKTLEN, radiocfg.pktlen)
def getPktLEN(self):
'''
@@ -512,54 +507,54 @@ def getPktLEN(self):
return (self.radiocfg.pktlen, self.radiocfg.pktctrl0 & PKTCTRL0_LENGTH_CONFIG)
def setEnablePktCRC(self, enable=True, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- crcE = (0,1)[enable]<<2
- crcM = ~(1<<2)
+ crcE = (0,1)[enable] << 2
+ crcM = ~(1 << 2)
radiocfg.pktctrl0 &= crcM
radiocfg.pktctrl0 |= crcE
- self.setRFRegister(PKTCTRL0, (radiocfg.pktctrl0))
+ self.setRFRegister(PKTCTRL0, radiocfg.pktctrl0)
def getEnablePktCRC(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- return (radiocfg.pktctrl0 >>2) & 0x1
+ return (radiocfg.pktctrl0 >> 2) & 0x1
def setEnablePktDataWhitening(self, enable=True, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- dwEnable = (0,1)[enable]<<6
+ dwEnable = (0, 1)[enable] << 6
radiocfg.pktctrl0 &= ~PKTCTRL0_WHITE_DATA
radiocfg.pktctrl0 |= dwEnable
- self.setRFRegister(PKTCTRL0, (radiocfg.pktctrl0))
+ self.setRFRegister(PKTCTRL0, radiocfg.pktctrl0)
def getEnablePktDataWhitening(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- return (radiocfg.pktctrl0 >>6) & 0x1
+ return (radiocfg.pktctrl0 >> 6) & 0x1
def setPktPQT(self, num=3, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
num &= 7
num <<= 5
- numM = ~(7<<5)
+ numM = ~(7 << 5)
radiocfg.pktctrl1 &= numM
radiocfg.pktctrl1 |= num
- self.setRFRegister(PKTCTRL1, (radiocfg.pktctrl1))
+ self.setRFRegister(PKTCTRL1, radiocfg.pktctrl1)
def getPktPQT(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -570,82 +565,81 @@ def setEnablePktAppendStatus(self, enable=True, radiocfg=None):
enable append status bytes. two bytes will be appended to the payload of the packet, containing
RSSI and LQI values as well as CRC OK.
'''
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.pktctrl1 &= ~PKTCTRL1_APPEND_STATUS
- radiocfg.pktctrl1 |= (enable<<2)
+ radiocfg.pktctrl1 |= (enable << 2)
self.setRFRegister(PKTCTRL1, radiocfg.pktctrl1)
def getEnablePktAppendStatus(self, radiocfg=None):
'''
return append status bytes setting.
'''
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
pktctrl1 = radiocfg.pktctrl1
- append = (pktctrl1>>2) & 0x01
+ append = (pktctrl1 >> 2) & 0x01
return append
def setEnableMdmManchester(self, enable=True, radiocfg=None):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.mdmcfg2 &= ~MDMCFG2_MANCHESTER_EN
- radiocfg.mdmcfg2 |= (enable<<3)
+ radiocfg.mdmcfg2 |= (enable << 3)
self.setRFRegister(MDMCFG2, radiocfg.mdmcfg2)
def getEnableMdmManchester(self, radiocfg=None):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
mdmcfg2 = radiocfg.mdmcfg2
- mchstr = (mdmcfg2>>3) & 0x01
+ mchstr = (mdmcfg2 >> 3) & 0x01
return mchstr
def setEnableMdmFEC(self, enable=True, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- fecEnable = (0,1)[enable]<<7
+ fecEnable = (0, 1)[enable] << 7
radiocfg.mdmcfg1 &= ~MFMCFG1_FEC_EN
radiocfg.mdmcfg1 |= fecEnable
- self.setRFRegister(MDMCFG1, (radiocfg.mdmcfg1))
+ self.setRFRegister(MDMCFG1, radiocfg.mdmcfg1)
def getEnableMdmFEC(self, radiocfg=None):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
mdmcfg1 = radiocfg.mdmcfg1
- fecEnable = (mdmcfg1>>7) & 0x01
+ fecEnable = (mdmcfg1 >> 7) & 0x01
return fecEnable
def setEnableMdmDCFilter(self, enable=True, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- dcfEnable = (0,1)[enable]<<7
+ dcfEnable = (0, 1)[enable] << 7
radiocfg.mdmcfg2 &= ~MDMCFG2_DEM_DCFILT_OFF
radiocfg.mdmcfg2 |= dcfEnable
self.setRFRegister(MDMCFG2, radiocfg.mdmcfg2)
def getEnableMdmDCFilter(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- dcfEnable = (radiocfg.mdmcfg2>>7) & 0x1
+ dcfEnable = (radiocfg.mdmcfg2 >> 7) & 0x1
return dcfEnable
-
def setFsIF(self, freq_if, mhz=24, radiocfg=None):
'''
Note that the SmartRF Studio software
@@ -653,43 +647,42 @@ def setFsIF(self, freq_if, mhz=24, radiocfg=None):
setting based on channel spacing and channel
filter bandwidth. (from cc1110f32.pdf)
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
ifBits = old_div(freq_if * pow(2,10), (1000000.0 * mhz))
ifBits = int(ifBits + .5) # rounded evenly
- if ifBits >0x1f:
- raise Exception("FAIL: freq_if is too high? freqbits: %x (must be <0x1f)" % ifBits)
- radiocfg.fsctrl1 &= ~(0x1f)
+ if ifBits > 0x1f:
+ raise Exception("FAIL: freq_if is too high? freqbits: {:x} (must be <0x1f)".format(ifBits))
+ radiocfg.fsctrl1 &= ~0x1f
radiocfg.fsctrl1 |= int(ifBits)
- self.setRFRegister(FSCTRL1, (radiocfg.fsctrl1))
+ self.setRFRegister(FSCTRL1, radiocfg.fsctrl1)
def getFsIF(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- freq_if = (radiocfg.fsctrl1&0x1f) * (1000000.0 * mhz / pow(2,10))
+ freq_if = (radiocfg.fsctrl1 & 0x1f) * (1000000.0 * mhz / pow(2, 10))
return freq_if
-
- def setFsOffset(self, if_off, mhz=24, radiocfg=None):
+ def setFsOffset(self, if_off, mhz=24, radiocfg=None): # FIXME mhz is never used, remove?
'''
Note that the SmartRF Studio software
automatically calculates the optimum register
setting based on channel spacing and channel
filter bandwidth. (from cc1110f32.pdf)
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.fsctrl0 = if_off
- self.setRFRegister(FSCTRL0, (radiocfg.fsctrl0))
+ self.setRFRegister(FSCTRL0, radiocfg.fsctrl0)
- def getFsOffset(self, mhz=24, radiocfg=None):
+ def getFsOffset(self, mhz=24, radiocfg=None): # FIXME mhz is never used, remove?
if radiocfg==None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -711,7 +704,7 @@ def setChannel(self, channr, radiocfg=None):
radiocfg = self.radiocfg
radiocfg.channr = channr
- self.setRFRegister(CHANNR, (radiocfg.channr))
+ self.setRFRegister(CHANNR, radiocfg.channr)
def setMdmChanBW(self, bw, mhz=24, radiocfg=None):
'''
@@ -747,14 +740,14 @@ def setMdmChanBW(self, bw, mhz=24, radiocfg=None):
DR:500kb Mod:MSK RXBW:750kHz sensitive fsctrl1:0e mdmcfg:0e 55 73 43 11 dev:00 foc/bscfg:1d/1c agctrl:c7 00 b0 frend:b6 10 (IF_changes, Modulation of course, Deviation has different meaning with MSK)
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
chanbw_e = None
chanbw_m = None
for e in range(4):
- m = int(((old_div(mhz*1000000.0, (bw *pow(2,e) * 8.0 ))) - 4) + .5) # rounded evenly
+ m = int(((old_div(mhz*1000000.0, (bw *pow(2, e) * 8.0))) - 4) + .5) # rounded evenly
if m < 4:
chanbw_e = e
chanbw_m = m
@@ -762,12 +755,12 @@ def setMdmChanBW(self, bw, mhz=24, radiocfg=None):
if chanbw_e is None:
raise Exception("ChanBW does not translate into acceptable parameters. Should you be changing this?")
- bw = 1000.0*mhz / (8.0*(4+chanbw_m) * pow(2,chanbw_e))
+ bw = 1000.0* mhz / (8.0 * (4 + chanbw_m) * pow(2, chanbw_e))
#print "chanbw_e: %x chanbw_m: %x chanbw: %f kHz" % (e, m, bw)
radiocfg.mdmcfg4 &= ~(MDMCFG4_CHANBW_E | MDMCFG4_CHANBW_M)
- radiocfg.mdmcfg4 |= ((chanbw_e<<6) | (chanbw_m<<4))
- self.setRFRegister(MDMCFG4, (radiocfg.mdmcfg4))
+ radiocfg.mdmcfg4 |= ((chanbw_e << 6) | (chanbw_m << 4))
+ self.setRFRegister(MDMCFG4, radiocfg.mdmcfg4)
# from http://www.cs.jhu.edu/~carlson/download/datasheets/ask_ook_settings.pdf
if bw > 102e3:
@@ -783,13 +776,13 @@ def setMdmChanBW(self, bw, mhz=24, radiocfg=None):
self.setRFRegister(TEST1, 0x35)
def getMdmChanBW(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
chanbw_e = (radiocfg.mdmcfg4 >> 6) & 0x3
chanbw_m = (radiocfg.mdmcfg4 >> 4) & 0x3
- bw = 1000000.0*mhz / (8.0*(4+chanbw_m) * pow(2,chanbw_e))
+ bw = 1000000.0*mhz / (8.0 * (4 + chanbw_m) * pow(2, chanbw_e))
#print "chanbw_e: %x chanbw_m: %x chanbw: %f hz" % (chanbw_e, chanbw_m, bw)
return bw
@@ -797,14 +790,14 @@ def setMdmDRate(self, drate, mhz=24, radiocfg=None):
'''
set the baud of data being modulated through the radio
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
drate_e = None
drate_m = None
for e in range(16):
- m = int((old_div(drate * pow(2,28), (pow(2,e)* (mhz*1000000.0)))-256) + .5) # rounded evenly
+ m = int((old_div(drate * pow(2, 28), (pow(2, e) * (mhz * 1000000.0))) - 256) + .5) # rounded evenly
if m < 256:
drate_e = e
drate_m = m
@@ -812,43 +805,43 @@ def setMdmDRate(self, drate, mhz=24, radiocfg=None):
if drate_e is None:
raise Exception("DRate does not translate into acceptable parameters. Should you be changing this?")
- drate = 1000000.0 * mhz * (256+drate_m) * pow(2,drate_e) / pow(2,28)
- if self._debug: print("drate_e: %x drate_m: %x drate: %f Hz" % (drate_e, drate_m, drate))
+ drate = 1000000.0 * mhz * (256 + drate_m) * pow(2, drate_e) / pow(2, 28)
+ if self._debug:
+ print("drate_e: {:x} drate_m: {:x} drate: {:f} Hz".format(drate_e, drate_m, drate))
radiocfg.mdmcfg3 = drate_m
radiocfg.mdmcfg4 &= ~MDMCFG4_DRATE_E
radiocfg.mdmcfg4 |= drate_e
- self.setRFRegister(MDMCFG3, (radiocfg.mdmcfg3))
- self.setRFRegister(MDMCFG4, (radiocfg.mdmcfg4))
+ self.setRFRegister(MDMCFG3, radiocfg.mdmcfg3)
+ self.setRFRegister(MDMCFG4, radiocfg.mdmcfg4)
def getMdmDRate(self, mhz=24, radiocfg=None):
'''
get the baud of data being modulated through the radio
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
drate_e = radiocfg.mdmcfg4 & 0xf
drate_m = radiocfg.mdmcfg3
- drate = 1000000.0 * mhz * (256+drate_m) * pow(2,drate_e) / pow(2,28)
+ drate = 1000000.0 * mhz * (256 + drate_m) * pow(2, drate_e) / pow(2, 28)
#print "drate_e: %x drate_m: %x drate: %f hz" % (drate_e, drate_m, drate)
return drate
-
-
+
def setMdmDeviatn(self, deviatn, mhz=24, radiocfg=None):
'''
configure the deviation settings for the given modulation scheme
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
dev_e = None
dev_m = None
for e in range(8):
- m = int((old_div(deviatn * pow(2,17), (pow(2,e)* (mhz*1000000.0)))-8) + .5) # rounded evenly
+ m = int((old_div(deviatn * pow(2, 17), (pow(2, e) * (mhz * 1000000.0))) - 8) + .5) # rounded evenly
if m < 8:
dev_e = e
dev_m = m
@@ -856,61 +849,61 @@ def setMdmDeviatn(self, deviatn, mhz=24, radiocfg=None):
if dev_e is None:
raise Exception("Deviation does not translate into acceptable parameters. Should you be changing this?")
- dev = 1000000.0 * mhz * (8+dev_m) * pow(2,dev_e) / pow(2,17)
+ dev = 1000000.0 * mhz * (8 + dev_m) * pow(2, dev_e) / pow(2, 17)
#print "dev_e: %x dev_m: %x deviatn: %f Hz" % (e, m, dev)
radiocfg.deviatn = (dev_e << 4) | dev_m
self.setRFRegister(DEVIATN, radiocfg.deviatn)
def getMdmDeviatn(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
dev_e = radiocfg.deviatn >> 4
dev_m = radiocfg.deviatn & DEVIATN_DEVIATION_M
- dev = 1000000.0 * mhz * (8+dev_m) * pow(2,dev_e) / pow(2,17)
+ dev = 1000000.0 * mhz * (8 + dev_m) * pow(2, dev_e) / pow(2, 17)
return dev
def getMdmSyncWord(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
return (radiocfg.sync1 << 8) + radiocfg.sync0
def setMdmSyncWord(self, word, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.sync1 = word >> 8
radiocfg.sync0 = word & 0xff
- self.setRFRegister(SYNC1, (radiocfg.sync1))
- self.setRFRegister(SYNC0, (radiocfg.sync0))
+ self.setRFRegister(SYNC1, radiocfg.sync1)
+ self.setRFRegister(SYNC0, radiocfg.sync0)
def getMdmSyncMode(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
return radiocfg.mdmcfg2 & MDMCFG2_SYNC_MODE
def setMdmSyncMode(self, syncmode=SYNCM_15_of_16, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.mdmcfg2 &= ~MDMCFG2_SYNC_MODE
radiocfg.mdmcfg2 |= syncmode
- self.setRFRegister(MDMCFG2, (radiocfg.mdmcfg2))
+ self.setRFRegister(MDMCFG2, radiocfg.mdmcfg2)
def getMdmNumPreamble(self, radiocfg=None):
'''
get the minimum number of preamble bits to be transmitted. note this is a flag, not a count
so the return value must be interpeted - e.g. 0x30 == 0x03 << 4 == MFMCFG1_NUM_PREAMBLE_6 == 6 bytes
'''
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -921,19 +914,19 @@ def setMdmNumPreamble(self, preamble=MFMCFG1_NUM_PREAMBLE_4, radiocfg=None):
'''
set the minimum number of preamble bits to be transmitted (default: MFMCFG1_NUM_PREAMBLE_4)
'''
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.mdmcfg1 &= ~MFMCFG1_NUM_PREAMBLE
radiocfg.mdmcfg1 |= preamble
- self.setRFRegister(MDMCFG1, (radiocfg.mdmcfg1))
+ self.setRFRegister(MDMCFG1, radiocfg.mdmcfg1)
def getBSLimit(self, radiocfg=None):
'''
get the saturation point for the data rate offset compensation algorithm
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -943,13 +936,13 @@ def setBSLimit(self, bslimit, radiocfg=None):
'''
set the saturation point for the data rate offset compensation algorithm
'''
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
radiocfg.bscfg &= ~BSCFG_BS_LIMIT
radiocfg.bscfg |= bslimit
- self.setRFRegister(BSCFG, (radiocfg.bscfg))
+ self.setRFRegister(BSCFG, radiocfg.bscfg)
def calculateMdmDeviatn(self, mhz=24, radiocfg=None):
''' calculates the optimal DEVIATN setting for the current freq/baud
@@ -964,9 +957,9 @@ def calculateMdmDeviatn(self, mhz=24, radiocfg=None):
if baud <= 2400:
deviatn = 5100
elif baud <= 38400:
- deviatn = 20000 * (old_div((baud-2400),36000))
+ deviatn = 20000 * (old_div((baud - 2400), 36000))
else:
- deviatn = 129000 * (old_div((baud-38400),211600))
+ deviatn = 129000 * (old_div((baud - 38400), 211600))
self.setMdmDeviatn(deviatn)
def calculatePktChanBW(self, mhz=24, radiocfg=None):
@@ -979,13 +972,14 @@ def calculatePktChanBW(self, mhz=24, radiocfg=None):
250 kbaud BW: 600khz
'''
freq, freqhex = self.getFreq()
- center_freq = freq + 14000000
+ center_freq = freq + 14000000 # FIXME center_freq isn't used. Remove?
freq_uncertainty = 20e-6 * freq # +-20ppm
freq_uncertainty *= 2 # both xmitter and receiver
#minbw = (2 * freq_uncertainty) + self.getMdmDRate() # uncertainty for both sender/receiver
minbw = (self.getMdmDRate() + freq_uncertainty)
- possibles = [ 53e3,63e3,75e3,93e3,107e3,125e3,150e3,188e3,214e3,250e3,300e3,375e3,428e3,500e3,600e3,750e3, ]
+ possibles = [53e3, 63e3, 75e3, 93e3, 107e3, 125e3, 150e3, 188e3, 214e3, 250e3, 300e3, 375e3, 428e3, 500e3,
+ 600e3, 750e3,]
for bw in possibles:
#if (.8 * bw) > minbw: # can't occupy more the 80% of BW
if (bw) > minbw:
@@ -1002,6 +996,7 @@ def calculateFsIF(self, mhz=24, radiocfg=None):
500 kbaud IF: 328khz
'''
pass
+
def calculateFsOffset(self, mhz=24, radiocfg=None):
''' calculates the optimal FreqOffset setting for the current freq/baud
* totally experimental *
@@ -1017,7 +1012,6 @@ def getLQI(self):
lqi = self.peek(LQI)
return lqi
-
def setAESmode(self, aesmode=AES_CRYPTO_DEFAULT):
'''
set AES crypto co-processor mode.
@@ -1062,7 +1056,7 @@ def setAESmode(self, aesmode=AES_CRYPTO_DEFAULT):
(ENCCS_MODE_CBC | AES_CRYPTO_OUT_ON | AES_CRYPTO_OUT_ENCRYPT | AES_CRYPTO_IN_ON | AES_CRYPTO_IN_DECRYPT)
'''
- return self.send(APP_NIC, NIC_SET_AES_MODE, "%c"%aesmode)
+ return self.send(APP_NIC, NIC_SET_AES_MODE, "{:c}".format(aesmode))
def getAESmode(self):
'''
@@ -1070,7 +1064,7 @@ def getAESmode(self):
'''
return self.send(APP_NIC, NIC_GET_AES_MODE, "")
- def setAESiv(self, iv= '\0'*16):
+ def setAESiv(self, iv='\0'*16):
'''
set the AES IV. this will persist until the next reboot, but it should be noted that some modes
update the IV automatically with each operation, so care must be taken with the higher level
@@ -1078,7 +1072,7 @@ def setAESiv(self, iv= '\0'*16):
'''
return self.send(APP_NIC, NIC_SET_AES_IV, iv)
- def setAESkey(self, key= '\0'*16):
+ def setAESkey(self, key='\0'*16):
'''
set the AES key. this will persist until the next reboot. key must be 128 bits.
'''
@@ -1088,7 +1082,8 @@ def setAmpMode(self, ampmode=0):
'''
set the amplifier mode (RF amp external to CC1111)
'''
- return self.send(APP_NIC, NIC_SET_AMP_MODE, "%c"%ampmode)
+ return self.send(APP_NIC, NIC_SET_AMP_MODE, "{:c}".format(ampmode))
+
def getAmpMode(self):
'''
get the amplifier mode (RF amp external to CC1111)
@@ -1120,7 +1115,7 @@ def RFxmit(self, data, repeat=0, offset=0):
waitlen = len(data)
waitlen += repeat * (len(data) - offset)
wait = USB_TX_WAIT * ((old_div(waitlen, RF_MAX_TX_BLOCK)) + 1)
- self.send(APP_NIC, NIC_XMIT, "%s" % struct.pack("<HHH",len(data),repeat,offset)+data, wait=wait)
+ self.send(APP_NIC, NIC_XMIT, "{}".format(struct.pack("<HHH", len(data), repeat, offset) + data), wait=wait)
def RFxmitLong(self, data, doencoding=True):
# encode, if necessary
@@ -1145,7 +1140,7 @@ def RFxmitLong(self, data, doencoding=True):
chunks.append(data[-(datalen % RF_MAX_TX_CHUNK):])
preload = old_div(RF_MAX_TX_BLOCK, RF_MAX_TX_CHUNK)
- retval, ts = self.send(APP_NIC, NIC_XMIT_LONG, "%s" % struct.pack("<HB",datalen,preload)+data[:RF_MAX_TX_CHUNK * preload], wait=wait*preload)
+ retval, ts = self.send(APP_NIC, NIC_XMIT_LONG, "{}".format(struct.pack("<HB", datalen, preload) + data[:RF_MAX_TX_CHUNK * preload]), wait=wait*preload)
#sys.stderr.write('=' + repr(retval))
error = struct.unpack("<B", retval[0])[0]
if error:
@@ -1156,7 +1151,7 @@ def RFxmitLong(self, data, doencoding=True):
chunk = chunks[chidx]
error = RC_TEMP_ERR_BUFFER_NOT_AVAILABLE
while error == RC_TEMP_ERR_BUFFER_NOT_AVAILABLE:
- retval,ts = self.send(APP_NIC, NIC_XMIT_LONG_MORE, "%s" % struct.pack("B", len(chunk))+chunk, wait=wait)
+ retval, ts = self.send(APP_NIC, NIC_XMIT_LONG_MORE, "{}".format(struct.pack("B", len(chunk))+chunk), wait=wait)
error = struct.unpack("<B", retval[0])[0]
if error:
return error
@@ -1164,7 +1159,7 @@ def RFxmitLong(self, data, doencoding=True):
# sys.stderr.write('.')
#sys.stderr.write('+')
# tell dongle we've finished
- retval,ts = self.send(APP_NIC, NIC_XMIT_LONG_MORE, "%s" % struct.pack("B", 0), wait=wait)
+ retval, ts = self.send(APP_NIC, NIC_XMIT_LONG_MORE, "{}".format(struct.pack("B", 0)), wait=wait)
return struct.unpack("<b", retval[0])[0]
def RFtestLong(self, data="BLAHabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZblahaBcDeFgHiJkLmNoPqRsTuVwXyZBLahAbCdEfGhIjKlMnOpQrStUvWxYz"):
@@ -1175,16 +1170,15 @@ def RFtestLong(self, data="BLAHabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
chunks.append(data[:RF_MAX_TX_CHUNK])
data = data[RF_MAX_TX_CHUNK:]
- retval, ts = self.send(APP_NIC, NIC_XMIT_LONG, "%s" % struct.pack("<H",datalen)+chunks[0], wait=1000)
+ retval, ts = self.send(APP_NIC, NIC_XMIT_LONG, "{}".format(struct.pack("<H", datalen)+chunks[0]), wait=1000)
sys.stderr.write('=' + repr(retval))
-
# set blocksize to larger than 255 to receive large blocks or 0 to revert to normal
def RFrecv(self, timeout=USB_RX_WAIT, blocksize=None):
- if not blocksize == None:
+ if not blocksize is None:
if blocksize > EP5OUT_BUFFER_SIZE:
- raise Exception("Blocksize too large. Maximum %d" % EP5OUT_BUFFER_SIZE)
- self.send(APP_NIC, NIC_SET_RECV_LARGE, "%s" % struct.pack("<H",blocksize))
+ raise Exception("Blocksize too large. Maximum {:d}".format(EP5OUT_BUFFER_SIZE))
+ self.send(APP_NIC, NIC_SET_RECV_LARGE, "{}".format(struct.pack("<H", blocksize)))
data = self.recv(APP_NIC, NIC_RECV, timeout)
# decode, if necessary
if self.endec is not None:
@@ -1204,7 +1198,7 @@ def RFlisten(self):
try:
y, t = self.RFrecv()
- print("(%5.3f) Received: %s | %s" % (t, y.encode('hex'), makeFriendlyAscii(y)))
+ print("({:5.3f}) Received: {} | {}".format(t, y.encode('hex'), makeFriendlyAscii(y)))
except ChipconUsbTimeoutException:
pass
@@ -1224,8 +1218,8 @@ def RFcapture(self):
try:
y, t = self.RFrecv()
#print "(%5.3f) Received: %s" % (t, y.encode('hex'))
- print("(%5.3f) Received: %s | %s" % (t, y.encode('hex'), makeFriendlyAscii(y)))
- capture.append((y,t))
+ print("({:5.3f}) Received: {} | {}".format(t, y.encode('hex'), makeFriendlyAscii(y)))
+ capture.append((y, t))
except ChipconUsbTimeoutException:
pass
@@ -1253,14 +1247,14 @@ def discover(self, lowball=1, debug=None, length=30, IdentSyncWord=False, ISWsen
retval = {}
oldebug = self._debug
- if SyncWordMatchList != None:
+ if SyncWordMatchList is not None:
IdentSyncWord = True
if IdentSyncWord:
if lowball <= 1:
print("Entering Discover mode and searching for possible SyncWords...")
- if SyncWordMatchList != None:
- print(" seeking one of: %s" % repr([hex(x) for x in SyncWordMatchList]))
+ if SyncWordMatchList is not None:
+ print(" seeking one of: {}".format(repr([hex(x) for x in SyncWordMatchList])))
else:
print("-- lowball too high -- ignoring request to IdentSyncWord")
@@ -1272,10 +1266,10 @@ def discover(self, lowball=1, debug=None, length=30, IdentSyncWord=False, ISWsen
self._debug = debug
if Search is not None:
- print("Search:",repr(Search))
+ print("Search:", repr(Search))
if RegExpSearch is not None:
- print("RegExpSearch:",repr(RegExpSearch))
+ print("RegExpSearch:", repr(RegExpSearch))
print("(press Enter to quit)")
while not keystop():
@@ -1284,19 +1278,19 @@ def discover(self, lowball=1, debug=None, length=30, IdentSyncWord=False, ISWsen
y, t = self.RFrecv()
yhex = y.encode('hex')
- print("(%5.3f) Received: %s" % (t, yhex))
+ print("({:5.3f}) Received: {}".format(t, yhex))
if RegExpSearch is not None:
ynext = y
for loop in range(8):
if (re.search(RegExpSearch, ynext) is not None):
- print(" REG EXP SEARCH SUCCESS:",RegExpSearch)
+ print(" REG EXP SEARCH SUCCESS:", RegExpSearch)
ynext = bits.shiftString(ynext, 1)
if Search is not None:
ynext = y
for loop in range(8):
- if (Search in ynext):
- print(" SEARCH SUCCESS:",Search)
+ if Search in ynext:
+ print(" SEARCH SUCCESS:", Search)
ynext = bits.shiftString(ynext, 1)
if IdentSyncWord:
@@ -1305,7 +1299,7 @@ def discover(self, lowball=1, debug=None, length=30, IdentSyncWord=False, ISWsen
poss = bits.findSyncWord(y, ISWsensitivity, ISWminpreamble)
if len(poss):
- print(" possible Sync Dwords: %s" % repr([hex(x) for x in poss]))
+ print(" possible Sync Dwords: {}".format(repr([hex(x) for x in poss])))
for dw in poss:
lst = retval.get(dw, 0)
lst += 1
@@ -1342,7 +1336,8 @@ def lowball(self, level=1, sync=0xaaaa, length=250, pqt=0, crc=False, fec=False,
level == 3 sets the Sync Mode to SYNCM_CARRIER_16_of_16 (requires a valid carrier detection and 16 of 16 bits of SYNC WORD match for the data to be considered a packet)
'''
if hasattr(self, '_last_radiocfg') and len(self._last_radiocfg):
- print('not saving radio state. already have one saved. use lowballRestore() to restore the saved config and the next time you run lowball() the radio config will be saved.')
+ print('not saving radio state. already have one saved. use lowballRestore() to restore the saved config '
+ 'and the next time you run lowball() the radio config will be saved.')
else:
self._last_radiocfg = self.getRadioConfig()
@@ -1353,19 +1348,19 @@ def lowball(self, level=1, sync=0xaaaa, length=250, pqt=0, crc=False, fec=False,
self.setMdmSyncWord(sync)
self.setPktPQT(pqt)
- if (level == 3):
+ if level == 3:
self.setMdmSyncMode(SYNCM_CARRIER_16_of_16)
- elif (level == 2):
+ elif level == 2:
self.setMdmSyncMode(SYNCM_15_of_16)
- elif (level == 1):
+ elif level == 1:
self.setMdmSyncMode(SYNCM_CARRIER)
else:
self.setMdmSyncMode(SYNCM_NONE)
-
def lowballRestore(self):
if not hasattr(self, '_last_radiocfg'):
- raise Exception("lowballRestore requires that lowball have been executed first (it saves radio config state!)")
+ raise Exception("lowballRestore requires that lowball have been executed first (it saves radio config "
+ "state!)")
self.setRadioConfig(self._last_radiocfg)
self._last_radiocfg = ''
@@ -1374,7 +1369,7 @@ def printRadioConfig(self, mhz=24, radiocfg=None):
print(self.reprRadioConfig(mhz, radiocfg))
def reprRadioConfig(self, mhz=24, radiocfg=None):
- if radiocfg == None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
output = []
@@ -1401,10 +1396,10 @@ def reprRadioConfig(self, mhz=24, radiocfg=None):
def reprMdmModulation(self, radiocfg=None):
mod = self.getMdmModulation(radiocfg)
- return ("Modulation: %s" % MODULATIONS[mod])
+ return ("Modulation: {}".format(MODULATIONS[mod]))
def reprRadioTestSignalConfig(self, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -1422,26 +1417,24 @@ def reprRadioTestSignalConfig(self, radiocfg=None):
output.append("VCO_SEL_CAL_EN: 0x%x"%((radiocfg.test2>>1)&1))
return "\n".join(output)
-
def reprFreqConfig(self, mhz=24, radiocfg=None):
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
output = []
freq,num = self.getFreq(mhz, radiocfg)
- output.append("Frequency: %f hz (%s)" % (freq,num))
-
- output.append("Channel: %d" % radiocfg.channr)
+ output.append("Frequency: {:f} hz ({})".format(freq, num))
+ output.append("Channel: {:d}".format(radiocfg.channr))
freq_if = self.getFsIF(mhz, radiocfg)
freqoff = self.getFsOffset(mhz, radiocfg)
freqest = self.getFreqEst(radiocfg)
- output.append("Intermediate freq: %d hz" % freq_if)
- output.append("Frequency Offset: %d +/-" % freqoff)
- output.append("Est. Freq Offset: %d" % freqest)
+ output.append("Intermediate freq: {:d} hz".format(freq_if))
+ output.append("Frequency Offset: {:d} +/-".format(freqoff))
+ output.append("Est. Freq Offset: {:d}".format(freqest))
return "\n".join(output)
@@ -1449,13 +1442,13 @@ def reprAESMode(self):
output = []
aesmode= ord(self.getAESmode()[0])
- output.append("AES Mode: %s" % AESMODES[(aesmode & AES_CRYPTO_MODE)])
+ output.append("AES Mode: {}".format(AESMODES[(aesmode & AES_CRYPTO_MODE)]))
if aesmode & AES_CRYPTO_IN_ENABLE:
- output.append("Crypt RF Input: %s" % ("Decrypt", "Encrypt")[(aesmode & AES_CRYPTO_IN_TYPE)])
+ output.append("Crypt RF Input: {}".format(("Decrypt", "Encrypt")[(aesmode & AES_CRYPTO_IN_TYPE)]))
else:
output.append("Crypt RF Input: off")
if aesmode & AES_CRYPTO_OUT_ENABLE:
- output.append("Crypt RF Output: %s" % ("Decrypt", "Encrypt")[(aesmode & AES_CRYPTO_OUT_TYPE) >> 2])
+ output.append("Crypt RF Output: {}".format(("Decrypt", "Encrypt")[(aesmode & AES_CRYPTO_OUT_TYPE) >> 2]))
else:
output.append("Crypt RF Output: off")
@@ -1467,30 +1460,30 @@ def reprPacketConfig(self, radiocfg=None):
radiocfg = self.radiocfg
output = []
- output.append("Sync Word: 0x%.2X%.2X" % (radiocfg.sync1, radiocfg.sync0))
- output.append("Packet Length: %d" % radiocfg.pktlen)
- length_config = radiocfg.pktctrl0&3
- output.append("Length Config: %s" % LENGTH_CONFIGS[length_config])
+ output.append("Sync Word: {:#X}{:X}".format(radiocfg.sync1[0:1], radiocfg.sync0[0:1]))
+ output.append("Packet Length: {:d}".format(radiocfg.pktlen))
+ length_config = radiocfg.pktctrl0 & 3
+ output.append("Length Config: {}".format(LENGTH_CONFIGS[length_config]))
- output.append("Configured Address: 0x%x" % radiocfg.addr)
+ output.append("Configured Address: {:#x}".format(radiocfg.addr))
pqt = self.getPktPQT(radiocfg)
- output.append("Preamble Quality Threshold: 4 * %d" % pqt)
+ output.append("Preamble Quality Threshold: 4 * {:d}".format(pqt))
- append = (radiocfg.pktctrl1>>2) & 1
- output.append("Append Status: %s" % ("No","Yes")[append])
+ append = (radiocfg.pktctrl1 >> 2) & 1
+ output.append("Append Status: {}".format(("No", "Yes")[append]))
- adr_chk = radiocfg.pktctrl1&3
- output.append("Rcvd Packet Check: %s" % ADR_CHK_TYPES[adr_chk])
+ adr_chk = radiocfg.pktctrl1 & 3
+ output.append("Rcvd Packet Check: {}".format(ADR_CHK_TYPES[adr_chk]))
whitedata = self.getEnablePktDataWhitening(radiocfg)
- output.append("Data Whitening: %s" % ("off", "ON (but only with cc2400_en==0)")[whitedata])
+ output.append("Data Whitening: {}".format(("off", "ON (but only with cc2400_en==0)")[whitedata]))
- pkt_format = (radiocfg.pktctrl0>>5)&3
- output.append("Packet Format: %s" % PKT_FORMATS[pkt_format])
+ pkt_format = (radiocfg.pktctrl0 >> 5) & 3
+ output.append("Packet Format: {}".format(PKT_FORMATS[pkt_format]))
crc = self.getEnablePktCRC(radiocfg)
- output.append("CRC: %s" % ("disabled", "ENABLED")[crc])
+ output.append("CRC: {}".format(("disabled", "ENABLED")[crc]))
return "\n".join(output)
@@ -1500,12 +1493,12 @@ def printRadioState(self, radiocfg=None):
def reprRadioState(self, radiocfg=None):
output = []
try:
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
- output.append(" MARCSTATE: %s (%x)" % (self.getMARCSTATE(radiocfg)))
- output.append(" DONGLE RESPONDING: mode :%x, last error# %d"%(self.getDebugCodes()))
+ output.append(" MARCSTATE: %s (%x)" % self.getMARCSTATE(radiocfg))
+ output.append(" DONGLE RESPONDING: mode :%x, last error# %d" % (self.getDebugCodes()))
except:
output.append(repr(sys.exc_info()))
output.append(" DONGLE *not* RESPONDING")
@@ -1514,7 +1507,7 @@ def reprRadioState(self, radiocfg=None):
def reprModemConfig(self, mhz=24, radiocfg=None):
output = []
- if radiocfg==None:
+ if radiocfg is None:
self.getRadioConfig()
radiocfg = self.radiocfg
@@ -1524,59 +1517,57 @@ def reprModemConfig(self, mhz=24, radiocfg=None):
output.append(reprMdmModulation)
drate = self.getMdmDRate(mhz, radiocfg)
- output.append("DRate: %f hz"%drate)
+ output.append("DRate: {:f} hz".format(drate))
bw = self.getMdmChanBW(mhz, radiocfg)
- output.append("ChanBW: %f hz"%bw)
+ output.append("ChanBW: {:f} hz".format(bw))
- output.append("DEVIATION: %f hz" % self.getMdmDeviatn(mhz, radiocfg))
+ output.append("DEVIATION: {:f} hz".format(self.getMdmDeviatn(mhz, radiocfg)))
- output.append("Sync Mode: %s" % SYNCMODES[syncmode])
+ output.append("Sync Mode: {}".format(SYNCMODES[syncmode]))
- num_preamble = (radiocfg.mdmcfg1>>4)&7
- output.append("Min TX Preamble: %d bytes" % (NUM_PREAMBLE[num_preamble]) )
+ num_preamble = (radiocfg.mdmcfg1 >> 4) & 7
+ output.append("Min TX Preamble: {:d} bytes".format(NUM_PREAMBLE[num_preamble]))
chanspc = self.getMdmChanSpc(mhz, radiocfg)
- output.append("Chan Spacing: %f hz" % chanspc)
+ output.append("Chan Spacing: {:f} hz".format(chanspc))
bslimit = radiocfg.bscfg & BSCFG_BS_LIMIT
- output.append("BSLimit: %s"%BSLIMITS[bslimit])
+ output.append("BSLimit: {}".format(BSLIMITS[bslimit]))
- output.append("DC Filter: %s" % (("enabled", "disabled")[self.getEnableMdmDCFilter(radiocfg)]))
+ output.append("DC Filter: {}".format(("enabled", "disabled")[self.getEnableMdmDCFilter(radiocfg)]))
mchstr = self.getEnableMdmManchester(radiocfg)
- output.append("Manchester Encoding: %s" % (("disabled","enabled")[mchstr]))
+ output.append("Manchester Encoding: {}".format(("disabled","enabled")[mchstr]))
fec = self.getEnableMdmFEC(radiocfg)
- output.append("Fwd Err Correct: %s" % (("disabled","enabled")[fec]))
-
+ output.append("Fwd Err Correct: {}".format(("disabled","enabled")[fec]))
return "\n".join(output)
-
def checkRepr(self, matchstr, checkval, maxdiff=0):
starry = self.reprRadioConfig().split('\n')
- line,val = getValueFromReprString(starry, matchstr)
+ line, val = getValueFromReprString(starry, matchstr)
try:
f = checkval.__class__(val.split(" ")[0])
if abs(f-checkval) <= maxdiff:
- print(" passed: reprRadioConfig test: %s %s" % (repr(val), checkval))
+ print(" passed: reprRadioConfig test: {} {}".format(repr(val), checkval))
else:
- print(" *FAILED* reprRadioConfig test: %s %s %s" % (repr(line), repr(val), checkval))
+ print(" *FAILED* reprRadioConfig test: {} {} {}".format(repr(line), repr(val), checkval))
except ValueError as e:
- print(" ERROR checking repr: %s" % e)
+ print(" ERROR checking repr: {}".format(e))
def testTX(self, data="XYZABCDEFGHIJKL"):
- while (sys.stdin not in select.select([sys.stdin],[],[],0)[0]):
+ while sys.stdin not in select.select([sys.stdin], [], [], 0)[0]:
time.sleep(.4)
- print("transmitting %s" % repr(data))
+ print("transmitting {}".format(repr(data)))
self.RFxmit(data)
sys.stdin.read(1)
######## APPLICATION METHODS - more for demonstration than anything ########
def setup24330MHz(self):
- #self.setRadioConfig('0c4eff000800000b0065600068b583231145073f14166c4340915610a90a0011593f3f8831090000000000000000c02e0006000000000000000000000000'.decode('hex'))
+ # self.setRadioConfig('0c4eff000800000b0065600068b583231145073f14166c4340915610a90a0011593f3f8831090000000000000000c02e0006000000000000000000000000'.decode('hex'))
self.getRadioConfig()
rc = self.radiocfg
rc.iocfg0 = 0x06
@@ -1789,17 +1780,18 @@ def setup_rfstudio_902PktTx(self):
rc.pa_table0 = 0xc0
self.setRadioConfig()
+
class FHSSNIC(NICxx11):
'''
advanced NIC implementation for CCxx11 chips, including Frequency Hopping
'''
def FHSSxmit(self, data):
- return self.send(APP_NIC, FHSS_XMIT, "%c%s" % (len(data), data))
+ return self.send(APP_NIC, FHSS_XMIT, "{:c}{}".format(len(data), data))
def changeChannel(self, chan):
- return self.send(APP_NIC, FHSS_CHANGE_CHANNEL, "%c" % (chan))
+ return self.send(APP_NIC, FHSS_CHANGE_CHANNEL, "{:c}".format(chan))
- def getChannels(self, channels=[]):
+ def getChannels(self, channels=[]): # FIXME channels isn't used, remove?
return self.send(APP_NIC, FHSS_GET_CHANNELS, '')
def setChannels(self, channels=[]):
@@ -1809,7 +1801,7 @@ def setChannels(self, channels=[]):
return self.send(APP_NIC, FHSS_SET_CHANNELS, length + chans)
def nextChannel(self):
- return self.send(APP_NIC, FHSS_NEXT_CHANNEL, '' )
+ return self.send(APP_NIC, FHSS_NEXT_CHANNEL, '')
def startHopping(self):
return self.send(APP_NIC, FHSS_START_HOPPING, '')
@@ -1826,7 +1818,7 @@ def setMACperiod(self, dwell_ms, mhz=24):
T, tickidx, tipidx, PR = val
print("Setting MAC period to %f secs (%x %x %x)" % (val))
t2ctl = (ord(self.peek(X_T2CTL)) & 0xfc) | (tipidx)
- clkcon = (ord(self.peek(X_CLKCON)) & 0xc7) | (tickidx<<3)
+ clkcon = (ord(self.peek(X_CLKCON)) & 0xc7) | (tickidx << 3)
self.poke(X_T2PR, correctbytes(PR))
self.poke(X_T2CTL, correctbytes(t2ctl))
@@ -1838,7 +1830,7 @@ def _setMACmode(self, _mode):
'''
macdata = self.getMACdata()
print(repr(macdata))
- macdata = (_mode,) + macdata[1:]
+ macdata = (_mode,) + macdata[1:]
print(repr(macdata))
self.setMACdata(macdata)
@@ -1884,24 +1876,25 @@ def reprMACdata(self):
u8 g_txMsgIdx;
"""
- def getMACthreshold(self):
- return self.send(APP_NIC, FHSS_SET_MAC_THRESHOLD, struct.pack("<I",value))
+ def getMACthreshold(self, value):
+ return self.send(APP_NIC, FHSS_SET_MAC_THRESHOLD, struct.pack("<I", value))
def setMACthreshold(self, value):
- return self.send(APP_NIC, FHSS_SET_MAC_THRESHOLD, struct.pack("<I",value))
+ return self.send(APP_NIC, FHSS_SET_MAC_THRESHOLD, struct.pack("<I", value))
def setFHSSstate(self, state):
- return self.send(APP_NIC, FHSS_SET_STATE, struct.pack("<I",state))
+ return self.send(APP_NIC, FHSS_SET_STATE, struct.pack("<I", state))
def getFHSSstate(self):
state = self.send(APP_NIC, FHSS_GET_STATE, '')
- #print repr(state)
+ # print repr(state)
state = ord(state[0])
return FHSS_STATES[state], state
def mac_SyncCell(self, CellID=0x0000):
- return self.send(APP_NIC, FHSS_START_SYNC, struct.pack("<H",CellID))
-
+ return self.send(APP_NIC, FHSS_START_SYNC, struct.pack("<H", CellID))
+
+
def unittest(dongle):
from . import chipcon_usb
chipcon_usb.unittest(dongle)
@@ -1921,25 +1914,25 @@ def unittest(dongle):
dongle.setFreq(testfreq)
freq,freqstr = dongle.getFreq()
if abs(testfreq - freq) < 1024:
- print(" passed: %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" passed: {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
else:
- print(" *FAILED* %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" *FAILED* {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
testfreq = 868000000
dongle.setFreq(testfreq)
freq,freqstr = dongle.getFreq()
if abs(testfreq - freq) < 1024:
- print(" passed: %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" passed: {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
else:
- print(" *FAILED* %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" *FAILED* {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
testfreq = 433000000
dongle.setFreq(testfreq)
freq,freqstr = dongle.getFreq()
if abs(testfreq - freq) < 1024:
- print(" passed: %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" passed: {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
else:
- print(" *FAILED* %d : %f (diff: %f)" % (testfreq, freq, testfreq-freq))
+ print(" *FAILED* {:d} : {:f} (diff: {:f})".format(testfreq, freq, testfreq-freq))
dongle.checkRepr("Frequency:", float(testfreq), 1024)
dongle.setFreq(freq0)
@@ -1950,29 +1943,29 @@ def unittest(dongle):
dongle.setChannel(x)
channr = dongle.getChannel()
if channr != x:
- print(" *FAILED* get/setChannel(): %d : %d" % (x, channr))
+ print(" *FAILED* get/setChannel(): {:d} : {:d}".format(x, channr))
else:
- print(" passed: get/setChannel(): %d : %d" % (x, channr))
+ print(" passed: get/setChannel(): {:d} : {:d}".format(x, channr))
dongle.checkRepr("Channel:", channr)
dongle.setChannel(channr0)
# IF and FREQ_OFF
freq_if = dongle.getFsIF()
freqoff = dongle.getFsOffset()
- for fif, foff in ((164062,1),(140625,2),(187500,3)):
+ for fif, foff in ((164062, 1), (140625, 2), (187500, 3)):
dongle.setFsIF(fif)
dongle.setFsOffset(foff)
nfif = dongle.getFsIF()
nfoff = dongle.getFsOffset()
if abs(nfif - fif) > 5:
- print(" *FAILED* get/setFsIFandOffset(): %d : %f (diff: %f)" % (fif,nfif,nfif-fif))
+ print(" *FAILED* get/setFsIFandOffset(): {:d} : {:f} (diff: {:f})".format(fif, nfif, nfif - fif))
else:
- print(" passed: get/setFsIFandOffset(): %d : %f (diff: %f)" % (fif,nfif,nfif-fif))
+ print(" passed: get/setFsIFandOffset(): {:d} : {:f} (diff: {:f})".format(fif, nfif, nfif - fif))
if foff != nfoff:
- print(" *FAILED* get/setFsIFandOffset(): %d : %d (diff: %d)" % (foff,nfoff,nfoff-foff))
+ print(" *FAILED* get/setFsIFandOffset(): {:d} : {:d} (diff: {:d})".format(foff,nfoff,nfoff-foff))
else:
- print(" passed: get/setFsIFandOffset(): %d : %d (diff: %d)" % (foff,nfoff,nfoff-foff))
+ print(" passed: get/setFsIFandOffset(): {:d} : {:d} (diff: {:d})".format(foff,nfoff,nfoff-foff))
dongle.checkRepr("Intermediate freq:", fif, 11720)
dongle.checkRepr("Frequency Offset:", foff)
@@ -1986,73 +1979,73 @@ def unittest(dongle):
dongle.setMdmModulation(mod, dongle.radiocfg)
modcheck = dongle.getMdmModulation(dongle.radiocfg)
if mod != modcheck:
- print(" *FAILED* get/setMdmModulation(): %d : %d " % (mod, modcheck))
+ print(" *FAILED* get/setMdmModulation(): {:d} : {:d} ".format(mod, modcheck))
else:
- print(" passed: get/setMdmModulation(): %d : %d " % (mod, modcheck))
+ print(" passed: get/setMdmModulation(): {:d} : {:d} ".format(mod, modcheck))
chanspc = dongle.getMdmChanSpc(dongle.mhz, dongle.radiocfg)
dongle.setMdmChanSpc(chanspc, dongle.mhz, dongle.radiocfg)
chanspc_check = dongle.getMdmChanSpc(dongle.mhz, dongle.radiocfg)
if chanspc != chanspc_check:
- print(" *FAILED* get/setMdmChanSpc(): %d : %d" % (chanspc, chanspc_check))
+ print(" *FAILED* get/setMdmChanSpc(): {:d} : {:d}".format(chanspc, chanspc_check))
else:
- print(" passed: get/setMdmChanSpc(): %d : %d" % (chanspc, chanspc_check))
+ print(" passed: get/setMdmChanSpc(): {:d} : {:d}".format(chanspc, chanspc_check))
chanbw = dongle.getMdmChanBW(dongle.mhz, dongle.radiocfg)
dongle.setMdmChanBW(chanbw, dongle.mhz, dongle.radiocfg)
chanbw_check = dongle.getMdmChanBW(dongle.mhz, dongle.radiocfg)
if chanbw != chanbw_check:
- print(" *FAILED* get/setMdmChanBW(): %d : %d" % (chanbw, chanbw_check))
+ print(" *FAILED* get/setMdmChanBW(): {:d} : {:d}".format(chanbw, chanbw_check))
else:
- print(" passed: get/setMdmChanBW(): %d : %d" % (chanbw, chanbw_check))
+ print(" passed: get/setMdmChanBW(): {:d} : {:d}".format(chanbw, chanbw_check))
drate = dongle.getMdmDRate(dongle.mhz, dongle.radiocfg)
dongle.setMdmDRate(drate, dongle.mhz, dongle.radiocfg)
drate_check = dongle.getMdmDRate(dongle.mhz, dongle.radiocfg)
if drate != drate_check:
- print(" *FAILED* get/setMdmDRate(): %d : %d" % (drate, drate_check))
+ print(" *FAILED* get/setMdmDRate(): {:d} : {:d}".format(drate, drate_check))
else:
- print(" passed: get/setMdmDRate(): %d : %d" % (drate, drate_check))
+ print(" passed: get/setMdmDRate(): {:d} : {:d}".format(drate, drate_check))
deviatn = dongle.getMdmDeviatn(dongle.mhz, dongle.radiocfg)
dongle.setMdmDeviatn(deviatn, dongle.mhz, dongle.radiocfg)
deviatn_check = dongle.getMdmDeviatn(dongle.mhz, dongle.radiocfg)
if deviatn != deviatn_check:
- print(" *FAILED* get/setMdmdeviatn(): %d : %d" % (deviatn, deviatn_check))
+ print(" *FAILED* get/setMdmdeviatn(): {:d} : {:d}".format(deviatn, deviatn_check))
else:
- print(" passed: get/setMdmdeviatn(): %d : %d" % (deviatn, deviatn_check))
+ print(" passed: get/setMdmdeviatn(): {:d} : {:d}".format(deviatn, deviatn_check))
syncm = dongle.getMdmSyncMode(dongle.radiocfg)
dongle.setMdmSyncMode(syncm, dongle.radiocfg)
syncm_check = dongle.getMdmSyncMode(dongle.radiocfg)
if syncm != syncm_check:
- print(" *FAILED* get/setMdmSyncMode(): %d : %d" % (syncm, syncm_check))
+ print(" *FAILED* get/setMdmSyncMode(): {:d} : {:d}".format(syncm, syncm_check))
else:
- print(" passed: get/setMdmSyncMode(): %d : %d" % (syncm, syncm_check))
+ print(" passed: get/setMdmSyncMode(): {:d} : {:d}".format(syncm, syncm_check))
mchstr = dongle.getEnableMdmManchester(dongle.radiocfg)
dongle.setEnableMdmManchester(mchstr, dongle.radiocfg)
mchstr_check = dongle.getEnableMdmManchester(dongle.radiocfg)
if mchstr != mchstr_check:
- print(" *FAILED* get/setMdmManchester(): %d : %d" % (mchstr, mchstr_check))
+ print(" *FAILED* get/setMdmManchester(): {:d} : {:d}".format(mchstr, mchstr_check))
else:
- print(" passed: get/setMdmManchester(): %d : %d" % (mchstr, mchstr_check))
+ print(" passed: get/setMdmManchester(): {:d} : {:d}".format(mchstr, mchstr_check))
fec = dongle.getEnableMdmFEC(dongle.radiocfg)
dongle.setEnableMdmFEC(fec, dongle.radiocfg)
fec_check = dongle.getEnableMdmFEC(dongle.radiocfg)
if fec != fec_check:
- print(" *FAILED* get/setEnableMdmFEC(): %d : %d" % (fec, fec_check))
+ print(" *FAILED* get/setEnableMdmFEC(): {:d} : {:d}".format(fec, fec_check))
else:
- print(" passed: get/setEnableMdmFEC(): %d : %d" % (fec, fec_check))
+ print(" passed: get/setEnableMdmFEC(): {:d} : {:d}".format(fec, fec_check))
dcf = dongle.getEnableMdmDCFilter(dongle.radiocfg)
dongle.setEnableMdmDCFilter(dcf, dongle.radiocfg)
dcf_check = dongle.getEnableMdmDCFilter(dongle.radiocfg)
if dcf != dcf_check:
- print(" *FAILED* get/setEnableMdmDCFilter(): %d : %d" % (dcf, dcf_check))
+ print(" *FAILED* get/setEnableMdmDCFilter(): {:d} : {:d}".format(dcf, dcf_check))
else:
- print(" passed: get/setEnableMdmDCFilter(): %d : %d" % (dcf, dcf_check))
+ print(" passed: get/setEnableMdmDCFilter(): {:d} : {:d}".format(dcf, dcf_check))
# Pkt tests
@@ -2060,9 +2053,9 @@ def unittest(dongle):
dongle.setPktPQT(pqt, dongle.radiocfg)
pqt_check = dongle.getPktPQT(dongle.radiocfg)
if pqt != pqt_check:
- print(" *FAILED* get/setEnableMdmFEC(): %d : %d" % (pqt, pqt_check))
+ print(" *FAILED* get/setEnableMdmFEC(): {:d} : {:d}".format(pqt, pqt_check))
else:
- print(" passed: get/setEnableMdmFEC(): %d : %d" % (pqt, pqt_check))
+ print(" passed: get/setEnableMdmFEC(): {:d} : {:d}".format(pqt, pqt_check))
# FHSS tests
print("\nTesting FHSS State set/get")
@@ -2075,6 +2068,7 @@ def unittest(dongle):
print(repr(dongle.setFHSSstate(fhssstate[1] )))
print(repr(dongle.getFHSSstate()))
+
def getValueFromReprString(stringarray, line_text):
for string in stringarray:
if line_text in string:
@@ -2082,6 +2076,7 @@ def getValueFromReprString(stringarray, line_text):
val = string[idx+1:].strip()
return (string,val)
+
def mkFreq(freq=902000000, mhz=24):
freqmult = old_div((0x10000 / 1000000.0), mhz)
num = int(freq * freqmult)
@@ -2091,7 +2086,6 @@ def mkFreq(freq=902000000, mhz=24):
return (num, freq2,freq1,freq0)
-
if __name__ == "__main__":
idx = 0
if len(sys.argv) > 1:
diff --git a/rflib/chipcon_usb.py b/rflib/chipcon_usb.py
index aca9696..eab9995 100644
--- a/rflib/chipcon_usb.py
+++ b/rflib/chipcon_usb.py
@@ -102,7 +102,7 @@ def cleanup(self):
self.reset_event.clear()
self.trash = []
- def setRFparameters(self):
+ def setRFparameters(self, *args, **kwargs): # Fixed, rfconfigure would call this function w/o req'd args
pass
def run_ctrl(self):
diff --git a/rflib/chipcondefs.py b/rflib/chipcondefs.py
index 54a2ef9..e71c5ee 100644
--- a/rflib/chipcondefs.py
+++ b/rflib/chipcondefs.py
@@ -1,6 +1,7 @@
import vstruct
from vstruct.primitives import *
+
class RadioConfig(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -1513,6 +1514,3 @@ def __init__(self):
PKTCTRL0S[val] = key
elif key.startswith("PKTCTRL1_"):
PKTCTRL1S[val] = key
-
-
-
diff --git a/rflib/const.py b/rflib/const.py
index 063df12..138e65a 100644
--- a/rflib/const.py
+++ b/rflib/const.py
@@ -257,7 +257,7 @@
ENCCS_MODE_OFB: "OFB - Output Feedback",
}
-NUM_PREAMBLE = [2, 3, 4, 6, 8, 12, 16, 24 ]
+NUM_PREAMBLE = [2, 3, 4, 6, 8, 12, 16, 24]
ADR_CHK_TYPES = [
"No address check",
@@ -334,4 +334,3 @@
0x11: 24,
0x01: 26,
}
-
diff --git a/rflib/intelhex.py b/rflib/intelhex.py
index 6abc498..e50a7f8 100644
--- a/rflib/intelhex.py
+++ b/rflib/intelhex.py
@@ -38,11 +38,7 @@
'''
from __future__ import division, print_function
-from builtins import bytes
-from builtins import str
-from builtins import range
from past.builtins import basestring
-from builtins import object
from past.utils import old_div
__docformat__ = "javadoc"
@@ -72,7 +68,7 @@ def __init__(self, source=None):
(file name of HEX file, file object, addr dict or
other IntelHex object)
'''
- #public members
+ # public members
self.padding = 0x0FF
# Start Address
self.start_addr = None
@@ -193,7 +189,7 @@ def loadhex(self, fobj):
@param fobj file name or file-like object
"""
if getattr(fobj, "read", None) is None:
- fobj = file(fobj, "r")
+ fobj = open(fobj, "r")
fclose = fobj.close
else:
fclose = None
@@ -223,7 +219,7 @@ def loadbin(self, fobj, offset=0):
"""
fread = getattr(fobj, "read", None)
if fread is None:
- f = file(fobj, "rb")
+ f = open(fobj, "rb")
fread = f.read
fclose = f.close
else:
@@ -237,20 +233,20 @@ def loadbin(self, fobj, offset=0):
if fclose:
fclose()
- def loadfile(self, fobj, format):
+ def loadfile(self, fobj, text_format):
"""Load data file into internal buffer. Preferred wrapper over
loadbin or loadhex.
@param fobj file name or file-like object
- @param format file format ("hex" or "bin")
+ @param text_format file format ("hex" or "bin")
"""
- if format == "hex":
+ if text_format == "hex":
self.loadhex(fobj)
- elif format == "bin":
+ elif text_format == "bin":
self.loadbin(fobj)
else:
raise ValueError('format should be either "hex" or "bin";'
- ' got %r instead' % format)
+ ' got {!r} instead'.format(text_format))
# alias (to be consistent with method tofile)
fromfile = loadfile
@@ -307,7 +303,7 @@ def tobinarray(self, start=None, end=None, pad=None):
start, end = self._get_start_end(start, end)
- for i in range(start, end+1):
+ for i in range(start, end + 1):
bin.append(self._buf.get(i, pad))
return bin
@@ -332,7 +328,7 @@ def tobinfile(self, fobj, start=None, end=None, pad=0xFF):
(if None used self.padding).
'''
if getattr(fobj, "write", None) is None:
- fobj = file(fobj, "wb")
+ fobj = open(fobj, "wb")
close_fd = True
else:
close_fd = False
@@ -366,7 +362,7 @@ def minaddr(self):
@return minimal address or None if no data
'''
aa = list(self._buf.keys())
- if aa == []:
+ if not aa:
return None
else:
return min(aa)
@@ -376,7 +372,7 @@ def maxaddr(self):
@return maximal address or None if no data
'''
aa = list(self._buf.keys())
- if aa == []:
+ if not aa:
return None
else:
return max(aa)
@@ -398,7 +394,7 @@ def __getitem__(self, addr):
if addresses:
addresses.sort()
start = addr.start or addresses[0]
- stop = addr.stop or (addresses[-1]+1)
+ stop = addr.stop or (addresses[-1] + 1)
step = addr.step or 1
for i in range(start, stop, step):
x = self._buf.get(i)
@@ -406,7 +402,7 @@ def __getitem__(self, addr):
ih[i] = x
return ih
else:
- raise TypeError('Address has unsupported type: %s' % t)
+ raise TypeError('Address has unsupported type: {}'.format(t))
def __setitem__(self, addr, byte):
"""Set byte at address."""
@@ -426,7 +422,7 @@ def __setitem__(self, addr, byte):
ra = list(range(start, stop, step))
if len(ra) != len(byte):
raise ValueError('Length of bytes sequence does not match '
- 'address range')
+ 'address range')
elif (start, stop) == (None, None):
raise TypeError('Unsupported address range')
elif start is None:
@@ -442,7 +438,7 @@ def __setitem__(self, addr, byte):
self._buf[i] = byte[j]
j += 1
else:
- raise TypeError('Address has unsupported type: %s' % t)
+ raise TypeError('Address has unsupported type: {}'.format(t))
def __delitem__(self, addr):
"""Delete byte at address."""
@@ -456,14 +452,14 @@ def __delitem__(self, addr):
if addresses:
addresses.sort()
start = addr.start or addresses[0]
- stop = addr.stop or (addresses[-1]+1)
+ stop = addr.stop or (addresses[-1] + 1)
step = addr.step or 1
for i in range(start, stop, step):
x = self._buf.get(i)
if x is not None:
del self._buf[i]
else:
- raise TypeError('Address has unsupported type: %s' % t)
+ raise TypeError('Address has unsupported type: {}'.format(t))
def __len__(self):
"""Return count of bytes with real values."""
@@ -483,7 +479,7 @@ def write_hex_file(self, f, write_start_addr=True):
fobj = f
fclose = None
else:
- fobj = file(f, 'w')
+ fobj = open(f, 'w')
fwrite = fobj.write
fclose = fobj.close
@@ -491,14 +487,14 @@ def write_hex_file(self, f, write_start_addr=True):
# timeit shows that using hexstr.translate(table)
# is faster than hexstr.upper():
# 0.452ms vs. 0.652ms (translate vs. upper)
- table = ''.join(correctbytes(i).upper() for i in range(256))
+ table = ''.join(correctbytes(i).upper() for i in range(256))
# start address record if any
if self.start_addr and write_start_addr:
keys = list(self.start_addr.keys())
keys.sort()
- bin = array('B', '\0'*9)
- if keys == ['CS','IP']:
+ bin = array('B', '\0' * 9)
+ if keys == ['CS', 'IP']:
# Start Segment Address Record
bin[0] = 4 # reclen
bin[1] = 0 # offset msb
@@ -549,7 +545,7 @@ def write_hex_file(self, f, write_start_addr=True):
while cur_addr <= maxaddr:
if need_offset_record:
- bin = array('B', '\0'*7)
+ bin = array('B', '\0' * 7)
bin[0] = 2 # reclen
bin[1] = 0 # offset msb
bin[2] = 0 # offset lsb
@@ -565,7 +561,7 @@ def write_hex_file(self, f, write_start_addr=True):
# produce one record
low_addr = cur_addr & 0x0FFFF
# chain_len off by 1
- chain_len = min(15, 65535-low_addr, maxaddr-cur_addr)
+ chain_len = min(15, 65535 - low_addr, maxaddr - cur_addr)
# search continuous chain
stop_addr = cur_addr + chain_len
@@ -581,18 +577,18 @@ def write_hex_file(self, f, write_start_addr=True):
else:
chain_len = 1 # real chain_len
- bin = array('B', '\0'*(5+chain_len))
+ bin = array('B', '\0' * ( 5 + chain_len))
bytes = divmod(low_addr, 256)
bin[1] = bytes[0] # msb of low_addr
bin[2] = bytes[1] # lsb of low_addr
bin[3] = 0 # rectype
try: # if there is small holes we'll catch them
for i in range(chain_len):
- bin[4+i] = self._buf[cur_addr+i]
+ bin[4+i] = self._buf[cur_addr + i]
except KeyError:
# we catch a hole so we should shrink the chain
chain_len = i
- bin = bin[:5+i]
+ bin = bin[:5 + i]
bin[0] = chain_len
bin[4+chain_len] = (-sum(bin)) & 0x0FF # chksum
fwrite(':' + hexlify(bin.tostring()).translate(table) + '\n')
@@ -604,7 +600,7 @@ def write_hex_file(self, f, write_start_addr=True):
else:
cur_addr = maxaddr + 1
break
- high_addr = int(old_div(cur_addr,65536))
+ high_addr = int(old_div(cur_addr, 65536))
if high_addr > high_ofs:
break
@@ -613,28 +609,28 @@ def write_hex_file(self, f, write_start_addr=True):
if fclose:
fclose()
- def tofile(self, fobj, format):
+ def tofile(self, fobj, text_format):
"""Write data to hex or bin file. Preferred method over tobin or tohex.
@param fobj file name or file-like object
- @param format file format ("hex" or "bin")
+ @param text_format file format ("hex" or "bin")
"""
- if format == 'hex':
+ if text_format == 'hex':
self.write_hex_file(fobj)
- elif format == 'bin':
+ elif text_format == 'bin':
self.tobinfile(fobj)
else:
raise ValueError('format should be either "hex" or "bin";'
- ' got %r instead' % format)
+ ' got {!r} instead'.format(text_format))
def gets(self, addr, length):
"""Get string of bytes from given address. If any entries are blank
from addr through addr+length, a NotEnoughDataError exception will
be raised. Padding is not used."""
- a = array('B', '\0'*length)
+ a = array('B', '\0' * length)
try:
for i in range(length):
- a[i] = self._buf[addr+i]
+ a[i] = self._buf[addr + i]
except KeyError:
raise NotEnoughDataError(address=addr, length=length)
return a.tostring()
@@ -658,8 +654,8 @@ def getsz(self, addr):
break
i += 1
except KeyError:
- raise NotEnoughDataError(msg=('Bad access at 0x%X: '
- 'not enough data to read zero-terminated string') % addr)
+ raise NotEnoughDataError(msg=('Bad access at {:#X}: '
+ 'not enough data to read zero-terminated string').format(addr))
return self.gets(addr, i)
def putsz(self, addr, s):
@@ -684,19 +680,19 @@ def dump(self, tofile=None):
ip = self.start_addr.get('IP')
eip = self.start_addr.get('EIP')
if eip is not None and cs is None and ip is None:
- tofile.write('EIP = 0x%08X\n' % eip)
+ tofile.write('EIP = {:#08X}\n'.format(eip))
elif eip is None and cs is not None and ip is not None:
- tofile.write('CS = 0x%04X, IP = 0x%04X\n' % (cs, ip))
+ tofile.write('CS = {:#04X}, IP = {:#04X}\n'.format(cs, ip))
else:
- tofile.write('start_addr = %r\n' % start_addr)
+ tofile.write('start_addr = {!r}\n'.format(self.start_addr))
# actual data
addresses = list(self._buf.keys())
if addresses:
addresses.sort()
minaddr = addresses[0]
maxaddr = addresses[-1]
- startaddr = int(old_div(minaddr,16))*16
- endaddr = int(old_div(maxaddr,16)+1)*16
+ startaddr = int(old_div(minaddr, 16)) * 16
+ endaddr = int(old_div(maxaddr, 16) + 1) * 16
maxdigits = max(len(str(endaddr)), 4)
templa = '%%0%dX' % maxdigits
range16 = list(range(16))
@@ -707,7 +703,7 @@ def dump(self, tofile=None):
for j in range16:
x = self._buf.get(i+j)
if x is not None:
- tofile.write(' %02X' % x)
+ tofile.write(' {:02X}'.format(x))
if 32 <= x < 128:
s.append(correctbytes(x))
else:
@@ -739,7 +735,7 @@ def merge(this, other, overlap='error'):
raise ValueError("Can't merge itself")
if overlap not in ('error', 'ignore', 'replace'):
raise ValueError("overlap argument should be either "
- "'error', 'ignore' or 'replace'")
+ "'error', 'ignore' or 'replace'")
# merge data
this_buf = this._buf
other_buf = other._buf
@@ -747,7 +743,7 @@ def merge(this, other, overlap='error'):
if i in this_buf:
if overlap == 'error':
raise AddressOverlapError(
- 'Data overlapped at address 0x%X' % i)
+ 'Data overlapped at address {:#X}'.format(i))
elif overlap == 'ignore':
continue
this_buf[i] = other_buf[i]
@@ -807,10 +803,10 @@ def __getitem__(self, addr16):
byte1 = self._buf.get(addr1, None)
byte2 = self._buf.get(addr2, None)
- if byte1 != None and byte2 != None:
+ if byte1 is not None and byte2 is not None:
return byte1 | (byte2 << 8) # low endian
- if byte1 == None and byte2 == None:
+ if byte1 is None and byte2 is None:
return self.padding
raise BadAccess16bit(address=addr16)
@@ -829,7 +825,7 @@ def minaddr(self):
@return minimal address used in this object
'''
aa = list(self._buf.keys())
- if aa == []:
+ if not aa:
return 0
else:
return old_div(min(aa),2)
@@ -840,10 +836,10 @@ def maxaddr(self):
@return maximal address used in this object
'''
aa = list(self._buf.keys())
- if aa == []:
+ if not aa:
return 0
else:
- return old_div(max(aa),2)
+ return old_div(max(aa), 2)
#/class IntelHex16bit
@@ -862,17 +858,17 @@ def hex2bin(fin, fout, start=None, end=None, size=None, pad=0xFF):
try:
h = IntelHex(fin)
except HexReaderError as e:
- print("ERROR: bad HEX file: %s" % str(e))
+ print("ERROR: bad HEX file: {}".format(str(e)))
return 1
# start, end, size
- if size != None and size != 0:
- if end == None:
- if start == None:
+ if size is not None and size != 0:
+ if end is None:
+ if start is None:
start = h.minaddr()
end = start + size - 1
else:
- if (end+1) >= size:
+ if (end + 1) >= size:
start = end + 1 - size
else:
start = 0
@@ -880,7 +876,7 @@ def hex2bin(fin, fout, start=None, end=None, size=None, pad=0xFF):
try:
h.tobinfile(fout, start, end, pad)
except IOError as e:
- print("ERROR: Could not write to file: %s: %s" % (fout, str(e)))
+ print("ERROR: Could not write to file: {}: {!s}".format(fout, e))
return 1
return 0
@@ -899,13 +895,13 @@ def bin2hex(fin, fout, offset=0):
try:
h.loadbin(fin, offset)
except IOError as e:
- print('ERROR: unable to load bin file:', str(e))
+ print('ERROR: unable to load bin file: ', str(e))
return 1
try:
- h.tofile(fout, format='hex')
+ h.tofile(fout, text_format='hex')
except IOError as e:
- print("ERROR: Could not write to file: %s: %s" % (fout, str(e)))
+ print("ERROR: Could not write to file: {}: {!s}".format(fout, e))
return 1
return 0
@@ -915,34 +911,34 @@ def bin2hex(fin, fout, offset=0):
class Record(object):
"""Helper methods to build valid ihex records."""
- def _from_bytes(bytes):
+ def _from_bytes(f_bytes):
"""Takes a list of bytes, computes the checksum, and outputs the entire
record as a string. bytes should be the hex record without the colon
or final checksum.
- @param bytes list of byte values so far to pack into record.
+ @param f_bytes list of byte values so far to pack into record.
@return String representation of one HEX record
"""
- assert len(bytes) >= 4
+ assert len(f_bytes) >= 4
# calculate checksum
- s = (-sum(bytes)) & 0x0FF
- bin = array('B', bytes + [s])
+ s = (-sum(f_bytes)) & 0x0FF
+ bin = array('B', f_bytes + [s])
return ':' + hexlify(bin.tostring()).upper()
_from_bytes = staticmethod(_from_bytes)
- def data(offset, bytes):
+ def data(offset, bytes_list):
"""Return Data record. This constructs the full record, including
the length information, the record type (0x00), the
checksum, and the offset.
@param offset load offset of first byte.
- @param bytes list of byte values to pack into record.
+ @param bytes_list list of byte values to pack into record.
@return String representation of one HEX record
"""
assert 0 <= offset < 65536
- assert 0 < len(bytes) < 256
- b = [len(bytes), (offset>>8)&0x0FF, offset&0x0FF, 0x00] + bytes
+ assert 0 < len(bytes_list) < 256
+ b = [len(bytes_list), (offset >> 8) & 0x0FF, offset & 0x0FF, 0x00] + bytes_list
return Record._from_bytes(b)
data = staticmethod(data)
@@ -959,7 +955,7 @@ def extended_segment_address(usba):
@return String representation of Intel Hex USBA record.
"""
- b = [2, 0, 0, 0x02, (usba>>8)&0x0FF, usba&0x0FF]
+ b = [2, 0, 0, 0x02, (usba >> 8) & 0x0FF, usba & 0x0FF]
return Record._from_bytes(b)
extended_segment_address = staticmethod(extended_segment_address)
@@ -970,8 +966,8 @@ def start_segment_address(cs, ip):
@return String representation of Intel Hex SSA record.
"""
- b = [4, 0, 0, 0x03, (cs>>8)&0x0FF, cs&0x0FF,
- (ip>>8)&0x0FF, ip&0x0FF]
+ b = [4, 0, 0, 0x03, (cs >> 8) & 0x0FF, cs & 0x0FF,
+ (ip >> 8) & 0x0FF, ip & 0x0FF]
return Record._from_bytes(b)
start_segment_address = staticmethod(start_segment_address)
@@ -981,7 +977,7 @@ def extended_linear_address(ulba):
@return String representation of Intel Hex ELA record.
"""
- b = [2, 0, 0, 0x04, (ulba>>8)&0x0FF, ulba&0x0FF]
+ b = [2, 0, 0, 0x04, (ulba >> 8) & 0x0FF, ulba & 0x0FF]
return Record._from_bytes(b)
extended_linear_address = staticmethod(extended_linear_address)
@@ -991,8 +987,8 @@ def start_linear_address(eip):
@return String representation of Intel Hex SLA record.
"""
- b = [4, 0, 0, 0x05, (eip>>24)&0x0FF, (eip>>16)&0x0FF,
- (eip>>8)&0x0FF, eip&0x0FF]
+ b = [4, 0, 0, 0x05, (eip >> 24) & 0x0FF, (eip >> 16) & 0x0FF,
+ (eip >> 8) & 0x0FF, eip & 0x0FF]
return Record._from_bytes(b)
start_linear_address = staticmethod(start_linear_address)
@@ -1001,6 +997,7 @@ class _BadFileNotation(Exception):
"""Special error class to use with _get_file_and_addr_range."""
pass
+
def _get_file_and_addr_range(s, _support_drive_letter=None):
"""Special method for hexmerge.py script to split file notation
into 3 parts: (filename, start, end)
@@ -1024,13 +1021,14 @@ def _get_file_and_addr_range(s, _support_drive_letter=None):
raise _BadFileNotation
else:
fname = parts[0]
- def ascii_hex_to_int(ascii):
- if ascii is not None:
+
+ def ascii_hex_to_int(ascii_text):
+ if ascii_text is not None:
try:
- return int(ascii, 16)
+ return int(ascii_text, 16)
except ValueError:
raise _BadFileNotation
- return ascii
+ return ascii_text
fstart = ascii_hex_to_int(parts[1] or None)
fend = ascii_hex_to_int(parts[2] or None)
return drive+fname, fstart, fend
@@ -1078,16 +1076,19 @@ def __str__(self):
try:
return self._fmt % self.__dict__
except (NameError, ValueError, KeyError) as e:
- return 'Unprintable exception %s: %s' \
- % (self.__class__.__name__, str(e))
+ return 'Unprintable exception {}: {!s}'.format(
+ self.__class__.__name__, e)
+
class _EndOfFile(IntelHexError):
"""Used for internal needs only."""
_fmt = 'EOF record reached -- signal to stop read file'
+
class HexReaderError(IntelHexError):
_fmt = 'Hex reader base error'
+
class AddressOverlapError(HexReaderError):
_fmt = 'Hex file has data overlap at address 0x%(address)X on line %(line)d'
@@ -1095,17 +1096,20 @@ class AddressOverlapError(HexReaderError):
class HexRecordError(HexReaderError):
- _fmt = 'Hex file contains invalid record at line %(line)d'
+ _fmt = 'Hex file contains invalid record at line {line:d}'
class RecordLengthError(HexRecordError):
- _fmt = 'Record at line %(line)d has invalid length'
+ _fmt = 'Record at line {line:d} has invalid length'
+
class RecordTypeError(HexRecordError):
- _fmt = 'Record at line %(line)d has invalid record type'
+ _fmt = 'Record at line {line:d} has invalid record type'
+
class RecordChecksumError(HexRecordError):
- _fmt = 'Record at line %(line)d has invalid checksum'
+ _fmt = 'Record at line {line:d} has invalid checksum'
+
class EOFRecordError(HexRecordError):
_fmt = 'File has invalid End-of-File record'
@@ -1114,32 +1118,39 @@ class EOFRecordError(HexRecordError):
class ExtendedAddressRecordError(HexRecordError):
_fmt = 'Base class for extended address exceptions'
+
class ExtendedSegmentAddressRecordError(ExtendedAddressRecordError):
- _fmt = 'Invalid Extended Segment Address Record at line %(line)d'
+ _fmt = 'Invalid Extended Segment Address Record at line {line:d}'
+
class ExtendedLinearAddressRecordError(ExtendedAddressRecordError):
- _fmt = 'Invalid Extended Linear Address Record at line %(line)d'
+ _fmt = 'Invalid Extended Linear Address Record at line {line:d}'
class StartAddressRecordError(HexRecordError):
_fmt = 'Base class for start address exceptions'
+
class StartSegmentAddressRecordError(StartAddressRecordError):
- _fmt = 'Invalid Start Segment Address Record at line %(line)d'
+ _fmt = 'Invalid Start Segment Address Record at line {line:d}'
+
class StartLinearAddressRecordError(StartAddressRecordError):
- _fmt = 'Invalid Start Linear Address Record at line %(line)d'
+ _fmt = 'Invalid Start Linear Address Record at line {line:d}'
+
class DuplicateStartAddressRecordError(StartAddressRecordError):
- _fmt = 'Start Address Record appears twice at line %(line)d'
+ _fmt = 'Start Address Record appears twice at line {line:d}'
+
class InvalidStartAddressValueError(StartAddressRecordError):
- _fmt = 'Invalid start address value: %(start_addr)s'
+ _fmt = 'Invalid start address value: {start_addr!s}'
class NotEnoughDataError(IntelHexError):
- _fmt = ('Bad access at 0x%(address)X: '
- 'not enough data to read %(length)d contiguous bytes')
+ _fmt = ('Bad access at {#address:X}: '
+ 'not enough data to read {length:d} contiguous bytes')
+
class BadAccess16bit(NotEnoughDataError):
- _fmt = 'Bad access at 0x%(address)X: not enough data to read 16 bit value'
+ _fmt = 'Bad access at {#address:X}: not enough data to read 16 bit value'
diff --git a/rflib/rflib_version.py b/rflib/rflib_version.py
index f4a1994..8136c49 100644
--- a/rflib/rflib_version.py
+++ b/rflib/rflib_version.py
@@ -1 +1 @@
-RFLIB_VERSION=543
+RFLIB_VERSION=574
diff --git a/setup.py b/setup.py
index 757aa93..6114bb6 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
import sys
import os
import codecs
-from distutils.core import setup, Extension
+from setuptools import setup
packages = ['rflib', 'vstruct', 'vstruct.defs']
mods = []
@@ -16,7 +16,7 @@
try:
REV = os.popen('./revision.sh').readline()
if len(REV):
- file('rflib/rflib_version.py', 'wb').write("RFLIB_VERSION=%s" % REV)
+ open('rflib/rflib_version.py', 'wb').write("RFLIB_VERSION={}".format(REV).encode())
except:
sys.excepthook(*sys.exc_info())
@@ -68,7 +68,8 @@ def readme():
'pyusb>=1.0.0',
'libusb>=1.0.21b2',
'PySide2==5.12.0',
- 'future>=0.17.1'
+ 'future>=0.17.1',
+ 'pyserial>=3.4'
],
python_requires = '>=2.7,<3.0.0'
)
diff --git a/tests/test_basics.py b/tests/test_basics.py
index c232caa..df77c2b 100644
--- a/tests/test_basics.py
+++ b/tests/test_basics.py
@@ -1,11 +1,12 @@
import unittest
+
class RfCatBasicTests(unittest.TestCase):
def test_importing(self):
import rflib
devs = rflib.getRfCatDevices()
- self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: %r" % devs)
+ self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: {!r}".format(devs))
import rflib.chipcon_nic
import rflib.chipcon_usb
import rflib.chipcondefs
@@ -13,4 +14,3 @@ def test_importing(self):
import rflib.ccspecan
import rflib.intelhex
import rflib.rflib_defs
-
diff --git a/tests/test_fakedongle.py b/tests/test_fakedongle.py
index c00cf08..ef41990 100644
--- a/tests/test_fakedongle.py
+++ b/tests/test_fakedongle.py
@@ -5,25 +5,24 @@
import queue
import logging
import unittest
-import threading
from rflib.const import *
-logging.basicConfig(level=logging.INFO, format='%(asctime)s:%(levelname)s:%(name)s: %(message)s')
+logging.basicConfig(level=logging.INFO, format='{asctime:!s}:{levelname:!s}:{name:!s}: {message:!s}')
logger = logging.getLogger(__name__)
EP0BUFSIZE = 512
class fakeMemory:
- def __init__(self, size=64*1024):
+ def __init__(self, size=64 * 1024):
self.memory = [0 for x in range(size)]
def readMemory(self, addr, size):
- return ''.join([chr(x) for x in self.memory[addr:addr+size]])
+ return ''.join([chr(x) for x in self.memory[addr:addr + size]])
def writeMemory(self, addr, data):
- self.memory = self.memory[:addr] + data + self.memory[addr+len(data):]
+ self.memory = self.memory[:addr] + data + self.memory[addr + len(data):]
class fakeDon:
@@ -39,13 +38,15 @@ def __init__(self):
def controlMsg(self, flags, request, buf, value, index, timeout):
if flags & USB_BM_REQTYPE_DIR_OUT:
- logger.warn("=> fakeDoer.controlMsg(flags=0x%x, request=%r, buf=%r, value=%r, index=%x, timeout=%r)", flags, request, buf, value, index, timeout)
+ logger.warn("=> fakeDoer.controlMsg(flags={:#h}, request={:!s}, buf={:!r}, value={:!r}, index={:h}, "
+ "timeout={:!r)", flags, request, buf, value, index, timeout)
elif flags & USB_BM_REQTYPE_DIR_IN:
- logger.warn("<= fakeDoer.controlMsg(flags=0x%x, request=%r, buf=%r, value=%r, index=%x, timeout=%r)", flags, request, buf, value, index, timeout)
+ logger.warn("<= fakeDoer.controlMsg(flags={:#h}, request={:!r}, buf={:!r}, value={:!r}, index={:h}, "
+ "timeout={:!r})", flags, request, buf, value, index, timeout)
- def bulkWrite(self, chan, buf, timeout=1):
+ def bulkWrite(self, chan, buf, timeout=1): # FIXME chan and timeout aren't used, remove?
self._initrcvd = buf
- logger.debug("=> fakeDoer.bulkWrite(5, %r)", buf)
+ logger.debug("=> fakeDoer.bulkWrite(5, {:!r})", buf)
app, cmd, mlen = struct.unpack("<BBH", buf[:4])
data = buf[4:]
@@ -70,7 +71,7 @@ def bulkWrite(self, chan, buf, timeout=1):
self.bulk5.put(buf)
else:
- self.log('WTFO! no APP_SYSTEM::0x%x', cmd)
+ self.log('WTFO! no APP_SYSTEM::{:#h}', cmd)
self.bulk5.put(buf)
elif app == APP_NIC:
@@ -80,7 +81,7 @@ def bulkWrite(self, chan, buf, timeout=1):
self.bulk5.put(retmsg)
else:
- self.log('WTFO! no APP_NIC::0x%x', cmd)
+ self.log('WTFO! no APP_NIC::{:#h}', cmd)
self.bulk5.put(buf)
else:
# everything else... just echo
@@ -88,25 +89,26 @@ def bulkWrite(self, chan, buf, timeout=1):
return len(buf)
- def bulkRead(self, chan, length, timeout=1):
+ def bulkRead(self, chan, length, timeout=1): # FIXME chan isn't used, remove?
starttime = time.time()
while time.time() - starttime < timeout:
try:
out = self.bulk5.get_nowait()
- logger.debug('<= fakeDoer.bulkRead(5, %r) == %r', length, out)
+ logger.debug('<= fakeDoer.bulkRead(5, {:!r}) == {:!r}', length, out)
return "@" + out
except queue.Empty:
time.sleep(.05)
- logger.debug('<= fakeDoer.bulkRead(5, %r) == <EmptyQueue>', length)
+ logger.debug('<= fakeDoer.bulkRead(5, {:!r}) == <EmptyQueue>', length)
raise usb.USBError('Operation timed out (FakeDongle)')
def log(self, msg, *args):
if len(args):
msg = msg % args
self.bulk5.put(struct.pack('<BBH', APP_DEBUG, DEBUG_CMD_STRING, len(msg)) + msg)
-
+
+
class FakeRfCat(rflib.RfCat):
def __init__(self, idx=0, debug=True, copyDongle=None, RfMode=RFST_SRX):
# instantiate ourself as an official RfCat dongle
@@ -120,12 +122,13 @@ def _internal_select_dongle(self):
def getPartNum(self):
return 0x40
+
class RfCatFakeDongle(unittest.TestCase):
def test_importing(self):
import rflib
devs = rflib.getRfCatDevices()
- self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: %r" % devs)
+ self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: {:!r}".format(devs))
import rflib.chipcon_nic
import rflib.chipcon_usb
import rflib.chipcondefs
@@ -133,4 +136,3 @@ def test_importing(self):
import rflib.ccspecan
import rflib.intelhex
import rflib.rflib_defs
-
From 41bcd98ecbedf60b0ab9291b6042e384fc4023fb Mon Sep 17 00:00:00 2001
From: PlantDaddy <CqP5TZ77NYBf5uQt@protonmail.com>
Date: Mon, 13 Apr 2020 02:42:17 -0500
Subject: [PATCH 2/4] Fixed the bugs shown in the travis-ci build (I think),
fixed some bugs, possibly found a few bugs, added more python3 compatibility
---
rflib/chipcon_usb.py | 2 +-
setup.py | 2 +-
tests/test_fakedongle.py | 4 +--
vstruct/__init__.py | 51 ++++++++++++++++++------------
vstruct/builder.py | 61 ++++++++++++++++++------------------
vstruct/defs/__init__.py | 6 ++--
vstruct/defs/elf.py | 1 +
vstruct/defs/kdcom.py | 10 +++---
vstruct/defs/macho/fat.py | 2 ++
vstruct/defs/macho/loader.py | 1 +
vstruct/defs/pe.py | 13 ++++++++
vstruct/defs/win32.py | 2 ++
vstruct/primitives.py | 23 +++++++++-----
13 files changed, 109 insertions(+), 69 deletions(-)
diff --git a/rflib/chipcon_usb.py b/rflib/chipcon_usb.py
index eab9995..86c331a 100644
--- a/rflib/chipcon_usb.py
+++ b/rflib/chipcon_usb.py
@@ -43,7 +43,7 @@ def getRfCatDevices():
if (dev.idVendor == 0x0451 and dev.idProduct == 0x4715) or (dev.idVendor == 0x1d50 and (dev.idProduct == 0x6047 or dev.idProduct == 0x6048 or dev.idProduct == 0x605b or dev.idProduct == 0xecc1)):
rfcats.append(dev)
- elif (dev.idVendor == 0x1d50 and (dev.idProduct == 0x6049 or dev.idProduct == 0x604a or dev.idProduct == 0xecc0)):
+ elif dev.idVendor == 0x1d50 and (dev.idProduct == 0x6049 or dev.idProduct == 0x604a or dev.idProduct == 0xecc0):
print("Already in Bootloader Mode... exiting")
exit(0)
diff --git a/setup.py b/setup.py
index 6114bb6..0b9cc08 100644
--- a/setup.py
+++ b/setup.py
@@ -71,5 +71,5 @@ def readme():
'future>=0.17.1',
'pyserial>=3.4'
],
- python_requires = '>=2.7,<3.0.0'
+ python_requires = '>=2.7,>=3.0.0'
)
diff --git a/tests/test_fakedongle.py b/tests/test_fakedongle.py
index ef41990..7e0cbd5 100644
--- a/tests/test_fakedongle.py
+++ b/tests/test_fakedongle.py
@@ -8,7 +8,7 @@
from rflib.const import *
-logging.basicConfig(level=logging.INFO, format='{asctime:!s}:{levelname:!s}:{name:!s}: {message:!s}')
+logging.basicConfig(level=logging.INFO, format='%(asctime)s:%(levelname)s:%(name)s: %(message)s')
logger = logging.getLogger(__name__)
EP0BUFSIZE = 512
@@ -128,7 +128,7 @@ class RfCatFakeDongle(unittest.TestCase):
def test_importing(self):
import rflib
devs = rflib.getRfCatDevices()
- self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: {:!r}".format(devs))
+ self.assertEquals(type(devs), list, "rflib.getRfCatDevices() doesn't return a list!: {!r}".format(devs))
import rflib.chipcon_nic
import rflib.chipcon_usb
import rflib.chipcondefs
diff --git a/vstruct/__init__.py b/vstruct/__init__.py
index a1a92c6..22f0321 100644
--- a/vstruct/__init__.py
+++ b/vstruct/__init__.py
@@ -1,12 +1,17 @@
import struct
-from StringIO import StringIO
+try:
+ from StringIO import StringIO
+except ImportError:
+ from io import StringIO
import vstruct.primitives as vs_prims
+
def isVstructType(x):
return isinstance(x, vs_prims.v_base)
+
class VStruct(vs_prims.v_base):
def __init__(self, bigend=False):
@@ -15,7 +20,7 @@ def __init__(self, bigend=False):
vs_prims.v_base.__init__(self)
self._vs_name = self.__class__.__name__
self._vs_fields = []
- self._vs_field_align = False # To toggle visual studio style packing
+ self._vs_field_align = False # To toggle visual studio style packing
self._vs_padnum = 0
self._vs_fmtbase = '<'
if bigend:
@@ -27,7 +32,7 @@ def vsGetClassPath(self):
'''
return '%s.%s' % (self.__module__, self._vs_name)
- def vsParse(self, bytes, offset=0):
+ def vsParse(self, bytes_parse, offset=0):
"""
For all the primitives contained within, allow them
an opportunity to parse the given data and return the
@@ -36,7 +41,7 @@ def vsParse(self, bytes, offset=0):
plist = self.vsGetPrims()
fmt = self.vsGetFormat()
size = struct.calcsize(fmt)
- vals = struct.unpack(fmt, bytes[offset:offset+size])
+ vals = struct.unpack(fmt, bytes_parse[offset:offset + size])
for i in range(len(plist)):
plist[i].vsSetParsedValue(vals[i])
@@ -67,17 +72,17 @@ def vsGetFields(self):
ret = []
for fname in self._vs_fields:
fobj = self._vs_values.get(fname)
- ret.append((fname,fobj))
+ ret.append((fname, fobj))
return ret
def vsGetField(self, name):
x = self._vs_values.get(name)
- if x == None:
- raise Exception("Invalid field: %s" % name)
+ if x is None:
+ raise Exception("Invalid field: {!s}".format(name))
return x
def vsHasField(self, name):
- return self._vs_values.get(name) != None
+ return self._vs_values.get(name) is not None
def vsSetField(self, name, value):
if isVstructType(value):
@@ -88,7 +93,7 @@ def vsSetField(self, name, value):
# FIXME implement more arithmetic for structs...
def __ixor__(self, other):
- for name,value in other._vs_values.items():
+ for name, value in other._vs_values.items():
self._vs_values[name] ^= value
return self
@@ -109,8 +114,8 @@ def vsAddField(self, name, value):
delta = len(self) % align
if delta != 0:
- print "PADDING %s by %d" % (name,align-delta)
- pname = "_pad%d" % self._vs_padnum
+ print("PADDING {} by {:d]".format(name, align-delta))
+ pname = "_pad{:d}".format(self._vs_padnum)
self._vs_padnum += 1
self._vs_fields.append(pname)
self._vs_values[pname] = vs_prims.v_bytes(align-delta)
@@ -170,7 +175,7 @@ def __len__(self):
def __getattr__(self, name):
# Gotta do this for pickle issues...
vsvals = self.__dict__.get("_vs_values")
- if vsvals == None:
+ if vsvals is None:
vsvals = {}
self.__dict__["_vs_values"] = vsvals
r = vsvals.get(name)
@@ -183,7 +188,7 @@ def __getattr__(self, name):
def __setattr__(self, name, value):
# If we have this field, asign to it
x = self._vs_values.get(name, None)
- if x != None:
+ if x is not None:
return self.vsSetField(name, value)
# If it's a vstruct type, create a new field
@@ -209,14 +214,15 @@ def tree(self, va=0, reprmax=None):
rstr = field.vsGetTypeName()
if isinstance(field, vs_prims.v_number):
val = field.vsGetValue()
- rstr = '0x%.8x (%d)' % (val,val)
+ rstr = '{:#x} {:d}'.format(val[0:7], val)
elif isinstance(field, vs_prims.v_prim):
rstr = repr(field)
- if reprmax != None and len(rstr) > reprmax:
+ if reprmax is not None and len(rstr) > reprmax:
rstr = rstr[:reprmax] + '...'
- ret += "%.8x (%.2d)%s %s: %s\n" % (va+off, len(field), " "*(indent*2),name,rstr)
+ ret += "{:#x} ({:d}){} {!s}: {!s}\n".format((va+off)[0:7], len(field)[0:1], " " * (indent * 2), name, rstr)
return ret
+
class VArray(VStruct):
def __init__(self, elems=()):
@@ -234,7 +240,8 @@ def vsAddElement(self, elem):
def __getitem__(self, index):
return self.vsGetField("%d" % index)
- #FIXME slice asignment
+ # FIXME slice asignment
+
def resolve(impmod, nameparts):
"""
@@ -247,14 +254,16 @@ def resolve(impmod, nameparts):
m = impmod
for nname in nameparts:
m = getattr(m, nname, None)
- if m == None:
+ if m is None:
break
return m
+
# NOTE: Gotta import this *after* VStruct/VSArray defined
import vstruct.defs as vs_defs
+
def getStructure(sname):
"""
Return an instance of the specified structure. The
@@ -263,18 +272,20 @@ def getStructure(sname):
definition from within vstruct.defs.
"""
x = resolve(vs_defs, sname.split("."))
- if x != None:
+ if x is not None:
return x()
return None
+
def getModuleNames():
return [x for x in dir(vs_defs) if not x.startswith("__")]
+
def getStructNames(modname):
ret = []
mod = resolve(vs_defs, modname)
- if mod == None:
+ if mod is None:
return ret
for n in dir(mod):
diff --git a/vstruct/builder.py b/vstruct/builder.py
index 07bafb2..0849947 100644
--- a/vstruct/builder.py
+++ b/vstruct/builder.py
@@ -9,7 +9,7 @@
import vstruct
import vstruct.primitives as vs_prim
-prim_types = [ None,
+prim_types = [None,
vs_prim.v_uint8,
vs_prim.v_uint16,
None,
@@ -22,6 +22,7 @@
VSFF_ARRAY = 1
VSFF_POINTER = 2
+
class VStructConstructor:
def __init__(self, builder, vsname):
self.builder = builder
@@ -30,6 +31,7 @@ def __init__(self, builder, vsname):
def __call__(self, *args, **kwargs):
return self.builder.buildVStruct(self.vsname)
+
class VStructBuilder:
def __init__(self, defs=(), enums=()):
@@ -43,14 +45,14 @@ def __init__(self, defs=(), enums=()):
def __getattr__(self, name):
ns = self._vs_namespaces.get(name)
- if ns != None:
+ if ns is not None:
return ns
vsdef = self._vs_defs.get(name)
- if vsdef != None:
+ if vsdef is not None:
return VStructConstructor(self, name)
- raise AttributeError, name
+ raise AttributeError(name)
def addVStructEnumeration(self, enum):
self._vs_enums[enum[0]] = enum
@@ -65,10 +67,10 @@ def getVStructNamespaceNames(self):
return self._vs_namespaces.keys()
def hasVStructNamespace(self, namespace):
- return self._vs_namespaces.get(namespace, None) != None
+ return self._vs_namespaces.get(namespace, None) is not None
def getVStructNames(self, namespace=None):
- if namespace == None:
+ if namespace is None:
return self._vs_defs.keys()
nsmod = self._vs_namespaces.get(namespace)
ret = []
@@ -89,20 +91,20 @@ def buildVStruct(self, vsname):
parts = vsname.split('.', 1)
if len(parts) == 2:
ns = self._vs_namespaces.get(parts[0])
- if ns == None:
+ if ns is None:
raise Exception('Namespace %s is not present! (need symbols?)' % parts[0])
# If a module gets added as a namespace, assume it has a class def...
if isinstance(ns, types.ModuleType):
cls = getattr(ns, parts[1])
- if cls == None:
+ if cls is None:
raise Exception('Unknown VStruct Definition: %s' % vsname)
return cls()
return ns.buildVStruct(parts[1])
vsdef = self._vs_defs.get(vsname)
- if vsdef == None:
+ if vsdef is None:
raise Exception('Unknown VStruct Definition: %s' % vsname)
vsname, vssize, vskids = vsdef
@@ -124,19 +126,19 @@ def buildVStruct(self, vsname):
raise Exception('Invalid Pointer Width: %d' % fsize)
elif fflags & VSFF_ARRAY:
- if ftypename != None:
+ if ftypename is not None:
fieldval = vstruct.VArray()
while len(fieldval) < fsize:
- fieldval.vsAddElement( self.buildVStruct(ftypename) )
+ fieldval.vsAddElement(self.buildVStruct(ftypename))
else:
- # FIXME actually handle arrays!
+ # FIXME actually handle arrays!
fieldval = vs_prim.v_bytes(size=fsize)
- elif ftypename == None:
+ elif ftypename is None:
- if fsize not in [1,2,4,8]:
- #print 'Primitive Field Size: %d' % fsize
- fieldval = v_bytes(size=fsize)
+ if fsize not in [1, 2, 4, 8]:
+ # print 'Primitive Field Size: %d' % fsize
+ fieldval = vs_prim.v_bytes(size=fsize)
else:
fieldval = prim_types[fsize]()
@@ -146,7 +148,7 @@ def buildVStruct(self, vsname):
cursize = len(vs)
if foffset < cursize:
- #print 'FIXME handle unions, overlaps, etc...'
+ # print 'FIXME handle unions, overlaps, etc...'
continue
if foffset > cursize:
@@ -164,10 +166,9 @@ def genVStructPyCode(self):
for ename, esize, ekids in self._vs_enums.values():
ret += '%s = v_enum()\n' % ename
for kname, kval in ekids:
- ret += '%s.%s = %d\n' % (ename,kname,kval)
+ ret += '%s.%s = %d\n' % (ename, kname, kval)
ret += '\n\n'
-
for vsname, vsize, vskids in self._vs_defs.values():
ret += 'class %s(vstruct.VStruct):\n' % vsname
ret += ' def __init__(self):\n'
@@ -191,12 +192,12 @@ def genVStructPyCode(self):
fconst = 'v_bytes(size=%d) # FIXME should be pointer!' % fsize
elif fflags & VSFF_ARRAY:
- if ftypename != None:
- '[ %s() for i in xrange( %d / len(%s())) ]' % (ftypename, fsize, ftypename)
+ if ftypename is not None:
+ '[ %s() for i in xrange( %d / len(%s())) ]' % (ftypename, fsize, ftypename) # FIXME noop?
else:
fconst = 'v_bytes(size=%d) # FIXME Unknown Array Type' % fsize
- elif ftypename == None:
+ elif ftypename is None:
if fsize == 1:
fconst = 'v_uint8()'
elif fsize == 2:
@@ -210,25 +211,25 @@ def genVStructPyCode(self):
else:
fconst = '%s()' % ftypename
-
ret += ' self.%s = %s\n' % (fname, fconst)
offset += fsize
ret += '\n\n'
return ret
+
if __name__ == '__main__':
# Parse windows structures from dll symbols...
- import os
+ import os # FIXME unused
import sys
- import platform
+ import platform # FIXME unused
- from pprint import pprint
+ from pprint import pprint # FIXME unused
import PE
import vtrace.platforms.win32 as vt_win32
- p = PE.PE(file(sys.argv[1], 'rb'))
+ p = PE.PE(open(sys.argv[1], 'rb'))
baseaddr = p.IMAGE_NT_HEADERS.OptionalHeader.ImageBase
osmajor = p.IMAGE_NT_HEADERS.OptionalHeader.MajorOperatingSystemVersion
osminor = p.IMAGE_NT_HEADERS.OptionalHeader.MinorOperatingSystemVersion
@@ -243,7 +244,7 @@ def genVStructPyCode(self):
e = parser._sym_enums.values()
builder = VStructBuilder(defs=t, enums=e)
- print '# Version: %d.%d' % (osmajor, osminor)
- print '# Architecture: %s' % archname
- print builder.genVStructPyCode()
+ print('# Version: {:d}.(:d}'.format(osmajor, osminor))
+ print('# Architecture: {}'.format(archname))
+ print(builder.genVStructPyCode())
diff --git a/vstruct/defs/__init__.py b/vstruct/defs/__init__.py
index 3aa5963..df96038 100644
--- a/vstruct/defs/__init__.py
+++ b/vstruct/defs/__init__.py
@@ -1,6 +1,6 @@
# Import all local structure modules
-import elf
-import pe
-import win32
+from . import elf
+from . import pe
+from . import win32
diff --git a/vstruct/defs/elf.py b/vstruct/defs/elf.py
index a7b69ed..789c1e9 100644
--- a/vstruct/defs/elf.py
+++ b/vstruct/defs/elf.py
@@ -4,6 +4,7 @@
EI_NIDENT = 4
EI_PADLEN = 7
+
class Elf32(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
diff --git a/vstruct/defs/kdcom.py b/vstruct/defs/kdcom.py
index 099848c..d816202 100644
--- a/vstruct/defs/kdcom.py
+++ b/vstruct/defs/kdcom.py
@@ -16,9 +16,9 @@
PACKET_TRAILING_BYTE = 0xAA
pkt_magic_names = {
- BREAKIN_PACKET:"Break Packet",
- PACKET_LEADER:"Packet",
- CONTROL_PACKET_LEADER:"Control Packet",
+ BREAKIN_PACKET: "Break Packet",
+ PACKET_LEADER: "Packet",
+ CONTROL_PACKET_LEADER: "Control Packet",
}
# Primary "packet types"
@@ -184,6 +184,7 @@
ULONG64 = v_uint64
BOOLEAN = v_uint32
+
class DBGKD_LOAD_SYMBOLS64(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -193,9 +194,10 @@ def __init__(self):
self.ProcessId = v_uint64()
self.CheckSum = v_uint32()
self.SizeOfImage = v_uint32()
- #self.UnloadSymbols = v_uint8()
+ # self.UnloadSymbols = v_uint8()
self.UnloadSymbols = v_uint32() # HACK must be 32 bit aligned
+
class DBGKD_WAIT_STATE_CHANGE64(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
diff --git a/vstruct/defs/macho/fat.py b/vstruct/defs/macho/fat.py
index 5b5d03b..664a1da 100644
--- a/vstruct/defs/macho/fat.py
+++ b/vstruct/defs/macho/fat.py
@@ -2,12 +2,14 @@
import vstruct
import vstruct.primitives as vs_prim
+
class fat_header(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self, bigend=True)
self.magic = vs_prim.v_uint32()
self.nfat_arch = vs_prim.v_uint32()
+
class fat_arch(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self, bigend=True)
diff --git a/vstruct/defs/macho/loader.py b/vstruct/defs/macho/loader.py
index 9b3b641..82716eb 100644
--- a/vstruct/defs/macho/loader.py
+++ b/vstruct/defs/macho/loader.py
@@ -40,6 +40,7 @@ def __init__(self):
self.cmd = vs_prim.v_uint32() # type of load command
self.cmdsize = vs_prim.v_uint32() # total size of command in bytes
+
class segment_command(vstruct.VStruct):
def __init__(self):
diff --git a/vstruct/defs/pe.py b/vstruct/defs/pe.py
index b599ae2..f085949 100644
--- a/vstruct/defs/pe.py
+++ b/vstruct/defs/pe.py
@@ -2,18 +2,21 @@
import vstruct
from vstruct.primitives import *
+
class IMAGE_BASE_RELOCATION(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.VirtualAddress = v_uint32()
self.SizeOfBlock = v_uint32()
+
class IMAGE_DATA_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.VirtualAddress = v_uint32()
self.Size = v_uint32()
+
class IMAGE_DOS_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -37,6 +40,7 @@ def __init__(self):
self.e_res2 = vstruct.VArray([v_uint16() for i in range(10)])
self.e_lfanew = v_uint32()
+
class IMAGE_EXPORT_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -52,6 +56,7 @@ def __init__(self):
self.AddressOfNames = v_uint32()
self.AddressOfOrdinals = v_uint32()
+
class IMAGE_FILE_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -63,6 +68,7 @@ def __init__(self):
self.SizeOfOptionalHeader = v_uint16()
self.Ccharacteristics = v_uint16()
+
class IMAGE_IMPORT_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -72,6 +78,7 @@ def __init__(self):
self.Name = v_uint32()
self.FirstThunk = v_uint32()
+
class IMAGE_LOAD_CONFIG_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -96,6 +103,7 @@ def __init__(self):
self.SEHandlerTable = v_uint32()
self.SEHandlerCount = v_uint32()
+
class IMAGE_NT_HEADERS(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -103,6 +111,7 @@ def __init__(self):
self.FileHeader = IMAGE_FILE_HEADER()
self.OptionalHeader = IMAGE_OPTIONAL_HEADER()
+
class IMAGE_NT_HEADERS64(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -110,6 +119,7 @@ def __init__(self):
self.FileHeader = IMAGE_FILE_HEADER()
self.OptionalHeader = IMAGE_OPTIONAL_HEADER64()
+
class IMAGE_OPTIONAL_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -145,6 +155,7 @@ def __init__(self):
self.NumberOfRvaAndSizes = v_uint32()
self.DataDirectory = vstruct.VArray([IMAGE_DATA_DIRECTORY() for i in range(16)])
+
class IMAGE_OPTIONAL_HEADER64(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -179,6 +190,7 @@ def __init__(self):
self.NumberOfRvaAndSizes = v_uint32()
self.DataDirectory = vstruct.VArray([IMAGE_DATA_DIRECTORY() for i in range(16)])
+
class IMAGE_RESOURCE_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -189,6 +201,7 @@ def __init__(self):
self.NumberOfNamedEntries = v_uint16()
self.NumberOfIdEntries = v_uint16()
+
class IMAGE_SECTION_HEADER(vstruct.VStruct):
def __init__(self):
diff --git a/vstruct/defs/win32.py b/vstruct/defs/win32.py
index 64e5190..d1ad0ea 100644
--- a/vstruct/defs/win32.py
+++ b/vstruct/defs/win32.py
@@ -4,12 +4,14 @@
import vstruct
from vstruct.primitives import *
+
class CLIENT_ID(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.UniqueProcess = v_ptr()
self.UniqueThread = v_ptr()
+
class EXCEPTION_RECORD(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
diff --git a/vstruct/primitives.py b/vstruct/primitives.py
index 8eceeb6..09718de 100644
--- a/vstruct/primitives.py
+++ b/vstruct/primitives.py
@@ -1,6 +1,13 @@
import struct
+try:
+ blah = long(42)
+except NameError:
+ long = int
+ pass
+
+
class v_enum: pass
class v_base(object):
@@ -177,7 +184,7 @@ def __index__(self): return long(self)
def __coerce__(self, other):
try:
return long(self),long(other)
- except Exception, e:
+ except Exception as e:
return NotImplemented
# Print helpers
@@ -330,14 +337,14 @@ def __init__(self, guidstr=None):
self._vs_length = 16
self._vs_value = "\x00" * 16
self._vs_fmt = "16s"
- self._guid_fields = (0,0,0,0,0,0,0,0,0,0,0)
- if guidstr != None:
+ self._guid_fields = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ if guidstr is not None:
self._parseGuidStr(guidstr)
def _parseGuidStr(self, gstr):
- gstr = gstr.replace("{","")
- gstr = gstr.replace("}","")
- gstr = gstr.replace("-","")
+ gstr = gstr.replace("{", "")
+ gstr = gstr.replace("}", "")
+ gstr = gstr.replace("-", "")
bytes = gstr.decode("hex")
# Totally cheating... ;)
self._guid_fields = struct.unpack(">LHH8B", bytes)
@@ -346,9 +353,9 @@ def vsSetValue(self, bytes):
self._guid_fields = struct.unpack("<LHH8B", bytes)
def vsGetValue(self):
- return struck.pack("<LHH8B", *self._guid_fields)
+ return struct.pack("<LHH8B", *self._guid_fields)
def __repr__(self):
base = "{%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}"
- return base % self._guid_fields
+ return base % (self._guid_fields)
From 489d40b006bf3df351ade813b3fce3c3a62d5a81 Mon Sep 17 00:00:00 2001
From: PlantDaddy <CqP5TZ77NYBf5uQt@protonmail.com>
Date: Mon, 13 Apr 2020 21:10:46 -0500
Subject: [PATCH 3/4] Fixed and possibly found a few mor bugs, fixed the
exception being thrown in travis due to older style except
---
setup.py | 6 +-
vstruct/__init__.py | 4 +-
vstruct/defs/elf.py | 11 +
vstruct/defs/macho/loader.py | 2 +
vstruct/defs/win32.py | 12 +
vstruct/defs/windows/__init__.py | 9 +-
vstruct/defs/windows/win_5_1_i386/ntdll.py | 157 +++++----
vstruct/defs/windows/win_5_1_i386/ntoskrnl.py | 298 +++++++++---------
vstruct/defs/windows/win_5_1_i386/win32k.py | 3 +-
vstruct/defs/windows/win_6_1_amd64/ntdll.py | 202 ++++++------
vstruct/defs/windows/win_6_1_wow64/ntdll.py | 222 ++++++-------
vstruct/primitives.py | 22 +-
12 files changed, 496 insertions(+), 452 deletions(-)
diff --git a/setup.py b/setup.py
index 0b9cc08..ea3b99d 100644
--- a/setup.py
+++ b/setup.py
@@ -59,9 +59,9 @@ def readme():
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
- # 'Programming Language :: Python :: 3',
- # 'Programming Language :: Python :: 3.2',
- # 'Programming Language :: Python :: 3.3',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.8',
# 'Programming Language :: Python :: 3.4',
],
install_requires = [
diff --git a/vstruct/__init__.py b/vstruct/__init__.py
index 22f0321..1f48ccb 100644
--- a/vstruct/__init__.py
+++ b/vstruct/__init__.py
@@ -27,9 +27,9 @@ def __init__(self, bigend=False):
self._vs_fmtbase = '>'
def vsGetClassPath(self):
- '''
+ """
Return the entire class name (including module path).
- '''
+ """
return '%s.%s' % (self.__module__, self._vs_name)
def vsParse(self, bytes_parse, offset=0):
diff --git a/vstruct/defs/elf.py b/vstruct/defs/elf.py
index 789c1e9..6c7f44b 100644
--- a/vstruct/defs/elf.py
+++ b/vstruct/defs/elf.py
@@ -29,6 +29,7 @@ def __init__(self):
self.e_shnum = v_uint16()
self.e_shstrndx = v_uint16()
+
class Elf32Section(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -43,6 +44,7 @@ def __init__(self):
self.sh_addralign = v_uint32()
self.sh_entsize = v_uint32()
+
class Elf32Pheader(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -55,17 +57,20 @@ def __init__(self):
self.p_flags = v_uint32()
self.p_align = v_uint32()
+
class Elf32Reloc(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.r_offset = v_ptr32()
self.r_info = v_uint32()
+
class Elf32Reloca(Elf32Reloc):
def __init__(self):
Elf32Reloc.__init__(self)
self.r_addend = v_uint32()
+
class Elf32Symbol(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -76,6 +81,7 @@ def __init__(self):
self.st_other = v_uint8()
self.st_shndx = v_uint16()
+
class Elf32Dynamic(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -107,6 +113,7 @@ def __init__(self):
self.e_shnum = v_uint16()
self.e_shstrndx = v_uint16()
+
class Elf64Section(Elf32Section):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -121,6 +128,7 @@ def __init__(self):
self.sh_addralign = v_uint64()
self.sh_entsize = v_uint64()
+
class Elf64Pheader(Elf32Pheader):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -140,6 +148,7 @@ def __init__(self):
self.r_offset = v_ptr64()
self.r_info = v_uint64()
+
class Elf64Reloca(Elf64Reloc):
def __init__(self):
#Elf64Reloc.__init__(self)
@@ -148,6 +157,7 @@ def __init__(self):
self.r_info = v_uint64()
self.r_addend = v_uint64()
+
class Elf64Symbol(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -158,6 +168,7 @@ def __init__(self):
self.st_value = v_uint64()
self.st_size = v_uint64()
+
class Elf64Dynamic(Elf32Dynamic):
pass
diff --git a/vstruct/defs/macho/loader.py b/vstruct/defs/macho/loader.py
index 82716eb..62cbf7e 100644
--- a/vstruct/defs/macho/loader.py
+++ b/vstruct/defs/macho/loader.py
@@ -6,6 +6,7 @@
cpu_subtype_t = vs_prim.v_uint32
lc_str = vs_prim.v_uint32
+
class mach_header(vstruct.VStruct):
def __init__(self):
@@ -350,6 +351,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.itoc = vs_prim.v_uint32() # index into the table of contents
+
class prebind_cksum_command(vstruct.VStruct):
def __init__(self):
diff --git a/vstruct/defs/win32.py b/vstruct/defs/win32.py
index d1ad0ea..60a0c9b 100644
--- a/vstruct/defs/win32.py
+++ b/vstruct/defs/win32.py
@@ -21,12 +21,14 @@ def __init__(self):
self.ExceptionAddress = v_ptr()
self.NumberParameters = v_uint32()
+
class EXCEPTION_REGISTRATION(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.prev = v_ptr()
self.handler = v_ptr()
+
class HEAP(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -67,6 +69,7 @@ def __init__(self):
self.FrontEndHeapType = v_uint8()
self.LastSegmentIndex = v_uint8()
+
class HEAP_SEGMENT(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -86,6 +89,7 @@ def __init__(self):
self.Reserved = v_uint16()
self.LastEntryInSegment = v_ptr()
+
class HEAP_ENTRY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -96,12 +100,14 @@ def __init__(self):
self.Unused = v_uint8()
self.TagIndex = v_uint8()
+
class ListEntry(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Flink = v_ptr()
self.Blink = v_ptr()
+
class NT_TIB(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -114,6 +120,7 @@ def __init__(self):
self.ArbitraryUserPtr = v_ptr()
self.Self = v_ptr()
+
class PEB(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -184,6 +191,7 @@ def __init__(self):
self.SystemAssemblyStorageMap = v_ptr()
self.MinimumStackCommit = v_uint32()
+
class SEH3_SCOPETABLE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -191,6 +199,7 @@ def __init__(self):
self.FilterFunction = v_ptr()
self.HandlerFunction = v_ptr()
+
class SEH4_SCOPETABLE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -202,6 +211,7 @@ def __init__(self):
self.FilterFunction = v_ptr()
self.HandlerFunction = v_ptr()
+
class TEB(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
@@ -221,11 +231,13 @@ def __init__(self):
self.CurrentLocale = v_uint32()
self.FpSoftwareStatusRegister = v_uint32()
+
class CLSID(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.uuid = GUID()
+
class IID(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
diff --git a/vstruct/defs/windows/__init__.py b/vstruct/defs/windows/__init__.py
index 172f9a3..a231feb 100644
--- a/vstruct/defs/windows/__init__.py
+++ b/vstruct/defs/windows/__init__.py
@@ -6,6 +6,7 @@
import ctypes
import platform
+
def isSysWow64():
k32 = ctypes.windll.kernel32
if not hasattr(k32, 'IsWow64Process'):
@@ -16,6 +17,7 @@ def isSysWow64():
return False
return bool(ret.value)
+
def getCurrentDef(normname):
bname, wver, stuff, whichkern = platform.win32_ver()
wvertup = wver.split('.')
@@ -23,14 +25,15 @@ def getCurrentDef(normname):
if isSysWow64():
arch = 'wow64'
- modname = 'vstruct.defs.windows.win_%s_%s_%s.%s' % (wvertup[0], wvertup[1], arch, normname)
+ modname = 'vstruct.defs.windows.win_{!s}_{!s}_{!s}.{!s}'.format(wvertup[0], wvertup[1], arch, normname)
try:
mod = __import__(modname, {}, {}, 1)
- except ImportError, e:
+ except ImportError as e:
mod = None
return mod
+
if __name__ == '__main__':
- print getCurrentDef('ntdll')
+ print(getCurrentDef('ntdll'))
diff --git a/vstruct/defs/windows/win_5_1_i386/ntdll.py b/vstruct/defs/windows/win_5_1_i386/ntdll.py
index 0a0c027..48c42bb 100644
--- a/vstruct/defs/windows/win_5_1_i386/ntdll.py
+++ b/vstruct/defs/windows/win_5_1_i386/ntdll.py
@@ -360,11 +360,11 @@ def __init__(self):
self.CpuID = v_uint8()
self.CpuStep = v_uint16()
self.ProcessorState = KPROCESSOR_STATE()
- self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
- self.PrcbPad0 = v_bytes(size=92) # FIXME Unknown Array Type
- self.LockQueue = v_bytes(size=92) # FIXME Unknown Array Type
- self.PrcbPad1 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.PrcbPad0 = v_bytes(size=92) # FIXME Unknown Array Type
+ self.LockQueue = v_bytes(size=92) # FIXME Unknown Array Type
+ self.PrcbPad1 = v_bytes(size=8) # FIXME Unknown Array Type
self.NpxThread = v_ptr32()
self.InterruptCount = v_uint32()
self.KernelTime = v_uint32()
@@ -376,11 +376,11 @@ def __init__(self):
self.PageColor = v_uint32()
self.SkipTick = v_uint32()
self.MultiThreadSetBusy = v_uint8()
- self.Spare2 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare2 = v_bytes(size=3) # FIXME Unknown Array Type
self.ParentNode = v_ptr32()
self.MultiThreadProcessorSet = v_uint32()
self.MultiThreadSetMaster = v_ptr32()
- self.ThreadStartCount = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ThreadStartCount = v_bytes(size=8) # FIXME Unknown Array Type
self.CcFastReadNoWait = v_uint32()
self.CcFastReadWait = v_uint32()
self.CcFastReadNotPossible = v_uint32()
@@ -396,22 +396,22 @@ def __init__(self):
self.KeIcacheFlushCount = v_uint32()
self.KeSecondLevelTbFills = v_uint32()
self.KeSystemCalls = v_uint32()
- self.SpareCounter0 = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPNPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SpareCounter0 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPNPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
self.PacketBarrier = v_uint32()
self.ReverseStall = v_uint32()
self.IpiFrame = v_ptr32()
- self.PrcbPad2 = v_bytes(size=52) # FIXME Unknown Array Type
- self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
+ self.PrcbPad2 = v_bytes(size=52) # FIXME Unknown Array Type
+ self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
self.TargetSet = v_uint32()
self.WorkerRoutine = v_ptr32()
self.IpiFrozen = v_uint32()
- self.PrcbPad3 = v_bytes(size=40) # FIXME Unknown Array Type
+ self.PrcbPad3 = v_bytes(size=40) # FIXME Unknown Array Type
self.RequestSummary = v_uint32()
self.SignalDone = v_ptr32()
- self.PrcbPad4 = v_bytes(size=56) # FIXME Unknown Array Type
+ self.PrcbPad4 = v_bytes(size=56) # FIXME Unknown Array Type
self.DpcListHead = LIST_ENTRY()
self.DpcStack = v_ptr32()
self.DpcCount = v_uint32()
@@ -423,14 +423,14 @@ def __init__(self):
self.MaximumDpcQueueDepth = v_uint32()
self.MinimumDpcRate = v_uint32()
self.QuantumEnd = v_uint32()
- self.PrcbPad5 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.PrcbPad5 = v_bytes(size=16) # FIXME Unknown Array Type
self.DpcLock = v_uint32()
- self.PrcbPad6 = v_bytes(size=28) # FIXME Unknown Array Type
+ self.PrcbPad6 = v_bytes(size=28) # FIXME Unknown Array Type
self.CallDpc = KDPC()
self.ChainedInterruptList = v_ptr32()
self.LookasideIrpFloat = v_uint32()
- self.SpareFields0 = v_bytes(size=24) # FIXME Unknown Array Type
- self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
+ self.SpareFields0 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
self.InitialApicId = v_uint8()
self.LogicalProcessorsPerPhysicalProcessor = v_uint8()
self._pad0910 = v_bytes(size=1)
@@ -487,7 +487,7 @@ def __init__(self):
self.ExceptionRecord = v_ptr32()
self.ExceptionAddress = v_ptr32()
self.NumberParameters = v_uint32()
- self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
class SID(vstruct.VStruct):
@@ -496,7 +496,7 @@ def __init__(self):
self.Revision = v_uint8()
self.SubAuthorityCount = v_uint8()
self.IdentifierAuthority = SID_IDENTIFIER_AUTHORITY()
- self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
class PS_JOB_TOKEN_FILTER(vstruct.VStruct):
@@ -599,7 +599,7 @@ def __init__(self):
class EX_PUSH_LOCK_CACHE_AWARE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Locks = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Locks = v_bytes(size=128) # FIXME Unknown Array Type
class MMWSL(vstruct.VStruct):
@@ -807,7 +807,7 @@ def __init__(self):
self.ErrorSelector = v_uint32()
self.DataOffset = v_uint32()
self.DataSelector = v_uint32()
- self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
self.Cr0NpxState = v_uint32()
@@ -937,7 +937,7 @@ def __init__(self):
self.KernelStack = v_ptr32()
self.DebugActive = v_uint8()
self.State = v_uint8()
- self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
self.Iopl = v_uint8()
self.NpxState = v_uint8()
self.Saturation = v_uint8()
@@ -945,7 +945,7 @@ def __init__(self):
self.ApcState = KAPC_STATE()
self.ContextSwitches = v_uint32()
self.IdleSwapBlock = v_uint8()
- self.Spare0 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare0 = v_bytes(size=3) # FIXME Unknown Array Type
self.WaitStatus = v_uint32()
self.WaitIrql = v_uint8()
self.WaitMode = v_uint8()
@@ -981,7 +981,7 @@ def __init__(self):
self.CallbackStack = v_ptr32()
self.Win32Thread = v_ptr32()
self.TrapFrame = v_ptr32()
- self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
self.PreviousMode = v_uint8()
self.EnableStackSwap = v_uint8()
self.LargeStack = v_uint8()
@@ -1041,7 +1041,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.StartTime = v_uint64()
self.EndTime = v_uint64()
- self.IdleHandlerReserved = v_bytes(size=16) # FIXME Unknown Array Type
+ self.IdleHandlerReserved = v_bytes(size=16) # FIXME Unknown Array Type
class KWAIT_BLOCK(vstruct.VStruct):
@@ -1060,7 +1060,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Header = DISPATCHER_HEADER()
self.ProfileListHead = LIST_ENTRY()
- self.DirectoryTableBase = v_bytes(size=8) # FIXME Unknown Array Type
+ self.DirectoryTableBase = v_bytes(size=8) # FIXME Unknown Array Type
self.LdtDescriptor = KGDTENTRY()
self.Int21Descriptor = KIDTENTRY()
self.IopmOffset = v_uint16()
@@ -1120,7 +1120,7 @@ def __init__(self):
self.EFlags = v_uint32()
self.Esp = v_uint32()
self.SegSs = v_uint32()
- self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
+ self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
class EX_FAST_REF(vstruct.VStruct):
@@ -1137,7 +1137,7 @@ def __init__(self):
self.Size = v_uint32()
self.TagIndex = v_uint16()
self.CreatorBackTraceIndex = v_uint16()
- self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
+ self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
class PAGEFAULT_HISTORY(vstruct.VStruct):
@@ -1259,7 +1259,7 @@ def __init__(self):
self.HashFunction = v_ptr32()
self.NoOfTraces = v_uint32()
self.NoOfHits = v_uint32()
- self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
class GENERAL_LOOKASIDE(vstruct.VStruct):
@@ -1280,7 +1280,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class EX_PUSH_LOCK(vstruct.VStruct):
@@ -1328,10 +1328,10 @@ def __init__(self):
self.DataSelector = v_uint32()
self.MXCsr = v_uint32()
self.MXCsrMask = v_uint32()
- self.RegisterArea = v_bytes(size=128) # FIXME Unknown Array Type
- self.Reserved3 = v_bytes(size=128) # FIXME Unknown Array Type
- self.Reserved4 = v_bytes(size=224) # FIXME Unknown Array Type
- self.Align16Byte = v_bytes(size=8) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Reserved3 = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Reserved4 = v_bytes(size=224) # FIXME Unknown Array Type
+ self.Align16Byte = v_bytes(size=8) # FIXME Unknown Array Type
class unnamed(vstruct.VStruct):
@@ -1496,7 +1496,7 @@ def __init__(self):
self.DriverInit = v_ptr32()
self.DriverStartIo = v_ptr32()
self.DriverUnload = v_ptr32()
- self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
+ self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
class ACCESS_STATE(vstruct.VStruct):
@@ -1586,7 +1586,7 @@ def __init__(self):
class IMAGE_SECTION_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Name = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=8) # FIXME Unknown Array Type
self.Misc = unnamed()
self.VirtualAddress = v_uint32()
self.SizeOfRawData = v_uint32()
@@ -1619,7 +1619,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Offset = v_uint32()
self.HDC = v_uint32()
- self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
+ self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
class KPROCESSOR_STATE(vstruct.VStruct):
@@ -1666,12 +1666,12 @@ def __init__(self):
self.FastPebUnlockRoutine = v_ptr32()
self.EnvironmentUpdateCount = v_uint32()
self.KernelCallbackTable = v_ptr32()
- self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
self.AtlThunkSListPtr32 = v_uint32()
self.FreeList = v_ptr32()
self.TlsExpansionCounter = v_uint32()
self.TlsBitmap = v_ptr32()
- self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
+ self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
self.ReadOnlySharedMemoryBase = v_ptr32()
self.ReadOnlySharedMemoryHeap = v_ptr32()
self.ReadOnlyStaticServerData = v_ptr32()
@@ -1702,10 +1702,10 @@ def __init__(self):
self.ImageSubsystemMajorVersion = v_uint32()
self.ImageSubsystemMinorVersion = v_uint32()
self.ImageProcessAffinityMask = v_uint32()
- self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
+ self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
self.PostProcessInitRoutine = v_ptr32()
self.TlsExpansionBitmap = v_ptr32()
- self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
self.SessionId = v_uint32()
self.AppCompatFlags = ULARGE_INTEGER()
self.AppCompatFlagsUser = ULARGE_INTEGER()
@@ -1744,7 +1744,7 @@ def __init__(self):
class SID_IDENTIFIER_AUTHORITY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Value = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Value = v_bytes(size=6) # FIXME Unknown Array Type
class SECTION_OBJECT_POINTERS(vstruct.VStruct):
@@ -1799,24 +1799,24 @@ def __init__(self):
self.CountOfOwnedCriticalSections = v_uint32()
self.CsrClientThread = v_ptr32()
self.Win32ThreadInfo = v_ptr32()
- self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
- self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
+ self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
+ self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
self.WOW32Reserved = v_ptr32()
self.CurrentLocale = v_uint32()
self.FpSoftwareStatusRegister = v_uint32()
- self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
+ self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
self.ExceptionCode = v_uint32()
self.ActivationContextStack = ACTIVATION_CONTEXT_STACK()
- self.SpareBytes1 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SpareBytes1 = v_bytes(size=24) # FIXME Unknown Array Type
self.GdiTebBatch = GDI_TEB_BATCH()
self.RealClientId = CLIENT_ID()
self.GdiCachedProcessHandle = v_ptr32()
self.GdiClientPID = v_uint32()
self.GdiClientTID = v_uint32()
self.GdiThreadLocalInfo = v_ptr32()
- self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
- self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
- self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
+ self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
+ self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
+ self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
self.glReserved2 = v_ptr32()
self.glSectionInfo = v_ptr32()
self.glSection = v_ptr32()
@@ -1825,16 +1825,16 @@ def __init__(self):
self.glContext = v_ptr32()
self.LastStatusValue = v_uint32()
self.StaticUnicodeString = UNICODE_STRING()
- self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
+ self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
self._pad0e0c = v_bytes(size=2)
self.DeallocationStack = v_ptr32()
- self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
+ self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
self.TlsLinks = LIST_ENTRY()
self.Vdm = v_ptr32()
self.ReservedForNtRpc = v_ptr32()
- self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
+ self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
self.HardErrorsAreDisabled = v_uint32()
- self.Instrumentation = v_bytes(size=64) # FIXME Unknown Array Type
+ self.Instrumentation = v_bytes(size=64) # FIXME Unknown Array Type
self.WinSockData = v_ptr32()
self.GdiBatchCount = v_uint32()
self.InDbgPrint = v_uint8()
@@ -1855,7 +1855,7 @@ def __init__(self):
self.CurrentTransactionHandle = v_ptr32()
self.ActiveFrame = v_ptr32()
self.SafeThunkCall = v_uint8()
- self.BooleanSpare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.BooleanSpare = v_bytes(size=3) # FIXME Unknown Array Type
class KTRAP_FRAME(vstruct.VStruct):
@@ -2014,7 +2014,7 @@ def __init__(self):
self.ProcessLocksList = LIST_ENTRY()
self.EntryCount = v_uint32()
self.ContentionCount = v_uint32()
- self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
class OBJECT_TYPE(vstruct.VStruct):
@@ -2106,8 +2106,8 @@ def __init__(self):
self.PackageIdleTime = v_uint32()
self.DebugCount = v_uint32()
self.LastSysTime = v_uint32()
- self.TotalIdleStateTime = v_bytes(size=24) # FIXME Unknown Array Type
- self.TotalIdleTransitions = v_bytes(size=12) # FIXME Unknown Array Type
+ self.TotalIdleStateTime = v_bytes(size=24) # FIXME Unknown Array Type
+ self.TotalIdleTransitions = v_bytes(size=12) # FIXME Unknown Array Type
self._pad0090 = v_bytes(size=4)
self.PreviousC3StateTime = v_uint64()
self.KneeThrottleIndex = v_uint8()
@@ -2271,7 +2271,7 @@ def __init__(self):
self.ClusterShift = v_uint8()
self.Reserved = v_uint8()
self.NumberOfChunks = v_uint16()
- self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
+ self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
class PEB_FREE_BLOCK(vstruct.VStruct):
@@ -2342,7 +2342,7 @@ def __init__(self):
self.TraceCount = v_uint32()
self.Index = v_uint16()
self.Depth = v_uint16()
- self.BackTrace = v_bytes(size=128) # FIXME Unknown Array Type
+ self.BackTrace = v_bytes(size=128) # FIXME Unknown Array Type
class OBJECT_DUMP_CONTROL(vstruct.VStruct):
@@ -2358,7 +2358,7 @@ def __init__(self):
self.Data1 = v_uint32()
self.Data2 = v_uint16()
self.Data3 = v_uint16()
- self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
class HANDLE_TRACE_DB_ENTRY(vstruct.VStruct):
@@ -2367,13 +2367,13 @@ def __init__(self):
self.ClientId = CLIENT_ID()
self.Handle = v_ptr32()
self.Type = v_uint32()
- self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
class KAPC_STATE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.ApcListHead = v_bytes(size=64) # FIXME Unknown Array Type
+ self.ApcListHead = v_bytes(size=64) # FIXME Unknown Array Type
self.Process = v_ptr32()
self.KernelApcInProgress = v_uint8()
self.KernelApcPending = v_uint8()
@@ -2420,7 +2420,7 @@ def __init__(self):
self.RealDevice = v_ptr32()
self.SerialNumber = v_uint32()
self.ReferenceCount = v_uint32()
- self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
+ self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
class IO_STACK_LOCATION(vstruct.VStruct):
@@ -2468,7 +2468,7 @@ def __init__(self):
self.ProcessorMask = v_uint32()
self.Color = v_uint32()
self.MmShiftedColor = v_uint32()
- self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
+ self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
self._pad0018 = v_bytes(size=4)
self.DeadStackList = SLIST_HEADER()
self.PfnDereferenceSListHead = SLIST_HEADER()
@@ -2537,17 +2537,17 @@ def __init__(self):
self.TimeZoneBias = KSYSTEM_TIME()
self.ImageNumberLow = v_uint16()
self.ImageNumberHigh = v_uint16()
- self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
+ self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
self.MaxStackTraceDepth = v_uint32()
self.CryptoExponent = v_uint32()
self.TimeZoneId = v_uint32()
- self.Reserved2 = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=32) # FIXME Unknown Array Type
self.NtProductType = v_uint32()
self.ProductTypeIsValid = v_uint8()
self._pad026c = v_bytes(size=3)
self.NtMajorVersion = v_uint32()
self.NtMinorVersion = v_uint32()
- self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
+ self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
self.Reserved1 = v_uint32()
self.Reserved3 = v_uint32()
self.TimeSlip = v_uint32()
@@ -2570,7 +2570,7 @@ def __init__(self):
self.TestRetInstruction = v_uint64()
self.SystemCall = v_uint32()
self.SystemCallReturn = v_uint32()
- self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
self.TickCount = KSYSTEM_TIME()
self._pad0330 = v_bytes(size=4)
self.Cookie = v_uint32()
@@ -2586,7 +2586,7 @@ def __init__(self):
self.ErrorSelector = v_uint32()
self.DataOffset = v_uint32()
self.DataSelector = v_uint32()
- self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
class KSPECIAL_REGISTERS(vstruct.VStruct):
@@ -2606,7 +2606,7 @@ def __init__(self):
self.Idtr = DESCRIPTOR()
self.Tr = v_uint16()
self.Ldtr = v_uint16()
- self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
class FS_FILTER_PARAMETERS(vstruct.VStruct):
@@ -2640,7 +2640,7 @@ def __init__(self):
self.AlignRound = v_uint32()
self.AlignMask = v_uint32()
self.VirtualAllocdBlocks = LIST_ENTRY()
- self.Segments = v_bytes(size=256) # FIXME Unknown Array Type
+ self.Segments = v_bytes(size=256) # FIXME Unknown Array Type
self.u = unnamed()
self.u2 = unnamed()
self.AllocatorBackTraceIndex = v_uint16()
@@ -2697,8 +2697,8 @@ def __init__(self):
self.RundownProtect = EX_RUNDOWN_REF()
self.UniqueProcessId = v_ptr32()
self.ActiveProcessLinks = LIST_ENTRY()
- self.QuotaUsage = v_bytes(size=12) # FIXME Unknown Array Type
- self.QuotaPeak = v_bytes(size=12) # FIXME Unknown Array Type
+ self.QuotaUsage = v_bytes(size=12) # FIXME Unknown Array Type
+ self.QuotaPeak = v_bytes(size=12) # FIXME Unknown Array Type
self.CommitCharge = v_uint32()
self.PeakVirtualSize = v_uint32()
self.VirtualSize = v_uint32()
@@ -2734,7 +2734,7 @@ def __init__(self):
self.PageDirectoryPte = HARDWARE_PTE_X86()
self._pad0170 = v_bytes(size=4)
self.Session = v_ptr32()
- self.ImageFileName = v_bytes(size=16) # FIXME Unknown Array Type
+ self.ImageFileName = v_bytes(size=16) # FIXME Unknown Array Type
self.JobLinks = LIST_ENTRY()
self.LockedPagesList = v_ptr32()
self.ThreadListHead = LIST_ENTRY()
@@ -2860,7 +2860,7 @@ def __init__(self):
self.InterfaceType = v_uint32()
self.BusNumber = v_uint32()
self.SlotNumber = v_uint32()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
self.AlternativeLists = v_uint32()
self.List = v_uint32()
@@ -2872,6 +2872,3 @@ def __init__(self):
self.ShareDisposition = v_uint8()
self.Flags = v_uint16()
self.u = unnamed()
-
-
-
diff --git a/vstruct/defs/windows/win_5_1_i386/ntoskrnl.py b/vstruct/defs/windows/win_5_1_i386/ntoskrnl.py
index d0d3618..c22bc3f 100644
--- a/vstruct/defs/windows/win_5_1_i386/ntoskrnl.py
+++ b/vstruct/defs/windows/win_5_1_i386/ntoskrnl.py
@@ -598,7 +598,7 @@ def __init__(self):
self.Revision = v_uint8()
self.SubAuthorityCount = v_uint8()
self.IdentifierAuthority = SID_IDENTIFIER_AUTHORITY()
- self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
class MMPTE_HARDWARE(vstruct.VStruct):
@@ -628,7 +628,7 @@ def __init__(self):
self.Esp0 = v_uint32()
self.Ss0 = v_uint16()
self.Reserved1 = v_uint16()
- self.NotUsed1 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.NotUsed1 = v_bytes(size=16) # FIXME Unknown Array Type
self.CR3 = v_uint32()
self.Eip = v_uint32()
self.EFlags = v_uint32()
@@ -657,7 +657,7 @@ def __init__(self):
self.Flags = v_uint16()
self.IoMapBase = v_uint16()
self.IoMaps = v_uint16()
- self.IntDirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
+ self.IntDirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
class CURDIR(vstruct.VStruct):
@@ -694,7 +694,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Revision = v_uint32()
self.DynamicThrottle = v_uint8()
- self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
self.DisableCStates = v_uint32()
self.PolicyCount = v_uint32()
self.Policy = v_uint32()
@@ -818,7 +818,7 @@ def __init__(self):
self.ExceptionAddress = v_uint64()
self.NumberParameters = v_uint32()
self.unusedAlignment = v_uint32()
- self.ExceptionInformation = v_bytes(size=120) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=120) # FIXME Unknown Array Type
class KPROCESS(vstruct.VStruct):
@@ -826,7 +826,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Header = DISPATCHER_HEADER()
self.ProfileListHead = LIST_ENTRY()
- self.DirectoryTableBase = v_bytes(size=8) # FIXME Unknown Array Type
+ self.DirectoryTableBase = v_bytes(size=8) # FIXME Unknown Array Type
self.LdtDescriptor = KGDTENTRY()
self.Int21Descriptor = KIDTENTRY()
self.IopmOffset = v_uint16()
@@ -905,7 +905,7 @@ def __init__(self):
self.FreeMisses = v_uint32()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Counters = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Counters = v_bytes(size=8) # FIXME Unknown Array Type
class MMPTE_TRANSITION(vstruct.VStruct):
@@ -944,7 +944,7 @@ def __init__(self):
self.Mode = v_uint32()
self.ServiceCount = v_uint32()
self.DispatchCount = v_uint32()
- self.DispatchCode = v_bytes(size=424) # FIXME Unknown Array Type
+ self.DispatchCode = v_bytes(size=424) # FIXME Unknown Array Type
class OWNER_ENTRY(vstruct.VStruct):
@@ -1024,7 +1024,7 @@ def __init__(self):
self.PeakNonPagedBytes = v_uint32()
self.BurstAllocationsFailedDeliberately = v_uint32()
self.SessionTrims = v_uint32()
- self.Reserved = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=8) # FIXME Unknown Array Type
class MAILSLOT_CREATE_PARAMETERS(vstruct.VStruct):
@@ -1106,7 +1106,7 @@ class SYSTEM_POWER_LEVEL(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Enable = v_uint8()
- self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
self.BatteryLevel = v_uint32()
self.PowerPolicy = POWER_ACTION_POLICY()
self.MinSystemState = v_uint32()
@@ -1225,7 +1225,7 @@ class CM_INDEX_HINT_BLOCK(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Count = v_uint32()
- self.HashKey = v_bytes(size=4) # FIXME Unknown Array Type
+ self.HashKey = v_bytes(size=4) # FIXME Unknown Array Type
class SEP_AUDIT_POLICY(vstruct.VStruct):
@@ -1380,9 +1380,9 @@ def __init__(self):
self.ThreadOwner = v_ptr32()
self.ResourceList = LIST_ENTRY()
self.HashChainList = LIST_ENTRY()
- self.StackTrace = v_bytes(size=32) # FIXME Unknown Array Type
- self.LastAcquireTrace = v_bytes(size=32) # FIXME Unknown Array Type
- self.LastReleaseTrace = v_bytes(size=32) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=32) # FIXME Unknown Array Type
+ self.LastAcquireTrace = v_bytes(size=32) # FIXME Unknown Array Type
+ self.LastReleaseTrace = v_bytes(size=32) # FIXME Unknown Array Type
class HEAP_PSEUDO_TAG_ENTRY(vstruct.VStruct):
@@ -1426,7 +1426,7 @@ def __init__(self):
self.PromoteLimit = v_uint32()
self.DemotePercent = v_uint8()
self.PromotePercent = v_uint8()
- self.Spare = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=2) # FIXME Unknown Array Type
self.AllowDemotion = v_uint32()
@@ -1551,7 +1551,7 @@ def __init__(self):
self.RealDevice = v_ptr32()
self.SerialNumber = v_uint32()
self.ReferenceCount = v_uint32()
- self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
+ self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
class SEGMENT(vstruct.VStruct):
@@ -1605,17 +1605,17 @@ def __init__(self):
self.TimeZoneBias = KSYSTEM_TIME()
self.ImageNumberLow = v_uint16()
self.ImageNumberHigh = v_uint16()
- self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
+ self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
self.MaxStackTraceDepth = v_uint32()
self.CryptoExponent = v_uint32()
self.TimeZoneId = v_uint32()
- self.Reserved2 = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=32) # FIXME Unknown Array Type
self.NtProductType = v_uint32()
self.ProductTypeIsValid = v_uint8()
self._pad026c = v_bytes(size=3)
self.NtMajorVersion = v_uint32()
self.NtMinorVersion = v_uint32()
- self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
+ self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
self.Reserved1 = v_uint32()
self.Reserved3 = v_uint32()
self.TimeSlip = v_uint32()
@@ -1638,7 +1638,7 @@ def __init__(self):
self.TestRetInstruction = v_uint64()
self.SystemCall = v_uint32()
self.SystemCallReturn = v_uint32()
- self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
self.TickCount = KSYSTEM_TIME()
self._pad0330 = v_bytes(size=4)
self.Cookie = v_uint32()
@@ -1690,7 +1690,7 @@ def __init__(self):
self.AlignRound = v_uint32()
self.AlignMask = v_uint32()
self.VirtualAllocdBlocks = LIST_ENTRY()
- self.Segments = v_bytes(size=256) # FIXME Unknown Array Type
+ self.Segments = v_bytes(size=256) # FIXME Unknown Array Type
self.u = unnamed()
self.u2 = unnamed()
self.AllocatorBackTraceIndex = v_uint16()
@@ -1738,8 +1738,8 @@ def __init__(self):
self.RundownProtect = EX_RUNDOWN_REF()
self.UniqueProcessId = v_ptr32()
self.ActiveProcessLinks = LIST_ENTRY()
- self.QuotaUsage = v_bytes(size=12) # FIXME Unknown Array Type
- self.QuotaPeak = v_bytes(size=12) # FIXME Unknown Array Type
+ self.QuotaUsage = v_bytes(size=12) # FIXME Unknown Array Type
+ self.QuotaPeak = v_bytes(size=12) # FIXME Unknown Array Type
self.CommitCharge = v_uint32()
self.PeakVirtualSize = v_uint32()
self.VirtualSize = v_uint32()
@@ -1775,7 +1775,7 @@ def __init__(self):
self.PageDirectoryPte = HARDWARE_PTE()
self._pad0170 = v_bytes(size=4)
self.Session = v_ptr32()
- self.ImageFileName = v_bytes(size=16) # FIXME Unknown Array Type
+ self.ImageFileName = v_bytes(size=16) # FIXME Unknown Array Type
self.JobLinks = LIST_ENTRY()
self.LockedPagesList = v_ptr32()
self.ThreadListHead = LIST_ENTRY()
@@ -1828,7 +1828,7 @@ def __init__(self):
self.NotifyBlock = v_ptr32()
self.ProcessID = v_ptr32()
self.Callers = v_uint32()
- self.CallerAddress = v_bytes(size=40) # FIXME Unknown Array Type
+ self.CallerAddress = v_bytes(size=40) # FIXME Unknown Array Type
self.KeyBodyList = LIST_ENTRY()
@@ -1965,7 +1965,7 @@ def __init__(self):
self.MaxStateChange = v_uint8()
self.MaxManipulate = v_uint8()
self.Simulation = v_uint8()
- self.Unused = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Unused = v_bytes(size=2) # FIXME Unknown Array Type
self.KernBase = v_uint64()
self.PsLoadedModuleList = v_uint64()
self.DebuggerDataList = v_uint64()
@@ -2054,8 +2054,8 @@ def __init__(self):
self.HighestPermittedHashAddress = v_ptr32()
self.NumberOfImageWaiters = v_uint32()
self.VadBitMapHint = v_uint32()
- self.UsedPageTableEntries = v_bytes(size=1536) # FIXME Unknown Array Type
- self.CommittedPageTables = v_bytes(size=96) # FIXME Unknown Array Type
+ self.UsedPageTableEntries = v_bytes(size=1536) # FIXME Unknown Array Type
+ self.CommittedPageTables = v_bytes(size=96) # FIXME Unknown Array Type
class POP_THERMAL_ZONE(vstruct.VStruct):
@@ -2143,7 +2143,7 @@ def __init__(self):
self.Idtr = DESCRIPTOR()
self.Tr = v_uint16()
self.Ldtr = v_uint16()
- self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
class POWER_ACTION_POLICY(vstruct.VStruct):
@@ -2200,7 +2200,7 @@ def __init__(self):
self.ErrorSelector = v_uint32()
self.DataOffset = v_uint32()
self.DataSelector = v_uint32()
- self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
self.Cr0NpxState = v_uint32()
@@ -2260,7 +2260,7 @@ def __init__(self):
self.ControlArea = v_ptr32()
self.FileResource = v_ptr32()
self.Mdl = MDL()
- self.Page = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Page = v_bytes(size=4) # FIXME Unknown Array Type
class CACHED_CHILD_LIST(vstruct.VStruct):
@@ -2282,7 +2282,7 @@ def __init__(self):
self.KernelStack = v_ptr32()
self.DebugActive = v_uint8()
self.State = v_uint8()
- self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
self.Iopl = v_uint8()
self.NpxState = v_uint8()
self.Saturation = v_uint8()
@@ -2290,7 +2290,7 @@ def __init__(self):
self.ApcState = KAPC_STATE()
self.ContextSwitches = v_uint32()
self.IdleSwapBlock = v_uint8()
- self.Spare0 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare0 = v_bytes(size=3) # FIXME Unknown Array Type
self.WaitStatus = v_uint32()
self.WaitIrql = v_uint8()
self.WaitMode = v_uint8()
@@ -2326,7 +2326,7 @@ def __init__(self):
self.CallbackStack = v_ptr32()
self.Win32Thread = v_ptr32()
self.TrapFrame = v_ptr32()
- self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
self.PreviousMode = v_uint8()
self.EnableStackSwap = v_uint8()
self.LargeStack = v_uint8()
@@ -2380,7 +2380,7 @@ def __init__(self):
self.EFlags = v_uint32()
self.Esp = v_uint32()
self.SegSs = v_uint32()
- self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
+ self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
class DBGKD_GET_CONTEXT(vstruct.VStruct):
@@ -2446,7 +2446,7 @@ def __init__(self):
self.CriticalSection = RTL_CRITICAL_SECTION()
self.RtlHandleTable = RTL_HANDLE_TABLE()
self.NumberOfBuckets = v_uint32()
- self.Buckets = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Buckets = v_bytes(size=4) # FIXME Unknown Array Type
class IMAGE_ROM_OPTIONAL_HEADER(vstruct.VStruct):
@@ -2463,7 +2463,7 @@ def __init__(self):
self.BaseOfData = v_uint32()
self.BaseOfBss = v_uint32()
self.GprMask = v_uint32()
- self.CprMask = v_bytes(size=16) # FIXME Unknown Array Type
+ self.CprMask = v_bytes(size=16) # FIXME Unknown Array Type
self.GpValue = v_uint32()
@@ -2532,7 +2532,7 @@ def __init__(self):
self.InterruptTime = v_uint64()
self.FeatureFlags = v_uint32()
self.HiberFlags = v_uint8()
- self.spare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.spare = v_bytes(size=3) # FIXME Unknown Array Type
self.NoHiberPtes = v_uint32()
self.HiberVa = v_uint32()
self.HiberPte = LARGE_INTEGER()
@@ -2673,8 +2673,8 @@ def __init__(self):
class KiIoAccessMap(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.DirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
- self.IoMap = v_bytes(size=8196) # FIXME Unknown Array Type
+ self.DirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
+ self.IoMap = v_bytes(size=8196) # FIXME Unknown Array Type
class KAPC(vstruct.VStruct):
@@ -2707,7 +2707,7 @@ def __init__(self):
class SID_IDENTIFIER_AUTHORITY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Value = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Value = v_bytes(size=6) # FIXME Unknown Array Type
class RTL_RANGE_LIST(vstruct.VStruct):
@@ -2765,7 +2765,7 @@ def __init__(self):
self.SectionSize = LARGE_INTEGER()
self.ValidDataLength = LARGE_INTEGER()
self.ValidDataGoal = LARGE_INTEGER()
- self.InitialVacbs = v_bytes(size=16) # FIXME Unknown Array Type
+ self.InitialVacbs = v_bytes(size=16) # FIXME Unknown Array Type
self.Vacbs = v_ptr32()
self.FileObject = v_ptr32()
self.ActiveVacb = v_ptr32()
@@ -2853,7 +2853,7 @@ def __init__(self):
self.ProcessLocksList = LIST_ENTRY()
self.EntryCount = v_uint32()
self.ContentionCount = v_uint32()
- self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
class PNP_DEVICE_EVENT_ENTRY(vstruct.VStruct):
@@ -2888,9 +2888,9 @@ def __init__(self):
class VI_DEADLOCK_GLOBALS(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Nodes = v_bytes(size=8) # FIXME Unknown Array Type
- self.Resources = v_bytes(size=8) # FIXME Unknown Array Type
- self.Threads = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Nodes = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Resources = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Threads = v_bytes(size=8) # FIXME Unknown Array Type
self.TimeAcquire = v_uint64()
self.TimeRelease = v_uint64()
self.BytesAllocated = v_uint32()
@@ -2915,7 +2915,7 @@ def __init__(self):
self.FreeNodeCount = v_uint32()
self.Instigator = v_ptr32()
self.NumberOfParticipants = v_uint32()
- self.Participant = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Participant = v_bytes(size=128) # FIXME Unknown Array Type
self.CacheReductionInProgress = v_uint32()
@@ -3007,8 +3007,8 @@ def __init__(self):
self.PackageIdleTime = v_uint32()
self.DebugCount = v_uint32()
self.LastSysTime = v_uint32()
- self.TotalIdleStateTime = v_bytes(size=24) # FIXME Unknown Array Type
- self.TotalIdleTransitions = v_bytes(size=12) # FIXME Unknown Array Type
+ self.TotalIdleStateTime = v_bytes(size=24) # FIXME Unknown Array Type
+ self.TotalIdleTransitions = v_bytes(size=12) # FIXME Unknown Array Type
self._pad0090 = v_bytes(size=4)
self.PreviousC3StateTime = v_uint64()
self.KneeThrottleIndex = v_uint8()
@@ -3112,7 +3112,7 @@ def __init__(self):
self.ClusterShift = v_uint8()
self.Reserved = v_uint8()
self.NumberOfChunks = v_uint16()
- self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
+ self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
class PEB_FREE_BLOCK(vstruct.VStruct):
@@ -3126,7 +3126,7 @@ class CMHIVE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Hive = HHIVE()
- self.FileHandles = v_bytes(size=12) # FIXME Unknown Array Type
+ self.FileHandles = v_bytes(size=12) # FIXME Unknown Array Type
self.NotifyList = LIST_ENTRY()
self.HiveList = LIST_ENTRY()
self.HiveLock = v_ptr32()
@@ -3227,7 +3227,7 @@ def __init__(self):
class PCI_HEADER_TYPE_1(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.BaseAddresses = v_bytes(size=8) # FIXME Unknown Array Type
+ self.BaseAddresses = v_bytes(size=8) # FIXME Unknown Array Type
self.PrimaryBus = v_uint8()
self.SecondaryBus = v_uint8()
self.SubordinateBus = v_uint8()
@@ -3244,7 +3244,7 @@ def __init__(self):
self.IOBaseUpper16 = v_uint16()
self.IOLimitUpper16 = v_uint16()
self.CapabilitiesPtr = v_uint8()
- self.Reserved1 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved1 = v_bytes(size=3) # FIXME Unknown Array Type
self.ROMBaseAddress = v_uint32()
self.InterruptLine = v_uint8()
self.InterruptPin = v_uint8()
@@ -3254,13 +3254,13 @@ def __init__(self):
class PCI_HEADER_TYPE_0(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.BaseAddresses = v_bytes(size=24) # FIXME Unknown Array Type
+ self.BaseAddresses = v_bytes(size=24) # FIXME Unknown Array Type
self.CIS = v_uint32()
self.SubVendorID = v_uint16()
self.SubSystemID = v_uint16()
self.ROMBaseAddress = v_uint32()
self.CapabilitiesPtr = v_uint8()
- self.Reserved1 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved1 = v_bytes(size=3) # FIXME Unknown Array Type
self.Reserved2 = v_uint32()
self.InterruptLine = v_uint8()
self.InterruptPin = v_uint8()
@@ -3297,7 +3297,7 @@ def __init__(self):
self.ClientId = CLIENT_ID()
self.Handle = v_ptr32()
self.Type = v_uint32()
- self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
class LPCP_NONPAGED_PORT_QUEUE(vstruct.VStruct):
@@ -3311,7 +3311,7 @@ class DEVICE_RELATIONS(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Count = v_uint32()
- self.Objects = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Objects = v_bytes(size=4) # FIXME Unknown Array Type
class HEAP_TAG_ENTRY(vstruct.VStruct):
@@ -3322,7 +3322,7 @@ def __init__(self):
self.Size = v_uint32()
self.TagIndex = v_uint16()
self.CreatorBackTraceIndex = v_uint16()
- self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
+ self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
class MMPAGING_FILE(vstruct.VStruct):
@@ -3336,7 +3336,7 @@ def __init__(self):
self.PeakUsage = v_uint32()
self.Hint = v_uint32()
self.HighestPage = v_uint32()
- self.Entry = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Entry = v_bytes(size=8) # FIXME Unknown Array Type
self.Bitmap = v_ptr32()
self.File = v_ptr32()
self.PageFileName = UNICODE_STRING()
@@ -3366,7 +3366,7 @@ def __init__(self):
self.ErrorSelector = v_uint32()
self.DataOffset = v_uint32()
self.DataSelector = v_uint32()
- self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
class CMP_OFFSET_ARRAY(vstruct.VStruct):
@@ -3387,7 +3387,7 @@ def __init__(self):
self.Type = v_uint32()
self.Flags = v_uint16()
self.Spare = v_uint16()
- self.Name = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=2) # FIXME Unknown Array Type
class MMVAD_FLAGS2(vstruct.VStruct):
@@ -3484,7 +3484,7 @@ def __init__(self):
class HMAP_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Directory = v_bytes(size=4096) # FIXME Unknown Array Type
+ self.Directory = v_bytes(size=4096) # FIXME Unknown Array Type
class DBGKD_LOAD_SYMBOLS64(vstruct.VStruct):
@@ -3535,7 +3535,7 @@ def __init__(self):
self.Priority = v_uint32()
self.Flags = v_uint32()
self.Descriptor = v_ptr32()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
class EX_FAST_REF(vstruct.VStruct):
@@ -3606,7 +3606,7 @@ def __init__(self):
class EX_PUSH_LOCK_CACHE_AWARE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Locks = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Locks = v_bytes(size=4) # FIXME Unknown Array Type
class THERMAL_INFORMATION(vstruct.VStruct):
@@ -3622,7 +3622,7 @@ def __init__(self):
self.CriticalTripPoint = v_uint32()
self.ActiveTripPointCount = v_uint8()
self._pad0024 = v_bytes(size=3)
- self.ActiveTripPoint = v_bytes(size=40) # FIXME Unknown Array Type
+ self.ActiveTripPoint = v_bytes(size=40) # FIXME Unknown Array Type
class CLIENT_ID(vstruct.VStruct):
@@ -3769,7 +3769,7 @@ def __init__(self):
self.ImageList = LIST_ENTRY()
self.GlobalPteEntry = v_ptr32()
self.CopyOnWriteCount = v_uint32()
- self.SessionPoolAllocationFailures = v_bytes(size=16) # FIXME Unknown Array Type
+ self.SessionPoolAllocationFailures = v_bytes(size=16) # FIXME Unknown Array Type
self.AttachCount = v_uint32()
self.AttachEvent = KEVENT()
self.LastProcess = v_ptr32()
@@ -3856,7 +3856,7 @@ def __init__(self):
self.HeaderType = v_uint8()
self.BIST = v_uint8()
self.u = unnamed()
- self.DeviceSpecific = v_bytes(size=192) # FIXME Unknown Array Type
+ self.DeviceSpecific = v_bytes(size=192) # FIXME Unknown Array Type
class IO_SECURITY_CONTEXT(vstruct.VStruct):
@@ -3888,7 +3888,7 @@ def __init__(self):
self.IdleTimeout = v_uint32()
self.IdleSensitivity = v_uint8()
self.DynamicThrottle = v_uint8()
- self.Spare2 = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Spare2 = v_bytes(size=2) # FIXME Unknown Array Type
self.MinSleep = v_uint32()
self.MaxSleep = v_uint32()
self.ReducedLatencySleep = v_uint32()
@@ -3900,7 +3900,7 @@ def __init__(self):
self.VideoTimeout = v_uint32()
self.VideoDimDisplay = v_uint8()
self._pad00c8 = v_bytes(size=3)
- self.VideoReserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.VideoReserved = v_bytes(size=12) # FIXME Unknown Array Type
self.SpindownTimeout = v_uint32()
self.OptimizeForPower = v_uint8()
self.FanThrottleTolerance = v_uint8()
@@ -3992,7 +3992,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.StartTime = v_uint64()
self.EndTime = v_uint64()
- self.IdleHandlerReserved = v_bytes(size=16) # FIXME Unknown Array Type
+ self.IdleHandlerReserved = v_bytes(size=16) # FIXME Unknown Array Type
class KWAIT_BLOCK(vstruct.VStruct):
@@ -4066,7 +4066,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.MaximumNumberOfHandles = v_uint32()
self.SizeOfHandleTableEntry = v_uint32()
- self.Reserved = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=8) # FIXME Unknown Array Type
self.FreeHandles = v_ptr32()
self.CommittedHandles = v_ptr32()
self.UnCommittedHandles = v_ptr32()
@@ -4174,7 +4174,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class ARBITER_ORDERING_LIST(vstruct.VStruct):
@@ -4205,10 +4205,10 @@ def __init__(self):
self.DataSelector = v_uint32()
self.MXCsr = v_uint32()
self.MXCsrMask = v_uint32()
- self.RegisterArea = v_bytes(size=128) # FIXME Unknown Array Type
- self.Reserved3 = v_bytes(size=128) # FIXME Unknown Array Type
- self.Reserved4 = v_bytes(size=224) # FIXME Unknown Array Type
- self.Align16Byte = v_bytes(size=8) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Reserved3 = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Reserved4 = v_bytes(size=224) # FIXME Unknown Array Type
+ self.Align16Byte = v_bytes(size=8) # FIXME Unknown Array Type
class ARBITER_LIST_ENTRY(vstruct.VStruct):
@@ -4337,7 +4337,7 @@ def __init__(self):
self.BusData = v_ptr32()
self.DeviceControlExtensionSize = v_uint32()
self.BusAddresses = v_ptr32()
- self.Reserved = v_bytes(size=16) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=16) # FIXME Unknown Array Type
self.GetBusData = v_ptr32()
self.SetBusData = v_ptr32()
self.AdjustResourceList = v_ptr32()
@@ -4380,12 +4380,12 @@ def __init__(self):
self.FastPebUnlockRoutine = v_ptr32()
self.EnvironmentUpdateCount = v_uint32()
self.KernelCallbackTable = v_ptr32()
- self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
self.AtlThunkSListPtr32 = v_uint32()
self.FreeList = v_ptr32()
self.TlsExpansionCounter = v_uint32()
self.TlsBitmap = v_ptr32()
- self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
+ self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
self.ReadOnlySharedMemoryBase = v_ptr32()
self.ReadOnlySharedMemoryHeap = v_ptr32()
self.ReadOnlyStaticServerData = v_ptr32()
@@ -4416,10 +4416,10 @@ def __init__(self):
self.ImageSubsystemMajorVersion = v_uint32()
self.ImageSubsystemMinorVersion = v_uint32()
self.ImageProcessAffinityMask = v_uint32()
- self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
+ self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
self.PostProcessInitRoutine = v_ptr32()
self.TlsExpansionBitmap = v_ptr32()
- self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
self.SessionId = v_uint32()
self.AppCompatFlags = ULARGE_INTEGER()
self.AppCompatFlagsUser = ULARGE_INTEGER()
@@ -4472,10 +4472,10 @@ def __init__(self):
self.RootCell = v_uint32()
self.Length = v_uint32()
self.Cluster = v_uint32()
- self.FileName = v_bytes(size=64) # FIXME Unknown Array Type
- self.Reserved1 = v_bytes(size=396) # FIXME Unknown Array Type
+ self.FileName = v_bytes(size=64) # FIXME Unknown Array Type
+ self.Reserved1 = v_bytes(size=396) # FIXME Unknown Array Type
self.CheckSum = v_uint32()
- self.Reserved2 = v_bytes(size=3576) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=3576) # FIXME Unknown Array Type
self.BootType = v_uint32()
self.BootRecover = v_uint32()
@@ -4530,7 +4530,7 @@ def __init__(self):
self.Header = PCI_SECONDARY_EXTENSION()
self.Interface = v_ptr32()
self.BusFdoExtension = v_ptr32()
- self.InstanceName = v_bytes(size=48) # FIXME Unknown Array Type
+ self.InstanceName = v_bytes(size=48) # FIXME Unknown Array Type
self.CommonInstance = ARBITER_INSTANCE()
@@ -4584,7 +4584,7 @@ class POOL_HACKER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Header = POOL_HEADER()
- self.Contents = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Contents = v_bytes(size=32) # FIXME Unknown Array Type
class HANDLE_TABLE(vstruct.VStruct):
@@ -4707,7 +4707,7 @@ def __init__(self):
self.PromotePercent = v_uint8()
self.DemotePercent = v_uint8()
self.State = v_uint8()
- self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
self.IdleFunction = v_ptr32()
@@ -4785,7 +4785,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Type = v_uint32()
self.Flags = v_uint8()
- self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=3) # FIXME Unknown Array Type
self.Battery = unnamed()
@@ -4803,7 +4803,7 @@ def __init__(self):
self.GlobalDosDevicesDirectory = v_ptr32()
self.ReferenceCount = v_uint32()
self.DriveMap = v_uint32()
- self.DriveType = v_bytes(size=32) # FIXME Unknown Array Type
+ self.DriveType = v_bytes(size=32) # FIXME Unknown Array Type
class CONTROL_AREA(vstruct.VStruct):
@@ -4830,13 +4830,13 @@ def __init__(self):
self.Data1 = v_uint32()
self.Data2 = v_uint16()
self.Data3 = v_uint16()
- self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
class KAPC_STATE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.ApcListHead = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ApcListHead = v_bytes(size=8) # FIXME Unknown Array Type
self.Process = v_ptr32()
self.KernelApcInProgress = v_uint8()
self.KernelApcPending = v_uint8()
@@ -4954,7 +4954,7 @@ def __init__(self):
self.DriverInit = v_ptr32()
self.DriverStartIo = v_ptr32()
self.DriverUnload = v_ptr32()
- self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
+ self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
class SECURITY_DESCRIPTOR_RELATIVE(vstruct.VStruct):
@@ -4975,9 +4975,9 @@ def __init__(self):
self.Length = v_uint32()
self.Reserved = v_uint32()
self.MemoryBlock = v_ptr32()
- self.CommonBuffer = v_bytes(size=8) # FIXME Unknown Array Type
+ self.CommonBuffer = v_bytes(size=8) # FIXME Unknown Array Type
self._pad0018 = v_bytes(size=4)
- self.PhysicalAddress = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PhysicalAddress = v_bytes(size=8) # FIXME Unknown Array Type
self.StallRoutine = v_ptr32()
self.OpenRoutine = v_ptr32()
self.WriteRoutine = v_ptr32()
@@ -5024,7 +5024,7 @@ def __init__(self):
class TOKEN_SOURCE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.SourceName = v_bytes(size=8) # FIXME Unknown Array Type
+ self.SourceName = v_bytes(size=8) # FIXME Unknown Array Type
self.SourceIdentifier = LUID()
@@ -5075,11 +5075,11 @@ def __init__(self):
self.CpuID = v_uint8()
self.CpuStep = v_uint16()
self.ProcessorState = KPROCESSOR_STATE()
- self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
- self.PrcbPad0 = v_bytes(size=92) # FIXME Unknown Array Type
- self.LockQueue = v_bytes(size=92) # FIXME Unknown Array Type
- self.PrcbPad1 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.PrcbPad0 = v_bytes(size=92) # FIXME Unknown Array Type
+ self.LockQueue = v_bytes(size=92) # FIXME Unknown Array Type
+ self.PrcbPad1 = v_bytes(size=8) # FIXME Unknown Array Type
self.NpxThread = v_ptr32()
self.InterruptCount = v_uint32()
self.KernelTime = v_uint32()
@@ -5091,11 +5091,11 @@ def __init__(self):
self.PageColor = v_uint32()
self.SkipTick = v_uint32()
self.MultiThreadSetBusy = v_uint8()
- self.Spare2 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Spare2 = v_bytes(size=3) # FIXME Unknown Array Type
self.ParentNode = v_ptr32()
self.MultiThreadProcessorSet = v_uint32()
self.MultiThreadSetMaster = v_ptr32()
- self.ThreadStartCount = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ThreadStartCount = v_bytes(size=8) # FIXME Unknown Array Type
self.CcFastReadNoWait = v_uint32()
self.CcFastReadWait = v_uint32()
self.CcFastReadNotPossible = v_uint32()
@@ -5111,22 +5111,22 @@ def __init__(self):
self.KeIcacheFlushCount = v_uint32()
self.KeSecondLevelTbFills = v_uint32()
self.KeSystemCalls = v_uint32()
- self.SpareCounter0 = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPNPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
- self.PPPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SpareCounter0 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPNPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PPPagedLookasideList = v_bytes(size=4) # FIXME Unknown Array Type
self.PacketBarrier = v_uint32()
self.ReverseStall = v_uint32()
self.IpiFrame = v_ptr32()
- self.PrcbPad2 = v_bytes(size=52) # FIXME Unknown Array Type
- self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
+ self.PrcbPad2 = v_bytes(size=52) # FIXME Unknown Array Type
+ self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
self.TargetSet = v_uint32()
self.WorkerRoutine = v_ptr32()
self.IpiFrozen = v_uint32()
- self.PrcbPad3 = v_bytes(size=40) # FIXME Unknown Array Type
+ self.PrcbPad3 = v_bytes(size=40) # FIXME Unknown Array Type
self.RequestSummary = v_uint32()
self.SignalDone = v_ptr32()
- self.PrcbPad4 = v_bytes(size=56) # FIXME Unknown Array Type
+ self.PrcbPad4 = v_bytes(size=56) # FIXME Unknown Array Type
self.DpcListHead = LIST_ENTRY()
self.DpcStack = v_ptr32()
self.DpcCount = v_uint32()
@@ -5138,14 +5138,14 @@ def __init__(self):
self.MaximumDpcQueueDepth = v_uint32()
self.MinimumDpcRate = v_uint32()
self.QuantumEnd = v_uint32()
- self.PrcbPad5 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.PrcbPad5 = v_bytes(size=16) # FIXME Unknown Array Type
self.DpcLock = v_uint32()
- self.PrcbPad6 = v_bytes(size=28) # FIXME Unknown Array Type
+ self.PrcbPad6 = v_bytes(size=28) # FIXME Unknown Array Type
self.CallDpc = KDPC()
self.ChainedInterruptList = v_ptr32()
self.LookasideIrpFloat = v_uint32()
- self.SpareFields0 = v_bytes(size=24) # FIXME Unknown Array Type
- self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
+ self.SpareFields0 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
self.InitialApicId = v_uint8()
self.LogicalProcessorsPerPhysicalProcessor = v_uint8()
self._pad0910 = v_bytes(size=1)
@@ -5201,7 +5201,7 @@ def __init__(self):
self.ExceptionRecord = v_ptr32()
self.ExceptionAddress = v_ptr32()
self.NumberParameters = v_uint32()
- self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
class MMPTE(vstruct.VStruct):
@@ -5220,8 +5220,8 @@ def __init__(self):
self.Root = v_ptr32()
self.ThreadEntry = v_ptr32()
self.Active = v_uint32()
- self.StackTrace = v_bytes(size=32) # FIXME Unknown Array Type
- self.ParentStackTrace = v_bytes(size=32) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=32) # FIXME Unknown Array Type
+ self.ParentStackTrace = v_bytes(size=32) # FIXME Unknown Array Type
class KPCR(vstruct.VStruct):
@@ -5248,13 +5248,13 @@ def __init__(self):
self.Spare0 = v_uint8()
self.SecondLevelCacheAssociativity = v_uint8()
self.VdmAlert = v_uint32()
- self.KernelReserved = v_bytes(size=56) # FIXME Unknown Array Type
+ self.KernelReserved = v_bytes(size=56) # FIXME Unknown Array Type
self.SecondLevelCacheSize = v_uint32()
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
self.InterruptMode = v_uint32()
self.Spare1 = v_uint8()
self._pad00dc = v_bytes(size=3)
- self.KernelReserved2 = v_bytes(size=68) # FIXME Unknown Array Type
+ self.KernelReserved2 = v_bytes(size=68) # FIXME Unknown Array Type
self.PrcbData = KPRCB()
@@ -5275,7 +5275,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Signature = v_uint16()
self.Count = v_uint16()
- self.List = v_bytes(size=4) # FIXME Unknown Array Type
+ self.List = v_bytes(size=4) # FIXME Unknown Array Type
class IMAGE_DEBUG_DIRECTORY(vstruct.VStruct):
@@ -5405,7 +5405,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Offset = v_uint32()
self.HDC = v_uint32()
- self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
+ self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
class WMI_CLIENT_CONTEXT(vstruct.VStruct):
@@ -5442,7 +5442,7 @@ def __init__(self):
class OBJECT_DIRECTORY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.HashBuckets = v_bytes(size=148) # FIXME Unknown Array Type
+ self.HashBuckets = v_bytes(size=148) # FIXME Unknown Array Type
self.Lock = EX_PUSH_LOCK()
self.DeviceMap = v_ptr32()
self.SessionId = v_uint32()
@@ -5594,7 +5594,7 @@ def __init__(self):
self.Spare1 = v_uint8()
self.LoaderFlags = v_uint32()
self.ImageFileSize = v_uint32()
- self.Reserved = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=4) # FIXME Unknown Array Type
class HEAP_SUBSEGMENT(vstruct.VStruct):
@@ -5653,7 +5653,7 @@ def __init__(self):
self.ReferenceCount = v_uint16()
self.Flags = v_uint8()
self.NameLength = v_uint8()
- self.Name = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=2) # FIXME Unknown Array Type
class CHILD_LIST(vstruct.VStruct):
@@ -5749,7 +5749,7 @@ def __init__(self):
self.FileOffset2 = LARGE_INTEGER()
self.BeyondLastByte2 = LARGE_INTEGER()
self.ReadAheadOffset = LARGE_INTEGER()
- self.ReadAheadLength = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ReadAheadLength = v_bytes(size=8) # FIXME Unknown Array Type
self.ReadAheadSpinLock = v_uint32()
self.PrivateLinks = LIST_ENTRY()
@@ -5764,7 +5764,7 @@ def __init__(self):
class IMAGE_SECTION_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Name = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=8) # FIXME Unknown Array Type
self.Misc = unnamed()
self.VirtualAddress = v_uint32()
self.SizeOfRawData = v_uint32()
@@ -5828,8 +5828,8 @@ def __init__(self):
self.LastWriteTime = LARGE_INTEGER()
self.Spare = v_uint32()
self.Parent = v_uint32()
- self.SubKeyCounts = v_bytes(size=8) # FIXME Unknown Array Type
- self.SubKeyLists = v_bytes(size=8) # FIXME Unknown Array Type
+ self.SubKeyCounts = v_bytes(size=8) # FIXME Unknown Array Type
+ self.SubKeyLists = v_bytes(size=8) # FIXME Unknown Array Type
self.ValueList = CHILD_LIST()
self.Security = v_uint32()
self.Class = v_uint32()
@@ -5840,7 +5840,7 @@ def __init__(self):
self.WorkVar = v_uint32()
self.NameLength = v_uint16()
self.ClassLength = v_uint16()
- self.Name = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=2) # FIXME Unknown Array Type
class SE_AUDIT_PROCESS_CREATION_INFO(vstruct.VStruct):
@@ -5890,24 +5890,24 @@ def __init__(self):
self.CountOfOwnedCriticalSections = v_uint32()
self.CsrClientThread = v_ptr32()
self.Win32ThreadInfo = v_ptr32()
- self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
- self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
+ self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
+ self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
self.WOW32Reserved = v_ptr32()
self.CurrentLocale = v_uint32()
self.FpSoftwareStatusRegister = v_uint32()
- self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
+ self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
self.ExceptionCode = v_uint32()
self.ActivationContextStack = ACTIVATION_CONTEXT_STACK()
- self.SpareBytes1 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SpareBytes1 = v_bytes(size=24) # FIXME Unknown Array Type
self.GdiTebBatch = GDI_TEB_BATCH()
self.RealClientId = CLIENT_ID()
self.GdiCachedProcessHandle = v_ptr32()
self.GdiClientPID = v_uint32()
self.GdiClientTID = v_uint32()
self.GdiThreadLocalInfo = v_ptr32()
- self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
- self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
- self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
+ self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
+ self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
+ self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
self.glReserved2 = v_ptr32()
self.glSectionInfo = v_ptr32()
self.glSection = v_ptr32()
@@ -5919,13 +5919,13 @@ def __init__(self):
self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
self._pad0e0c = v_bytes(size=2)
self.DeallocationStack = v_ptr32()
- self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
+ self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
self.TlsLinks = LIST_ENTRY()
self.Vdm = v_ptr32()
self.ReservedForNtRpc = v_ptr32()
- self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
+ self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
self.HardErrorsAreDisabled = v_uint32()
- self.Instrumentation = v_bytes(size=64) # FIXME Unknown Array Type
+ self.Instrumentation = v_bytes(size=64) # FIXME Unknown Array Type
self.WinSockData = v_ptr32()
self.GdiBatchCount = v_uint32()
self.InDbgPrint = v_uint8()
@@ -5946,7 +5946,7 @@ def __init__(self):
self.CurrentTransactionHandle = v_ptr32()
self.ActiveFrame = v_ptr32()
self.SafeThunkCall = v_uint8()
- self.BooleanSpare = v_bytes(size=3) # FIXME Unknown Array Type
+ self.BooleanSpare = v_bytes(size=3) # FIXME Unknown Array Type
class EX_RUNDOWN_REF(vstruct.VStruct):
@@ -6003,10 +6003,10 @@ def __init__(self):
self.e_cs = v_uint16()
self.e_lfarlc = v_uint16()
self.e_ovno = v_uint16()
- self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
+ self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
self.e_oemid = v_uint16()
self.e_oeminfo = v_uint16()
- self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
+ self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
self.e_lfanew = v_uint32()
@@ -6048,7 +6048,7 @@ def __init__(self):
self.ExceptionRecord = v_uint32()
self.ExceptionAddress = v_uint32()
self.NumberParameters = v_uint32()
- self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
class DBGKD_READ_MEMORY32(vstruct.VStruct):
@@ -6172,7 +6172,7 @@ def __init__(self):
self.ConvKey = v_uint32()
self.NextHash = v_ptr32()
self.NameLength = v_uint16()
- self.Name = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Name = v_bytes(size=2) # FIXME Unknown Array Type
class EX_PUSH_LOCK_WAIT_BLOCK(vstruct.VStruct):
@@ -6353,7 +6353,7 @@ def __init__(self):
self.ProcessorMask = v_uint32()
self.Color = v_uint32()
self.MmShiftedColor = v_uint32()
- self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
+ self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
self._pad0018 = v_bytes(size=4)
self.DeadStackList = SLIST_HEADER()
self.PfnDereferenceSListHead = SLIST_HEADER()
@@ -6382,9 +6382,9 @@ def __init__(self):
self.ProcessorThrottle = v_uint8()
self.ProcessorMinThrottle = v_uint8()
self.ProcessorMaxThrottle = v_uint8()
- self.spare2 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.spare2 = v_bytes(size=4) # FIXME Unknown Array Type
self.DiskSpinDown = v_uint8()
- self.spare3 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.spare3 = v_bytes(size=8) # FIXME Unknown Array Type
self.SystemBatteriesPresent = v_uint8()
self.BatteriesAreShortTerm = v_uint8()
self.BatteryScale = v_uint8()
@@ -6454,7 +6454,7 @@ def __init__(self):
self.InterfaceType = v_uint32()
self.BusNumber = v_uint32()
self.SlotNumber = v_uint32()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
self.AlternativeLists = v_uint32()
self.List = v_uint32()
diff --git a/vstruct/defs/windows/win_5_1_i386/win32k.py b/vstruct/defs/windows/win_5_1_i386/win32k.py
index ced38bc..30213dc 100644
--- a/vstruct/defs/windows/win_5_1_i386/win32k.py
+++ b/vstruct/defs/windows/win_5_1_i386/win32k.py
@@ -355,7 +355,8 @@ def __init__(self):
self.ReleaseForCcFlush = v_ptr32()
-class ACCESS_STATE::__unnamed(vstruct.VStruct):
+class ACCESS_STATE::__unnamed(vstruct.VStruct): # FIXME and others? Type annotation syntax may be wrong?
+ # FIXME see https://dev.to/dstarner/using-pythons-type-annotations-4cfe
def __init__(self):
vstruct.VStruct.__init__(self)
self.InitialPrivilegeSet = INITIAL_PRIVILEGE_SET()
diff --git a/vstruct/defs/windows/win_6_1_amd64/ntdll.py b/vstruct/defs/windows/win_6_1_amd64/ntdll.py
index a352a81..57945ef 100644
--- a/vstruct/defs/windows/win_6_1_amd64/ntdll.py
+++ b/vstruct/defs/windows/win_6_1_amd64/ntdll.py
@@ -646,7 +646,7 @@ def __init__(self):
self.Revision = v_uint8()
self.SubAuthorityCount = v_uint8()
self.IdentifierAuthority = SID_IDENTIFIER_AUTHORITY()
- self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
class WHEA_ERROR_PACKET_V2(vstruct.VStruct):
@@ -675,7 +675,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Mask = v_uint64()
self.Group = v_uint16()
- self.Reserved = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=6) # FIXME Unknown Array Type
class UMS_CONTROL_BLOCK(vstruct.VStruct):
@@ -699,14 +699,14 @@ def __init__(self):
class KREQUEST_PACKET(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.CurrentPacket = v_bytes(size=24) # FIXME Unknown Array Type
+ self.CurrentPacket = v_bytes(size=24) # FIXME Unknown Array Type
self.WorkerRoutine = v_ptr64()
class PERFINFO_GROUPMASK(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Masks = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Masks = v_bytes(size=32) # FIXME Unknown Array Type
class HARDWARE_PTE(vstruct.VStruct):
@@ -827,7 +827,7 @@ def __init__(self):
self.NextBlock = v_ptr64()
self.ExpectedEncodedEntry = HEAP_ENTRY()
self.ExpectedDecodedEntry = HEAP_ENTRY()
- self.StackTrace = v_bytes(size=256) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=256) # FIXME Unknown Array Type
class RTL_BALANCED_LINKS(vstruct.VStruct):
@@ -837,7 +837,7 @@ def __init__(self):
self.LeftChild = v_ptr64()
self.RightChild = v_ptr64()
self.Balance = v_uint8()
- self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
class _unnamed_9396(vstruct.VStruct):
@@ -863,8 +863,8 @@ def __init__(self):
self.QuantumReset = v_uint8()
self.Visited = v_uint8()
self.Unused3 = v_uint8()
- self.ThreadSeed = v_bytes(size=16) # FIXME Unknown Array Type
- self.IdealNode = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ThreadSeed = v_bytes(size=16) # FIXME Unknown Array Type
+ self.IdealNode = v_bytes(size=8) # FIXME Unknown Array Type
self.IdealGlobalNode = v_uint16()
self.Flags = KEXECUTE_OPTIONS()
self.Unused1 = v_uint8()
@@ -896,7 +896,7 @@ def __init__(self):
self.Size = v_uint64()
self.TagIndex = v_uint16()
self.CreatorBackTraceIndex = v_uint16()
- self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
+ self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
class WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS(vstruct.VStruct):
@@ -1047,7 +1047,7 @@ def __init__(self):
self.HashFunction = v_ptr64()
self.NoOfTraces = v_uint64()
self.NoOfHits = v_uint64()
- self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
class OWNER_ENTRY(vstruct.VStruct):
@@ -1085,7 +1085,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Hint = v_ptr64()
self.ActiveSubsegment = v_ptr64()
- self.CachedItems = v_bytes(size=128) # FIXME Unknown Array Type
+ self.CachedItems = v_bytes(size=128) # FIXME Unknown Array Type
self.SListHeader = SLIST_HEADER()
self.Counters = HEAP_BUCKET_COUNTERS()
self.LocalData = v_ptr64()
@@ -1223,8 +1223,8 @@ def __init__(self):
self.ResetCount = v_uint32()
self._pad0010 = v_bytes(size=4)
self.StartTime = v_uint64()
- self.BucketLimits = v_bytes(size=128) # FIXME Unknown Array Type
- self.State = v_bytes(size=128) # FIXME Unknown Array Type
+ self.BucketLimits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.State = v_bytes(size=128) # FIXME Unknown Array Type
class _unnamed_9636(vstruct.VStruct):
@@ -1242,7 +1242,7 @@ def __init__(self):
self.Offset = v_uint32()
self._pad0008 = v_bytes(size=4)
self.HDC = v_uint64()
- self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
+ self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
class THREAD_PERFORMANCE_DATA(vstruct.VStruct):
@@ -1345,7 +1345,7 @@ def __init__(self):
self.SegCs = v_uint16()
self.Fill0 = v_uint8()
self.Logging = v_uint8()
- self.Fill1 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Fill1 = v_bytes(size=4) # FIXME Unknown Array Type
self.EFlags = v_uint32()
self.Fill2 = v_uint32()
self.Rsp = v_uint64()
@@ -1429,7 +1429,7 @@ def __init__(self):
self.SectionType = GUID()
self.FRUId = GUID()
self.SectionSeverity = v_uint32()
- self.FRUText = v_bytes(size=20) # FIXME Unknown Array Type
+ self.FRUText = v_bytes(size=20) # FIXME Unknown Array Type
class OBJECT_TYPE_INITIALIZER(vstruct.VStruct):
@@ -1558,7 +1558,7 @@ def __init__(self):
self.RealDevice = v_ptr64()
self.SerialNumber = v_uint32()
self.ReferenceCount = v_uint32()
- self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
+ self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
class PP_LOOKASIDE_LIST(vstruct.VStruct):
@@ -1593,23 +1593,23 @@ def __init__(self):
self.TimeZoneBias = KSYSTEM_TIME()
self.ImageNumberLow = v_uint16()
self.ImageNumberHigh = v_uint16()
- self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
+ self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
self.MaxStackTraceDepth = v_uint32()
self.CryptoExponent = v_uint32()
self.TimeZoneId = v_uint32()
self.LargePageMinimum = v_uint32()
- self.Reserved2 = v_bytes(size=28) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=28) # FIXME Unknown Array Type
self.NtProductType = v_uint32()
self.ProductTypeIsValid = v_uint8()
self._pad026c = v_bytes(size=3)
self.NtMajorVersion = v_uint32()
self.NtMinorVersion = v_uint32()
- self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
+ self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
self.Reserved1 = v_uint32()
self.Reserved3 = v_uint32()
self.TimeSlip = v_uint32()
self.AlternativeArchitecture = v_uint32()
- self.AltArchitecturePad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.AltArchitecturePad = v_bytes(size=4) # FIXME Unknown Array Type
self.SystemExpirationDate = LARGE_INTEGER()
self.SuiteMask = v_uint32()
self.KdDebuggerEnabled = v_uint8()
@@ -1622,20 +1622,20 @@ def __init__(self):
self.NumberOfPhysicalPages = v_uint32()
self.SafeBootMode = v_uint8()
self.TscQpcData = v_uint8()
- self.TscQpcPad = v_bytes(size=2) # FIXME Unknown Array Type
+ self.TscQpcPad = v_bytes(size=2) # FIXME Unknown Array Type
self.SharedDataFlags = v_uint32()
- self.DataFlagsPad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.DataFlagsPad = v_bytes(size=4) # FIXME Unknown Array Type
self.TestRetInstruction = v_uint64()
self.SystemCall = v_uint32()
self.SystemCallReturn = v_uint32()
- self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SystemCallPad = v_bytes(size=24) # FIXME Unknown Array Type
self.TickCount = KSYSTEM_TIME()
- self.TickCountPad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.TickCountPad = v_bytes(size=4) # FIXME Unknown Array Type
self.Cookie = v_uint32()
- self.CookiePad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.CookiePad = v_bytes(size=4) # FIXME Unknown Array Type
self.ConsoleSessionForegroundProcessId = v_uint64()
- self.Wow64SharedInformation = v_bytes(size=64) # FIXME Unknown Array Type
- self.UserModeGlobalLogger = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Wow64SharedInformation = v_bytes(size=64) # FIXME Unknown Array Type
+ self.UserModeGlobalLogger = v_bytes(size=32) # FIXME Unknown Array Type
self.ImageFileExecutionOptions = v_uint32()
self.LangGenerationCount = v_uint32()
self.Reserved5 = v_uint64()
@@ -1648,7 +1648,7 @@ def __init__(self):
self.AppCompatFlag = v_uint32()
self.SystemDllNativeRelocation = v_uint64()
self.SystemDllWowRelocation = v_uint32()
- self.XStatePad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.XStatePad = v_bytes(size=4) # FIXME Unknown Array Type
self.XState = XSTATE_CONFIGURATION()
@@ -1773,8 +1773,8 @@ def __init__(self):
self.RundownProtect = EX_RUNDOWN_REF()
self.UniqueProcessId = v_ptr64()
self.ActiveProcessLinks = LIST_ENTRY()
- self.ProcessQuotaUsage = v_bytes(size=16) # FIXME Unknown Array Type
- self.ProcessQuotaPeak = v_bytes(size=16) # FIXME Unknown Array Type
+ self.ProcessQuotaUsage = v_bytes(size=16) # FIXME Unknown Array Type
+ self.ProcessQuotaPeak = v_bytes(size=16) # FIXME Unknown Array Type
self.CommitCharge = v_uint64()
self.QuotaBlock = v_ptr64()
self.CpuQuotaBlock = v_ptr64()
@@ -1811,7 +1811,7 @@ def __init__(self):
self.FreeTebHint = v_ptr64()
self.PageDirectoryPte = HARDWARE_PTE()
self.Session = v_ptr64()
- self.ImageFileName = v_bytes(size=15) # FIXME Unknown Array Type
+ self.ImageFileName = v_bytes(size=15) # FIXME Unknown Array Type
self.PriorityClass = v_uint8()
self.JobLinks = LIST_ENTRY()
self.LockedPagesList = v_ptr64()
@@ -1920,8 +1920,8 @@ def __init__(self):
class KTIMER_TABLE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.TimerExpiry = v_bytes(size=512) # FIXME Unknown Array Type
- self.TimerEntries = v_bytes(size=512) # FIXME Unknown Array Type
+ self.TimerExpiry = v_bytes(size=512) # FIXME Unknown Array Type
+ self.TimerEntries = v_bytes(size=512) # FIXME Unknown Array Type
class FAST_IO_DISPATCH(vstruct.VStruct):
@@ -2119,7 +2119,7 @@ class _unnamed_8013(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.InPath = v_uint8()
- self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
self._pad0008 = v_bytes(size=4)
self.Type = v_uint32()
@@ -2152,7 +2152,7 @@ def __init__(self):
self.ThreadLock = v_uint64()
self.WaitRegister = KWAIT_STATUS_REGISTER()
self.Running = v_uint8()
- self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
self.KernelStackResident = v_uint32()
self.ApcState = KAPC_STATE()
self.DeferredProcessor = v_uint32()
@@ -2186,7 +2186,7 @@ def __init__(self):
self.Affinity = GROUP_AFFINITY()
self.IdealProcessor = v_uint32()
self.UserIdealProcessor = v_uint32()
- self.ApcStatePointer = v_bytes(size=16) # FIXME Unknown Array Type
+ self.ApcStatePointer = v_bytes(size=16) # FIXME Unknown Array Type
self.SavedApcState = KAPC_STATE()
self.Win32Thread = v_ptr64()
self.StackBase = v_ptr64()
@@ -2209,7 +2209,7 @@ class _unnamed_8934(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.BankNumber = v_uint8()
- self.Reserved2 = v_bytes(size=7) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=7) # FIXME Unknown Array Type
self.Status = MCI_STATS()
self.Address = MCI_ADDR()
self.Misc = v_uint64()
@@ -2506,7 +2506,7 @@ def __init__(self):
class SID_IDENTIFIER_AUTHORITY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Value = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Value = v_bytes(size=6) # FIXME Unknown Array Type
class _unnamed_9235(vstruct.VStruct):
@@ -2686,7 +2686,7 @@ def __init__(self):
self.ClusterShift = v_uint8()
self.Reserved = v_uint8()
self.NumberOfChunks = v_uint16()
- self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
+ self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
class KSTACK_AREA(vstruct.VStruct):
@@ -2784,7 +2784,7 @@ def __init__(self):
self.IndexHigh = v_uint16()
self.Index = v_uint16()
self.Depth = v_uint16()
- self.BackTrace = v_bytes(size=256) # FIXME Unknown Array Type
+ self.BackTrace = v_bytes(size=256) # FIXME Unknown Array Type
class OBJECT_DUMP_CONTROL(vstruct.VStruct):
@@ -2801,7 +2801,7 @@ def __init__(self):
self.Handle = v_ptr64()
self.Type = v_uint32()
self._pad0020 = v_bytes(size=4)
- self.StackTrace = v_bytes(size=128) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=128) # FIXME Unknown Array Type
class GENERAL_LOOKASIDE_POOL(vstruct.VStruct):
@@ -2822,7 +2822,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class RTL_SRWLOCK(vstruct.VStruct):
@@ -2861,7 +2861,7 @@ def __init__(self):
class KDESCRIPTOR(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Pad = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Pad = v_bytes(size=6) # FIXME Unknown Array Type
self.Limit = v_uint16()
self.Base = v_ptr64()
@@ -2999,7 +2999,7 @@ def __init__(self):
class EX_PUSH_LOCK_CACHE_AWARE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Locks = v_bytes(size=256) # FIXME Unknown Array Type
+ self.Locks = v_bytes(size=256) # FIXME Unknown Array Type
class RTL_TRACE_BLOCK(vstruct.VStruct):
@@ -3168,7 +3168,7 @@ def __init__(self):
class _unnamed_9653(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Data = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Data = v_bytes(size=12) # FIXME Unknown Array Type
class KWAIT_BLOCK(vstruct.VStruct):
@@ -3320,7 +3320,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class _unnamed_8929(vstruct.VStruct):
@@ -3458,13 +3458,13 @@ def __init__(self):
self.CrossProcessFlags = v_uint32()
self._pad0058 = v_bytes(size=4)
self.KernelCallbackTable = v_ptr64()
- self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
self.AtlThunkSListPtr32 = v_uint32()
self.ApiSetMap = v_ptr64()
self.TlsExpansionCounter = v_uint32()
self._pad0078 = v_bytes(size=4)
self.TlsBitmap = v_ptr64()
- self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
+ self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
self.ReadOnlySharedMemoryBase = v_ptr64()
self.HotpatchInformation = v_ptr64()
self.ReadOnlyStaticServerData = v_ptr64()
@@ -3496,10 +3496,10 @@ def __init__(self):
self.ImageSubsystemMinorVersion = v_uint32()
self._pad0138 = v_bytes(size=4)
self.ActiveProcessAffinityMask = v_uint64()
- self.GdiHandleBuffer = v_bytes(size=240) # FIXME Unknown Array Type
+ self.GdiHandleBuffer = v_bytes(size=240) # FIXME Unknown Array Type
self.PostProcessInitRoutine = v_ptr64()
self.TlsExpansionBitmap = v_ptr64()
- self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
self.SessionId = v_uint32()
self._pad02c8 = v_bytes(size=4)
self.AppCompatFlags = ULARGE_INTEGER()
@@ -3515,7 +3515,7 @@ def __init__(self):
self.FlsCallback = v_ptr64()
self.FlsListHead = LIST_ENTRY()
self.FlsBitmap = v_ptr64()
- self.FlsBitmapBits = v_bytes(size=16) # FIXME Unknown Array Type
+ self.FlsBitmapBits = v_bytes(size=16) # FIXME Unknown Array Type
self.FlsHighIndex = v_uint32()
self._pad0358 = v_bytes(size=4)
self.WerRegistrationData = v_ptr64()
@@ -3539,7 +3539,7 @@ def __init__(self):
class STACK_TRACE_DATABASE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Reserved = v_bytes(size=104) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=104) # FIXME Unknown Array Type
self.Reserved2 = v_ptr64()
self.PeakHashCollisionListLength = v_uint64()
self.LowerMemoryStart = v_ptr64()
@@ -3733,7 +3733,7 @@ def __init__(self):
self.Data1 = v_uint32()
self.Data2 = v_uint16()
self.Data3 = v_uint16()
- self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
class HEAP_UCR_DESCRIPTOR(vstruct.VStruct):
@@ -3756,7 +3756,7 @@ def __init__(self):
self.u = _unnamed_8922()
self.ExtCnt = v_uint32()
self.Reserved3 = v_uint32()
- self.ExtReg = v_bytes(size=192) # FIXME Unknown Array Type
+ self.ExtReg = v_bytes(size=192) # FIXME Unknown Array Type
class PSP_CPU_QUOTA_APC(vstruct.VStruct):
@@ -3767,7 +3767,7 @@ def __init__(self):
class KAPC_STATE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.ApcListHead = v_bytes(size=192) # FIXME Unknown Array Type
+ self.ApcListHead = v_bytes(size=192) # FIXME Unknown Array Type
self.Process = v_ptr64()
self.KernelApcInProgress = v_uint8()
self.KernelApcPending = v_uint8()
@@ -3906,7 +3906,7 @@ def __init__(self):
self.DriverInit = v_ptr64()
self.DriverStartIo = v_ptr64()
self.DriverUnload = v_ptr64()
- self.MajorFunction = v_bytes(size=224) # FIXME Unknown Array Type
+ self.MajorFunction = v_bytes(size=224) # FIXME Unknown Array Type
class _unnamed_6629(vstruct.VStruct):
@@ -3974,7 +3974,7 @@ class TP_NBQ_GUARD(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.GuardLinks = LIST_ENTRY()
- self.Guards = v_bytes(size=16) # FIXME Unknown Array Type
+ self.Guards = v_bytes(size=16) # FIXME Unknown Array Type
class flags(vstruct.VStruct):
@@ -4022,7 +4022,7 @@ def __init__(self):
self.ExceptionAddress = v_ptr64()
self.NumberParameters = v_uint32()
self._pad0020 = v_bytes(size=4)
- self.ExceptionInformation = v_bytes(size=120) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=120) # FIXME Unknown Array Type
class _unnamed_10210(vstruct.VStruct):
@@ -4053,24 +4053,24 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.NtTib = NT_TIB()
self.IdtBase = v_ptr64()
- self.Unused = v_bytes(size=16) # FIXME Unknown Array Type
+ self.Unused = v_bytes(size=16) # FIXME Unknown Array Type
self.Irql = v_uint8()
self.SecondLevelCacheAssociativity = v_uint8()
self.ObsoleteNumber = v_uint8()
self.Fill0 = v_uint8()
- self.Unused0 = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Unused0 = v_bytes(size=12) # FIXME Unknown Array Type
self.MajorVersion = v_uint16()
self.MinorVersion = v_uint16()
self.StallScaleFactor = v_uint32()
- self.Unused1 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.Unused1 = v_bytes(size=24) # FIXME Unknown Array Type
self.KernelReserved = v_bytes(size=60) # FIXME Unknown Array Type
self.SecondLevelCacheSize = v_uint32()
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
self.Unused2 = v_uint32()
self._pad0108 = v_bytes(size=4)
self.KdVersionBlock = v_ptr64()
self.Unused3 = v_ptr64()
- self.PcrAlign1 = v_bytes(size=96) # FIXME Unknown Array Type
+ self.PcrAlign1 = v_bytes(size=96) # FIXME Unknown Array Type
self._pad0180 = v_bytes(size=8)
self.Prcb = KPRCB()
@@ -4342,7 +4342,7 @@ def __init__(self):
class ACCESS_REASONS(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Data = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Data = v_bytes(size=128) # FIXME Unknown Array Type
class TP_TASK_CALLBACKS(vstruct.VStruct):
@@ -4493,7 +4493,7 @@ def __init__(self):
self.RecordId = v_uint64()
self.Flags = WHEA_ERROR_RECORD_HEADER_FLAGS()
self.PersistenceInfo = WHEA_PERSISTENCE_INFO()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
class EVENT_DESCRIPTOR(vstruct.VStruct):
@@ -4521,7 +4521,7 @@ def __init__(self):
self.ExitGate = v_ptr64()
self.AccessLog = v_ptr64()
self.WorkingSetExpansionLinks = LIST_ENTRY()
- self.AgeDistribution = v_bytes(size=28) # FIXME Unknown Array Type
+ self.AgeDistribution = v_bytes(size=28) # FIXME Unknown Array Type
self.MinimumWorkingSetSize = v_uint32()
self.WorkingSetSize = v_uint32()
self.WorkingSetPrivateSize = v_uint32()
@@ -4536,7 +4536,7 @@ def __init__(self):
self.LastTrimStamp = v_uint16()
self.PageFaultCount = v_uint32()
self.RepurposeCount = v_uint32()
- self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=8) # FIXME Unknown Array Type
self.Flags = MMSUPPORT_FLAGS()
@@ -4657,17 +4657,17 @@ def __init__(self):
self.CountOfOwnedCriticalSections = v_uint32()
self.CsrClientThread = v_ptr64()
self.Win32ThreadInfo = v_ptr64()
- self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
- self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
+ self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
+ self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
self._pad0100 = v_bytes(size=4)
self.WOW32Reserved = v_ptr64()
self.CurrentLocale = v_uint32()
self.FpSoftwareStatusRegister = v_uint32()
- self.SystemReserved1 = v_bytes(size=432) # FIXME Unknown Array Type
+ self.SystemReserved1 = v_bytes(size=432) # FIXME Unknown Array Type
self.ExceptionCode = v_uint32()
self._pad02c8 = v_bytes(size=4)
self.ActivationContextStackPointer = v_ptr64()
- self.SpareBytes = v_bytes(size=24) # FIXME Unknown Array Type
+ self.SpareBytes = v_bytes(size=24) # FIXME Unknown Array Type
self.TxFsContext = v_uint32()
self._pad02f0 = v_bytes(size=4)
self.GdiTebBatch = GDI_TEB_BATCH()
@@ -4676,9 +4676,9 @@ def __init__(self):
self.GdiClientPID = v_uint32()
self.GdiClientTID = v_uint32()
self.GdiThreadLocalInfo = v_ptr64()
- self.Win32ClientInfo = v_bytes(size=496) # FIXME Unknown Array Type
- self.glDispatchTable = v_bytes(size=1864) # FIXME Unknown Array Type
- self.glReserved1 = v_bytes(size=232) # FIXME Unknown Array Type
+ self.Win32ClientInfo = v_bytes(size=496) # FIXME Unknown Array Type
+ self.glDispatchTable = v_bytes(size=1864) # FIXME Unknown Array Type
+ self.glReserved1 = v_bytes(size=232) # FIXME Unknown Array Type
self.glReserved2 = v_ptr64()
self.glSectionInfo = v_ptr64()
self.glSection = v_ptr64()
@@ -4688,17 +4688,17 @@ def __init__(self):
self.LastStatusValue = v_uint32()
self._pad1258 = v_bytes(size=4)
self.StaticUnicodeString = UNICODE_STRING()
- self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
+ self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
self._pad1478 = v_bytes(size=6)
self.DeallocationStack = v_ptr64()
- self.TlsSlots = v_bytes(size=512) # FIXME Unknown Array Type
+ self.TlsSlots = v_bytes(size=512) # FIXME Unknown Array Type
self.TlsLinks = LIST_ENTRY()
self.Vdm = v_ptr64()
self.ReservedForNtRpc = v_ptr64()
- self.DbgSsReserved = v_bytes(size=16) # FIXME Unknown Array Type
+ self.DbgSsReserved = v_bytes(size=16) # FIXME Unknown Array Type
self.HardErrorMode = v_uint32()
self._pad16b8 = v_bytes(size=4)
- self.Instrumentation = v_bytes(size=88) # FIXME Unknown Array Type
+ self.Instrumentation = v_bytes(size=88) # FIXME Unknown Array Type
self.ActivityId = GUID()
self.SubProcessTag = v_ptr64()
self.EtwLocalData = v_ptr64()
@@ -4765,7 +4765,7 @@ def __init__(self):
self.MxCsr_Mask = v_uint32()
self.FloatRegisters = v_uint32()
self.XmmRegisters = v_uint32()
- self.Reserved4 = v_bytes(size=96) # FIXME Unknown Array Type
+ self.Reserved4 = v_bytes(size=96) # FIXME Unknown Array Type
class PO_DIAG_STACK_RECORD(vstruct.VStruct):
@@ -4773,7 +4773,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.StackDepth = v_uint32()
self._pad0008 = v_bytes(size=4)
- self.Stack = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Stack = v_bytes(size=8) # FIXME Unknown Array Type
class IMAGE_DOS_HEADER(vstruct.VStruct):
@@ -4793,10 +4793,10 @@ def __init__(self):
self.e_cs = v_uint16()
self.e_lfarlc = v_uint16()
self.e_ovno = v_uint16()
- self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
+ self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
self.e_oemid = v_uint16()
self.e_oeminfo = v_uint16()
- self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
+ self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
self.e_lfanew = v_uint32()
@@ -4878,7 +4878,7 @@ def __init__(self):
self.NextThread = v_ptr64()
self.IdleThread = v_ptr64()
self.NestingLevel = v_uint8()
- self.PrcbPad00 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.PrcbPad00 = v_bytes(size=3) # FIXME Unknown Array Type
self.Number = v_uint32()
self.RspBase = v_uint64()
self.PrcbLock = v_uint64()
@@ -4888,7 +4888,7 @@ def __init__(self):
self.CpuID = v_uint8()
self.CpuStep = v_uint16()
self.MHz = v_uint32()
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
self.MinorVersion = v_uint16()
self.MajorVersion = v_uint16()
self.BuildType = v_uint8()
@@ -4955,7 +4955,7 @@ def __init__(self):
self.MasterOffset = v_uint32()
self.LastTick = v_uint32()
self.UnusedPad = v_uint32()
- self.PrcbPad50 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.PrcbPad50 = v_bytes(size=16) # FIXME Unknown Array Type
self.TimerTable = KTIMER_TABLE()
self.DpcGate = KGATE()
self.PrcbPad52 = v_ptr64()
@@ -4974,8 +4974,8 @@ def __init__(self):
self.ReadySummary = v_uint32()
self.QueueIndex = v_uint32()
self.TimerExpirationDpc = KDPC()
- self.PrcbPad72 = v_bytes(size=32) # FIXME Unknown Array Type
- self.DispatcherReadyListHead = v_bytes(size=32) # FIXME Unknown Array Type
+ self.PrcbPad72 = v_bytes(size=32) # FIXME Unknown Array Type
+ self.DispatcherReadyListHead = v_bytes(size=32) # FIXME Unknown Array Type
self.InterruptCount = v_uint32()
self.KernelTime = v_uint32()
self.UserTime = v_uint32()
@@ -4983,7 +4983,7 @@ def __init__(self):
self.InterruptTime = v_uint32()
self.AdjustDpcThreshold = v_uint32()
self.DebuggerSavedIRQL = v_uint8()
- self.PrcbPad80 = v_bytes(size=7) # FIXME Unknown Array Type
+ self.PrcbPad80 = v_bytes(size=7) # FIXME Unknown Array Type
self.DpcTimeCount = v_uint32()
self.DpcTimeLimit = v_uint32()
self.PeriodicCount = v_uint32()
@@ -4992,7 +4992,7 @@ def __init__(self):
self.KeExceptionDispatchCount = v_uint32()
self.ParentNode = v_ptr64()
self.StartCycles = v_uint64()
- self.PrcbPad82 = v_bytes(size=24) # FIXME Unknown Array Type
+ self.PrcbPad82 = v_bytes(size=24) # FIXME Unknown Array Type
self.MmSpinLockOrdering = v_uint32()
self.PageColor = v_uint32()
self.NodeColor = v_uint32()
@@ -5029,10 +5029,10 @@ def __init__(self):
self.MmCacheTransitionCount = v_uint32()
self.MmCacheReadCount = v_uint32()
self.MmCacheIoCount = v_uint32()
- self.PrcbPad91 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PrcbPad91 = v_bytes(size=4) # FIXME Unknown Array Type
self.RuntimeAccumulation = v_uint64()
self.PowerState = PROCESSOR_POWER_STATE()
- self.PrcbPad92 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.PrcbPad92 = v_bytes(size=16) # FIXME Unknown Array Type
self.KeAlignmentFixupCount = v_uint32()
self._pad4918 = v_bytes(size=4)
self.DpcWatchdogDpc = KDPC()
@@ -5051,11 +5051,11 @@ def __init__(self):
self.VirtualApicAssist = v_ptr64()
self.StatisticsPage = v_ptr64()
self.RateControl = v_ptr64()
- self.CacheProcessorMask = v_bytes(size=40) # FIXME Unknown Array Type
+ self.CacheProcessorMask = v_bytes(size=40) # FIXME Unknown Array Type
self.PackageProcessorSet = KAFFINITY_EX()
self.CoreProcessorSet = v_uint64()
self.PebsIndexAddress = v_ptr64()
- self.PrcbPad93 = v_bytes(size=96) # FIXME Unknown Array Type
+ self.PrcbPad93 = v_bytes(size=96) # FIXME Unknown Array Type
self.SpinLockAcquireCount = v_uint32()
self.SpinLockContentionCount = v_uint32()
self.SpinLockSpinCount = v_uint32()
@@ -5102,8 +5102,8 @@ def __init__(self):
self.ExBoostSharedOwners = v_uint32()
self.ExEtwSynchTrackingNotificationsCount = v_uint32()
self.ExEtwSynchTrackingNotificationsAccountedCount = v_uint32()
- self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
- self.PrcbPad10 = v_bytes(size=3) # FIXME Unknown Array Type
+ self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
+ self.PrcbPad10 = v_bytes(size=3) # FIXME Unknown Array Type
self.FeatureBits = v_uint32()
self._pad4bd0 = v_bytes(size=4)
self.UpdateSignature = LARGE_INTEGER()
@@ -5143,7 +5143,7 @@ def __init__(self):
self.Count = v_uint16()
self.Size = v_uint16()
self.Reserved = v_uint32()
- self.Bitmap = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Bitmap = v_bytes(size=32) # FIXME Unknown Array Type
class DEVICE_OBJECT(vstruct.VStruct):
@@ -5200,7 +5200,7 @@ def __init__(self):
self.Rsp0 = v_uint64()
self.Rsp1 = v_uint64()
self.Rsp2 = v_uint64()
- self.Ist = v_bytes(size=64) # FIXME Unknown Array Type
+ self.Ist = v_bytes(size=64) # FIXME Unknown Array Type
self.Reserved1 = v_uint64()
self.Reserved2 = v_uint16()
self.IoMapBase = v_uint16()
@@ -5267,7 +5267,7 @@ def __init__(self):
self.Seed = v_uint32()
self.MmShiftedColor = v_uint32()
self._pad0068 = v_bytes(size=4)
- self.FreeCount = v_bytes(size=16) # FIXME Unknown Array Type
+ self.FreeCount = v_bytes(size=16) # FIXME Unknown Array Type
self.Right = v_uint32()
self.Left = v_uint32()
self.CachedKernelStacks = CACHED_KSTACK_LIST()
@@ -5288,7 +5288,7 @@ class XSAVE_AREA_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Mask = v_uint64()
- self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
class MM_DRIVER_VERIFIER_DATA(vstruct.VStruct):
@@ -5382,7 +5382,7 @@ def __init__(self):
self.InterfaceType = v_uint32()
self.BusNumber = v_uint32()
self.SlotNumber = v_uint32()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
self.AlternativeLists = v_uint32()
self.List = v_uint32()
diff --git a/vstruct/defs/windows/win_6_1_wow64/ntdll.py b/vstruct/defs/windows/win_6_1_wow64/ntdll.py
index 33ce552..cf5d354 100644
--- a/vstruct/defs/windows/win_6_1_wow64/ntdll.py
+++ b/vstruct/defs/windows/win_6_1_wow64/ntdll.py
@@ -624,7 +624,7 @@ class _unnamed_9079(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.BankNumber = v_uint8()
- self.Reserved2 = v_bytes(size=7) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=7) # FIXME Unknown Array Type
self.Status = MCI_STATS()
self.Address = MCI_ADDR()
self.Misc = v_uint64()
@@ -651,7 +651,7 @@ def __init__(self):
self.Revision = v_uint8()
self.SubAuthorityCount = v_uint8()
self.IdentifierAuthority = SID_IDENTIFIER_AUTHORITY()
- self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SubAuthority = v_bytes(size=4) # FIXME Unknown Array Type
class WHEA_ERROR_PACKET_V2(vstruct.VStruct):
@@ -687,7 +687,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Mask = v_uint32()
self.Group = v_uint16()
- self.Reserved = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=6) # FIXME Unknown Array Type
class KTSS(vstruct.VStruct):
@@ -698,7 +698,7 @@ def __init__(self):
self.Esp0 = v_uint32()
self.Ss0 = v_uint16()
self.Reserved1 = v_uint16()
- self.NotUsed1 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.NotUsed1 = v_bytes(size=16) # FIXME Unknown Array Type
self.CR3 = v_uint32()
self.Eip = v_uint32()
self.EFlags = v_uint32()
@@ -727,7 +727,7 @@ def __init__(self):
self.Flags = v_uint16()
self.IoMapBase = v_uint16()
self.IoMaps = v_uint16()
- self.IntDirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
+ self.IntDirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
class CURDIR(vstruct.VStruct):
@@ -740,7 +740,7 @@ def __init__(self):
class PERFINFO_GROUPMASK(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Masks = v_bytes(size=32) # FIXME Unknown Array Type
+ self.Masks = v_bytes(size=32) # FIXME Unknown Array Type
class HANDLE_TABLE_ENTRY_INFO(vstruct.VStruct):
@@ -775,7 +775,7 @@ def __init__(self):
self.SectionType = GUID()
self.FRUId = GUID()
self.SectionSeverity = v_uint32()
- self.FRUText = v_bytes(size=20) # FIXME Unknown Array Type
+ self.FRUText = v_bytes(size=20) # FIXME Unknown Array Type
class PS_CPU_QUOTA_BLOCK(vstruct.VStruct):
@@ -818,7 +818,7 @@ def __init__(self):
class _unnamed_9787(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Data = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Data = v_bytes(size=12) # FIXME Unknown Array Type
class _unnamed_9789(vstruct.VStruct):
@@ -879,8 +879,8 @@ def __init__(self):
self.QuantumReset = v_uint8()
self.Visited = v_uint8()
self.Unused3 = v_uint8()
- self.ThreadSeed = v_bytes(size=16) # FIXME Unknown Array Type
- self.IdealNode = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ThreadSeed = v_bytes(size=16) # FIXME Unknown Array Type
+ self.IdealNode = v_bytes(size=8) # FIXME Unknown Array Type
self.IdealGlobalNode = v_uint16()
self.Flags = KEXECUTE_OPTIONS()
self.Unused1 = v_uint8()
@@ -1052,7 +1052,7 @@ def __init__(self):
self.HashFunction = v_ptr32()
self.NoOfTraces = v_uint32()
self.NoOfHits = v_uint32()
- self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HashCounter = v_bytes(size=64) # FIXME Unknown Array Type
class OWNER_ENTRY(vstruct.VStruct):
@@ -1086,7 +1086,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Hint = v_ptr32()
self.ActiveSubsegment = v_ptr32()
- self.CachedItems = v_bytes(size=64) # FIXME Unknown Array Type
+ self.CachedItems = v_bytes(size=64) # FIXME Unknown Array Type
self.SListHeader = SLIST_HEADER()
self.Counters = HEAP_BUCKET_COUNTERS()
self.LocalData = v_ptr32()
@@ -1202,8 +1202,8 @@ def __init__(self):
self.ResetCount = v_uint32()
self._pad0010 = v_bytes(size=4)
self.StartTime = v_uint64()
- self.BucketLimits = v_bytes(size=128) # FIXME Unknown Array Type
- self.State = v_bytes(size=128) # FIXME Unknown Array Type
+ self.BucketLimits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.State = v_bytes(size=128) # FIXME Unknown Array Type
class GDI_TEB_BATCH(vstruct.VStruct):
@@ -1211,7 +1211,7 @@ def __init__(self):
vstruct.VStruct.__init__(self)
self.Offset = v_uint32()
self.HDC = v_uint32()
- self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
+ self.Buffer = v_bytes(size=1240) # FIXME Unknown Array Type
class THREAD_PERFORMANCE_DATA(vstruct.VStruct):
@@ -1468,7 +1468,7 @@ def __init__(self):
self.RealDevice = v_ptr32()
self.SerialNumber = v_uint32()
self.ReferenceCount = v_uint32()
- self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
+ self.VolumeLabel = v_bytes(size=64) # FIXME Unknown Array Type
class PP_LOOKASIDE_LIST(vstruct.VStruct):
@@ -1503,23 +1503,23 @@ def __init__(self):
self.TimeZoneBias = KSYSTEM_TIME()
self.ImageNumberLow = v_uint16()
self.ImageNumberHigh = v_uint16()
- self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
+ self.NtSystemRoot = v_bytes(size=520) # FIXME Unknown Array Type
self.MaxStackTraceDepth = v_uint32()
self.CryptoExponent = v_uint32()
self.TimeZoneId = v_uint32()
self.LargePageMinimum = v_uint32()
- self.Reserved2 = v_bytes(size=28) # FIXME Unknown Array Type
+ self.Reserved2 = v_bytes(size=28) # FIXME Unknown Array Type
self.NtProductType = v_uint32()
self.ProductTypeIsValid = v_uint8()
self._pad026c = v_bytes(size=3)
self.NtMajorVersion = v_uint32()
self.NtMinorVersion = v_uint32()
- self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
+ self.ProcessorFeatures = v_bytes(size=64) # FIXME Unknown Array Type
self.Reserved1 = v_uint32()
self.Reserved3 = v_uint32()
self.TimeSlip = v_uint32()
self.AlternativeArchitecture = v_uint32()
- self.AltArchitecturePad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.AltArchitecturePad = v_bytes(size=4) # FIXME Unknown Array Type
self.SystemExpirationDate = LARGE_INTEGER()
self.SuiteMask = v_uint32()
self.KdDebuggerEnabled = v_uint8()
@@ -1532,9 +1532,9 @@ def __init__(self):
self.NumberOfPhysicalPages = v_uint32()
self.SafeBootMode = v_uint8()
self.TscQpcData = v_uint8()
- self.TscQpcPad = v_bytes(size=2) # FIXME Unknown Array Type
+ self.TscQpcPad = v_bytes(size=2) # FIXME Unknown Array Type
self.SharedDataFlags = v_uint32()
- self.DataFlagsPad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.DataFlagsPad = v_bytes(size=4) # FIXME Unknown Array Type
self.TestRetInstruction = v_uint64()
self.SystemCall = v_uint32()
self.SystemCallReturn = v_uint32()
@@ -1558,7 +1558,7 @@ def __init__(self):
self.AppCompatFlag = v_uint32()
self.SystemDllNativeRelocation = v_uint64()
self.SystemDllWowRelocation = v_uint32()
- self.XStatePad = v_bytes(size=4) # FIXME Unknown Array Type
+ self.XStatePad = v_bytes(size=4) # FIXME Unknown Array Type
self.XState = XSTATE_CONFIGURATION()
@@ -1667,8 +1667,8 @@ def __init__(self):
self.RundownProtect = EX_RUNDOWN_REF()
self.UniqueProcessId = v_ptr32()
self.ActiveProcessLinks = LIST_ENTRY()
- self.ProcessQuotaUsage = v_bytes(size=8) # FIXME Unknown Array Type
- self.ProcessQuotaPeak = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ProcessQuotaUsage = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ProcessQuotaPeak = v_bytes(size=8) # FIXME Unknown Array Type
self.CommitCharge = v_uint32()
self.QuotaBlock = v_ptr32()
self.CpuQuotaBlock = v_ptr32()
@@ -1707,7 +1707,7 @@ def __init__(self):
self.PageDirectoryPte = HARDWARE_PTE_X86()
self._pad0198 = v_bytes(size=4)
self.Session = v_ptr32()
- self.ImageFileName = v_bytes(size=15) # FIXME Unknown Array Type
+ self.ImageFileName = v_bytes(size=15) # FIXME Unknown Array Type
self.PriorityClass = v_uint8()
self.JobLinks = LIST_ENTRY()
self.LockedPagesList = v_ptr32()
@@ -1815,8 +1815,8 @@ def __init__(self):
class KTIMER_TABLE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.TimerExpiry = v_bytes(size=64) # FIXME Unknown Array Type
- self.TimerEntries = v_bytes(size=64) # FIXME Unknown Array Type
+ self.TimerExpiry = v_bytes(size=64) # FIXME Unknown Array Type
+ self.TimerEntries = v_bytes(size=64) # FIXME Unknown Array Type
class FAST_IO_DISPATCH(vstruct.VStruct):
@@ -1856,7 +1856,7 @@ class _unnamed_8164(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.InPath = v_uint8()
- self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
self.Type = v_uint32()
@@ -1916,7 +1916,7 @@ def __init__(self):
self.Idtr = DESCRIPTOR()
self.Tr = v_uint16()
self.Ldtr = v_uint16()
- self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=24) # FIXME Unknown Array Type
class RTL_CRITICAL_SECTION(vstruct.VStruct):
@@ -1964,7 +1964,7 @@ def __init__(self):
self.ErrorSelector = v_uint32()
self.DataOffset = v_uint32()
self.DataSelector = v_uint32()
- self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
+ self.RegisterArea = v_bytes(size=80) # FIXME Unknown Array Type
self.Cr0NpxState = v_uint32()
@@ -2051,7 +2051,7 @@ def __init__(self):
self.ThreadLock = v_uint32()
self.WaitRegister = KWAIT_STATUS_REGISTER()
self.Running = v_uint8()
- self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
+ self.Alerted = v_bytes(size=2) # FIXME Unknown Array Type
self.KernelStackResident = v_uint32()
self.ApcState = KAPC_STATE()
self.NextProcessor = v_uint32()
@@ -2094,7 +2094,7 @@ def __init__(self):
self.Affinity = GROUP_AFFINITY()
self.IdealProcessor = v_uint32()
self.UserIdealProcessor = v_uint32()
- self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
+ self.ApcStatePointer = v_bytes(size=8) # FIXME Unknown Array Type
self.SavedApcState = KAPC_STATE()
self.SuspendCount = v_uint8()
self.Spare1 = v_uint8()
@@ -2140,7 +2140,7 @@ def __init__(self):
self.EFlags = v_uint32()
self.Esp = v_uint32()
self.SegSs = v_uint32()
- self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
+ self.ExtendedRegisters = v_bytes(size=512) # FIXME Unknown Array Type
class MCI_STATS(vstruct.VStruct):
@@ -2354,8 +2354,8 @@ def __init__(self):
class KiIoAccessMap(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.DirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
- self.IoMap = v_bytes(size=8196) # FIXME Unknown Array Type
+ self.DirectionMap = v_bytes(size=32) # FIXME Unknown Array Type
+ self.IoMap = v_bytes(size=8196) # FIXME Unknown Array Type
class _unnamed_8209(vstruct.VStruct):
@@ -2403,7 +2403,7 @@ def __init__(self):
class SID_IDENTIFIER_AUTHORITY(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Value = v_bytes(size=6) # FIXME Unknown Array Type
+ self.Value = v_bytes(size=6) # FIXME Unknown Array Type
class XSTATE_FEATURE(vstruct.VStruct):
@@ -2576,7 +2576,7 @@ def __init__(self):
self.ClusterShift = v_uint8()
self.Reserved = v_uint8()
self.NumberOfChunks = v_uint16()
- self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
+ self.CompressedChunkSizes = v_bytes(size=4) # FIXME Unknown Array Type
class WHEA_ERROR_RECORD(vstruct.VStruct):
@@ -2632,7 +2632,7 @@ def __init__(self):
self.IndexHigh = v_uint16()
self.Index = v_uint16()
self.Depth = v_uint16()
- self.BackTrace = v_bytes(size=128) # FIXME Unknown Array Type
+ self.BackTrace = v_bytes(size=128) # FIXME Unknown Array Type
class OBJECT_DUMP_CONTROL(vstruct.VStruct):
@@ -2648,7 +2648,7 @@ def __init__(self):
self.ClientId = CLIENT_ID()
self.Handle = v_ptr32()
self.Type = v_uint32()
- self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=64) # FIXME Unknown Array Type
class GENERAL_LOOKASIDE_POOL(vstruct.VStruct):
@@ -2669,7 +2669,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class HARDWARE_PTE_X86(vstruct.VStruct):
@@ -2692,7 +2692,7 @@ def __init__(self):
self.Size = v_uint32()
self.TagIndex = v_uint16()
self.CreatorBackTraceIndex = v_uint16()
- self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
+ self.TagName = v_bytes(size=48) # FIXME Unknown Array Type
class STRING(vstruct.VStruct):
@@ -2779,7 +2779,7 @@ def __init__(self):
self.NextBlock = v_ptr32()
self.ExpectedEncodedEntry = HEAP_ENTRY()
self.ExpectedDecodedEntry = HEAP_ENTRY()
- self.StackTrace = v_bytes(size=128) # FIXME Unknown Array Type
+ self.StackTrace = v_bytes(size=128) # FIXME Unknown Array Type
class _unnamed_9370(vstruct.VStruct):
@@ -2895,7 +2895,7 @@ def __init__(self):
class EX_PUSH_LOCK_CACHE_AWARE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Locks = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Locks = v_bytes(size=128) # FIXME Unknown Array Type
class RTL_TRACE_BLOCK(vstruct.VStruct):
@@ -3194,7 +3194,7 @@ def __init__(self):
self.ListEntry = LIST_ENTRY()
self.LastTotalAllocates = v_uint32()
self.LastAllocateMisses = v_uint32()
- self.Future = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Future = v_bytes(size=8) # FIXME Unknown Array Type
class _unnamed_7775(vstruct.VStruct):
@@ -3320,13 +3320,13 @@ def __init__(self):
class ACCESS_REASONS(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Data = v_bytes(size=128) # FIXME Unknown Array Type
+ self.Data = v_bytes(size=128) # FIXME Unknown Array Type
class STACK_TRACE_DATABASE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
self.Reserved2 = v_ptr32()
self.PeakHashCollisionListLength = v_uint32()
self.LowerMemoryStart = v_ptr32()
@@ -3508,7 +3508,7 @@ def __init__(self):
self.Data1 = v_uint32()
self.Data2 = v_uint16()
self.Data3 = v_uint16()
- self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Data4 = v_bytes(size=8) # FIXME Unknown Array Type
class HEAP_UCR_DESCRIPTOR(vstruct.VStruct):
@@ -3531,7 +3531,7 @@ def __init__(self):
self.u = _unnamed_9067()
self.ExtCnt = v_uint32()
self.Reserved3 = v_uint32()
- self.ExtReg = v_bytes(size=192) # FIXME Unknown Array Type
+ self.ExtReg = v_bytes(size=192) # FIXME Unknown Array Type
class PSP_CPU_QUOTA_APC(vstruct.VStruct):
@@ -3542,7 +3542,7 @@ def __init__(self):
class KAPC_STATE(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
- self.ApcListHead = v_bytes(size=192) # FIXME Unknown Array Type
+ self.ApcListHead = v_bytes(size=192) # FIXME Unknown Array Type
self.Process = v_ptr32()
self.KernelApcInProgress = v_uint8()
self.KernelApcPending = v_uint8()
@@ -3655,7 +3655,7 @@ def __init__(self):
self.DriverInit = v_ptr32()
self.DriverStartIo = v_ptr32()
self.DriverUnload = v_ptr32()
- self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
+ self.MajorFunction = v_bytes(size=112) # FIXME Unknown Array Type
class FILE_GET_QUOTA_INFORMATION(vstruct.VStruct):
@@ -3694,7 +3694,7 @@ class TP_NBQ_GUARD(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.GuardLinks = LIST_ENTRY()
- self.Guards = v_bytes(size=8) # FIXME Unknown Array Type
+ self.Guards = v_bytes(size=8) # FIXME Unknown Array Type
class flags(vstruct.VStruct):
@@ -3738,7 +3738,7 @@ def __init__(self):
self.ExceptionRecord = v_ptr32()
self.ExceptionAddress = v_ptr32()
self.NumberParameters = v_uint32()
- self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
+ self.ExceptionInformation = v_bytes(size=60) # FIXME Unknown Array Type
class PROCESSOR_NUMBER(vstruct.VStruct):
@@ -3786,13 +3786,13 @@ def __init__(self):
self.Spare0 = v_uint8()
self.SecondLevelCacheAssociativity = v_uint8()
self.VdmAlert = v_uint32()
- self.KernelReserved = v_bytes(size=56) # FIXME Unknown Array Type
+ self.KernelReserved = v_bytes(size=56) # FIXME Unknown Array Type
self.SecondLevelCacheSize = v_uint32()
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
self.InterruptMode = v_uint32()
self.Spare1 = v_uint8()
self._pad00dc = v_bytes(size=3)
- self.KernelReserved2 = v_bytes(size=68) # FIXME Unknown Array Type
+ self.KernelReserved2 = v_bytes(size=68) # FIXME Unknown Array Type
self.PrcbData = KPRCB()
@@ -4129,12 +4129,12 @@ def __init__(self):
self.IFEOKey = v_ptr32()
self.CrossProcessFlags = v_uint32()
self.KernelCallbackTable = v_ptr32()
- self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
+ self.SystemReserved = v_bytes(size=4) # FIXME Unknown Array Type
self.AtlThunkSListPtr32 = v_uint32()
self.ApiSetMap = v_ptr32()
self.TlsExpansionCounter = v_uint32()
self.TlsBitmap = v_ptr32()
- self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
+ self.TlsBitmapBits = v_bytes(size=8) # FIXME Unknown Array Type
self.ReadOnlySharedMemoryBase = v_ptr32()
self.HotpatchInformation = v_ptr32()
self.ReadOnlyStaticServerData = v_ptr32()
@@ -4165,10 +4165,10 @@ def __init__(self):
self.ImageSubsystemMajorVersion = v_uint32()
self.ImageSubsystemMinorVersion = v_uint32()
self.ActiveProcessAffinityMask = v_uint32()
- self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
+ self.GdiHandleBuffer = v_bytes(size=136) # FIXME Unknown Array Type
self.PostProcessInitRoutine = v_ptr32()
self.TlsExpansionBitmap = v_ptr32()
- self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
+ self.TlsExpansionBitmapBits = v_bytes(size=128) # FIXME Unknown Array Type
self.SessionId = v_uint32()
self.AppCompatFlags = ULARGE_INTEGER()
self.AppCompatFlagsUser = ULARGE_INTEGER()
@@ -4183,7 +4183,7 @@ def __init__(self):
self.FlsCallback = v_ptr32()
self.FlsListHead = LIST_ENTRY()
self.FlsBitmap = v_ptr32()
- self.FlsBitmapBits = v_bytes(size=16) # FIXME Unknown Array Type
+ self.FlsBitmapBits = v_bytes(size=16) # FIXME Unknown Array Type
self.FlsHighIndex = v_uint32()
self.WerRegistrationData = v_ptr32()
self.WerShipAssertPtr = v_ptr32()
@@ -4206,7 +4206,7 @@ def __init__(self):
self.LeftChild = v_ptr32()
self.RightChild = v_ptr32()
self.Balance = v_uint8()
- self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=3) # FIXME Unknown Array Type
class _unnamed_9722(vstruct.VStruct):
@@ -4323,7 +4323,7 @@ def __init__(self):
self.RecordId = v_uint64()
self.Flags = WHEA_ERROR_RECORD_HEADER_FLAGS()
self.PersistenceInfo = WHEA_PERSISTENCE_INFO()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
class EVENT_DESCRIPTOR(vstruct.VStruct):
@@ -4365,7 +4365,7 @@ def __init__(self):
self.ExitGate = v_ptr32()
self.AccessLog = v_ptr32()
self.WorkingSetExpansionLinks = LIST_ENTRY()
- self.AgeDistribution = v_bytes(size=28) # FIXME Unknown Array Type
+ self.AgeDistribution = v_bytes(size=28) # FIXME Unknown Array Type
self.MinimumWorkingSetSize = v_uint32()
self.WorkingSetSize = v_uint32()
self.WorkingSetPrivateSize = v_uint32()
@@ -4380,7 +4380,7 @@ def __init__(self):
self.LastTrimStamp = v_uint16()
self.PageFaultCount = v_uint32()
self.RepurposeCount = v_uint32()
- self.Spare = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Spare = v_bytes(size=4) # FIXME Unknown Array Type
self.Flags = MMSUPPORT_FLAGS()
@@ -4489,15 +4489,15 @@ def __init__(self):
self.CountOfOwnedCriticalSections = v_uint32()
self.CsrClientThread = v_ptr32()
self.Win32ThreadInfo = v_ptr32()
- self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
- self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
+ self.User32Reserved = v_bytes(size=104) # FIXME Unknown Array Type
+ self.UserReserved = v_bytes(size=20) # FIXME Unknown Array Type
self.WOW32Reserved = v_ptr32()
self.CurrentLocale = v_uint32()
self.FpSoftwareStatusRegister = v_uint32()
- self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
+ self.SystemReserved1 = v_bytes(size=216) # FIXME Unknown Array Type
self.ExceptionCode = v_uint32()
self.ActivationContextStackPointer = v_ptr32()
- self.SpareBytes = v_bytes(size=36) # FIXME Unknown Array Type
+ self.SpareBytes = v_bytes(size=36) # FIXME Unknown Array Type
self.TxFsContext = v_uint32()
self.GdiTebBatch = GDI_TEB_BATCH()
self.RealClientId = CLIENT_ID()
@@ -4505,9 +4505,9 @@ def __init__(self):
self.GdiClientPID = v_uint32()
self.GdiClientTID = v_uint32()
self.GdiThreadLocalInfo = v_ptr32()
- self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
- self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
- self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
+ self.Win32ClientInfo = v_bytes(size=248) # FIXME Unknown Array Type
+ self.glDispatchTable = v_bytes(size=932) # FIXME Unknown Array Type
+ self.glReserved1 = v_bytes(size=116) # FIXME Unknown Array Type
self.glReserved2 = v_ptr32()
self.glSectionInfo = v_ptr32()
self.glSection = v_ptr32()
@@ -4516,16 +4516,16 @@ def __init__(self):
self.glContext = v_ptr32()
self.LastStatusValue = v_uint32()
self.StaticUnicodeString = UNICODE_STRING()
- self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
+ self.StaticUnicodeBuffer = v_bytes(size=522) # FIXME Unknown Array Type
self._pad0e0c = v_bytes(size=2)
self.DeallocationStack = v_ptr32()
- self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
+ self.TlsSlots = v_bytes(size=256) # FIXME Unknown Array Type
self.TlsLinks = LIST_ENTRY()
self.Vdm = v_ptr32()
self.ReservedForNtRpc = v_ptr32()
- self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
+ self.DbgSsReserved = v_bytes(size=8) # FIXME Unknown Array Type
self.HardErrorMode = v_uint32()
- self.Instrumentation = v_bytes(size=36) # FIXME Unknown Array Type
+ self.Instrumentation = v_bytes(size=36) # FIXME Unknown Array Type
self.ActivityId = GUID()
self.SubProcessTag = v_ptr32()
self.EtwLocalData = v_ptr32()
@@ -4587,8 +4587,8 @@ def __init__(self):
self.MxCsr_Mask = v_uint32()
self.FloatRegisters = v_uint32()
self.XmmRegisters = v_uint32()
- self.Reserved4 = v_bytes(size=192) # FIXME Unknown Array Type
- self.StackControl = v_bytes(size=28) # FIXME Unknown Array Type
+ self.Reserved4 = v_bytes(size=192) # FIXME Unknown Array Type
+ self.StackControl = v_bytes(size=28) # FIXME Unknown Array Type
self.Cr0NpxState = v_uint32()
@@ -4596,7 +4596,7 @@ class PO_DIAG_STACK_RECORD(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.StackDepth = v_uint32()
- self.Stack = v_bytes(size=4) # FIXME Unknown Array Type
+ self.Stack = v_bytes(size=4) # FIXME Unknown Array Type
class IMAGE_DOS_HEADER(vstruct.VStruct):
@@ -4616,10 +4616,10 @@ def __init__(self):
self.e_cs = v_uint16()
self.e_lfarlc = v_uint16()
self.e_ovno = v_uint16()
- self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
+ self.e_res = v_bytes(size=8) # FIXME Unknown Array Type
self.e_oemid = v_uint16()
self.e_oeminfo = v_uint16()
- self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
+ self.e_res2 = v_bytes(size=20) # FIXME Unknown Array Type
self.e_lfanew = v_uint32()
@@ -4694,20 +4694,20 @@ def __init__(self):
self.CpuID = v_uint8()
self.CpuStep = v_uint16()
self.ProcessorState = KPROCESSOR_STATE()
- self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
- self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.KernelReserved = v_bytes(size=64) # FIXME Unknown Array Type
+ self.HalReserved = v_bytes(size=64) # FIXME Unknown Array Type
self.CFlushSize = v_uint32()
self.CoresPerPhysicalProcessor = v_uint8()
self.LogicalProcessorsPerCore = v_uint8()
- self.PrcbPad0 = v_bytes(size=2) # FIXME Unknown Array Type
+ self.PrcbPad0 = v_bytes(size=2) # FIXME Unknown Array Type
self.MHz = v_uint32()
self.CpuVendor = v_uint8()
self.GroupIndex = v_uint8()
self.Group = v_uint16()
self.GroupSetMember = v_uint32()
self.Number = v_uint32()
- self.PrcbPad1 = v_bytes(size=72) # FIXME Unknown Array Type
- self.LockQueue = v_bytes(size=72) # FIXME Unknown Array Type
+ self.PrcbPad1 = v_bytes(size=72) # FIXME Unknown Array Type
+ self.LockQueue = v_bytes(size=72) # FIXME Unknown Array Type
self.NpxThread = v_ptr32()
self.InterruptCount = v_uint32()
self.KernelTime = v_uint32()
@@ -4719,12 +4719,12 @@ def __init__(self):
self.PageColor = v_uint32()
self.DebuggerSavedIRQL = v_uint8()
self.NodeColor = v_uint8()
- self.PrcbPad20 = v_bytes(size=2) # FIXME Unknown Array Type
+ self.PrcbPad20 = v_bytes(size=2) # FIXME Unknown Array Type
self.NodeShiftedColor = v_uint32()
self.ParentNode = v_ptr32()
self.SecondaryColorMask = v_uint32()
self.DpcTimeLimit = v_uint32()
- self.PrcbPad21 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PrcbPad21 = v_bytes(size=8) # FIXME Unknown Array Type
self.CcFastReadNoWait = v_uint32()
self.CcFastReadWait = v_uint32()
self.CcFastReadNotPossible = v_uint32()
@@ -4768,23 +4768,23 @@ def __init__(self):
self.KeExceptionDispatchCount = v_uint32()
self.KeSystemCalls = v_uint32()
self.AvailableTime = v_uint32()
- self.PrcbPad22 = v_bytes(size=8) # FIXME Unknown Array Type
- self.PPLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
- self.PPNPagedLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
- self.PPPagedLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PrcbPad22 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PPLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PPNPagedLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PPPagedLookasideList = v_bytes(size=8) # FIXME Unknown Array Type
self.PacketBarrier = v_uint32()
self.ReverseStall = v_uint32()
self.IpiFrame = v_ptr32()
- self.PrcbPad3 = v_bytes(size=52) # FIXME Unknown Array Type
- self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
+ self.PrcbPad3 = v_bytes(size=52) # FIXME Unknown Array Type
+ self.CurrentPacket = v_bytes(size=12) # FIXME Unknown Array Type
self.TargetSet = v_uint32()
self.WorkerRoutine = v_ptr32()
self.IpiFrozen = v_uint32()
- self.PrcbPad4 = v_bytes(size=40) # FIXME Unknown Array Type
+ self.PrcbPad4 = v_bytes(size=40) # FIXME Unknown Array Type
self.RequestSummary = v_uint32()
self.SignalDone = v_ptr32()
- self.PrcbPad50 = v_bytes(size=56) # FIXME Unknown Array Type
- self.DpcData = v_bytes(size=56) # FIXME Unknown Array Type
+ self.PrcbPad50 = v_bytes(size=56) # FIXME Unknown Array Type
+ self.DpcData = v_bytes(size=56) # FIXME Unknown Array Type
self.DpcStack = v_ptr32()
self.MaximumDpcQueueDepth = v_uint32()
self.DpcRequestRate = v_uint32()
@@ -4800,7 +4800,7 @@ def __init__(self):
self.TimerHand = v_uint32()
self.LastTick = v_uint32()
self.MasterOffset = v_uint32()
- self.PrcbPad41 = v_bytes(size=8) # FIXME Unknown Array Type
+ self.PrcbPad41 = v_bytes(size=8) # FIXME Unknown Array Type
self.PeriodicCount = v_uint32()
self.PeriodicBias = v_uint32()
self._pad1958 = v_bytes(size=4)
@@ -4810,13 +4810,13 @@ def __init__(self):
self.ClockKeepAlive = v_uint32()
self.ClockCheckSlot = v_uint8()
self.ClockPollCycle = v_uint8()
- self.PrcbPad6 = v_bytes(size=2) # FIXME Unknown Array Type
+ self.PrcbPad6 = v_bytes(size=2) # FIXME Unknown Array Type
self.DpcWatchdogPeriod = v_uint32()
self.DpcWatchdogCount = v_uint32()
self.ThreadWatchdogPeriod = v_uint32()
self.ThreadWatchdogCount = v_uint32()
self.KeSpinLockOrdering = v_uint32()
- self.PrcbPad70 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.PrcbPad70 = v_bytes(size=4) # FIXME Unknown Array Type
self.WaitListHead = LIST_ENTRY()
self.WaitLock = v_uint32()
self.ReadySummary = v_uint32()
@@ -4826,8 +4826,8 @@ def __init__(self):
self.CycleTime = v_uint64()
self.HighCycleTime = v_uint32()
self.PrcbPad71 = v_uint32()
- self.PrcbPad72 = v_bytes(size=16) # FIXME Unknown Array Type
- self.DispatcherReadyListHead = v_bytes(size=16) # FIXME Unknown Array Type
+ self.PrcbPad72 = v_bytes(size=16) # FIXME Unknown Array Type
+ self.DispatcherReadyListHead = v_bytes(size=16) # FIXME Unknown Array Type
self.ChainedInterruptList = v_ptr32()
self.LookasideIrpFloat = v_uint32()
self.MmPageFaultCount = v_uint32()
@@ -4846,11 +4846,11 @@ def __init__(self):
self.CachedCommit = v_uint32()
self.CachedResidentAvailable = v_uint32()
self.HyperPte = v_ptr32()
- self.PrcbPad8 = v_bytes(size=4) # FIXME Unknown Array Type
- self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
+ self.PrcbPad8 = v_bytes(size=4) # FIXME Unknown Array Type
+ self.VendorString = v_bytes(size=13) # FIXME Unknown Array Type
self.InitialApicId = v_uint8()
self.LogicalProcessorsPerPhysicalProcessor = v_uint8()
- self.PrcbPad9 = v_bytes(size=5) # FIXME Unknown Array Type
+ self.PrcbPad9 = v_bytes(size=5) # FIXME Unknown Array Type
self.FeatureBits = v_uint32()
self._pad3388 = v_bytes(size=4)
self.UpdateSignature = LARGE_INTEGER()
@@ -4869,9 +4869,9 @@ def __init__(self):
self.RateControl = v_ptr32()
self.Cache = v_ptr32()
self.CacheCount = v_uint32()
- self.CacheProcessorMask = v_bytes(size=20) # FIXME Unknown Array Type
+ self.CacheProcessorMask = v_bytes(size=20) # FIXME Unknown Array Type
self.PackageProcessorSet = KAFFINITY_EX()
- self.PrcbPad91 = v_bytes(size=56) # FIXME Unknown Array Type
+ self.PrcbPad91 = v_bytes(size=56) # FIXME Unknown Array Type
self.CoreProcessorSet = v_uint32()
self.TimerExpirationDpc = KDPC()
self.SpinLockAcquireCount = v_uint32()
@@ -4945,7 +4945,7 @@ def __init__(self):
self.Count = v_uint16()
self.Size = v_uint16()
self.Reserved = v_uint32()
- self.Bitmap = v_bytes(size=16) # FIXME Unknown Array Type
+ self.Bitmap = v_bytes(size=16) # FIXME Unknown Array Type
class DEVICE_OBJECT(vstruct.VStruct):
@@ -5046,7 +5046,7 @@ def __init__(self):
self.NodePad0 = v_uint8()
self.Seed = v_uint32()
self.MmShiftedColor = v_uint32()
- self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
+ self.FreeCount = v_bytes(size=8) # FIXME Unknown Array Type
self.CachedKernelStacks = CACHED_KSTACK_LIST()
self.ParkLock = v_uint32()
self.NodePad1 = v_uint32()
@@ -5066,7 +5066,7 @@ class XSAVE_AREA_HEADER(vstruct.VStruct):
def __init__(self):
vstruct.VStruct.__init__(self)
self.Mask = v_uint64()
- self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=56) # FIXME Unknown Array Type
class PSP_CPU_SHARE_CAPTURED_WEIGHT_DATA(vstruct.VStruct):
@@ -5124,7 +5124,7 @@ def __init__(self):
self.InterfaceType = v_uint32()
self.BusNumber = v_uint32()
self.SlotNumber = v_uint32()
- self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
+ self.Reserved = v_bytes(size=12) # FIXME Unknown Array Type
self.AlternativeLists = v_uint32()
self.List = v_uint32()
diff --git a/vstruct/primitives.py b/vstruct/primitives.py
index 09718de..3751c16 100644
--- a/vstruct/primitives.py
+++ b/vstruct/primitives.py
@@ -10,6 +10,7 @@
class v_enum: pass
+
class v_base(object):
def __init__(self):
self._vs_meta = {}
@@ -26,6 +27,7 @@ def vsGetFormat(self): return NotImplemented
def vsIsPrim(self): return NotImplemented
def vsGetTypeName(self): return NotImplemented
+
class v_prim(v_base):
def __init__(self):
@@ -191,40 +193,50 @@ def __coerce__(self, other):
def __hex__(self): return hex(long(self))
def __oct__(self): return oct(long(self))
+
class v_uint8(v_number):
_vs_builder = True
_vs_fmt = "B"
+
class v_uint16(v_number):
_vs_builder = True
_vs_fmt = "H"
+
class v_uint32(v_number):
_vs_builder = True
_vs_fmt = "L"
+
class v_uint64(v_number):
_vs_builder = True
_vs_fmt = "Q"
+
class v_int8(v_number):
_vs_builder = True
_vs_fmt = "b"
+
class v_int16(v_number):
_vs_builder = True
_vs_fmt = "h"
+
class v_int32(v_number):
_vs_builder = True
_vs_fmt = "l"
+
class v_int64(v_number):
_vs_builder = True
_vs_fmt = "q"
+
pointersize = struct.calcsize("P")
+
class v_size_t(v_number):
_vs_builder = True
if pointersize == 4:
@@ -233,19 +245,23 @@ class v_size_t(v_number):
_vs_fmt = "Q"
def __repr__(self):
- return "0x%.8x" % self._vs_value
+ return "{:x}".format(self._vs_value[0:7])
+
class v_ptr(v_size_t):
pass
+
class v_ptr32(v_ptr):
_vs_builder = True
_vs_fmt = "L"
+
class v_ptr64(v_ptr):
_vs_builder = True
_vs_fmt = "Q"
+
class v_bytes(v_prim):
_vs_builder = True
@@ -263,6 +279,7 @@ def vsGetFormat(self):
def __repr__(self):
return self._vs_value.encode('hex')
+
class v_str(v_prim):
'''
A string placeholder class which will automagically return
@@ -291,6 +308,7 @@ def vsGetFormat(self):
def __len__(self):
return len(self._vs_value)
+
class v_wstr(v_str):
'''
Unicode variant of the above string class
@@ -357,5 +375,5 @@ def vsGetValue(self):
def __repr__(self):
base = "{%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}"
- return base % (self._guid_fields)
+ return base % (self._guid_fields)
From 24cc0dce41b7518207ff4102cd47d556abd24482 Mon Sep 17 00:00:00 2001
From: PlantDaddy <CqP5TZ77NYBf5uQt@protonmail.com>
Date: Mon, 13 Apr 2020 21:28:04 -0500
Subject: [PATCH 4/4] Switched the windows defs from using envi to platform to
get platform architecture in a crossplatform way, which will (hopefully) fix
the travis build failures for python 3.5
---
vstruct/defs/windows/__init__.py | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/vstruct/defs/windows/__init__.py b/vstruct/defs/windows/__init__.py
index a231feb..4eac982 100644
--- a/vstruct/defs/windows/__init__.py
+++ b/vstruct/defs/windows/__init__.py
@@ -1,8 +1,7 @@
-'''
+"""
The pre-made windows structure defs (extracted from pdb syms)
-'''
+"""
-import envi
import ctypes
import platform
@@ -21,7 +20,7 @@ def isSysWow64():
def getCurrentDef(normname):
bname, wver, stuff, whichkern = platform.win32_ver()
wvertup = wver.split('.')
- arch = envi.getCurrentArch()
+ arch = platform.architecture()[0]
if isSysWow64():
arch = 'wow64'