//internal static string CreateHash(Packet p) //{ // string hash = ""; // string preIPHash = ""; // string preTCPHash = ""; // string preUDPHash = ""; // IPpacket ip = p.IpPacket; // TCPpacket tcp = p.TcpPacket; // UDPpacket udp = p.UdpPacket; // preIPHash = ip.DesIP + ip.Flags + ip.FragmentationOffset + ip.HeaderLength + ip.Identification + ip.MessageLength + ip.Protocol + ip.SrcIP + ip.Tos + ip.TotalLength + ip.Ttl + ip.Version; // if (p.Type == "TCP") // preTCPHash = tcp.AckNumber + tcp.Checksum + tcp.DataOffset + tcp.DesPort + tcp.HeaderLength + tcp.MessageLength + tcp.SeqNumber + tcp.SrcPort + tcp.UrgentPointer + tcp.Window; // else // preUDPHash = udp.Checksum + udp.DesPort + udp.Length_Header_and_Data + udp.SrcPort; // hash += preIPHash + preTCPHash + preUDPHash; // hash = GetMd5Hash(hash); // return hash; //} internal static string CreateHash(Packet p, byte[] payload) { string stringToBeHashed = ""; IPpacket ip = p.IpPacket; TCPpacket tcp = p.TcpPacket; UDPpacket udp = p.UdpPacket; stringToBeHashed = ip.SrcIP + ip.DesIP + ip.Identification + ip.TotalLength; if (tcp != null) { stringToBeHashed += tcp.DesPort; } else { stringToBeHashed += udp.DesPort; } byte[] indexBuffer = Encoding.UTF8.GetBytes(stringToBeHashed); if (payload != null && payload.Length != 0) { byte[] totalBuffer = new byte[indexBuffer.Length + payload.Length]; Buffer.BlockCopy(indexBuffer, 0, totalBuffer, 0, indexBuffer.Length); Buffer.BlockCopy(payload, 0, totalBuffer, indexBuffer.Length, payload.Length); return(GetMd5Hash(totalBuffer, totalBuffer.Length)); } else { return(GetMd5Hash(indexBuffer, indexBuffer.Length)); } }
internal static TCPpacket CreateTCPpacket(TCPHeader tcpHeader) { TCPpacket tcp = new TCPpacket(); tcp.AckNumber = tcpHeader.AcknowledgementNumber; tcp.Checksum = tcpHeader.RawChecksum; tcp.Flags = tcpHeader.Flags_con; tcp.DataOffset = tcpHeader.DataOffset; tcp.DesPort = tcpHeader.DestinationPort; tcp.HeaderLength = tcpHeader.HeaderLength; tcp.MessageLength = tcpHeader.MessageLength.ToString(); tcp.SeqNumber = tcpHeader.SequenceNumber; tcp.SrcPort = tcpHeader.SourcePort; tcp.UrgentPointer = tcp.UrgentPointer; tcp.Window = tcpHeader.WindowSize; return(tcp); }