static void Main(string[] args)
        {
            // Network monitor type
            TCPNetworkMonitor.NetworkMonitorType MonitorType = TCPNetworkMonitor.NetworkMonitorType.RawSocket;

            /*StringBuilder errbuff = new StringBuilder();
             * pcap_open("", 0, 0, 0, new IntPtr(), errbuff);
             * if (errbuff.ToString() != "")
             * {
             *  MonitorType = TCPNetworkMonitor.NetworkMonitorType.WinPCap;
             * }*/

            // Packet queue
            pq = new LinkedList <Packet>();

            // Initialize Machina
            FFXIVNetworkMonitor monitor = new FFXIVNetworkMonitor
            {
                MessageReceived = OnMessageReceived,
                MessageSent     = OnMessageSent,
                MonitorType     = MonitorType
            };

            monitor.Start();

            var wizardProcessor = new WizardProcessor();

            // Run packet ID stuff
            wizardProcessor.Run(pq);
        }
Example #2
0
        // 끝낼 준비
        public void DeInitPlugin()
        {
            //
            _isPluginEnabled = false;

            _frmOverlay.Hide();
            _frmOverlay = null;

            SaveSettings();

#if MACHINA
            // 마시나
            if (_monitor != null)
            {
                _monitor.Stop();
                _monitor = null;
            }
#endif

            //
            _isInitSetting = false;

            _actTabPage = null;

            if (_actLabelStatus != null)
            {
                _actLabelStatus.Text = Mesg.GetText("l-plugin-stopped");
                _actLabelStatus      = null;
            }

            Mesg.SetTextBox(null);
        }
Example #3
0
 // stop machina!
 public static void EndMachina()
 {
     if (_moniter != null)
     {
         _moniter.Stop();
         _moniter = null;
     }
 }
Example #4
0
        // start machina!
        public static void BeginMachina()
        {
            EndMachina();

            _moniter = new FFXIVNetworkMonitor
            {
                MessageReceived = MachinaWorker
            };
            _moniter.Start();
        }
Example #5
0
        public static void Main(string[] args)
        {
            FFXIVNetworkMonitor monitor = new FFXIVNetworkMonitor();
            var GameDir = Path.Combine(Process.GetProcessesByName("ffxiv_dx11")[0].MainModule.FileName, "..\\sqpack");

            lumina = new Lumina.Lumina(GameDir);
            monitor.MessageReceived = (string connection, long epoch, byte[] message) => MessageReceived(connection, epoch, message);
            monitor.MessageSent     = (string connection, long epoch, byte[] message) => MessageSent(connection, epoch, message);
            monitor.Start();
            // Run for 12000 seconds
            System.Threading.Thread.Sleep(12000000);
            monitor.Stop();
        }
