def test_register(): if WinDivert.is_registered(): WinDivert.unregister() while WinDivert.is_registered(): time.sleep(0.01) # pragma: no cover assert not WinDivert.is_registered() WinDivert.register() assert WinDivert.is_registered()
def test_unregister(): w = WinDivert("false") w.open() WinDivert.unregister() time.sleep(0.1) assert WinDivert.is_registered() w.close() # may not trigger immediately. while WinDivert.is_registered(): time.sleep(0.01) # pragma: no cover
def test_register(self): """ Tests DLL registration """ d = WinDivert().register() assert d.is_registered() assert os.path.abspath(d.dll_path) == DEFAULT_DLL_PATH
def test_register(self): """ Tests DLL registration """ w = WinDivert(self.dll_path) w.register() self.assertTrue(w.is_registered())
def test_register(self): """ Tests DLL registration """ d = WinDivert(self.dll_path).register() self.assertTrue(d.is_registered()) self.assertEquals(os.path.abspath(d.dll_path), os.path.abspath(self.dll_path))
def testRegister(): ''' Attempt to register WinDivert ''' dll_path3 = r"c:\Python276\lib\site-packages\pydivert-0.0.2-py2.7.egg\lib\1.1\amd64\WinDivert.dll" driver_path = r"c:\Python276\lib\site-packages\pydivert-0.0.2-py2.7.egg\lib\1.1\amd64" os.chdir(driver_path) handle = WinDivert(dll_path3) print "HANDLE:", handle handle.register() print "REGISTERED:", handle.is_registered()
class PacketSniffer(QObject): ''' A class to sniff packets and alter them ''' interface = None countPacketsCaptured = 0 _filter="ip and (ip.DstAddr == %s or ip.SrcAddr == %s)" dropOutbound = False dropInbound = False def __init__(self, parent, server_ip=None, dll=None, running=True, priority=1000): ''' consructor, set variables ''' super(PacketSniffer, self).__init__(parent) # Store reference to parent for emiting self.parent = parent # Store server IP determined earlier self.server_ip = server_ip # Build dll path if dll is None: if is_python_64bit() and is_windows_64bit(): version = "amd64" elif not is_python_64bit() and not is_windows_64bit(): version = "x86" else: raise InterpreterArchitectureMisMatch self.dll = os.path.abspath(os.path.join("assets","libs","WinDivert",version,"WinDivert.dll")).replace('\\','\\\\') else: self.dll = dll # Executing Flag self.running = running # Listen Packet Priority self.priority = priority # Build sniffer object self.interface = WinDivert(self.dll) # Build Packet Decryption Class self.tcp = TCP(self) # Build our session for http requests we make self.session = requests.Session() self.session.headers.update({'User-Agent': 'CMO3D', 'Accept': 'application/text'}) # TODO: Compare to what is actually being sent in Wireshark def stop(self): ''' Stop Execution ''' self.running = False def register(self): ''' register pyDivert with the system ''' if self.interface is not None and is_elevated_priv(): self.interface.register() else: raise RequireElevatedPrivileges def isRegistered(self): ''' Bool. Is our sniffer properly registered ''' if self.interface is not None: return self.interface.is_registered() else: return False def listen(self): ''' Core listen loop. Listen on interface for packets ''' # Listen Packet Filter if self.server_ip is not None: self.filter = self._filter % (self.server_ip, self.server_ip) else: raise TargetServerIPNotSet if self.interface is not None and self.isRegistered(): with Handle(self.interface, filter=self.filter, priority=self.priority, flags=1024) as handle: while self.running: # Read in Packet packet = handle.receive() # Note the new packet self.countPacketsCaptured += 1 # Parse Packet Payload (data) payload = hexlify(packet.payload) # Log IP headers log.debug("[Packet]{}:{}:{}".format(packet.dst_addr, packet.dst_port, payload)) # Determine flow direction self.outbound = False if packet.meta.is_outbound(): self.outbound = True # Decode Packet, emit if len(payload) is not 0: self.tcp.checkPacket(payload) # Send Packet on its way, if allowed if self.outbound and not self.dropOutbound: handle.send(packet) elif not self.outbound and not self.dropInbound: handle.send(packet) handle.close()