usfx.git

usfx

~ Ultimate Subdomain Finder X - CLI tool for internal network subdomain discovery
git clone https://github.com/debuman/usfx.git
commit 1f2684e65b4f3e4ddbf1179d8df70d401dfc7521
parent 718d197a6cc8791cc4d26d89e9c4fb8c7e3e06d0
Author: devastator-x <ICMProtocol@proton.me>
Date: Tue, 20 Jan 2026 16:35:54 +0900

fix: filter invalid IP addresses (0.0.0.0) from results

Diffstat:
Mpyproject.toml | 2+-
Msrc/usfx/__init__.py | 2+-
Msrc/usfx/engine.py | 11+++++++++--
3 files changed, 11 insertion(+), 4 deletion(-)

diff --git a/pyproject.toml b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
 
 [project]
 name = "usfx"
-version = "1.2.0"
+version = "1.2.1"
 description = "USFX - Ultimate Subdomain Finder X - Discover subdomains via custom DNS servers"
 readme = "README.txt"
 license = "MIT"
diff --git a/src/usfx/__init__.py b/src/usfx/__init__.py
@@ -6,7 +6,7 @@ using custom DNS servers. Designed for air-gapped environments without
 internet connectivity.
 """
 
-__version__ = "1.2.0"
+__version__ = "1.2.1"
 __author__ = "LACRYMARIA Team"
 
 from .config import ScanConfig
diff --git a/src/usfx/engine.py b/src/usfx/engine.py
@@ -77,12 +77,19 @@ class SubdomainEngine:
 
             duration = time.time() - start_time
 
+            # Invalid IPs to filter out
+            INVALID_IPS = {'0.0.0.0', '127.0.0.1', '::1', ''}
+
             # Build result
             subdomains = []
             for subdomain, info in state.discovered.items():
+                ip = info.get('ip')
+                # Skip invalid IPs
+                if ip in INVALID_IPS or ip is None:
+                    continue
                 subdomains.append(SubdomainResult(
                     subdomain=subdomain,
-                    ip=info.get('ip'),
+                    ip=ip,
                     discovered_by=info.get('discovered_by', 'unknown'),
                     is_active=info.get('is_active', False),
                 ))
@@ -131,7 +138,7 @@ class SubdomainEngine:
 
             return ScanResult(
                 domain=config.domain,
-                total_found=state.total_found,
+                total_found=len(subdomains),  # Use filtered count
                 subdomains=subdomains,
                 module_results=module_results,
                 duration_seconds=duration,