public bool VerifyCheckSum() { ReComputeHeaderLen(); byte[] headerSegment = new byte[hLen]; int counter = 0; NetLib.WriteByte08(headerSegment, ref counter, (byte)(_verHi + (hLen >> 2))); NetLib.WriteByte08(headerSegment, ref counter, typeOfService);//DSCP/ECN NetLib.WriteUInt16(headerSegment, ref counter, length); NetLib.WriteUInt16(headerSegment, ref counter, id); NetLib.WriteByte08(headerSegment, ref counter, fragmentFlags1); NetLib.WriteByte08(headerSegment, ref counter, fragmentFlags2); NetLib.WriteByte08(headerSegment, ref counter, ttl); NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, checksum); //header csum NetLib.WriteByteArray(headerSegment, ref counter, SourceIP); NetLib.WriteByteArray(headerSegment, ref counter, DestinationIP); //options for (int i = 0; i < Options.Count; i++) { NetLib.WriteByteArray(headerSegment, ref counter, Options[i].GetBytes()); } counter = hLen; UInt16 CsumCal = InternetChecksum(headerSegment); return(CsumCal == 0); }
public override bool VerifyCheckSum(byte[] srcIP, byte[] dstIP) { UInt16 TCPLength = (UInt16)(Length); int pHeaderLen = (12 + TCPLength); if ((pHeaderLen & 1) != 0) { //Error.WriteLine("OddSizedPacket"); pHeaderLen += 1; } byte[] headerSegment = new byte[pHeaderLen]; int counter = 0; NetLib.WriteByteArray(headerSegment, ref counter, srcIP); NetLib.WriteByteArray(headerSegment, ref counter, dstIP); counter += 1;//[8] = 0 NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, (UInt16)TCPLength); //Pseudo Header added //Rest of data is normal neader+data NetLib.WriteByteArray(headerSegment, ref counter, GetBytes()); UInt16 CsumCal = IPPacket.InternetChecksum(headerSegment); //Error.WriteLine("Checksum Good = " + (CsumCal == 0)); return(CsumCal == 0); }
public override byte[] GetBytes() { CalculateCheckSum(); //ReComputeHeaderLen called in CalculateCheckSum _pl.CalculateCheckSum(SourceIP, DestinationIP); byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, (byte)(_verHi + (hLen >> 2))); NetLib.WriteByte08(ret, ref counter, typeOfService);//DSCP/ECN NetLib.WriteUInt16(ret, ref counter, length); NetLib.WriteUInt16(ret, ref counter, id); NetLib.WriteByte08(ret, ref counter, fragmentFlags1); NetLib.WriteByte08(ret, ref counter, fragmentFlags2); NetLib.WriteByte08(ret, ref counter, ttl); NetLib.WriteByte08(ret, ref counter, Protocol); NetLib.WriteUInt16(ret, ref counter, checksum); //header csum NetLib.WriteByteArray(ret, ref counter, SourceIP); NetLib.WriteByteArray(ret, ref counter, DestinationIP);; //options for (int i = 0; i < Options.Count; i++) { NetLib.WriteByteArray(ret, ref counter, Options[i].GetBytes()); } counter = hLen; byte[] plBytes = _pl.GetBytes(); NetLib.WriteByteArray(ret, ref counter, plBytes); return(ret); }
private void CalculateCheckSum() { //if (!(i == 5)) //checksum feild is 10-11th byte (5th short), which is skipped ReComputeHeaderLen(); byte[] headerSegment = new byte[hLen]; int counter = 0; NetLib.WriteByte08(headerSegment, ref counter, (byte)(_verHi + (hLen >> 2))); NetLib.WriteByte08(headerSegment, ref counter, typeOfService);//DSCP/ECN NetLib.WriteUInt16(headerSegment, ref counter, length); NetLib.WriteUInt16(headerSegment, ref counter, id); NetLib.WriteByte08(headerSegment, ref counter, fragmentFlags1); NetLib.WriteByte08(headerSegment, ref counter, fragmentFlags2); NetLib.WriteByte08(headerSegment, ref counter, ttl); NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, 0); //header csum NetLib.WriteByteArray(headerSegment, ref counter, SourceIP); NetLib.WriteByteArray(headerSegment, ref counter, DestinationIP); //options for (int i = 0; i < Options.Count; i++) { NetLib.WriteByteArray(headerSegment, ref counter, Options[i].GetBytes()); } counter = hLen; checksum = InternetChecksum(headerSegment); }
public override bool VerifyCheckSum(byte[] srcIP, byte[] dstIP) { int pHeaderLen = (12) + HeaderLength + data.Length; if ((pHeaderLen & 1) != 0) { pHeaderLen += 1; } byte[] headerSegment = new byte[pHeaderLen]; int counter = 0; NetLib.WriteByteArray(headerSegment, ref counter, srcIP); NetLib.WriteByteArray(headerSegment, ref counter, dstIP); counter += 1;//[8] = 0 NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, Length); //Pseudo Header added //Rest of data is normal Header+data (with zerored checksum feild) NetLib.WriteByteArray(headerSegment, ref counter, GetBytes()); UInt16 CsumCal = IPPacket.InternetChecksum(headerSegment); //Error.WriteLine("UDP Checksum Good = " + (CsumCal == 0)); return(CsumCal == 0); }
public override void CalculateCheckSum(byte[] srcIP, byte[] dstIP) { int pHeaderLen = (12) + HeaderLength + data.Length; if ((pHeaderLen & 1) != 0) { pHeaderLen += 1; } byte[] headerSegment = new byte[pHeaderLen]; int counter = 0; NetLib.WriteByteArray(headerSegment, ref counter, srcIP); NetLib.WriteByteArray(headerSegment, ref counter, dstIP); counter += 1;//[8] = 0 NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, Length); //Pseudo Header added //Rest of data is normal Header+data (with zerored checksum feild) //Null Checksum checksum = 0; NetLib.WriteByteArray(headerSegment, ref counter, GetBytes()); checksum = IPPacket.InternetChecksum(headerSegment); //For performance, we can set this to = zero }
public override byte[] GetBytes() { int len = Length; byte[] ret = new byte[len]; int counter = 0; NetLib.WriteUInt16(ret, ref counter, SourcePort); NetLib.WriteUInt16(ret, ref counter, DestinationPort); NetLib.WriteUInt32(ret, ref counter, SequenceNumber); NetLib.WriteUInt32(ret, ref counter, AcknowledgementNumber); NetLib.WriteByte08(ret, ref counter, dataOffsetAndNS_Flag); NetLib.WriteByte08(ret, ref counter, flags); NetLib.WriteUInt16(ret, ref counter, WindowSize); NetLib.WriteUInt16(ret, ref counter, checksum); NetLib.WriteUInt16(ret, ref counter, urgentPointer); //options for (int i = 0; i < Options.Count; i++) { NetLib.WriteByteArray(ret, ref counter, Options[i].GetBytes()); } counter = headerLength; NetLib.WriteByteArray(ret, ref counter, data); return(ret); }
public override void CalculateCheckSum(byte[] srcIP, byte[] dstIP) { Int16 TCPLength = (Int16)(headerLength + data.Length); int pHeaderLen = (12 + TCPLength); if ((pHeaderLen & 1) != 0) { //Error.WriteLine("OddSizedPacket"); pHeaderLen += 1; } byte[] headerSegment = new byte[pHeaderLen]; int counter = 0; NetLib.WriteByteArray(headerSegment, ref counter, srcIP); NetLib.WriteByteArray(headerSegment, ref counter, dstIP); counter += 1;//[8] = 0 NetLib.WriteByte08(headerSegment, ref counter, Protocol); NetLib.WriteUInt16(headerSegment, ref counter, (UInt16)TCPLength); //Pseudo Header added //Rest of data is normal Header+data (with zerored checksum feild) //Null Checksum checksum = 0; NetLib.WriteByteArray(headerSegment, ref counter, GetBytes()); checksum = IPPacket.InternetChecksum(headerSegment); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, Length); NetLib.WriteUInt16(ret, ref counter, MaxSegmentSize); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, Length); NetLib.WriteByte08(ret, ref counter, WindowScale); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, (byte)(Length - 2)); NetLib.WriteUInt32(ret, ref counter, IPRebindingTimeT2); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, (byte)(Length - 2)); NetLib.WriteByteArray(ret, ref counter, clientID); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, (byte)(Length - 2)); NetLib.WriteUInt16(ret, ref counter, MaxMessageSize); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, Length); NetLib.WriteUInt32(ret, ref counter, SenderTimeStamp); NetLib.WriteUInt32(ret, ref counter, EchoTimeStamp); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Type); NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteUInt16(ret, ref counter, checksum); NetLib.WriteByteArray(ret, ref counter, HeaderData); NetLib.WriteByteArray(ret, ref counter, Data); return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Type); NetLib.WriteByte08(ret, ref counter, maxResponseTime); NetLib.WriteUInt16(ret, ref counter, checksum); NetLib.WriteByteArray(ret, ref counter, GroupAddress); //TODO version 3 return(ret); }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteByte08(ret, ref counter, Code); NetLib.WriteByte08(ret, ref counter, (byte)(Length - 2)); foreach (byte[] dIP in dnsServers) { NetLib.WriteByteArray(ret, ref counter, dIP); } return(ret); }
public byte[] GetBytes() { //Calc length int length = 2 * 2 + 4 * 2; for (int i = 0; i < Questions.Count; i++) { length += Questions[i].Length; } for (int i = 0; i < Answers.Count; i++) { length += Answers[i].Length; } for (int i = 0; i < Authorities.Count; i++) { length += Authorities[i].Length; } for (int i = 0; i < Additional.Count; i++) { length += Additional[i].Length; } byte[] ret = new byte[length]; int counter = 0; NetLib.WriteUInt16(ref ret, ref counter, ID); NetLib.WriteByte08(ref ret, ref counter, flags1); NetLib.WriteByte08(ref ret, ref counter, flags2); NetLib.WriteUInt16(ref ret, ref counter, (ushort)Questions.Count); NetLib.WriteUInt16(ref ret, ref counter, (ushort)Answers.Count); NetLib.WriteUInt16(ref ret, ref counter, (ushort)Authorities.Count); NetLib.WriteUInt16(ref ret, ref counter, (ushort)Additional.Count); for (int i = 0; i < Questions.Count; i++) { NetLib.WriteByteArray(ref ret, ref counter, Questions[i].GetBytes()); } for (int i = 0; i < Answers.Count; i++) { NetLib.WriteByteArray(ref ret, ref counter, Answers[i].GetBytes()); } for (int i = 0; i < Authorities.Count; i++) { NetLib.WriteByteArray(ref ret, ref counter, Authorities[i].GetBytes()); } for (int i = 0; i < Additional.Count; i++) { NetLib.WriteByteArray(ref ret, ref counter, Additional[i].GetBytes()); } return(ret); }
public byte[] GetBytes(UInt16 MaxLen) { //int len = 576; //Min size; //We will create a message of the min size and hop it fits. //byte[] ret = new byte[240]; //Fixed size section byte[] ret = new byte[MaxLen]; int counter = 0; NetLib.WriteByte08(ret, ref counter, OP); NetLib.WriteByte08(ret, ref counter, HardwareType); NetLib.WriteByte08(ret, ref counter, HardwareAddressLength); NetLib.WriteByte08(ret, ref counter, Hops); NetLib.WriteUInt32(ret, ref counter, TransactionID); NetLib.WriteUInt16(ret, ref counter, Seconds); NetLib.WriteUInt16(ret, ref counter, Flags); NetLib.WriteByteArray(ret, ref counter, ClientIP); NetLib.WriteByteArray(ret, ref counter, YourIP); NetLib.WriteByteArray(ret, ref counter, ServerIP); NetLib.WriteByteArray(ret, ref counter, GatewayIP); NetLib.WriteByteArray(ret, ref counter, ClientHardwareAddress); //empty bytes NetLib.WriteByteArray(ret, ref counter, new byte[64]); NetLib.WriteByteArray(ret, ref counter, new byte[128]); NetLib.WriteUInt32(ret, ref counter, MagicCookie); //const UInt16 minOpLength = 64; //UInt16 OpLength = minOpLength; //byte[] retOp = new byte[minOpLength]; //int opOffset = 0; for (int i = 0; i < Options.Count; i++) { NetLib.WriteByteArray(ret, ref counter, Options[i].GetBytes()); } ////byte[] RetFinal = new byte[OpLength+240]; //byte[] RetFinal = new byte[MaxLen]; //Utils.memcpy(ref RetFinal, 0, ret, 0, 240); //Utils.memcpy(ref RetFinal, 240, retOp, 0, OpLength); //return RetFinal; return(ret); }
private void WriteDNSString(byte[] buffer, ref int offset, string value) { //if (buffer[offset] == 11) //{ // value = "PtrNamesNotImplemented"; //} string[] spl = value.Split('.'); foreach (string s in spl) { if (s.Length == 0) { continue; } NetLib.WriteByte08(buffer, ref offset, (byte)s.Length); NetLib.WriteCString(buffer, ref offset, s); offset -= 1; } offset += 1; }
public override byte[] GetBytes() { byte[] ret = new byte[Length]; int counter = 0; NetLib.WriteUInt16(ret, ref counter, HardWareType); // DataLib.WriteUInt16(ret, ref counter, Protocol); // NetLib.WriteByte08(ret, ref counter, HardwareAddressLength); NetLib.WriteByte08(ret, ref counter, ProtocolAddressLength); NetLib.WriteUInt16(ret, ref counter, OP); NetLib.WriteByteArray(ret, ref counter, SenderHardwareAddress); NetLib.WriteByteArray(ret, ref counter, SenderProtocolAddress); NetLib.WriteByteArray(ret, ref counter, TargetHardwareAddress); NetLib.WriteByteArray(ret, ref counter, TargetProtocolAddress); return(ret); }