34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import os.path as path
|
|
|
|
|
|
class Module:
|
|
def __init__(self, incoming=False, verbose=False, options=None):
|
|
# extract the file name from __file__. __file__ is proxymodules/name.py
|
|
self.name = path.splitext(path.basename(__file__))[0]
|
|
self.description = 'Print a hexdump of the received data'
|
|
self.incoming = incoming # incoming means module is on -im chain
|
|
self.len = 16
|
|
if options is not None:
|
|
if 'length' in options.keys():
|
|
self.len = int(options['length'])
|
|
|
|
def help(self):
|
|
return '\tlength: bytes per line (int)'
|
|
|
|
def execute(self, data):
|
|
# this is a pretty hex dumping function directly taken from
|
|
# http://code.activestate.com/recipes/142812-hex-dumper/
|
|
result = []
|
|
digits = 2
|
|
for i in range(0, len(data), self.len):
|
|
s = data[i:i + self.len]
|
|
hexa = ' '.join(['%0*X' % (digits, x) for x in s])
|
|
text = ''.join([chr(x) if 0x20 <= x < 0x7F else '.' for x in s])
|
|
result.append("%04X %-*s %s" % (i, self.len * (digits + 1), hexa, text))
|
|
print("\n".join(result))
|
|
return data
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print ('This module is not supposed to be executed alone!')
|