예제 #1
0
        private void CheckQueryAndAnswer(ushort messageID, IReadOnlyList <ushort> flags, IReadOnlyList <string> messages, DNSParseMsg.DNSResponseType responseType, string filePath)
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(filePath));
            var conversations = this.L7Conversations.ToArray();

            this.FrameworkController.ExportData(this.SnoopersToUse, conversations, this.CurrentTestBaseDirectory, true);

            SnooperExportDNS exportedObjectsReference = null;

            foreach (var exportedObjects in this.SnooperExports.ToArray()) //Get SnooperDNS exported objects
            {
                if ((exportedObjectsReference = exportedObjects as SnooperExportDNS) != null)
                {
                    var objectDns = (SnooperExportedDataObjectDNS)exportedObjectsReference.ExportObjects[0];
                    if (objectDns.MessageId == messageID)
                    {
                        break;
                    }
                    else
                    {
                        exportedObjectsReference = null;
                    }
                }
            }
            Assert.IsNotNull(exportedObjectsReference);
            Assert.AreEqual(2, exportedObjectsReference.ExportObjects.Count);

            int i = 1, j = 0;

            foreach (var snooperExportedObjectBase in exportedObjectsReference.ExportObjects.ToArray())
            {
                var message = (SnooperExportedDataObjectDNS)snooperExportedObjectBase;
                Assert.AreEqual(message.MessageId, messageID);
                Assert.AreEqual(message.Flags, flags[j++]);
                Assert.AreEqual(message.Queries.SerializedValue, messages[0]);
                switch (responseType)
                {
                case DNSParseMsg.DNSResponseType.ANSWER:
                    Assert.AreEqual(messages[i++], message.Answer.SerializedValue);
                    break;

                case DNSParseMsg.DNSResponseType.ADDITIONAL:
                    Assert.AreEqual(messages[i++], message.Additional.SerializedValue);
                    break;
                }
            }
        }
예제 #2
0
        private void CheckQueryAndAnswer(ushort messageID, IReadOnlyList <ushort> flags, IReadOnlyList <string> messages, DNSParseMsg.DNSResponseType responseType, string filePath)
        {
            this.LoadPcapAndExportData(filePath);

            SnooperExportDNS exportedObjectsReference = null;

            foreach (var exportedObjects in this.SnooperExports.ToArray()) //Get SnooperDNS exported objects
            {
                if ((exportedObjectsReference = exportedObjects as SnooperExportDNS) != null)
                {
                    var objectDns = (SnooperExportedDataObjectDNS)exportedObjectsReference.ExportObjects[0];
                    if (objectDns.MessageId == messageID)
                    {
                        break;
                    }
                    else
                    {
                        exportedObjectsReference = null;
                    }
                }
            }
            Assert.IsNotNull(exportedObjectsReference);
            Assert.AreEqual(2, exportedObjectsReference.ExportObjects.Count);

            int i = 1, j = 0;

            foreach (var snooperExportedObjectBase in exportedObjectsReference.ExportObjects.ToArray())
            {
                var message = (SnooperExportedDataObjectDNS)snooperExportedObjectBase;
                Assert.AreEqual(message.MessageId, messageID);
                Assert.AreEqual(message.Flags, flags[j++]);
                Assert.AreEqual(message.Queries.SerializedValue, messages[0]);
                switch (responseType)
                {
                case DNSParseMsg.DNSResponseType.ANSWER:
                    Assert.AreEqual(messages[i++], message.Answer.SerializedValue);
                    break;

                case DNSParseMsg.DNSResponseType.ADDITIONAL:
                    Assert.AreEqual(messages[i++], message.Additional.SerializedValue);
                    break;
                }
            }
        }