Kangaroo 0.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Kangaroo --version 0.0.1                
NuGet\Install-Package Kangaroo -Version 0.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kangaroo" Version="0.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kangaroo --version 0.0.1                
#r "nuget: Kangaroo, 0.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kangaroo as a Cake Addin
#addin nuget:?package=Kangaroo&version=0.0.1

// Install Kangaroo as a Cake Tool
#tool nuget:?package=Kangaroo&version=0.0.1                

Readme Image

kangaroo Network Scanner

GitHub GitHub all releases Nuget GitHub issues GitHub Repo stars GitHub forks

Kangaroos have large, powerful hind legs, large feet adapted for leaping and so does the Kangaroo network scanner.

The kangaroo network scanner supports (or will support) the following features.

Static Badge
Static Badge Static Badge
Static Badge

Table of Contents

  1. Building Scanners
  2. Scanning Networks

Building

Kangaroo leverages the builder pattern to ensure its always configured correctly before usage.

begin with a ScannerBuilder.Configure() method

// IScanner implements IDisposable so optionally use a using statement
using var scanner = ScannerBuilder.Configure()

If no additional options are provided the kangaroo will grab your first network interface that is up and use that subnet for scans. (lies, not yet)

Begin chaining addition options together as depicted.

using var scanner = ScannerBuilder
    .Configure()
    .WithAddresses(ips)
    .WithParallelism(numberOfBatches: 10)
    .WithNodeTimeout(TimeSpan.FromMilliseconds(250))
    .WithLogging(
        LoggerFactory.Create(builder =>
        {
            builder.AddConsole();
        }))
    .Build();

var nodes = await scanner.QueryAddresses();
Console.WriteLine(nodes.Dump());

IP Configuration

Optionally kangaroo can use specific IPs, a range of IPs, or scan an entire subnet

ip address collection

using var scanner = ScannerBuilder
    .Configure()
    .WithAddresses(ips) // provide an IEnerable of IP addresses
    .Build();

subnetmask

using var scanner = ScannerBuilder
    .Configure()
    .WithSubnet(ipAddress, 0x24) // provide an ip subnet to scan
    .Build();

network interface

using var scanner = ScannerBuilder
    .Configure()
    .withInterface(ethernet2) // provide an adapter to determine a subnet
    .Build();

range of ips

using var scanner = ScannerBuilder
    .Configure()
    .WithIpAddressRange(startIpAddress, endIpAddress) // provide a start and end address to scan a range of IPs 
    .Build();

Parellel Configuration

After the ips are determined you can optionally execute the scans using the TPL, add the WithParallelism method and provide a batch size. Each batch of IP addresses will be scanned in parellel. Each batch will contsin the number of IP addresses divided by the size of the provided addresses.

using var scanner = ScannerBuilder
    .Configure()
    .WithAddresses(ips)
    .WithParallelism(numberOfBatches: 10) // of 254 addresses 25 batches of 10 addresses will be scanned.  
    .Build();

Ping Configuration

The ping can be configured as well. optional timeout and TTL can be provided to effectively speed up or slow down each query. A shorter timeout will allow kangaroo to fail faster on an unknown address. The TTL can be configured to ensure you are only scanning IP addresses within a physical boundary. A TTL of 1 would only ping devices on the physical switch.

using var scanner = ScannerBuilder.Configure()
  .WithIpAddresses(ips)
  .WithTimeout(TimeSpan.FromSeconds(1))
.Build();

Logging Configuration

BYO(Logger)

Scanning Networks

So now you have a new Kangaroo Scanner. lets scan, await a call to QueryAddresses(optionalCtx) to return a ScanResult containing a list of network nodes, and scan results.

var nodes = await scanner.QueryAddresses();
Console.WriteLine(nodes.Dump());

IP Scanning

Port Scanner

Nodes

Scan Results

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.3.0 287 7/15/2024
0.3.0-alpha.46 47 7/15/2024
0.2.1 110 6/2/2024
0.1.0 218 3/10/2024
0.0.4 208 3/9/2024
0.0.3 219 3/5/2024
0.0.2 245 3/5/2024
0.0.1 240 3/5/2024