Skip to content
1 change: 1 addition & 0 deletions CompressIPUI/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ static async Task Main(string[] args)
};
await client.SubscribeAsync(cts.Token);
await client.RunAsync(cts.Token);
cts.Cancel();
}
}
catch (OperationCanceledException)
Expand Down
6 changes: 6 additions & 0 deletions RfpProxy.AaMiDe/AaMiDe/AaMiDeMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public abstract class AaMiDeMessage
{
private readonly ushort _length;

public int MessageLength => _length + 4;

public virtual ushort Length => 4;

public virtual bool HasUnknown => !Raw.IsEmpty;
Expand Down Expand Up @@ -104,6 +106,8 @@ public static AaMiDeMessage Create(ReadOnlyMemory<byte> data, RfpConnectionTrack
return new SysRPingMessage(data);
case MsgType.SYS_VSNTP_TIME:
return new SysRoundtripDelayMessage(data);
case MsgType.SYS_RANDOM_VALUE:
return new SysRandomValueMessage(data);
case MsgType.SYS_RESET:
return new SysResetMessage(data);
case MsgType.HEARTBEAT:
Expand All @@ -118,6 +122,8 @@ public static AaMiDeMessage Create(ReadOnlyMemory<byte> data, RfpConnectionTrack
return new SysMaxChannelsMessage(data);
case MsgType.SYS_ENCRYPTION_CONF:
return new SysEncryptionConf(data);
case MsgType.SYS_FIRMWARE_UPDATE:
return new SysFirmwareUpdateMessage(data);
default:
return new UnknownAaMiDeMessage(type, data);
}
Expand Down
5 changes: 5 additions & 0 deletions RfpProxy.AaMiDe/AaMiDe/MsgTypes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public enum MsgType : ushort

SYS_IP_OPTIONS = 0x0101,
SYS_LED = 0x0102,
SYS_INFO = 0x0103,
SYS_SPY = 0x0104,
SYS_HEARTBEAT_INTERVAL = 0x0105,
SYS_RSX = 0x0106,
Expand All @@ -27,6 +28,7 @@ public enum MsgType : ushort
SYS_SW_CONTAINER = 0x0115,
SYS_CORE_DUMP = 0x0116,
SYS_VSNTP_TIME = 0x0117,
SYS_RANDOM_VALUE = 0x0118,
SYS_UPDATE_802_1X_SUPPLICANT = 0x0119,
SYS_INIT = 0x0120,
SYS_RESET = 0x0121,
Expand All @@ -35,6 +37,9 @@ public enum MsgType : ushort
SYS_RFP_AUTH_KEY = 0x0124,
SYS_RFP_RE_ENROLEMENT = 0x0125,
SYS_ENCRYPTION_CONF = 0x0126,
SYS_FIRMWARE_UPDATE = 0x0127,
SYS_COUNTRY_TAG = 0x0128,
SYS_PING = 0x0129,
SYS_AUTHENTICATE = 0x012d,
SYS_LICENSE_TIMER = 0x0134,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public static DeTeWeElement Create(DeTeWeType type, ReadOnlyMemory<byte> data)
return new SendTextDeTeWeElement(data);
case DeTeWeType.Reserved1:
return new Reserved1DeTeWeElement(data);
case DeTeWeType.Unknown1C:
return new Unknown1CDeTeWeElement(data);
default:
return new UnknownDeTeWeElement(type, data);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
public enum DeTeWeType:byte
{
Language = 0x16,
Unknown1C = 0x1C,
Display = 0x20,
SendText = 0x21,
DateTime = 0x23,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System;
using System.IO;
using System.Text;

namespace RfpProxy.AaMiDe.Nwk.InformationElements.Proprietary.DeTeWe
{
public class Unknown1CDeTeWeElement : DeTeWeElement
{
public string Content { get; set; }

public override bool HasUnknown => false;

public override ReadOnlyMemory<byte> Raw => Memory<byte>.Empty;

public Unknown1CDeTeWeElement(ReadOnlyMemory<byte> data) : base(DeTeWeType.Unknown1C, data)
{
Content = Encoding.UTF8.GetString(data.Span);
}

public override void Log(TextWriter writer)
{
base.Log(writer);
writer.Write($"({Content})");
}
}
}
79 changes: 79 additions & 0 deletions RfpProxy.AaMiDe/AaMiDe/Sys/SysFirmwareUpdateMessage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
using System;
using System.IO;
using RfpProxyLib;

namespace RfpProxy.AaMiDe.Sys
{
public sealed class SysFirmwareUpdateMessage : AaMiDeMessage
{
public ReadOnlyMemory<byte> Reserved1 { get; }

public string Value3 { get; }

public string Value4 { get; }

public string Value5 { get; }

public string Value6 { get; }

public string Value7 { get; }

public byte Value8 { get; }

public byte Value9 { get; }

protected override ReadOnlyMemory<byte> Raw { get; }

public SysFirmwareUpdateMessage(ReadOnlyMemory<byte> data):base(MsgType.SYS_FIRMWARE_UPDATE, data)
{
Raw = base.Raw;
Reserved1 = Raw.Slice(0, 8);
Raw = Raw.Slice(8);
while (!Raw.IsEmpty)
{
var type = Raw.Span[0];
var length = Raw.Span[1];
var value = Raw.Slice(2, length);
switch (type)
{
case 3:
Value3 = value.Span.CString();
break;
case 4:
Value4 = value.Span.CString();
break;
case 5:
Value5 = value.Span.CString();
break;
case 6:
Value6 = value.Span.CString();
break;
case 7:
Value7 = value.Span.CString();
break;
case 8 when length == 1:
Value8 = value.Span[0];
break;
case 9 when length == 1:
Value9 = value.Span[0];
break;
default:
return;
}
Raw = Raw.Slice(2).Slice(length);
}
}

public override void Log(TextWriter writer)
{
base.Log(writer);
writer.Write($"Value3({Value3}) " +
$"Value4({Value4}) " +
$"Value5({Value5}) " +
$"Value6({Value6}) " +
$"Value7({Value7}) " +
$"Value8({Value8}) " +
$"Value9({Value9}) ");
}
}
}
Loading
Loading