コード例 #1
0
        /// <summary>
        /// Creates an default interaction for data extraction with a default Java Maplet tutor using a Microsoft Window.
        /// </summary>
        /// <param name="window">The java maplet to interact with converted to a MSWindow (Microsoft Window)</param>
        /// <param name="sniffer">The sniffer used during capturing.</param>
        private static async Task InteractWithDefaultTutor(MSWindow window, SocketSniffer sniffer)
        {
            window.WindowPos(0, 0, 400, 800);

            for (int i = 0; i < 4; i++)
            {
                window.SendKeyStroke(System.Windows.Forms.Keys.Tab);
                await Task.Delay(60);
            }

            window.SendKeyStroke(System.Windows.Forms.Keys.Enter);
            window.Hide();
            long LastPackageCount = 0;
            int  WaitTries        = 0;

            while (true) // wait for program to stop sending packages to intercept.
            {
                await Task.Delay(400);

                LastPackageCount = sniffer.PacketsCaptured;
                if (LastPackageCount > 0 && LastPackageCount == sniffer.PacketsCaptured)
                {
                    WaitTries++;
                }
                if (WaitTries > 4)
                {
                    break;
                }
            }
            window.Close();
        }
コード例 #2
0
        private static void StartSniffing(NetworkInterfaceInfo nic, out PcapNgFileOutput output, out SocketSniffer sniffer)
        {
            var appOptions = new AppOptions();

            appOptions.Parse(new string[] { "" });
            var filters = appOptions.BuildFilters();

            output  = new PcapNgFileOutput(nic, appOptions.Filename);
            sniffer = new SocketSniffer(nic, filters, output);
            sniffer.Start();
        }
コード例 #3
0
        private void RecycleSniffer(IPAddress nicAddress, Filters <IPPacket> filters)
        {
            if (_sniffer != null)
            {
                _sniffer.Pause();
                _sniffer.Stop();
                _sniffer = null;
            }

            _sniffer = new SocketSniffer(nicAddress, filters, _analyzer);
            _sniffer.Start();
            _sniffer.Resume(filters);
        }
コード例 #4
0
        private void StartSniffing()
        {
            isSniffing = true;

            var options = new PacketAnalyzerOptions()
            {
                FilterByIp = new List <IPAddress>()
                {
                    _loginServerIp
                }
            };

            _logger.Log(Severity.Info, "Sniffer is being loaded...");
            _packetDataAnalyzer = new PacketDataAnalyzer(_logger, options);
            _packetDataAnalyzer.OnJoinedGame += OnJoinedGame;
            _sniffer = new SocketSniffer(SelectedNetworkInterface.Data, _logger, _packetDataAnalyzer);
            _sniffer.Start();
        }
コード例 #5
0
        static void Main(string[] args)
        {
            var ni          = new NetworkInterfaces();
            var settings    = new SocketSettings(ni);
            var wrapper     = new SocketWrapper(settings);
            var sniffer     = new SocketSniffer(wrapper);
            var serverList  = GetServers(Resources.Servers);
            var teraSniffer = new DelegateSniffer(sniffer, new TeraServerList(Resources.Servers));

            var meter = new DelegateNetworkWrapper(teraSniffer);
            var cc    = new DelegateCombatControl();
            var parse = new DelegateMeter(meter, cc);

            parse.CombatUpdatedEvent    += OnUpdated;
            teraSniffer.MessageReceived += HandleMessageReceived;
            teraSniffer.NewConnection   += HandleNewConnection;
            Console.ReadLine();
        }
コード例 #6
0
        private static void Main(string[] args)
        {
            if (!IsElevated())
            {
                Console.WriteLine("Please run with elevated prilileges");
                Environment.Exit(1);
            }

            IPAddress survLoginIp = Dns.GetHostAddresses("game.survarium.com").FirstOrDefault();
            var       nic         = NetworkInterfaces.GetBestInterface(survLoginIp).FirstOrDefault();
            var       options     = new PacketAnalyzerOptions()
            {
                FilterByIp = new System.Collections.Generic.List <IPAddress>()
                {
                    survLoginIp
                }
            };

            var sniffer = new SocketSniffer(nic, new ConsoleLogger(), new PacketDataAnalyzer(new ConsoleLogger(), options));

            sniffer.Start();

            Console.WriteLine();
            Console.WriteLine("Capturing on interface {0} ({1})", nic.Name, nic.IPAddress);
            Console.WriteLine("Press CTRL+C to stop");
            Console.WriteLine();

            // Shutdown gracefully on CTRL+C
            Console.CancelKeyPress += ConsoleOnCancelKeyPress;

            while (!_isStopping)
            {
                Thread.Sleep(200);
            }

            sniffer.Stop();
        }
コード例 #7
0
 private static void StopSniffing(PcapNgFileOutput output, SocketSniffer sniffer)
 {
     sniffer.Stop();
     output.Dispose();
 }
コード例 #8
0
        private async static Task <JavaMapletGaussOutput> TutorResult(MapleLinearAlgebra engine, MapleMatrix matrix, string methodName)
        {
            List <string> operations  = new List <string>();
            var           gaussOutput = new JavaMapletGaussOutput();

            await semaphoreSlim.WaitAsync();//Since same protocol is used for every Tutor we have to wait for other tutor's to be closed before we can recall.

            try
            {
                var engineType = typeof(MapleLinearAlgebra);
                var method     = engineType.GetMethod(methodName);                                     //reflection used since each Tutor uses same protocol, for linearalgebra, (but different call methods to maple)

                IWindow window = await(Task <IWindow>) method.Invoke(engine, new object[] { matrix }); // await engine.GaussJordanEliminationTutor(matrix);
                if (window is MSWindow)                                                                // Microsoft Windows
                {
                    // Find interfaces for sniffing.
                    var nics = NetworkInterfaceInfo.GetInterfaces();
                    var nic  = nics.FirstOrDefault(c => c.Name.Contains("Loopback Pseudo"));

                    // Ensure loopback pseudo interface is found...
                    if (nic != default(NetworkInterfaceInfo))
                    {
                        #region Start Sniffing
                        var appOptions = new AppOptions();
                        appOptions.Parse(new string[] { "" });
                        var filters = appOptions.BuildFilters();
                        var output  = new PcapNgFileOutput(nic, appOptions.Filename);
                        var sniffer = new SocketSniffer(nic, filters, output);
                        sniffer.Start();
                        #endregion

                        #region MSWIN
                        var mswin = (MSWindow)window;
                        mswin.WindowPos(0, 0, 400, 800);

                        for (int i = 0; i < 4; i++)
                        {
                            mswin.SendKeyStroke(System.Windows.Forms.Keys.Tab);
                            await Task.Delay(60);
                        }

                        mswin.SendKeyStroke(System.Windows.Forms.Keys.Enter);
                        mswin.Hide();
                        long LastPackageCount = 0;
                        int  WaitTries        = 0;
                        while (true) // wait for program to stop sending packages to intercept.
                        {
                            await Task.Delay(400);

                            LastPackageCount = sniffer.PacketsCaptured;
                            if (LastPackageCount > 0 && LastPackageCount == sniffer.PacketsCaptured)
                            {
                                WaitTries++;
                            }
                            if (WaitTries > 4)
                            {
                                break;
                            }
                        }
                        mswin.Close();
                        #endregion

                        #region Interpret Sniffed Data
                        sniffer.Stop();
                        output.Dispose();

                        using (var reader = new StreamReader("snifter.pcapng"))
                        {
                            var content = reader.ReadToEnd();
                            var regex   = new Regex(@"\<application_communications.*?\<content\>Applied operation\:\ (.*?)\<\/content\>", RegexOptions.Singleline);
                            var match   = regex.Match(content);

                            while (match.Success)
                            {
                                var operation = match.Groups[1].Value.Trim();//initial space
                                operations.Add(operation);
                                match = match.NextMatch();
                            }

                            var mapleMatrixRegex = new Regex(@"\<content\>(\&lt\;.*?)\<", RegexOptions.Singleline);
                            var mapleMatrixMatch = mapleMatrixRegex.Match(content);

                            var lastMatchStr = "";
                            while (mapleMatrixMatch.Success)
                            {
                                lastMatchStr     = mapleMatrixMatch.Groups[1].Value;
                                mapleMatrixMatch = mapleMatrixMatch.NextMatch();
                            }

                            StringBuilder builder = new StringBuilder(lastMatchStr);
                            gaussOutput.Operations = operations.ToArray();

                            int ra_index = 0;
                            int index    = 0;
                            var search   = "mtext&gt;&amp;NewLine;";
                            while ((ra_index = builder.ToString().IndexOf(search, ra_index)) != -1)
                            {
                                ra_index += search.Length;
                                if (index >= operations.Count)
                                {
                                    break;
                                }
                                builder.Insert(ra_index, $" {gaussOutput.OperationsDa[index++]} &amp;NewLine;&amp;NewLine;&amp;NewLine;");
                            }


                            gaussOutput.MathML = HttpUtility.HtmlDecode(builder.ToString());
                        }
                        #endregion
                    }
                }
            } finally
            {
                semaphoreSlim.Release();
            }

            return(gaussOutput);
        }