{"id":29232099,"url":"https://github.com/mehmetkahya0/networkmapping","last_synced_at":"2025-07-03T15:32:40.432Z","repository":{"id":301243123,"uuid":"1008631120","full_name":"mehmetkahya0/NetworkMapping","owner":"mehmetkahya0","description":"Network Mapping Tool: A Python-based network mapping tool that discovers devices on your local network and creates visual network topology graphs using built-in Python libraries and basic network scanning techniques.","archived":false,"fork":false,"pushed_at":"2025-06-25T21:13:02.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-25T22:27:31.514Z","etag":null,"topics":["console-application","cybersecurity","education","educational-project","graph","gui","network","port","port-scanner","port-scanning","python","scan","tkinter"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mehmetkahya0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-25T21:08:23.000Z","updated_at":"2025-06-25T21:13:05.000Z","dependencies_parsed_at":"2025-06-25T22:27:34.941Z","dependency_job_id":"a166a779-c1a5-41d5-a49e-aea43cb2626f","html_url":"https://github.com/mehmetkahya0/NetworkMapping","commit_stats":null,"previous_names":["mehmetkahya0/networkmapping"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mehmetkahya0/NetworkMapping","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehmetkahya0%2FNetworkMapping","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehmetkahya0%2FNetworkMapping/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehmetkahya0%2FNetworkMapping/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehmetkahya0%2FNetworkMapping/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mehmetkahya0","download_url":"https://codeload.github.com/mehmetkahya0/NetworkMapping/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehmetkahya0%2FNetworkMapping/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263350192,"owners_count":23453240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["console-application","cybersecurity","education","educational-project","graph","gui","network","port","port-scanner","port-scanning","python","scan","tkinter"],"created_at":"2025-07-03T15:30:31.270Z","updated_at":"2025-07-03T15:32:40.411Z","avatar_url":"https://github.com/mehmetkahya0.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Network Mapping Tool\n\nA Python-based network mapping tool that discovers devices on your local network and creates visual network topology graphs using built-in Python libraries and basic network scanning techniques.\n\n## Features\n\n- **Device Discovery**: Automatically scans your local network to find all connected devices using ping\n- **Device Classification**: Identifies device types (routers, computers, servers, access points, etc.)\n- **Network Visualization**: Creates beautiful network topology graphs showing device connections\n- **Port Scanning**: Discovers open ports on each device for device identification\n- **Multiple Interfaces**: Both command-line and GUI versions available\n- **Data Export**: Export scan results to JSON format\n- **No Root Required**: Works without administrator privileges or external tools\n\n## Requirements\n\n- Python 3.6+\n- Required Python packages (see requirements.txt)\n- No external tools required (no nmap installation needed)\n\n## Installation\n\nInstall Python dependencies:\n```bash\npip install -r requirements.txt\n```\n\n## Usage\n\n### Command Line Version\n\nRun the main script to perform a complete network scan and generate visualization:\n\n```bash\npython main.py\n```\n\nThis will:\n- Scan your local network for devices using ping\n- Display a detailed device summary\n- Generate a network topology graph (`network_map.png`)\n- Export raw data (`network_data.json`)\n\n### GUI Version\n\nFor a user-friendly interface:\n\n```bash\npython gui.py\n```\n\nThe GUI provides:\n- Easy network scanning with progress indication\n- Tabular view of discovered devices\n- Interactive map generation\n- Data export functionality\n\n### Quick Test\n\nFor a quick test of basic functionality:\n\n```bash\npython simple_main.py\n```\n\n## Device Types Detected\n\nThe tool can identify various device types based on open ports and network behavior:\n\n- **Router/Gateway**: Default gateway or devices with web interface and SSH (ports 80/443 + 22)\n- **Access Point**: Devices with \"ap\", \"access\", \"wifi\", or \"wireless\" in hostname\n- **Windows Computer**: Systems with SMB/RDP services (ports 445, 3389)\n- **Linux/Unix Server**: Systems with SSH service (port 22)\n- **Web Server**: Devices serving HTTP/HTTPS (ports 80, 443)\n- **Mobile Device**: Devices with mobile-related hostnames\n- **Host/Computer**: Generic network devices\n\n## Scanning Methods\n\n### Quick Scan (Default)\n- Ping sweep to discover live hosts\n- Scans important ports (22, 80, 443, 445, 3389) for device classification\n- Fast execution, good for basic network mapping\n\n### Full Scan\n- Ping sweep to discover live hosts  \n- Scans all common ports for detailed device identification\n- More comprehensive but slower\n\n## Network Visualization\n\nThe generated network map uses color coding:\n- 🔴 **Red**: Router/Gateway (main connection point)\n- 🟠 **Orange**: Access Points\n- 🔵 **Blue**: Servers\n- 🟢 **Green**: Computers\n- 🟣 **Purple**: Mobile Devices\n- 🔵 **Light Blue**: Other devices\n\n## Output Files\n\n### network_map.png\nVisual representation of your network topology showing:\n- Device connections\n- Device types (color-coded)\n- IP addresses and hostnames\n- Network structure\n\n### network_data.json\nRaw scan data including:\n- Complete device information\n- Open ports for each device\n- Scan timestamps\n- Network ranges scanned\n- Gateway information\n\n## Configuration Options\n\n### Scan Types\n\n- **Quick Scan**: `mapper.scan_network(quick_scan=True)` - Fast ping + important ports\n- **Full Scan**: `mapper.scan_network(quick_scan=False)` - Ping + all common ports\n\n### Custom Network Range\n\nYou can specify a custom network range to scan:\n\n```python\nmapper.scan_network(\"192.168.1.0/24\")\n```\n\n## Security Considerations\n\n- This tool uses standard network protocols (ICMP ping, TCP connect)\n- No privileged operations required\n- Some networks may block ping (ICMP) which will limit device discovery\n- Firewall rules may prevent port scanning\n- Only use on networks you own or have permission to scan\n\n## Troubleshooting\n\n### Common Issues\n\n1. **No devices found**:\n   - Check if you're connected to a network\n   - Some networks block ICMP ping - this is normal for security\n   - Try the full scan mode for better port-based detection\n\n2. **Limited device discovery**:\n   - Many modern devices don't respond to ping for security\n   - Corporate networks often have strict firewall rules\n   - Try scanning during peak usage times when devices are more active\n\n3. **Slow scanning**:\n   - Use quick scan mode for faster results: `quick_scan=True`\n   - Reduce the network range being scanned\n   - Some networks have rate limiting\n\n4. **Matplotlib display issues**:\n   - Install tkinter: `pip install tk`\n   - For headless systems, the tool will save files instead of displaying\n\n## Example Output\n\n```\nNETWORK MAPPING RESULTS\n============================================================\nTotal devices found: 3\nNetworks scanned: 192.168.1.0/24\nGateway: 192.168.1.1\n------------------------------------------------------------\n\nROUTER/GATEWAY:\n  192.168.1.1     | router.local         | Ports: [80, 443]\n\nHOST/COMPUTER:\n  192.168.1.100   | desktop-pc           | Ports: []\n  192.168.1.101   | laptop-user          | Ports: [22]\n```\n\n## Advantages Over nmap-based Solutions\n\n- **No Installation Required**: Works with just Python packages\n- **No Root Privileges**: Runs as regular user\n- **Cross-Platform**: Works on Windows, macOS, Linux without additional setup\n- **Lightweight**: Minimal dependencies\n- **Safe**: Uses standard network protocols only\n\n## License\n\nThis project is open source and available under the MIT License.\n\n## Contributing\n\nFeel free to submit issues, feature requests, or pull requests to improve the tool.\n\n## Usage\n\n### Command Line Version\n\nRun the main script to perform a complete network scan and generate visualization:\n\n```bash\npython main.py\n```\n\nThis will:\n- Scan your local network for devices\n- Display a detailed device summary\n- Generate a network topology graph (`network_map.png`)\n- Export raw data (`network_data.json`)\n\n### GUI Version\n\nFor a user-friendly interface:\n\n```bash\npython gui.py\n```\n\nThe GUI provides:\n- Easy network scanning with progress indication\n- Tabular view of discovered devices\n- Interactive map generation\n- Data export functionality\n\n## Device Types Detected\n\nThe tool can identify various device types based on open ports and network behavior:\n\n- **Router/Gateway**: Devices with web interface and SSH/Telnet (ports 80/443 + 22/23)\n- **Access Point**: Wireless access points and WiFi devices\n- **Windows Computer**: Systems with SMB/RDP services (ports 445, 139, 3389)\n- **Linux/Unix Server**: Systems with SSH service (port 22)\n- **Mac Computer**: Systems with AFP service (port 548)\n- **Web Server**: Devices serving HTTP/HTTPS (ports 80, 443, 8080)\n- **FTP Server**: File transfer servers (port 21)\n- **DNS Server**: Domain name servers (port 53)\n- **Network Device**: SNMP-enabled devices (port 161)\n\n## Network Visualization\n\nThe generated network map uses color coding:\n- 🔴 **Red**: Router/Gateway (main connection point)\n- 🟠 **Orange**: Access Points\n- 🔵 **Blue**: Servers\n- 🟢 **Green**: Computers\n- 🔵 **Light Blue**: Other devices\n\n## Output Files\n\n### network_map.png\nVisual representation of your network topology showing:\n- Device connections\n- Device types (color-coded)\n- IP addresses and hostnames\n- Network structure\n\n### network_data.json\nRaw scan data including:\n- Complete device information\n- Open ports for each device\n- MAC addresses (when available)\n- Scan timestamps\n- Network ranges scanned\n\n## Configuration Options\n\n### Quick Scan vs Full Scan\n\n- **Quick Scan** (`-sn`): Fast ping sweep to discover hosts\n- **Full Scan** (`-sS -O --top-ports 1000`): Detailed port scan with OS detection\n\n### Custom Network Range\n\nYou can specify a custom network range to scan:\n\n```python\nmapper.scan_network(\"192.168.1.0/24\")\n```\n\n## Security Considerations\n\n- This tool performs network scanning which may be detected by security systems\n- Only use on networks you own or have permission to scan\n- Some firewalls may block or detect the scanning activity\n- Administrative privileges may be required for certain scan types\n\n## Troubleshooting\n\n### Common Issues\n\n1. **No devices found**:\n   - Check if you're connected to a network\n   - Try running with administrator/root privileges\n   - Verify Nmap is properly installed\n\n2. **Permission errors**:\n   - Run with `sudo` on macOS/Linux\n   - Run as Administrator on Windows\n\n3. **Matplotlib display issues**:\n   - Install tkinter: `pip install tk`\n   - For headless systems, the tool will save files instead of displaying\n\n4. **Slow scanning**:\n   - Use quick scan mode for faster results\n   - Reduce the network range being scanned\n\n## Example Output\n\n```\nNETWORK MAPPING RESULTS\n============================================================\nTotal devices found: 8\nNetworks scanned: 192.168.1.0/24\n------------------------------------------------------------\n\nROUTER/GATEWAY:\n  192.168.1.1     | router.local         | Ports: [22, 53, 80, 443]\n\nWINDOWS COMPUTER:\n  192.168.1.100   | desktop-pc           | Ports: [135, 139, 445]\n  192.168.1.101   | laptop-user          | Ports: [135, 139, 445]\n\nACCESS POINT:\n  192.168.1.50    | ap-livingroom        | Ports: [22, 80, 443]\n\nHOST/COMPUTER:\n  192.168.1.200   | phone-android        | Ports: []\n  192.168.1.201   | tablet-ipad          | Ports: []\n```\n\n## License\n\nThis project is open source and available under the MIT License.\n\n## Contributing\n\nFeel free to submit issues, feature requests, or pull requests to improve the tool.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehmetkahya0%2Fnetworkmapping","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmehmetkahya0%2Fnetworkmapping","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehmetkahya0%2Fnetworkmapping/lists"}