Convert Figma logo to code with AI

angryip logoipscan

Angry IP Scanner - fast and friendly network scanner

4,076
715
4,076
161

Top Related Projects

9,874

Nmap - the Network Mapper. Github mirror of official SVN repository.

23,262

TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.

16,239

The Swiss Army knife for 802.11, BLE, HID, CAN-bus, IPv4 and IPv6 networks reconnaissance and MITM attacks.

10,525

Scapy: the Python-based interactive packet manipulation program & library.

4,587

A fast port scanner written in go with a focus on reliability and simplicity. Designed to be used in combination with other tools for attack surface discovery in bug bounties and pentests

Quick Overview

Angry IP Scanner (ipscan) is an open-source, cross-platform network scanner designed to be fast and easy to use. It can scan IP addresses and ports as well as has many other features. This tool is widely used for network discovery, security auditing, and system administration tasks.

Pros

  • Fast and efficient scanning of IP ranges and ports
  • Cross-platform compatibility (Windows, macOS, Linux)
  • Extensible through plugins
  • User-friendly graphical interface

Cons

  • May be flagged by antivirus software as potentially harmful
  • Limited advanced features compared to some commercial network scanning tools
  • Can be misused for malicious purposes if not used responsibly
  • Requires Java Runtime Environment to be installed

Getting Started

To get started with Angry IP Scanner:

  1. Download the appropriate version for your operating system from the official website.
  2. Install Java Runtime Environment if not already installed.
  3. Run the installer or extract the downloaded archive.
  4. Launch the application.
  5. Enter an IP range or hostname in the "IP Range" field.
  6. Click the "Start" button to begin scanning.

Note: Always ensure you have permission to scan the target network before using this tool.

Competitor Comparisons

9,874

Nmap - the Network Mapper. Github mirror of official SVN repository.

Pros of Nmap

  • More comprehensive scanning capabilities, including OS detection and version scanning
  • Highly customizable with scripting engine for advanced users
  • Extensive documentation and large community support

Cons of Nmap

  • Steeper learning curve, especially for command-line interface
  • Can be slower for basic network scans compared to IPScan
  • More complex setup and installation process

Code Comparison

Nmap (C++)

static void nmap_mass_rdns(Target **targets, int num_targets) {
    std::vector<Target *> targets_without_rdns;
    for (int i = 0; i < num_targets; i++) {
        if (targets[i]->TargetName() == NULL)
            targets_without_rdns.push_back(targets[i]);
    }
}

IPScan (Java)

public void scan() {
    for (int i = feederIndex; i < feeders.size(); i++) {
        Feeder feeder = feeders.get(i);
        while (feeder.hasNext()) {
            String ip = feeder.next();
            scan(ip);
        }
    }
}

The code snippets show different approaches to scanning. Nmap's C++ code focuses on reverse DNS lookups for targets, while IPScan's Java code demonstrates a simpler iteration through IP addresses for scanning. This reflects Nmap's more advanced capabilities and IPScan's straightforward approach to network scanning.

23,262

TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.

Pros of masscan

  • Extremely fast scanning capabilities, able to scan the entire Internet in under 6 minutes
  • Asynchronous operation allows for scanning millions of IPs simultaneously
  • Customizable output formats, including XML, JSON, and binary

Cons of masscan

  • Less user-friendly interface compared to ipscan's GUI
  • Limited protocol support, primarily focused on TCP SYN scanning
  • May require more technical expertise to use effectively

Code Comparison

masscan:

for (i = 0; i < range; i++) {
    ip = rangelist_pick(&targets, i);
    tcpcon_init(&tcpcon[i], ip, port);
    tcpcon_handle_events(&tcpcon[i]);
}

ipscan:

for (InetAddress address : range) {
    ScanningResult result = new ScanningResult(address);
    for (Fetcher fetcher : fetchers) {
        fetcher.fetch(result);
    }
}

masscan's code demonstrates its low-level C implementation for efficient scanning, while ipscan uses Java with a more modular approach, allowing for easier extension of scanning capabilities.

Both projects serve different use cases: masscan is ideal for large-scale, high-speed network scanning, while ipscan provides a more accessible tool for general-purpose IP scanning and network discovery.

16,239

The Swiss Army knife for 802.11, BLE, HID, CAN-bus, IPv4 and IPv6 networks reconnaissance and MITM attacks.

Pros of bettercap

  • More comprehensive network analysis and manipulation tool
  • Supports a wider range of protocols and attack vectors
  • Modular architecture allows for easy extension and customization

Cons of bettercap

  • Steeper learning curve due to more complex features
  • Requires more system resources to run effectively
  • May be overkill for simple network scanning tasks

