project-carbon/ProjectCarbon/Protocols/TcpProtocol.cs

37 lines
1.4 KiB
C#
Raw Permalink Normal View History

2015-06-29 20:48:49 -05:00
using System;
using System.Collections.Generic;
using System.Text;
namespace ProjectCarbon.Protocols
{
class TcpProtocol: IpSubProtocol
{
public TcpProtocol()
: base(Protocol.Tcp, "TCP", "Transmission Control Protocol")
{
}
public override void ProcessData(byte[] bufferData)
{
BigEndianConverter endianConverter = new BigEndianConverter();
int sourcePort = endianConverter.ToUInt16(bufferData, 0);
int destinationPort = endianConverter.ToUInt16(bufferData, 2);
uint sequenceNumber = endianConverter.ToUInt32(bufferData, 4);
uint packNumber = endianConverter.ToUInt32(bufferData, 8);
int dataOffset = ((bufferData[12] & 0xF0) >> 4) * 4;
byte[] payload = new byte[bufferData.Length - dataOffset];
Array.Copy(bufferData, dataOffset, payload, 0, payload.Length);
// These are all the properties for TCP.
m_protocolProperties.Add("SourcePort", sourcePort);
m_protocolProperties.Add("DestinationPort", destinationPort);
m_protocolProperties.Add("SequenceNumber", sequenceNumber);
m_protocolProperties.Add("AckNumber", packNumber);
m_protocolProperties.Add("DataOffset", dataOffset);
m_protocolProperties.Add("Payload", payload);
}
}
}