protected override IPduReader CreatePduReader() { var pduDataStream = new PduDataStream(this.CurrentL7Conversation, PduDataProviderType.Mixed); var pduKaitaiReader = new PduKaitaiReader(pduDataStream); return(pduKaitaiReader); }
private void Parse(PduKaitaiReader reader) { var dnsPacket = reader.ReadKaitaiStruct <DnsPacket>(); this.TransactionId = dnsPacket.TransactionId; this.Type = dnsPacket.Flags.Qr == 0 ? DnsMessageType.Query : DnsMessageType.Answer; this.Queries = dnsPacket.Queries.Select(q => new DnsQuery(q)).ToList(); this.Answers = dnsPacket.Answers.Select(CreateDnsAnswerMessage).ToList(); }
public DnsMessage(PduKaitaiReader reader) : base(reader) { this.Queries = NoQueries; this.Answers = NoAnswers; try { this.Parse(reader); } catch (KaitaiObjectionConstructionException e) { this.ParsingError = e; } }
public TlsMessage(PduKaitaiReader reader) : base(reader) { try { this.Parse(reader); } catch (KaitaiObjectionConstructionException e) { this.ParsingError = e; } catch (TlsParsingException e) { this.ParsingError = e; } }
public void ReadDns() { var l7Conversation = this.ReassembleSingleL7Conversation <UdpConversationTracker>(TestPcapFile.Dns1); var stream = new PduDataStream(l7Conversation, PduDataProviderType.Mixed); var pduKaitaiReader = new PduKaitaiReader(stream); DnsPacket p; Assert.False(pduKaitaiReader.EndOfStream); p = pduKaitaiReader.ReadKaitaiStruct <DnsPacket>(); Assert.Equal(0x09be, p.TransactionId); Assert.Single(p.Queries); Assert.True(pduKaitaiReader.NewMessage()); p = pduKaitaiReader.ReadKaitaiStruct <DnsPacket>(); Assert.Equal(0x09be, p.TransactionId); Assert.Single(p.Answers); Assert.False(pduKaitaiReader.NewMessage()); Assert.True(pduKaitaiReader.EndOfStream); }
private void Parse(PduKaitaiReader reader) { var tlsPacket = reader.ReadKaitaiStruct <TlsPacket>(); this.Records = tlsPacket.Records.Select(this.ParseKaitaiTlsRecord).ToArray(); }