Giter Site home page Giter Site logo

packet.net's Introduction

Packet.Net

Packet.Net is a high performance .Net assembly for dissecting and constructing
network packets such as ethernet, ip, tcp, udp etc.

Author: Chris Morgan <[email protected]>

http://packetnet.sourceforge.net

Code is found in the PacketDotNet namespace.

Getting started
===============

A few basic examples can be found in the Examples/ directory.


Debug vs. Release builds
========================

The Debug build depends on log4net and has log4net calls in some of its classes and
code paths.

The Release build does NOT depend on log4net and, taking advantage of conditional
method attributes, does not include any calls to log4net methods. This ensures that there
is no performance impact on release builds.


Performance benchmarks
======================

The Test/ directory contains a few benchmarks that were used to guide the design
and implementation of Packet.Net. These benchmarks either contain 'performance' or
'benchmark' in their names.

If you have a performance concern or issue you'll want to write a concise test that reproduces
your usage case in a controlled manner. It will then be possible to run and re-run
this test case in various profiling modes in order to look at potential ways of
optimizing code. The tests will also provide a baseline from which to compare
any proposed performance improvements in order to ensure that changes are not
inadvertantly reducing instead of increasing performance.

packet.net's People

Contributors

alanrushforth avatar chmorgan avatar evanplaice avatar mars-low avatar mateusz-holenko avatar mateuszkarlic avatar mszprejda avatar p-woj avatar piotrzierhoffer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

packet.net's Issues

decrypting ssl responses/requests

Wireshark and other similar services allow decrypting of https responses by installing a certificate on the browser. Is there a way to do it with Packet.Net?

Load failure

When I try to load this project it keeps telling me there is a configuration failure on the packet.net project of the solution. I am unable to assign debug/release or cpu types to it. When I try to compile it says that it cannot find packet.net. I assume this is because of the configuration issues. I have tried to load this project in 2017, 2019, 2022 visual studio.

How to set TcpPacket's Options or OptionsCollection property?

It's such a great library that I'm using it well. Thank you so much.
I am looking for advice while using this library.
When I create and transmit a TCP packet, I want to set the TCP packet's Options or OptionsCollection property.
However, if i try to set Option-related parameters, an error occurs saying that memory cannot be allocated or overflowed.
By any chance, can I get some guide to setting TCP packet Options property?

Issue with UDP source and destination ports...

This is an excellent library that is really helping me understand and dissect voice over IP packets. I am having a problem with it though (it is easy to work around by the way but wanted to point it out so you are aware). These are my notes for my work around:

// This library has an issue. It is grabbing the first two bytes of the ethernet packet for the udp.SourcePort
// And bytes 3 & 4 for the upd.DestinationPort
// So this code:
// if ( (udp.SourcePort == cr2.RtpSwitchPort || udp.DestinationPort == cr2.RtpSwitchPort) && cr2.ShouldRecord == true)
// Won't work because it is grabbing the wrong bytes.
// The UDP Source and Destination ports are bytes 1&2 and 3&4, respectively of the UDP packet encapsulated inside the larger ethernet packet
// Effectively they are:
// Source port = bytes 34 & 35 and Destination port = bytes 36 & 37 of the whole network packet
// ....because the full packet not just UDP packet is being pulled into the UDP portion
// when we grab IpV4Datagram ip = packet.Ipv4; then UdpDatagram udp = ip.Udp;

Let me know what you think of this.
Thanks.
-Marco.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.