public void ReadFromBitStream(ReadOnlyBitStream bitStream) { bool isBigEndian = bitStream.IsBigEndian(); bitStream.SetBigEndian(true); version = bitStream.ReadNibble(); headerLength = bitStream.ReadNibble(); headerLength *= 4; dsf = bitStream.ReadByte(); totalLength = bitStream.ReadUInt16(); identifier = bitStream.ReadUInt16(); flags = bitStream.ReadUInt16(); ttl = bitStream.ReadByte(); protocol = bitStream.ReadByte(); headerChecksum = bitStream.ReadUInt16(); source = bitStream.ReadBytes(4); destination = bitStream.ReadBytes(4); bitStream.SetBigEndian(isBigEndian); if (protocol == 17) { datagram = new Datagram(); datagram.ReadFromBitStream(bitStream); } else { bitStream.ReadBytes(totalLength - headerLength); // Skip if not UDP. } }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { timestampSeconds = bitStream.ReadUInt32(); timestampMicroseconds = bitStream.ReadUInt32(); length = bitStream.ReadUInt32(); originalLength = bitStream.ReadUInt32(); }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { destination = bitStream.ReadBytes(6); source = bitStream.ReadBytes(6); protocol = bitStream.ReadUInt16(); packet = new Packet(); packet.ReadFromBitStream(bitStream); }
public void FromBitStream(ReadOnlyBitStream packetStream) { GameVersion = packetStream.ReadUInt32(); Unknown1 = packetStream.ReadUInt32(); RemoteConnectionType = packetStream.ReadUInt32(); ProcessId = packetStream.ReadUInt32(); LocalPort = packetStream.ReadUInt16(); LocalAddress = packetStream.ReadString(33); }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { bool isBigEndian = bitStream.IsBigEndian(); bitStream.SetBigEndian(false); ClientTimeUnix = bitStream.ReadInt64(); bitStream.SetBigEndian(isBigEndian); }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { magicNumber = bitStream.ReadUInt32(); versionMajor = bitStream.ReadUInt16(); versionMinor = bitStream.ReadUInt16(); timeZone = bitStream.ReadInt32(); timestampAccuracy = bitStream.ReadUInt32(); snapshotLength = bitStream.ReadUInt32(); linkType = bitStream.ReadUInt32(); }
private void DataGrid_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewRow row = DataGrid.Rows[e.RowIndex]; int pno = Int32.Parse(row.Cells["Packet No."].Value.ToString()); byte[] data = captureFile.GetPackets()[pno].GetEthernetFrame().GetPacket().GetDatagram().GetData(); ReadOnlyBitStream bitStream = new ReadOnlyBitStream(data, true); DescriptionLabel.Text = matrixReader.Read(bitStream); } }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { bool isBigEndian = bitStream.IsBigEndian(); bitStream.SetBigEndian(true); sourcePort = bitStream.ReadUInt16(); destinationPort = bitStream.ReadUInt16(); totalLength = bitStream.ReadUInt16(); checksum = bitStream.ReadUInt16(); data = bitStream.ReadBytes(totalLength - 8); bitStream.SetBigEndian(isBigEndian); }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { b1 = bitStream.ReadBit(); b2 = bitStream.ReadBit(); b3 = bitStream.ReadBit(); b4 = bitStream.ReadBit(); b5 = bitStream.ReadBit(); b6 = bitStream.ReadBit(); b7 = bitStream.ReadBit(); b8 = bitStream.ReadBit(); b9 = bitStream.ReadBit(); b10 = bitStream.ReadBit(); b11 = bitStream.ReadBit(); }
public void ReadFromBitStream(ReadOnlyBitStream bitStream) { header = new PacketHeader(); header.ReadFromBitStream(bitStream); int position = bitStream.GetBitsRead() / 8; data = new Ethernet.Frame(); data.ReadFromBitStream(bitStream); int dataSize = bitStream.GetBitsRead() / 8 - position; int difference = (int)header.GetLength() - dataSize; bitStream.ReadBytes(difference); // Skip padding. }
public void FromBitStream(ReadOnlyBitStream packetStream) { CustomName = packetStream.ReadWideString(33); PredefinedNameFirst = packetStream.ReadUInt32(); PredefinedNameMiddle = packetStream.ReadUInt32(); PredefinedNameLast = packetStream.ReadUInt32(); Unknown1 = packetStream.ReadByte(); HeadColor = packetStream.ReadUInt32(); Head = packetStream.ReadUInt32(); ChestColor = packetStream.ReadUInt32(); Chest = packetStream.ReadUInt32(); Legs = packetStream.ReadUInt32(); HairStyle = packetStream.ReadUInt32(); HairColor = packetStream.ReadUInt32(); LeftHand = packetStream.ReadUInt32(); RightHand = packetStream.ReadUInt32(); EyebrowStyle = packetStream.ReadUInt32(); EyesStyle = packetStream.ReadUInt32(); MouthStyle = packetStream.ReadUInt32(); Unknown2 = packetStream.ReadByte(); }
public void FromBitstream(ReadOnlyBitStream packetStream) { throw new NotImplementedException(); }
public void FromBitStream(ReadOnlyBitStream packetStream) { // Nothing to unserialize. }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { SequenceStart = bitStream.ReadUInt16(); GameServerPort = bitStream.ReadUInt16(); }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { ProtcolVersion = bitStream.ReadUInt32(); }
public Zone(string filePath) { this.sceneInfos = new List <SceneInfo>(); ReadOnlyBitStream reader = new ReadOnlyBitStream(File.ReadAllBytes(filePath)); this.Version = reader.ReadUInt32(); if (this.Version >= 0x24) { reader.SkipBytes(4); } this.WorldId = reader.ReadUInt32(); if (this.Version >= 0x26) { float spawnPosX = reader.ReadSingle(); float spawnPosY = reader.ReadSingle(); float spawnPosZ = reader.ReadSingle(); this.SpawnPosition = new JVector(spawnPosX, spawnPosY, spawnPosZ); float spawnRotX = reader.ReadSingle(); float spawnRotY = reader.ReadSingle(); float spawnRotZ = reader.ReadSingle(); float spawnRotW = reader.ReadSingle(); this.SpawnRotation = new JQuaternion(spawnRotX, spawnRotY, spawnRotZ, spawnRotW); } else { this.SpawnPosition = JVector.Zero; this.SpawnRotation = new JQuaternion(0.0f, 0.0f, 0.0f, 0.0f); } uint sceneCount; if (this.Version >= 0x25) { sceneCount = reader.ReadUInt32(); } else { sceneCount = reader.ReadByte(); } for (uint i = 0; i < sceneCount; i++) { byte sceneFileNameLength = reader.ReadByte(); string sceneFileName = String.Empty; for (byte b = 0; b < sceneFileNameLength; b++) { byte c = reader.ReadByte(); sceneFileName += (char)c; } reader.SkipBytes(1); reader.SkipBytes(3); reader.SkipBytes(1); reader.SkipBytes(3); byte sceneNameLength = reader.ReadByte(); string sceneName = String.Empty; for (byte b = 0; b < sceneNameLength; b++) { byte c = reader.ReadByte(); sceneName += (char)c; } sceneInfos.Add(new SceneInfo(sceneName, sceneFileName)); } reader.SkipBytes(1); byte length = reader.ReadByte(); for (byte b = 0; b < length; b++) { reader.SkipBytes(1); } length = reader.ReadByte(); for (byte b = 0; b < length; b++) { reader.SkipBytes(1); } length = reader.ReadByte(); for (byte b = 0; b < length; b++) { reader.SkipBytes(1); } // SCENE TRANSITIONS }
public void FromBitStream(ReadOnlyBitStream packetStream) { PlayerId = packetStream.ReadInt64(); }
public override void Run() { while (!terminationRequested || !incomingPacketQueue.IsEmpty) { IncomingDatagramPacket packet; if (incomingPacketQueue.TryDequeue(out packet)) { ReadOnlyBitStream packetStream = new ReadOnlyBitStream(packet.Data); byte rakNetPacketId = packetStream.ReadByte(); switch (rakNetPacketId) { case 17: // ID_NEW_INCOMING_CONNECTION { Server.Instance.Scheduler.RunTask(() => Server.Instance.EventManager.Publish(new ClientConnectEvent(packet.SourceAddress, packet.SourcePort, packet.DestinationAddress, packet.DestinationPort))); break; } case 19: // ID_DISCONNECTION_NOTIFICATION case 20: // ID_CONNECTION_LOST { Server.Instance.Scheduler.RunTask(() => Server.Instance.EventManager.Publish(new ClientDisconnectEvent(packet.SourceAddress, packet.SourcePort, packet.DestinationAddress, packet.DestinationPort))); break; } case 83: // ID_USER_PACKET_ENUM { try { RemoteConnectionType remoteConnectionType = (RemoteConnectionType)packetStream.ReadUInt16(); uint luPacketId = packetStream.ReadUInt32(); packetStream.SkipBytes(1); IUnserializable gamePacket = null; switch (remoteConnectionType) { case RemoteConnectionType.General: { GeneralPacketId generalPacketId = (GeneralPacketId)luPacketId; switch (generalPacketId) { case GeneralPacketId.MSG_SERVER_VERSION_CONFIRM: { gamePacket = new GeneralVersionConfirmPacket(); break; } default: { Server.Instance.Logger.Log("Received an unknown LU packet. generalPacketId=" + generalPacketId); break; } } break; } case RemoteConnectionType.Auth: { AuthPacketId authPacketId = (AuthPacketId)luPacketId; switch (authPacketId) { case AuthPacketId.MSG_AUTH_LOGIN_REQUEST: { gamePacket = new AuthLoginRequestPacket(); break; } default: { Server.Instance.Logger.Log("Received an unknown LU packet. authPacketId=" + authPacketId); break; } } break; } case RemoteConnectionType.World: { WorldPacketId worldPacketId = (WorldPacketId)luPacketId; switch (worldPacketId) { case WorldPacketId.MSG_WORLD_CLIENT_VALIDATION: { gamePacket = new WorldValidationPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_CHARACTER_LIST_REQUEST: { gamePacket = new WorldCharacterListRequestPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_CHARACTER_CREATE_REQUEST: { gamePacket = new WorldCharacterCreateRequestPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_CHARACTER_DELETE_REQUEST: { gamePacket = new WorldCharacterDeleteRequestPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_CHARACTER_RENAME_REQUEST: { gamePacket = new WorldCharacterRenameRequestPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_LOGIN_REQUEST: { gamePacket = new WorldLoginRequestPacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_LEVEL_LOAD_COMPLETE: { gamePacket = new WorldLevelLoadCompletePacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_POSITION_UPDATE: { gamePacket = new WorldPositionUpdatePacket(); break; } case WorldPacketId.MSG_WORLD_CLIENT_GAME_MSG: { long objectId = packetStream.ReadInt64(); ushort gameMessageId = packetStream.ReadUInt16(); switch (gameMessageId) { case (ushort)GameMessageId.PlayerLoaded: { gamePacket = new PlayerLoadedGameMessage(objectId); break; } default: { Server.Instance.Logger.Log("Received an unknown LU packet. gameMessageId=" + gameMessageId); break; } } break; } default: { Server.Instance.Logger.Log("Received an unknown LU packet. worldPacketId=" + worldPacketId); break; } } break; } default: { Server.Instance.Logger.Log("Received an unknown LU packet. remoteConnectionType=" + remoteConnectionType); break; } } if (gamePacket != null) { gamePacket.FromBitStream(packetStream); Server.Instance.Scheduler.RunTask(() => Server.Instance.EventManager.Publish(new GamePacketReceiveEvent(packet.SourceAddress, packet.SourcePort, packet.DestinationAddress, packet.DestinationPort, gamePacket))); } } catch (Exception exc) { StackTrace stackTrace = new StackTrace(exc, true); StackFrame stackFrame = stackTrace.GetFrame(0); string fileName = stackFrame.GetFileName(); int fileLine = stackFrame.GetFileLineNumber(); int fileColumn = stackFrame.GetFileColumnNumber(); Server.Instance.Logger.Log("Received an invalid game packet. address=" + packet.SourceAddress + " port=" + packet.SourcePort + " exception=" + exc.Message + " stackTrace=" + fileName + ":" + fileLine + ":" + fileColumn); } break; } default: { Server.Instance.Logger.Log("Received an unknown RakNet packet. rakNetPacketId=" + rakNetPacketId); break; } } } else { Thread.Sleep(1); } } }
public void FromBitStream(ReadOnlyBitStream packetStream) { CharacterId = packetStream.ReadInt64(); }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { SequenceNumber1 = bitStream.ReadUInt16(); SequenceNumber2 = bitStream.ReadUInt16(); }
public string Read(ReadOnlyBitStream bitStream) { StringWriter output = new StringWriter(); uint socketIdentifier = bitStream.ReadUInt32(); bool isHandshake = socketIdentifier == 0; output.WriteLine("Is Handshake: " + isHandshake); output.WriteLine("Socket ID: " + socketIdentifier); if (isHandshake) { string messageIdentifier = ""; for (int i = 0; i < 4; i++) { messageIdentifier += (char)bitStream.ReadByte(); } output.WriteLine("Message ID: " + messageIdentifier); if (handshakeStructs.ContainsKey(messageIdentifier)) { handshakeStructs[messageIdentifier].ReadFromBitStream(bitStream); handshakeStructs[messageIdentifier].WriteToTextWriter(output); } } else { byte channel = bitStream.ReadCrumb(); byte resendCount = bitStream.ReadCrumb(); bool isSplit = bitStream.ReadBit(); Util.UInt11 length = new Util.UInt11(); length.ReadFromBitStream(bitStream); output.WriteLine("Channel: " + channel); output.WriteLine("Resend Count: " + resendCount); output.WriteLine("Is Split: " + isSplit); output.WriteLine("Length: " + length); if (channel == 0) { byte messageIdentifier = bitStream.ReadByte(); output.Write("Message ID: " + messageIdentifier); if (channel0Structs.ContainsKey(messageIdentifier)) { Structure srct = channel0Structs[messageIdentifier]; output.WriteLine(" (" + srct.GetType().Name + ")"); srct.ReadFromBitStream(bitStream); srct.WriteToTextWriter(output); } } } if (bitStream.GetBitsUnread() > 0) { output.WriteLine(); if (bitStream.GetBitsUnread() % 8 == 0) { output.WriteLine("Unread Bytes:"); byte[] bytes = bitStream.ReadBytes(bitStream.GetBitsUnread() / 8); for (int i = 0; i < bytes.Length; i++) { output.WriteLine(bytes[i]); } } else { output.WriteLine("Unread Bits:"); for (int i = 0; i < bitStream.GetBitsUnread(); i++) { output.WriteLine(bitStream.ReadBit() ? 1 : 0); } } } return(output.ToString()); }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { AssignedSocketIdentifier = bitStream.ReadUInt32(); }
public void FromBitStream(ReadOnlyBitStream packetStream) { Username = packetStream.ReadWideString(33); Password = packetStream.ReadWideString(41); }
public void Load() { byte[] fileData = System.IO.File.ReadAllBytes(filePath); ReadOnlyBitStream bitStream = new ReadOnlyBitStream(fileData); header = new GlobalHeader(); packets = new List <Packet>(); dataTable = new DataTable(); header.ReadFromBitStream(bitStream); while (bitStream.GetBitsUnread() > 0) { Packet packet = new Packet(); packet.ReadFromBitStream(bitStream); packets.Add(packet); } DataColumn column; column = new DataColumn(); column.DataType = Type.GetType("System.UInt32"); column.ColumnName = "Packet No."; column.ReadOnly = true; dataTable.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Time"; column.ReadOnly = true; dataTable.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Source Address"; column.ReadOnly = true; dataTable.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.UInt16"); column.ColumnName = "Source Port"; column.ReadOnly = true; dataTable.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Destination Address"; column.ReadOnly = true; dataTable.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.UInt16"); column.ColumnName = "Destination Port"; column.ReadOnly = true; dataTable.Columns.Add(column); int pno = 0; foreach (Packet packet in packets) { if (packet.GetEthernetFrame().GetPacket().GetDatagram() != null) { byte[] udpData = packet.GetEthernetFrame().GetPacket().GetDatagram().GetData(); DataRow row = dataTable.NewRow(); DateTime time = new DateTime(packet.GetHeader().GetTimestampSeconds() * TimeSpan.TicksPerSecond); time = time.AddMilliseconds((double)packet.GetHeader().GetTimestampMicroseconds() / 1000d / 1000d); row["Packet No."] = pno++; row["Time"] = time.ToString("HH:mm:ss.fff"); row["Source Address"] = packet.GetEthernetFrame().GetPacket().GetSourceAsString(); row["Destination Address"] = packet.GetEthernetFrame().GetPacket().GetDestinationAsString(); row["Source Port"] = packet.GetEthernetFrame().GetPacket().GetDatagram().GetSourcePort(); row["Destination Port"] = packet.GetEthernetFrame().GetPacket().GetDatagram().GetDestinationPort(); dataTable.Rows.Add(row); } } }
public abstract void ReadFromBitStream(ReadOnlyBitStream bitStream);
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { Zeros = bitStream.ReadUInt64(); }
public void FromBitStream(ReadOnlyBitStream packetStream) { CharacterId = packetStream.ReadInt64(); NewName = packetStream.ReadWideString(33); }
public void FromBitStream(ReadOnlyBitStream packetStream) { float positionX = packetStream.ReadSingle(); float positionY = packetStream.ReadSingle(); float positionZ = packetStream.ReadSingle(); Position = new JVector(positionX, positionY, positionZ); float rotationX = packetStream.ReadSingle(); float rotationY = packetStream.ReadSingle(); float rotationZ = packetStream.ReadSingle(); float rotationW = packetStream.ReadSingle(); Rotation = new JQuaternion(rotationX, rotationY, rotationZ, rotationW); IsSupported = packetStream.ReadBit(); IsOnRail = packetStream.ReadBit(); bool flag = packetStream.ReadBit(); if (flag) { float linearVelocityX = packetStream.ReadSingle(); float linearVelocityY = packetStream.ReadSingle(); float linearVelocityZ = packetStream.ReadSingle(); LinearVelocity = new JVector(linearVelocityX, linearVelocityY, linearVelocityZ); } flag = packetStream.ReadBit(); if (flag) { float angularVelocityX = packetStream.ReadSingle(); float angularVelocityY = packetStream.ReadSingle(); float angularVelocityZ = packetStream.ReadSingle(); AngularVelocity = new JVector(angularVelocityX, angularVelocityY, angularVelocityZ); } flag = packetStream.ReadBit(); if (flag) { LocalSpaceObjectId = packetStream.ReadInt64(); float localPositionX = packetStream.ReadSingle(); float localPositionY = packetStream.ReadSingle(); float localPositionZ = packetStream.ReadSingle(); LocalPosition = new JVector(localPositionX, localPositionY, localPositionZ); flag = packetStream.ReadBit(); if (flag) { float localLinearVelocityX = packetStream.ReadSingle(); float localLinearVelocityY = packetStream.ReadSingle(); float localLinearVelocityZ = packetStream.ReadSingle(); LocalLinearVelocity = new JVector(localLinearVelocityX, localLinearVelocityY, localLinearVelocityZ); } } }
public void FromBitStream(ReadOnlyBitStream packetStream) { Username = packetStream.ReadWideString(33); SessionKey = packetStream.ReadWideString(33); FdbChecksum = packetStream.ReadBytes(33); }
public override void ReadFromBitStream(ReadOnlyBitStream bitStream) { AssignedSocketIdentifier = bitStream.ReadUInt32(); StreamingProtocolVersion = bitStream.ReadUInt16(); }