Example #6
0
        // 플러그인 초기화
        public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText)
        {
            _actLabelStatus = pluginStatusText;
            _actTabPage     = pluginScreenSpace;

            if (_isFormLoaded)
            {
                ActInitialize();
            }
            else
            {
                ActGlobals.oFormActMain.Shown += OFormActMain_Shown;
            }

#if MACHINA
            // 마시나
            _monitor = new FFXIVNetworkMonitor
            {
                MessageReceived = new FFXIVNetworkMonitor.MessageReceivedDelegate(OnFFXIVNetworkReceived)
            };
            _monitor.Start();
#else
            // FFXIV 플러그인용
            if (_FFXIVPlugin == null)
            {
                _FFXIVPlugin = ActGlobals.oFormActMain.ActPlugins.Where(x =>
                                                                        x.pluginFile.Name.ToUpper().Contains("FFXIV_ACT_PLUGIN") &&
                                                                        x.lblPluginStatus.Text.ToUpper().Contains("FFXIV PLUGIN STARTED."))
                               .Select(x => x.pluginObj)
                               .FirstOrDefault();
            }

            if (_FFXIVPlugin != null)
            {
                try
                {
                    ((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_FFXIVPlugin).DataSubscription.NetworkReceived -= _fpgNetworkReceiveDelegete;
                    ((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_FFXIVPlugin).DataSubscription.NetworkReceived += _fpgNetworkReceiveDelegete;
                    //((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_FFXIVPlugin).DataSubscription.ZoneChanged -= _fpgZoneChangeDelegate;
                    //((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_FFXIVPlugin).DataSubscription.ZoneChanged += _fpgZoneChangeDelegate;
                    _fpgConnect = true;
                }
                catch
                {
                    _fpgConnect = false;
                }
            }
#endif
        }
Example #7
0
        public void Run()
        {
            FFXIVNetworkMonitor monitor = new FFXIVNetworkMonitor();

            monitor.MonitorType     = TCPNetworkMonitor.NetworkMonitorType.WinPCap;
            monitor.MessageReceived = (long epoch, byte[] message, int set) => MessageReceived(epoch, message, set);
            monitor.MessageSent     = (long epoch, byte[] message, int set) => MessageSent(epoch, message, set);
            monitor.Start();

            while (!_shouldStop)
            {
                ;
            }

            Console.WriteLine("MachinaCaptureWorker: Terminating");
            monitor.Stop();
        }
Example #8
0
        private void NetworkWorker(IActPluginV1 ffxivPlugin)
        {
            parsePlugin = new ParsePlugin(ffxivPlugin);
            var Network = new FFXIVNetworkMonitor();

            Network.onException    += logException;
            Network.onReceiveEvent += (string connection, long epoch, byte[] message) =>
            {
                parsePacket(message, false);
            };
            Network.onSendEvent += (string connection, long epoch, byte[] message) =>
            {
                parsePacket(message, true);
            };;
            parsePlugin.Network = Network;
            parsePlugin.Start();
        }
Example #9
0
        private void InitializeNetworkMonitor()
        {
            _ffxivNetworkMonitor?.Stop();

            _ffxivNetworkMonitor = new FFXIVNetworkMonitor();
            _ffxivNetworkMonitor.MessageReceived += (connection, epoch, message) =>
                                                    _packetProcessor?.ProcessZonePacket(message);

            _ffxivNetworkMonitor.MonitorType = TCPNetworkMonitor.NetworkMonitorType.RawSocket;

            if (winPCapCheckBox.Checked)
            {
                _ffxivNetworkMonitor.MonitorType = TCPNetworkMonitor.NetworkMonitorType.WinPCap;
            }

            _ffxivNetworkMonitor.Start();
        }
Example #10
0
        static void Main(string[] args)
        {
            var pm = new PacketMonitor();

            pm.OnPingSample += PmOnOnPingSample;

            var monitor = new FFXIVNetworkMonitor();

            monitor.MessageReceived = pm.MessageReceived;
            monitor.MessageSent     = pm.MessageSent;
            monitor.Start();


            Console.WriteLine("Press any key to stop...");
            Console.ReadKey();

            monitor.Stop();
        }
Example #11
0
        public void Run()
        {
            FFXIVNetworkMonitor monitor = new FFXIVNetworkMonitor();

            monitor.MonitorType     = _monitorType;
            monitor.MessageReceived = MessageReceived;
            monitor.MessageSent     = MessageSent;
            monitor.Start();

            while (!_shouldStop)
            {
                // So don't burn the cpu while doing nothing
                Thread.Sleep(1);
            }

            Console.WriteLine("MachinaCaptureWorker: Terminating");
            monitor.Stop();
        }
Example #12
0
        public void Run(uint processID)
        {
            Log.overlayLog($"开始检测进程:{processID}");
            FFXIVNetworkMonitor monitor = new FFXIVNetworkMonitor();

            RegisterToFirewall();
            monitor.MonitorType     = Daigassou.Properties.Settings.Default.isUsingWinPCap? TCPNetworkMonitor.NetworkMonitorType.WinPCap: TCPNetworkMonitor.NetworkMonitorType.RawSocket;
            monitor.MessageReceived = MessageReceived;
            monitor.MessageSent     = MessageSent;
            monitor.ProcessID       = processID;
            monitor.Start();

            while (!_shouldStop)
            {
                // So don't burn the cpu while doing nothing
                Thread.Sleep(5);
            }

            Console.WriteLine("MachinaCaptureWorker: Terminating");
            monitor.Stop();
        }
        public void FFXIVNetworkMonitor_ReceiveGameData()
        {
            bool dataReceived = false;

            var sut = new FFXIVNetworkMonitor();

            sut.MessageReceived = (string id, long epoch, byte[] data) =>
            { dataReceived = true; };
            sut.Start();
            for (int i = 0; i < 100; i++)
            {
                if (dataReceived == true)
                {
                    break;
                }
                System.Threading.Thread.Sleep(10);
            }
            sut.Stop();

            Assert.IsTrue(dataReceived);
        }