Skip to content

Building a TcpPacket from scratch #128

@trudyhood

Description

@trudyhood

I can not find any sample for creating a TCP packet with options and payload. Whatever I did resulted in the corrupted packet. Is there any sample?

    public static IPPacket SimpleTcp()
    {
        var options = Array.Empty<byte>();
        var payloadData = new byte[20];

        // ICMP echo request
        var buffer = new byte[20 + options.Length + payloadData.Length];
        var tcpPacket = new TcpPacket(new ByteArraySegment(buffer)) {
            SourcePort = 10,
            DestinationPort = 20,
            Options = options,
            DataOffset = 5 + options.Length / 4,
            PayloadData = payloadData
        };
        tcpPacket.UpdateCalculatedValues();

        // IP packet
        var ipPacket = new IPv4Packet(IPAddress.Parse("1.1.1.1"), IPAddress.Parse("1.1.1.2")) {
            Protocol = ProtocolType.Tcp,
            PayloadPacket = tcpPacket
        };
        ipPacket.UpdateCalculatedValues();


        var clonePacket =  Packet.ParsePacket(LinkLayers.Raw, ipPacket.Bytes).Extract<IPPacket>();
        Console.WriteLine(clonePacket);
        // clonePacket is completely corrupted
        return clonePacket;
    }
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions