Created
November 3, 2023 16:10
-
-
Save 641i130/6526b00f9f60fdb4df88f2bc2abdb719 to your computer and use it in GitHub Desktop.
Fast NMAP Filter IP List Maker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
import subprocess | |
from os.path import exists | |
# Ask the user for the CIDR range to scan | |
cidr_range = input("Enter the CIDR range to scan (e.g., '10.10.4.0/22'): ") | |
if cidr_range == "": | |
cidr_range = "10.10.4.0/22" | |
if not exists("./scan.txt"): | |
try: | |
# Run the nmap command to perform a ping scan and capture the output | |
nmap_command = f'nmap -sn {cidr_range} -oN scan.txt' | |
nmap_output = subprocess.check_output(nmap_command, shell=True, universal_newlines=True) | |
except subprocess.CalledProcessError: | |
print("Nmap command failed. Make sure you have Nmap installed and try again.") | |
exit(1) | |
with open('./scan.txt', 'r') as file: | |
nmap_output = file.read() | |
# Split the nmap output into individual sections for each device | |
device_sections = re.split(r'Nmap scan report for ', nmap_output) | |
# Remove the empty string resulting from the split | |
device_sections = [section for section in device_sections if section.strip()] | |
# Ask the user for filter keywords (comma-separated) | |
filter_keywords = "Netgear,Dell".split(",") | |
# Initialize a list to store the IP addresses that match the filter | |
filtered_ips = [] | |
# Iterate through the device sections and filter based on the keywords | |
for section in device_sections: | |
print(section) | |
should_include = all(keyword.lower() not in section.lower() for keyword in filter_keywords) | |
if should_include: | |
ip_match = re.search(r'(\d+\.\d+\.\d+\.\d+)', section) | |
mac_match = re.search(r'MAC Address: ([\w:]+)', section) | |
if ip_match: | |
ip_address = ip_match.group(1) | |
if mac_match: | |
mac_address = mac_match.group(1) | |
filtered_ips.append(f"{ip_address}") | |
# Join the filtered IP addresses with commas and print the result | |
result = ', '.join(filtered_ips) | |
print("Filtered IP addresses: " + result) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment