public void Test_Facebook_groupchat()
        {
            var messagePatterns = new[]
            {
                new[] { "1430427525024", "100007717846239", "And now here is my secret, a very simple secret: It is only with the heart that one can see rightly; what is essential is invisible to the eye." },
                new[] { "1430427555826", "100009331491476", "You're beautiful, but you're empty.... No one could die for you" },
                new[] { "1430427603378", "765374730", "Only the children know what they are looking for." },
                new[] { "1430427624091", "100009331491476", "For the travelers the stars are guides. For others they are nothing but tiny lights." },
                new[] { "1430427644664", "765374730", "What makes the desert beautiful,\" said the little prince, \"is that somewhere it hides a well." },
                new[] { "1430427659648", "100007717846239", "It is such a mysterious place, the land of tears." }
            };

            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_group_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(18, exportedObjectBases.Length);

            var messages = exportedObjectBases.Where(i => i is FacebookGroupMessage).Cast <FacebookGroupMessage>().OrderBy(it => it.FbTimeStamp).ToArray();

            Assert.AreEqual(messages.Length, 6);
            Assert.AreEqual(messages.Length, messagePatterns.Length);

            for (var i = 0; i < messages.Length; i++)
            {
                Assert.AreEqual(messages[i].FbTimeStamp.ToString(), messagePatterns[i][0]);
                Assert.AreEqual(messages[i].SenderId.ToString(), messagePatterns[i][1]);
                Assert.AreEqual(messages[i].Text, messagePatterns[i][2]);
            }
        }
        public void Facebook_Message_View_Test()
        {
            var test     = new FacebookSnooperExport();
            var messages = new List <FacebookMessage>
            {
                new FacebookMessage(test)
                {
                    FbTimeStamp = 1000,
                    TargetId    = 10515,
                    SenderId    = 88,
                    Text        = "ahoj"
                },
                new FacebookMessage(test)
                {
                    FbTimeStamp = 1000,
                    TargetId    = 10515,
                    SenderId    = 88,
                    Text        = "ahoj2"
                },
                new FacebookMessage(test)
                {
                    FbTimeStamp = 1000,
                    TargetId    = 10515,
                    SenderId    = 88,
                    Text        = "ahoj3"
                }
            };
            // FbMessagesView window;

            // The dispatcher thread
            //var t = new Thread(() =>
            //{
            //    window = new FbMessagesView();
            //    window.SetData(messages);
            //    window.FacebookMessagesView.DataContext = messages;
            //    Initiates the dispatcher thread shutdown when the window closes
            //     window.Closed += (s, e) => window.Dispatcher.InvokeShutdown();

            //    window.Show();

            //    Makes the thread support message pumping
            //     System.Windows.Threading.Dispatcher.Run();
            //});

            // Configure the thread
            // t.SetApartmentState(ApartmentState.STA);
            // t.Start();
            // t.Join();
        }
        public void Test_Facebook_status()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_status_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(new List <ISnooper> {
                new SnooperHTTP.SnooperHTTP()
            }, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(new List <ISnooper> {
                new SnooperFacebook()
            }, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(2, this.SnooperExports.Count);

            FacebookSnooperExport exportedObjects = null;

            //this.SnooperExports.Reset();
            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();
            var status = (from item in exportedObjectBases
                          where item.GetType() == typeof(FacebookStatus)
                          select item as FacebookStatus).ToList();

            Assert.AreEqual(1, status.Count);
            Assert.AreEqual(status[0].FacebookStatusTimestamp, "265817278101112658011511995106");
            Assert.AreEqual(status[0].SenderId, "100007717846239");
            Assert.AreEqual(status[0].TargetId, "100007717846239");
            Assert.AreEqual(status[0].StatusText, "Test status");
        }
        public void Test_Facebook_file()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_file_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(1, exportedObjectBases.Length);

            var files = exportedObjectBases.Where(i => i is FacebookMessengerFile).Cast <FacebookMessengerFile>().OrderBy(it => it as FacebookMessengerFile).ToArray();

            Assert.AreEqual(files.Length, 1);

            Assert.AreEqual(files[0].FbTimeStamp, 1429992295707);
            Assert.AreEqual(files[0].Name, "test.txt");
            Assert.AreEqual(files[0].SenderId, 100007717846239);
            Assert.AreEqual(files[0].TargetId, 765374730);
            Assert.AreEqual(files[0].Url,
                            "https://cdn.fbsbx.com/hphotos-xaf1/v/t59.2708-21/11172381_1564175987182981_2104073377_n.txt/test.txt?oh=f40481ec246f9f62db70b236e9a2fba1&oe=553E5CFE&dl=1"
                            );
        }
        public void ConcreteTypeGetFilteredTest()
        {
            var dbx            = this.WindsorContainer.Resolve <NetfoxDbContext>();
            var exportSMTP     = new SnooperExportSMTP(this.CurrentTestBaseDirectory);
            var exportFacebook = new FacebookSnooperExport();

            dbx.SnooperExports.Add(exportSMTP);
            dbx.SnooperExports.Add(exportFacebook);
            dbx.SaveChanges();

            var exportObjects      = this.WindsorContainer.Resolve <VirtualizingObservableDBSetPagedCollection <SnooperExportBase> >();
            var exportObjectsEmail = this.WindsorContainer.Resolve <VirtualizingObservableDBSetPagedCollection <SnooperExportEmailBase> >();


            Assert.AreEqual(2, exportObjects.Count);
            Assert.AreEqual(1, exportObjectsEmail.Count);
        }
        public void Test_Facebook_groupfile()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_groupfile_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(1, exportedObjectBases.Length);

            var files = exportedObjectBases.Where(i => i is FacebookMessengerGroupFile).Cast <FacebookMessengerGroupFile>().OrderBy(it => it as FacebookMessengerGroupFile).ToArray();

            Assert.AreEqual(files.Length, 1);

            Assert.AreEqual(files[0].FbTimeStamp, 1430427730964);
            Assert.AreEqual(files[0].GroupName, "NetfoxSnooper");
            Assert.AreEqual(files[0].Name, "test.txt");
            Assert.AreEqual(files[0].Url,
                            "https://cdn.fbsbx.com/hphotos-xft1/v/t59.2708-21/11119012_1566060883661158_1678031127_n.txt/test.txt?oh=b001ba81778c13192e56ab4237282f73&oe=5544E8C4&dl=1"
                            );
        }
        public void Test_Facebook_groupphoto()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_groupphoto_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(2, exportedObjectBases.Length);

            var photos = exportedObjectBases.Where(i => i is FacebookMessengerGroupPhoto).Cast <FacebookMessengerGroupPhoto>().OrderBy(it => it as FacebookMessengerGroupPhoto).ToArray();

            Assert.AreEqual(photos.Length, 1);

            Assert.AreEqual(photos[0].FbTimeStamp, 1430516559580);
            Assert.AreEqual(photos[0].GroupName, "NetfoxSnooper");
            Assert.AreEqual(photos[0].Name, "image-1566376120296301");
            Assert.AreEqual(photos[0].Url,
                            "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpt1/v/t34.0-12/p206x206/11049523_1566376040296309_2824715817304330990_n.jpg?oh=8f161c5e82242e9fc7ac4332de8bff3d&oe=55464B29&__gda__=1430677806_97fbf8d0ae71d0ee4c65ba3aae04e207"
                            );
        }
        public void Test_Facebook_photo()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_photo_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(1, exportedObjectBases.Length);

            var photos = exportedObjectBases.Where(i => i is FacebookMessengerPhoto).Cast <FacebookMessengerPhoto>().OrderBy(it => it as FacebookMessengerPhoto).ToArray();

            Assert.AreEqual(photos.Length, 1);

            Assert.AreEqual(photos[0].Name, "image-1564026470531266");
            Assert.AreEqual(photos[0].SenderId, 100007717846239);
            Assert.AreEqual(photos[0].TargetId, 765374730);
            Assert.AreEqual(photos[0].Url,
                            "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpt1/v/t34.0-12/p206x206/11139509_1564026470531266_1032067402_n.jpg?oh=46e9ba071c790b96ca8d4e19b9361f8d&oe=553DC440&__gda__=1430098539_123b1ab04b0700255e483079fd38041a"
                            );
        }
        public void AddProperyPersistenceObjectTest()
        {
            var dbx     = this.WindsorContainer.Resolve <NetfoxDbContext>();
            var exports = this.WindsorContainer.Resolve <VirtualizingObservableDBSetPagedCollection <SnooperExportBase> >();

            var exportFacebook = new FacebookSnooperExport();
            var exportObject   = new FacebookEventTyping(exportFacebook);

            exportObject.ExportSources.Add(new EmailExportResult());
            exportFacebook.OnBeforeProtocolParsing();
            exportFacebook.OnAfterProtocolParsing();
            exportFacebook.OnBeforeDataExporting();
            exportFacebook.AddExportObject(exportObject);
            exportFacebook.OnAfterDataExporting();
            dbx.SnooperExports.Add(exportFacebook);
            dbx.SaveChanges();

            Assert.AreEqual(1, exports.Count);
            Assert.AreEqual(1, dbx.SnooperExports.Count());
            Assert.AreEqual(1, dbx.SnooperExportedObjects.Count());
        }
        public void Test_Facebook_comment()
        {
            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_comment_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(this.AvailableSnoopers, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(this.AvailableSnoopers, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(1, exportedObjectBases.Length);

            var comments = exportedObjectBases.Where(i => i is FacebookComment).Cast <FacebookComment>().OrderBy(it => it as FacebookComment).ToArray();

            Assert.AreEqual(comments[0].Text, "Komentar");
            Assert.AreEqual(comments[0].FbTimeStamp, 1429947212);
            Assert.AreEqual(comments[0].SenderId, 100007717846239);
        }
        public void Test_Facebook_chat()
        {
            var messagePatterns = new[]
            {
                new[] { "1430335728592", "765374730", "100007717846239", "Lorem ipsum dolor sit amet" },
                new[] { "1430335746325", "100007717846239", "765374730", "mea quis doming nemore ad" },
                new[] { "1430335774017", "100007717846239", "765374730", "vis cu dolorem minimum omittam" },
                new[] { "1430335786963", "765374730", "100007717846239", "brute graece platonem usu ea" },
                new[] { "1430335804566", "100007717846239", "765374730", "ius vero consulatu complectitur ad" },
                new[] { "1430335815391", "765374730", "100007717846239", "id usu detracto iracundia euripidis" }
            };

            this.FrameworkController.ProcessCapture(this.PrepareCaptureForProcessing(SnoopersPcaps.Default.facebook_fb_chat_pcapng));

            var conversations = this.L7Conversations.ToArray();
            var pk            = File.ReadAllText(PrivateKeys.Default.fb_pk);

            foreach (var conversation in conversations)
            {
                conversation.Key = new CypherKey {
                    ServerPrivateKey = pk
                };
            }

            this.FrameworkController.ExportData(new List <ISnooper> {
                new SnooperHTTP.SnooperHTTP()
            }, conversations, this.CurrentTestBaseDirectory, true);
            this.FrameworkController.ExportData(new List <ISnooper> {
                new SnooperFacebook()
            }, this.SnooperExports, this.CurrentTestBaseDirectory);

            //Assert.AreEqual(this.SnooperExports.Count, 2);

            FacebookSnooperExport exportedObjects = null;

            foreach (var objs in this.SnooperExports.ToArray()) //Get FacebookSnooper exported objects
            {
                if ((exportedObjects = objs as FacebookSnooperExport) != null)
                {
                    break;
                }
            }
            Assert.IsNotNull(exportedObjects);

            var exportedObjectBases = exportedObjects.ExportObjects.ToArray();

            Assert.AreEqual(17, exportedObjectBases.Length);

            var messages = exportedObjectBases.Where(i => i is FacebookMessage).Cast <FacebookMessage>().OrderBy(it => it.FbTimeStamp).ToArray();

            Assert.AreEqual(6, messages.Length);
            Assert.AreEqual(messages.Length, messagePatterns.Length);

            for (var i = 0; i < messages.Length; i++)
            {
                Assert.AreEqual(messages[i].FbTimeStamp.ToString(), messagePatterns[i][0]);
                Assert.AreEqual(messages[i].SenderId.ToString(), messagePatterns[i][1]);
                Assert.AreEqual(messages[i].TargetId.ToString(), messagePatterns[i][2]);
                Assert.AreEqual(messages[i].Text, messagePatterns[i][3]);
            }
        }