Skip to content

ODickins/DDev.WinTun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WinTun .NET Library

A simple .NET library for working with Wintun virtual network adapters, allowing you to create adapters, send and receive packets, and integrate with your applications using dependency injection.


Features

  • Create and manage Wintun adapters.
  • Send and receive raw network packets.
  • Supports async packet handling via events.
  • Easy integration with .NET Dependency Injection.

Usage

1. Register the service

Use the built-in Dependency Injection support to register the Wintun service:

using Microsoft.Extensions.DependencyInjection;

var services = new ServiceCollection();
services.AddWinTun();

var serviceProvider = services.BuildServiceProvider();
var winTunService = serviceProvider.GetRequiredService<IWinTunService>();

2. Create an adapter

var adapter = winTunService.CreateAdapter("MyAdapter");

3. Start a session

adapter.StartSession(capacity: 1024); // Optional capacity parameter

4. Receive packets

Subscribe to the PacketReceived event to handle incoming packets:

adapter.PacketReceived += (sender, packet) =>
{
    Console.WriteLine($"Received {packet.Length} bytes");
    // Process packet here
};

5. Send packets

byte[] data = new byte[] { 0x01, 0x02, 0x03 };
adapter.SendPacket(data);

6. End the session and dispose

adapter.EndSession();
adapter.Dispose();
winTunService.Dispose();

API Overview

IWinTunService

public interface IWinTunService : IDisposable
{
    IWinTunAdapter CreateAdapter(string adapterName);
}

IWinTunAdapter

public interface IWinTunAdapter : IDisposable
{
    void StartSession(uint? capacity = null);
    void EndSession();

    event EventHandler<byte[]>? PacketReceived;
    void SendPacket(byte[] data);
}

Dependency Injection

public static class DependencyInjection
{
    public static IServiceCollection AddWinTun(this IServiceCollection services)
    {
        services.AddSingleton<IWinTunService, WinTunService>();
        return services;
    }
}

License

This project is licensed under the MIT License. See LICENSE for details.


Notes

  • Running as administrator may be required for certain network operations.
  • Written and tested in .NET 9.

About

Wraps WinTun in an easy to use C# wrapper.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages