Beispiel #1
0
        protected override IPduReader CreatePduReader()
        {
            var pduDataStream   = new PduDataStream(this.CurrentL7Conversation, PduDataProviderType.Breaked);
            var pduStreamReader = new PduStreamReader(pduDataStream);

            return(pduStreamReader);
        }
Beispiel #2
0
        public void HttpReadLine_Breaked()
        {
            var l7Conversation  = this.ReassembleSingleL7Conversation <TcpConversationTracker>(TestPcapFile.HttpTest0);
            var stream          = new PduDataStream(l7Conversation, PduDataProviderType.Breaked);
            var pduStreamReader = new PduStreamReader(stream, Encoding.ASCII);

            Assert.False(pduStreamReader.EndOfStream);
            Assert.Equal("GET / HTTP/1.1", pduStreamReader.ReadLine());
            Assert.Equal("Host: icanhazip.com", pduStreamReader.ReadLine());
            Assert.Equal("User-Agent: curl/7.54.0", pduStreamReader.ReadLine());
            Assert.Equal("Accept: */*", pduStreamReader.ReadLine());
            Assert.Equal("", pduStreamReader.ReadLine());
            Assert.True(pduStreamReader.EndOfStream);

            Assert.True(pduStreamReader.NewMessage());
            Assert.False(pduStreamReader.EndOfStream);

            var s = pduStreamReader.ReadToEnd();

            Assert.Equal(597, s.Length);
            Assert.StartsWith("HTTP/1.1 200 OK", s);
            Assert.EndsWith("147.229.14.29\n", s);

            Assert.True(pduStreamReader.EndOfStream);
        }
Beispiel #3
0
        public void SeekBegin()
        {
            var l7Conversation = this.ReassembleSingleL7Conversation <UdpConversationTracker>(TestPcapFile.Dns1);
            var stream         = new PduDataStream(l7Conversation, PduDataProviderType.Mixed);

            Int32 readBytes;

            Byte[] buff;

            Assert.Equal(635203591241204270, stream.CurrentPdu.FirstSeenTicks);
            buff      = new Byte[46];
            readBytes = stream.Read(buff, 0, buff.Length);
            Assert.Equal(635203591241204270, stream.CurrentPdu.FirstSeenTicks);
            Assert.Equal(buff.Length, readBytes);
            Assert.Equal(644053552, buff.GetContentHashCode());
            Assert.Equal(46, stream.Position);

            stream.Seek(0, SeekOrigin.Begin);

            Assert.Equal(635203591241204270, stream.CurrentPdu.FirstSeenTicks);
            buff      = new Byte[46];
            readBytes = stream.Read(buff, 0, buff.Length);
            Assert.Equal(635203591241204270, stream.CurrentPdu.FirstSeenTicks);
            Assert.Equal(buff.Length, readBytes);
            Assert.Equal(644053552, buff.GetContentHashCode());
            Assert.Equal(46, stream.Position);
        }
Beispiel #4
0
        public void Read_Breaked()
        {
            var l7Conversation = this.ReassembleSingleL7Conversation <UdpConversationTracker>(TestPcapFile.Dns1);
            var stream         = new PduDataStream(l7Conversation, PduDataProviderType.Breaked);

            Int32 readBytes;

            Byte[] buff;

            buff      = new Byte[46];
            readBytes = stream.Read(buff, 0, buff.Length);
            Assert.Equal(buff.Length, readBytes);
            Assert.Equal(644053552, buff.GetContentHashCode());
            Assert.Equal(46, stream.Position);

            buff      = new Byte[146];
            readBytes = stream.Read(buff, 0, buff.Length);
            Assert.Equal(0, readBytes);
            Assert.True(stream.EndOfStream);

            Assert.True(stream.NewMessage());

            readBytes = stream.Read(buff, 0, buff.Length);
            Assert.Equal(buff.Length, readBytes);
            Assert.Equal(935504716, buff.GetContentHashCode());
            Assert.Equal(192, stream.Position);
        }
Beispiel #5
0
        public void NewMessage()
        {
            var l7Conversation = this.ReassembleSingleL7Conversation <UdpConversationTracker>(TestPcapFile.Dns1);
            var stream         = new PduDataStream(l7Conversation, PduDataProviderType.Mixed);

            Assert.False(stream.EndOfStream);

            Assert.Equal(0, stream.Position);
            Assert.Equal(635203591241204270, stream.CurrentPdu.FirstSeenTicks);
            Assert.True(stream.NewMessage());
            Assert.False(stream.EndOfStream);

            Assert.Equal(46, stream.Position);
            Assert.Equal(635203591242516580, stream.CurrentPdu.FirstSeenTicks);
            Assert.False(stream.NewMessage());
            Assert.True(stream.EndOfStream);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        public void SeekForward()
        {
            var l7Conversation = this.ReassembleSingleL7Conversation <UdpConversationTracker>(TestPcapFile.Dns1);
            var stream         = new PduDataStream(l7Conversation, PduDataProviderType.Mixed);

            Int32 readBytes;

            Byte[] buff;
            Int64  p;

            p = stream.Seek(46, SeekOrigin.Begin);
            Assert.Equal(46, p);

            buff      = new Byte[146];
            readBytes = stream.Read(buff, 0, buff.Length);

            Assert.Equal(buff.Length, readBytes);
            Assert.Equal(935504716, buff.GetContentHashCode());
            Assert.Equal(192, stream.Position);
        }