Code comparison

ipscan (Java):

public void scan(final ScanningResultList results) {
    for (int i = 0; i < feederResults.size(); i++) {
        if (isInterrupted()) break;
        InetAddress address = feederResults.get(i);
        scanningContext.setScanningProgress(i);
        results.registerAtIndex(i, address);
        performScan(results, i);
    }
}

bettercap (Go):

func (mod *Discovery) Start() error {
    if err := mod.Configure(); err != nil {
        return err
    }
    return mod.SetRunning(true, func() {
        mod.waitGroup.Add(1)
        defer mod.waitGroup.Done()
        mod.discoverProbes()
    })
}

Summary

ipscan is a simpler, more focused tool for IP scanning, while bettercap offers a broader range of network analysis and manipulation capabilities. ipscan may be more suitable for basic network discovery tasks, while bettercap is better suited for advanced network security testing and analysis.

10,525

Scapy: the Python-based interactive packet manipulation program & library.

Pros of Scapy

  • More powerful and flexible for packet manipulation and network analysis
  • Supports a wider range of protocols and network layers
  • Can be used as a library in Python scripts for custom network tools

Cons of Scapy

  • Steeper learning curve due to its extensive features and Python-based interface
  • Slower performance for large-scale scans compared to IPScan
  • Requires more setup and dependencies to run

Code Comparison

Scapy (Python):

from scapy.all import *
target_ip = "192.168.1.1"
icmp_packet = IP(dst=target_ip)/ICMP()
response = sr1(icmp_packet, timeout=2)
if response:
    print(f"{target_ip} is up")

IPScan (Java):

import net.azib.ipscan.core.ScanningResult;
import net.azib.ipscan.core.Scanner;

Scanner scanner = new Scanner(new ScanningResult());
scanner.scan("192.168.1.1");
if (scanner.isAlive()) {
    System.out.println("192.168.1.1 is up");
}

Both tools can perform network scanning, but Scapy offers more granular control over packet creation and analysis, while IPScan provides a simpler interface for basic IP scanning tasks. Scapy is better suited for advanced network analysis and custom tool development, whereas IPScan is more user-friendly for quick and straightforward network discovery.

4,587

A fast port scanner written in go with a focus on reliability and simplicity. Designed to be used in combination with other tools for attack surface discovery in bug bounties and pentests

Pros of naabu

  • Faster scanning speed due to its Go-based implementation
  • More advanced port scanning techniques, including SYN, CONNECT, and UDP scans
  • Better suited for large-scale network discovery and security assessments

Cons of naabu

  • Command-line interface may be less user-friendly for beginners
  • Lacks the graphical user interface provided by ipscan
  • May require more system resources for intensive scans

Code Comparison

naabu:

func (s *Scanner) ScanPort(port int) bool {
    conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", s.ip, port), s.timeout)
    if err != nil {
        return false
    }
    conn.Close()
    return true
}

ipscan:

public boolean isPortOpen(int port) {
    try (Socket socket = new Socket()) {
        socket.connect(new InetSocketAddress(ip, port), timeout);
        return true;
    } catch (IOException e) {
        return false;
    }
}

Both projects implement port scanning functionality, but naabu is written in Go, while ipscan is written in Java. naabu's implementation may offer better performance due to Go's concurrency features, while ipscan's Java-based approach provides cross-platform compatibility and integration with existing Java ecosystems.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Angry IP Scanner

This is the source code of Angry IP Scanner, licensed with GPL v2. Official site

The code is written mostly in Java (currently, source level 11). SWT library from Eclipse project is used for GUI that provides native components for each supported platform.

The project runs on Linux, Windows and macOS.

Helping / Contributing

As there are millions of different networks, configurations and devices, please help with submitting a Pull Request if something doesn't work as you expect (especially macOS users). Any problem is easy to fix if you have an environment to reproduce it 😀

For that, download Intellij IDEA community edition and open the cloned project. Then, you can run Angry IP Scanner in Debug mode and put a breakpoint into the desired Fetcher class.

Building Actions Status

Use Gradle for building a package for your desired platform:

./gradlew or make in the project dir for the list of available targets.

./gradlew current would build the app for your current platform

The resulting binaries will be put into the build/libs directory. Run jar files with java -jar <jar-file>.

Deb and rpm packages can be built only on Linux (tested on Ubuntu). Windows installer can be built on Windows only.

./gradlew all will build packages for all OS (tested on Ubuntu only, see dependencies below).

Dependencies

On Ubuntu install the following packages:

sudo apt install openjdk-11-jdk rpm fakeroot

Install OpenJDK on other platforms as you usually do it.