示例#1
0
        private void Connection_OnPacketReceived(SharpPcap.PosixTimeval timeval, TcpConnection connection, TcpFlow flow, TcpPacket tcpPacket)
        {
            if (tcpPacket.PayloadData.Length == 0)
            {
                return;
            }
            var data      = (byte[])tcpPacket.PayloadData.Clone();
            var direction = tcpPacket.SourcePort == Constants.GAME_PORT ? PacketDirection.ServerToClient : PacketDirection.ClientToServer;

            if (gameCrypt != null)
            {
                gameCrypt.Decrypt(data, direction);
            }

            var parsedPacket = ParsePacket(data, direction);

            if (parsedPacket == null)
            {
                return;
            }

            if (parsedPacket.GetType() == typeof(KeyPacket))
            {
                gameCrypt = new GameCrypt(parsedPacket as KeyPacket);
                return;
            }
        }
 void HandleFlowOnPacketReceived(SharpPcap.PosixTimeval timeval,
                                 TcpPacket tcp,
                                 TcpConnection connection,
                                 TcpFlow flow)
 {
     AddPacket(tcp);
 }
示例#3
0
        private void Connection_OnPacketReceived(SharpPcap.PosixTimeval timeval, TcpConnection connection, TcpFlow flow, TcpPacket tcp)
        {
            //incoming packets, first one is Init always
            if (tcp.SourcePort == Constants.LOGIN_PORT && Crypt.IsInitial)
            {
                TryInit(tcp);
                return;
            }

            // only after inited we can parse
            if (!Crypt.IsInitial)
            {
                ParsePacket(tcp);
            }
        }
示例#4
0
 private void Connection_OnConnectionClosed(SharpPcap.PosixTimeval timeval, TcpConnection connection, TcpPacket tcp, TcpConnection.CloseType closeType)
 {
     TcpConnection.OnPacketReceived   -= Connection_OnPacketReceived;
     TcpConnection.OnConnectionClosed -= Connection_OnConnectionClosed;
     ClientHandler.RemoveGameClient(this);
 }
示例#5
0
 /// <summary>
 /// Statistics would be a great way of detecting DoS attacks - more efficient than looking at individual packet detection
 /// </summary>
 /// <param name="statsPacket"></param>
 /// <param name="lasTimeval"></param>
 /// <param name="sensorId"></param>
 public void ReportStatistics(SharpPcap.WinPcap.StatisticsModePacket statsPacket, SharpPcap.PosixTimeval lasTimeval, string sensorId)
 {
     throw new NotImplementedException();
 }