# IP Calculation

The math behind IP addresses is convoluted. Our nice IPv4 addresses start out as 32-bit binary numbers, which are then converted to base 10 numbers in four 8-bit fields. Decimal numbers are easier to manage than long binary strings; still, calculating address ranges, netmasks, and subnets is a bit difficult and error-prone, except for the brainiacs who can do binary conversions in their heads. For the rest of us, meet `ipcalc` and `ipv6calc`.

`ipcalc` is for IPv4 networks, and `ipv6calc` is for IPv6 networks.

### Calculate using subnet&#x20;

```
root@Kali:~# ipcalc 192.168.0.0/25 
Address:   192.168.0.0          11000000.10101000.00000000.0 0000000 
Netmask:   255.255.255.128 = 25 11111111.11111111.11111111.1 0000000 
Wildcard:  0.0.0.127            00000000.00000000.00000000.0 1111111 
=> 
Network:   192.168.0.0/25       11000000.10101000.00000000.0 0000000 
HostMin:   192.168.0.1          11000000.10101000.00000000.0 0000001 
HostMax:   192.168.0.126        11000000.10101000.00000000.0 1111110 
Broadcast: 192.168.0.127        11000000.10101000.00000000.0 1111111 
Hosts/Net: 126                   Class C, Private Internet 
```

### Calculate using netmask&#x20;

```
root@DESKTOP99:~# ipcalc 192.168.0.0 255.255.128.0 
Address:   192.168.0.0          11000000.10101000.0 0000000.00000000 
Netmask:   255.255.128.0 = 17   11111111.11111111.1 0000000.00000000 
Wildcard:  0.0.127.255          00000000.00000000.0 1111111.11111111 
=> 
Network:   192.168.0.0/17       11000000.10101000.0 0000000.00000000 
HostMin:   192.168.0.1          11000000.10101000.0 0000000.00000001 
HostMax:   192.168.127.254      11000000.10101000.0 1111111.11111110 
Broadcast: 192.168.127.255      11000000.10101000.0 1111111. 
```

### Classful IP Ranges&#x20;

E.g Class A,B,C (depreciated)&#x20;

| Class                    | IP Address Range            |
| ------------------------ | --------------------------- |
| Class A IP Address Range | 0.0.0.0 - 127.255.255.255   |
| Class B IP Address Range | 128.0.0.0 - 191.255.255.255 |
| Class C IP Address Range | 192.0.0.0 - 223.255.255.255 |
| Class D IP Address Range | 224.0.0.0 - 239.255.255.255 |
| Class E IP Address Range | 240.0.0.0 - 255.255.255.255 |

### IPv4 Private Address Ranges&#x20;

| Class                         | Range                         |
| ----------------------------- | ----------------------------- |
| Class A Private Address Range | 10.0.0.0 - 10.255.255.255     |
| Class B Private Address Range | 172.16.0.0 - 172.31.255.255   |
| Class C Private Address Range | 192.168.0.0 - 192.168.255.255 |
| Localhost Range               | 127.0.0.0 - 127.255.255.255   |

### IPv4 Subnet Cheat Sheet&#x20;

Subnet cheat sheet, not really related to pen testing but a useful reference.&#x20;

| CIDR | Decimal Mask    | Number of Hosts |
| ---- | --------------- | --------------- |
| /31  | 255.255.255.254 | 1 Host          |
| /30  | 255.255.255.252 | 2 Hosts         |
| /29  | 255.255.255.249 | 6 Hosts         |
| /28  | 255.255.255.240 | 14 Hosts        |
| /27  | 255.255.255.224 | 30 Hosts        |
| /26  | 255.255.255.192 | 62 Hosts        |
| /25  | 255.255.255.128 | 126 Hosts       |
| /24  | 255.255.255.0   | 254 Hosts       |
| /23  | 255.255.254.0   | 512 Host        |
| /22  | 255.255.252.0   | 1022 Hosts      |
| /21  | 255.255.248.0   | 2046 Hosts      |
| /20  | 255.255.240.0   | 4094 Hosts      |
| /19  | 255.255.224.0   | 8190 Hosts      |
| /18  | 255.255.192.0   | 16382 Hosts     |
| /17  | 255.255.128.0   | 32766 Hosts     |
| /16  | 255.255.0.0     | 65534 Hosts     |
| /15  | 255.254.0.0     | 131070 Hosts    |
| /14  | 255.252.0.0     | 262142 Hosts    |
| /13  | 255.248.0.0     | 524286 Hosts    |
| /12  | 255.240.0.0     | 1048674 Hosts   |
| /11  | 255.224.0.0     | 2097150 Hosts   |
| /10  | 255.192.0.0     | 4194302 Hosts   |
| /9   | 255.128.0.0     | 8388606 Hosts   |
| /8   | 255.0.0.0       | 16777214 Hosts  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://infra.newerasec.com/infrastructure-testing/tools/ip-calculation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
