public string GetErrorMessage(TcpPacketError error) { //TCP tcp = Packet.TCP; TcpDatagram tcp = _packet.Ethernet.IpV4.Tcp; switch (error) { case TcpPacketError.ErrorBadDirection: return("error wrong direction"); case TcpPacketError.WarningBadFlagAck: return("warning ack should not be set"); case TcpPacketError.WarningOpenConnection2BadAck: return(string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), (StreamState.CurrentSourceSequence - 1).zToHex())); case TcpPacketError.WarningOpenConnection2BadMessagePosition: return("warning message should be just after open connection step 1"); case TcpPacketError.ErrorOpenConnection2BadDirection: return(string.Format("error wrong direction, TCP open 2, SYN seq = y (0x{0}), ACK x + 1 (0x{1})", tcp.SequenceNumber.zToHex(), tcp.AcknowledgmentNumber.zToHex())); case TcpPacketError.WarningOpenConnection3BadAck: return(string.Format("warning ack (0x{0}) != destination seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex())); case TcpPacketError.WarningCloseSourceConnection1BadSeq: return(string.Format("warning seq (0x{0}) != source seq (0x{1})", tcp.SequenceNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex())); case TcpPacketError.WarningCloseSourceConnection2BadAck: return(string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex())); case TcpPacketError.WarningCloseDestinationConnection1BadSeq: return(string.Format("warning seq (0x{0}) != destination seq (0x{1})", tcp.SequenceNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex())); case TcpPacketError.WarningCloseDestinationConnection1BadAck: return(string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex())); case TcpPacketError.WarningCloseDestinationConnection2BadAck: return(string.Format("warning ack (0x{0}) != destination seq + 1 (0x{1}) (ACK y + 1)", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex())); default: return(null); } }
public string GetErrorMessage(TcpPacketError error) { //TCP tcp = Packet.TCP; TcpDatagram tcp = _packet.Ethernet.IpV4.Tcp; switch (error) { case TcpPacketError.ErrorBadDirection: return "error wrong direction"; case TcpPacketError.WarningBadFlagAck: return "warning ack should not be set"; case TcpPacketError.WarningOpenConnection2BadAck: return string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), (StreamState.CurrentSourceSequence - 1).zToHex()); case TcpPacketError.WarningOpenConnection2BadMessagePosition: return "warning message should be just after open connection step 1"; case TcpPacketError.ErrorOpenConnection2BadDirection: return string.Format("error wrong direction, TCP open 2, SYN seq = y (0x{0}), ACK x + 1 (0x{1})", tcp.SequenceNumber.zToHex(), tcp.AcknowledgmentNumber.zToHex()); case TcpPacketError.WarningOpenConnection3BadAck: return string.Format("warning ack (0x{0}) != destination seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex()); case TcpPacketError.WarningCloseSourceConnection1BadSeq: return string.Format("warning seq (0x{0}) != source seq (0x{1})", tcp.SequenceNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex()); case TcpPacketError.WarningCloseSourceConnection2BadAck: return string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex()); case TcpPacketError.WarningCloseDestinationConnection1BadSeq: return string.Format("warning seq (0x{0}) != destination seq (0x{1})", tcp.SequenceNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex()); case TcpPacketError.WarningCloseDestinationConnection1BadAck: return string.Format("warning ack (0x{0}) != source seq + 1 (0x{1})", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentSourceSequence.zToHex()); case TcpPacketError.WarningCloseDestinationConnection2BadAck: return string.Format("warning ack (0x{0}) != destination seq + 1 (0x{1}) (ACK y + 1)", tcp.AcknowledgmentNumber.zToHex(), StreamState.CurrentDestinationSequence.zToHex()); default: return null; } }
//public bool IsTcp() //{ // if (_packet.Ethernet != null && _packet.Ethernet.IpV4 != null && _packet.Ethernet.IpV4.Tcp != null) // return true; // else // return false; //} public void AddError(TcpPacketError error) { _errors.Add(error); }