diff --git a/SMBLibrary/RPC/Enums/FaultStatus.cs b/SMBLibrary/RPC/Enums/FaultStatus.cs new file mode 100644 index 0000000..d299286 --- /dev/null +++ b/SMBLibrary/RPC/Enums/FaultStatus.cs @@ -0,0 +1,11 @@ + +namespace SMBLibrary.RPC +{ + public enum FaultStatus : uint + { + OpRangeError = 0x1C010002, // nca_op_rng_error + UnknownInterface = 0x1C010003, // nca_unk_if + RPCVersionMismatch = 0x1C000008, // nca_rpc_version_mismatch + ProtocolError = 0x1C01000B, // nca_proto_error + } +} diff --git a/SMBLibrary/RPC/PDU/FaultPDU.cs b/SMBLibrary/RPC/PDU/FaultPDU.cs index a3be864..6226dc5 100644 --- a/SMBLibrary/RPC/PDU/FaultPDU.cs +++ b/SMBLibrary/RPC/PDU/FaultPDU.cs @@ -6,7 +6,6 @@ */ using System; using System.Collections.Generic; -using System.Text; using Utilities; namespace SMBLibrary.RPC @@ -22,7 +21,7 @@ namespace SMBLibrary.RPC public ushort ContextID; public byte CancelCount; public byte Reserved; - public uint Status; + public FaultStatus Status; public uint Reserved2; public byte[] Data; public byte[] AuthVerifier; @@ -41,7 +40,7 @@ namespace SMBLibrary.RPC ContextID = LittleEndianReader.ReadUInt16(buffer, ref offset); CancelCount = ByteReader.ReadByte(buffer, ref offset); Reserved = ByteReader.ReadByte(buffer, ref offset); - Status = LittleEndianReader.ReadUInt32(buffer, ref offset); + Status = (FaultStatus)LittleEndianReader.ReadUInt32(buffer, ref offset); Reserved2 = LittleEndianReader.ReadUInt32(buffer, ref offset); int dataLength = FragmentLength - AuthLength - offset; Data = ByteReader.ReadBytes(buffer, ref offset, dataLength); @@ -58,7 +57,7 @@ namespace SMBLibrary.RPC LittleEndianWriter.WriteUInt16(buffer, ref offset, ContextID); ByteWriter.WriteByte(buffer, ref offset, CancelCount); ByteWriter.WriteByte(buffer, ref offset, Reserved); - LittleEndianWriter.WriteUInt32(buffer, ref offset, Status); + LittleEndianWriter.WriteUInt32(buffer, ref offset, (uint)Status); LittleEndianWriter.WriteUInt32(buffer, ref offset, Reserved2); ByteWriter.WriteBytes(buffer, ref offset, Data); ByteWriter.WriteBytes(buffer, ref offset, AuthVerifier); diff --git a/SMBLibrary/SMBLibrary.csproj b/SMBLibrary/SMBLibrary.csproj index d838f55..a65adf9 100644 --- a/SMBLibrary/SMBLibrary.csproj +++ b/SMBLibrary/SMBLibrary.csproj @@ -183,6 +183,7 @@ +