예제 #1
0
        public void UDPData()
        {
            Packet    p;
            UDPPacket u;

            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/udp_dns_request_response.pcap");

            dev.Open();

            // check the first packet
            p = dev.GetNextPacket();

            Assert.IsNotNull(p);
            Assert.IsTrue(p is UDPPacket);

            u = (UDPPacket)p;
            Assert.AreEqual(41 - u.UDPHeader.Length, u.UDPData.Length, "UDPData.Length mismatch");


            // check the second packet
            p = dev.GetNextPacket();

            Assert.IsNotNull(p);
            Assert.IsTrue(p is UDPPacket);

            u = (UDPPacket)p;
            Assert.AreEqual(356 - u.UDPHeader.Length, u.UDPData.Length, "UDPData.Length mismatch");

            Console.WriteLine("u is {0}", u.ToString());

            dev.Close();
        }
예제 #2
0
        public void ParsingArpPacketRequestResponse()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/arp_request_response.pcap");

            dev.Open();

            Packet p;
            int    packetIndex = 0;

            while ((p = dev.GetNextPacket()) != null)
            {
                Console.WriteLine("got packet");
                Console.WriteLine("{0}", p.ToString());
                switch (packetIndex)
                {
                case 0:
                    VerifyPacket0(p);
                    break;

                case 1:
                    VerifyPacket1(p);
                    break;

                default:
                    Assert.Fail("didn't expect to get to packetIndex " + packetIndex);
                    break;
                }

                packetIndex++;
            }

            dev.Close();
        }
예제 #3
0
        public virtual void TCPData()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/tcp_with_extra_bytes.pcap");

            dev.Open();

            Packet p;

            p = dev.GetNextPacket();

            Assert.IsNotNull(p);

            Console.WriteLine(p.GetType());
            Assert.IsTrue(p is TCPPacket);

            TCPPacket t = (TCPPacket)p;

            // even though the packet has 6 bytes of extra data, the ip packet shows a size of
            // 40 and the ip header has a length of 20. The TCP header is also 20 bytes so
            // there should be zero bytes in the TCPData value
            int expectedTcpDataLength = 0;

            Assert.AreEqual(expectedTcpDataLength, t.TCPData.Length);

            dev.Close();
        }
예제 #4
0
        public void IPv6PacketTestParsing()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/ipv6_icmpv6_packet.pcap");

            dev.Open();

            Packet p;
            int    packetIndex = 0;

            while ((p = dev.GetNextPacket()) != null)
            {
                Console.WriteLine("got packet");
                switch (packetIndex)
                {
                case 0:
                    VerifyPacket0(p);
                    break;

                default:
                    Assert.Fail("didn't expect to get to packetIndex " + packetIndex);
                    break;
                }

                packetIndex++;
            }

            dev.Close();
        }
예제 #5
0
        public void TestParsingKnownPackets()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/test_stream.pcap");

            dev.Open();

            Packet p;
            int    packetIndex = 0;

            while ((p = dev.GetNextPacket()) != null)
            {
                Console.WriteLine("got packet");
                switch (packetIndex)
                {
                case 0:
                    VerifyPacket0(p);
                    break;

                case 1:
                    VerifyPacket1(p);
                    break;

                case 2:
                    VerifyPacket2(p);
                    break;

                case 3:
                    VerifyPacket3(p);
                    break;

                case 4:
                    VerifyPacket4(p);
                    break;

                case 5:
                    VerifyPacket5(p);
                    break;

                default:
                    Assert.Fail("didn't expect to get to packetIndex " + packetIndex);
                    break;
                }

                packetIndex++;
            }

            dev.Close();
        }
예제 #6
0
        public virtual void Checksum()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/tcp.pcap");

            dev.Open();

            Packet p;

            p = dev.GetNextPacket();

            Assert.IsNotNull(p);

            Console.WriteLine(p.GetType());
            Assert.IsTrue(p is TCPPacket);

            TCPPacket t = (TCPPacket)p;

            Console.WriteLine("Checksum: " + t.Checksum.ToString("X"));
            Assert.IsTrue(t.ValidChecksum);

            dev.Close();
        }
예제 #7
0
        public void TCPChecksumIPv6()
        {
            PcapOfflineDevice dev = Pcap.GetPcapOfflineDevice("../../capture_files/ipv6_http.pcap");

            dev.Open();

            Packet p;

            // checksums from wireshark of the capture file
            int[] expectedChecksum = { 0x41a2,
                                       0x4201,
                                       0x5728,
                                       0xf448,
                                       0xee07,
                                       0x939c,
                                       0x63e4,
                                       0x4590,
                                       0x3725,
                                       0x3723 };

            int packetIndex = 0;

            while ((p = dev.GetNextPacket()) != null)
            {
                Assert.IsTrue(p is TCPPacket);
                TCPPacket t = (TCPPacket)p;
                Assert.IsTrue(t.ValidChecksum);

                // compare the computed checksum to the expected one
                Assert.AreEqual(expectedChecksum[packetIndex],
                                t.ComputeTCPChecksum());

                packetIndex++;
            }

            dev.Close();
        }