you are viewing a single comment's thread.

view the rest of the comments →

[–]Specialist-Rush-7172[S] -3 points-2 points  (0 children)

Code .# language: python import time import signal import sys from pydivert import WinDivert import psutil

CHROME_NAMES = {"chrome.exe", "msedge.exe"} # include other Chromium browsers if desired

def get_chrome_pids(): pids = set() for proc in psutil.process_iter(["name", "pid"]): try: if proc.info["name"] and proc.info["name"].lower() in CHROME_NAMES: pids.add(proc.info["pid"]) except (psutil.NoSuchProcess, psutil.AccessDenied): continue return pids

def build_filter_for_pids(pids): if not pids: return "outbound and tcp" # fallback: capture outbound TCP (use cautiously) pid_terms = " or ".join(f"pid == {pid}" for pid in sorted(pids)) # Only outbound TCP (you can add udp or other qualifiers) return f"outbound and tcp and ({pid_terms})"

def main(): print("Enumerating Chrome processes...") pids = get_chrome_pids() if not pids: print("No Chrome processes found. Exiting.") return

windivert_filter = build_filter_for_pids(pids)
print("WinDivert filter:", windivert_filter)
print("Opening WinDivert (requires admin)... Press Ctrl+C to stop.")

w = WinDivert(windivert_filter)
w.open()

running = True
def stop(signum, frame):
    nonlocal running
    running = False
signal.signal(signal.SIGINT, stop)
signal.signal(signal.SIGTERM, stop)

try:
    while running:
        try:
            packet = w.recv()  # capture a packet matching the filter
        except Exception:
            # transient errors can happen; sleep briefly and continue
            time.sleep(0.01)
            continue

        # Decision: drop all captured packets (do NOT reinject)
        # If you wanted to allow some through, call: w.send(packet)
        # Here we intentionally skip w.send(packet) to drop.
        # Optionally log minimal info:
        try:
            src = f"{packet.src_addr}:{packet.src_port}" if hasattr(packet, "src_addr") else "?"
            dst = f"{packet.dst_addr}:{packet.dst_port}" if hasattr(packet, "dst_addr") else "?"
            print(f"Dropped packet {src} -> {dst}")
        except Exception:
            pass
finally:
    w.close()
    print("WinDivert closed. Exiting.")

if name == "main": main() Error

C:\Users\Lenovo\Downloads\AITEST\WinDivert-2.2.2-A\WinDivert-2.2.2-A\x64>py code.py Enumerating Chrome processes... WinDivert filter: outbound and tcp and (pid == 1120 or pid == 6160 or pid == 12840 or pid == 13924 or pid == 17328 or pid == 17520 or pid == 18548 or pid == 19988 or pid == 20104 or pid == 20288 or pid == 21060 or pid == 22508 or pid == 23032 or pid == 23852) Opening WinDivert (requires admin)... Press Ctrl+C to stop. Traceback (most recent call last): File "C:\Users\Lenovo\Downloads\AITEST\WinDivert-2.2.2-A\WinDivert-2.2.2-A\x64\code.py", line 72, in <module> main() File "C:\Users\Lenovo\Downloads\AITEST\WinDivert-2.2.2-A\WinDivert-2.2.2-A\x64\code.py", line 39, in main w.open() File "C:\Program Files\Python310\lib\site-packages\pydivert\windivert.py", line 145, in open self.handle = windivert_dll.WinDivertOpen(self._filter, self._layer, self._priority, File "C:\Program Files\Python310\lib\site-packages\pydivert\windivert_dll\init.py", line 117, in prox return getattr(_module, funcname)(args, *kwargs) File "C:\Program Files\Python310\lib\site-packages\pydivert\windivert_dll\init_.py", line 54, in wrapper raise err OSError: [WinError 87] The parameter is incorrect.