README.md

# IPMapper

IPMapper is an Elixir-based tool that generates incremental IP addresses, performs non-blocking HTTP requests using Mint, and does reverse DNS lookups. It logs the results (including timestamp, IP, DNS name, HTTP status, and a hex color) to a CSV file while providing real-time progress updates.

## Features

- **Incremental IP Generation:** Start from a given IP and generate sequential IP addresses.
- **Non-blocking HTTP Requests:** Uses Mint to perform HTTP GET requests concurrently.
- **Reverse DNS Lookups:** Retrieves DNS names for IP addresses.
- **CSV Logging:** Logs results with timestamps and hex color codes.
- **Progress Tracking:** Displays processed count, remaining count, and ETA.
- **System Limits Logging:** Logs open file descriptor limits at startup.

## Installation

1. Clone the repository:

   ```bash
   git clone https://github.com/evokelektrique/internet_mapper.git
   cd ip_mapper
   ```

2. Fetch dependencies:

   ```bash
   mix deps.get
   ```

3. Compile the project:

   ```bash
   mix compile
   ```

## Usage

Start an interactive shell with:

```bash
iex -S mix
```

Then run the pipeline (for example, to generate 100 sequential IPs starting at `1.0.0.0` with 50 consumers):

```elixir
IPMapper.start("1.0.0.0", 100, 50)
```

Progress will be printed to the console and results logged to `results.csv`.

## Running Tests

To run the test suite:

```bash
mix test
```

## License

This project is licensed under the MIT License.