예제 #1
0
        private void SaveLog()
        {
            if (!NeedToSave)
            {
                return;
            }
            NeedToSave = false;
            if (AnalysisType == AnalysisTypeEnum.Unknown)
            {
                return;
            }
            if (AnalysisType == AnalysisTypeEnum.LogFile)
            {
                MessageBox.Show("Saving saved log is retarded");
                return;
            }
            var header = new LogHeader {
                Region = Version.ToString()
            };
            PacketLogWriter writer = new PacketLogWriter(string.Format("{0}.TeraLog", DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss_" + Version, CultureInfo.InvariantCulture)), header);

            foreach (var message in OpcodeFinder.Instance.AllPackets)
            {
                writer.Append(message.Value);
            }
            writer.Dispose();
            MessageBox.Show("Saved");
        }
예제 #2
0
        private PacketLogWriter LoadOutputWriter()
        {
            if ((config_format_type_ != ConfigManager.System.AutoPacketSave.SaveFormat.Value) ||
                (output_format_ == null) ||
                (output_writer_ == null)
                )
            {
                config_format_type_ = ConfigManager.System.AutoPacketSave.SaveFormat.Value;

                switch (config_format_type_)
                {
                case AutoPacketSaveFormatType.Ratatoskr:
                    output_format_ = new FileFormat.PacketLog_Rtcap.FileFormatClassImpl();
                    break;

                case AutoPacketSaveFormatType.CSV:
                    output_format_ = new FileFormat.PacketLog_Csv.FileFormatClassImpl();
                    break;

                case AutoPacketSaveFormatType.Binary:
                    output_format_ = new FileFormat.PacketLog_Binary.FileFormatClassImpl();
                    break;
                }

                if (output_format_ != null)
                {
                    output_writer_ = output_format_.CreateWriter() as PacketLogWriter;
                    output_option_ = output_format_.CreateWriterOption();
                }
            }

            return(output_writer_);
        }
예제 #3
0
        public void EnableLogging()
        {
            var header = new LogHeader {
                Region = "EU"
            };

            logWriter = new PacketLogWriter(string.Format("{0}.TeraLog", DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture)), header);
        }
 public DumpWriter(ProcessorConfig config)
     : base(config)
 {
     m_Writer = new PacketLogWriter(config.Path, new LogHeader()
     {
         Region = string.Empty
     });
 }
예제 #5
0
        public PacketProcessor(PacketSerializer serializer,
                               PacketLogWriter logWriter)
        {
            Serializer = serializer;
            LogWriter  = logWriter;

            foreach (var code in serializer.GameMessages.OpCodeToName.Keys)
            {
                _rawHandlers.Add(code, new HashSet <RawPacketHandler>());
                _handlers.Add(code, new HashSet <Delegate>());
            }
        }
예제 #6
0
 void _teraSniffer_NewConnection(Server server)
 {
     InvokeAction(() =>
     {
         var header = new LogHeader {
             Region = server.Region
         };
         _logWriter = new PacketLogWriter(string.Format("{0}.TeraLog", DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture)), header);
         ConnectionList.Items.Clear();
         ConnectionList.Items.Add(string.Format("New connection to {0}started...", server.Name));
         _teraData = _basicTeraData.DataForRegion(server.Region);
     });
 }
예제 #7
0
        public PacketLogWriter GetOrInitializeWriter(int opcode)
        {
            if (_writers.ContainsKey(opcode))
            {
                return(_writers[opcode]);
            }
            var header = new LogHeader {
                Region = opcode.ToString()
            };
            PacketLogWriter writer = new PacketLogWriter(PATH + VERSION + Path.DirectorySeparatorChar + opcode + SPLITTED_LOGS_EXTENSION, header);

            _writers.Add(opcode, writer);
            return(writer);
        }
예제 #8
0
        public void Start(GameProxy[] proxies)
        {
            _writer = new PacketLogWriter(
                proxies.First().Processor.Serializer.Messages,
                proxies.Select(x => x.Info).ToArray(),
                Configuration.LogDirectory, Configuration.LogFileNameFormat,
                Configuration.CompressLogs);

            foreach (var proxy in proxies)
            {
                proxy.Processor.AddRawHandler(PacketLogHandler);
            }

            _log.Basic("Packet logger plugin started");
        }
예제 #9
0
        private void SaveToTmpFile(string version, Queue <Message> packetsCopyStorage, string filename)
        {
            var header = new LogHeader {
                Region = version
            };
            PacketLogWriter writer = new PacketLogWriter(filename, header);

            foreach (var message in packetsCopyStorage)
            {
                ParsedMessage parsedMessage = PacketProcessor.Instance.MessageFactory.Create(message);
                parsedMessage = WipeoutSensitiveData(parsedMessage);
                writer.Append(message);
            }
            writer.Dispose();
        }
예제 #10
0
 void _teraSniffer_NewConnection(Server server)
 {
     InvokeAction(() =>
     {
         var header = new LogHeader {
             Region = server.Region
         };
         _logWriter = new PacketLogWriter(string.Format("{0}.TeraLog", DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture)), header);
         ConnectionList.Items.Clear();
         ConnectionList.Items.Add(string.Format("New connection to {0}started...", server.Name));
         _messageFactory = new MessageFactory();
         _opCodeNamer    = new OpCodeNamer(new Dictionary <ushort, string> {
             { 19900, "C_CHECK_VERSION" }
         });
     });
 }
예제 #11
0
        public void Start()
        {
            var serializer = _context.Serializer;

            _writer = new PacketLogWriter(serializer.Region, serializer.GameMessages,
                                          serializer.SystemMessages, _context.Proxies.Select(x => x.Info).ToArray(),
                                          Configuration.LogDirectory, Configuration.LogFileNameFormat,
                                          Configuration.CompressLogs);

            _context.Dispatch.AddHandler((client, direction, code, packet, flags) =>
            {
                _writer.Write(new PacketLogEntry(DateTime.Now, client.Proxy.Info.Id, direction,
                                                 code, packet.Payload));

                return(true);
            }, new PacketFilter(long.MinValue).WithSilenced(null));

            _log.Basic("Packet logger plugin started");
        }
예제 #12
0
 private static void SavePacketFileExecTask(PacketLogWriter writer, IEnumerable <PacketObject> packets)
 {
     writer.WritePacket(packets);
 }
예제 #13
0
 public void DisableLogging()
 {
     logWriter.Dispose();
     logWriter = null;
 }