public static KdcHelloResponse Decode(byte[] message) { var obj = SksAsn1Parser.Parse(message); var set = (List <object>)obj; var users = new List <User>(); foreach (var sequenceObj in set) { var sequence = (List <object>)sequenceObj; var ip = (string)sequence[0]; var port = (string)sequence[1]; var name = (string)sequence[2]; var key = (byte[])sequence[3]; var pass = (string)sequence[4]; var user = new User { Password = pass, Key = key, Name = name, IpAddress = ip, Port = port, }; users.Add(user); } return(new KdcHelloResponse { Users = users, }); }
public static Akep2Message3 FromString(string str, byte[] longTermKey) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedPart = (byte[])contentObjectsList[1]; var hmacPart = (byte[])contentObjectsList[2]; var myHmac = SksHmac.Hash(longTermKey, encryptedPart); if (!Utils.CompareByteArrays(hmacPart, myHmac)) { Logger.Log("AKEP2MESSAGE2:", "Hmac doesn't match"); return(null); } var decryptedSequence = SksAes.DecryptBytesFromBytes_Aes(encryptedPart, longTermKey, iv); contentObjectsList = (List <object>)SksAsn1Parser.Parse(decryptedSequence); var a = (string)contentObjectsList[0]; var nonceB = (byte[])contentObjectsList[1]; return(new Akep2Message3(a, nonceB, longTermKey)); }
public static Akep2Message1 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var nonceA = (byte[])contentObjectsList[0]; return(new Akep2Message1(nonceA)); }
public static ChatMessage FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedmessageBytes = (byte[])contentObjectsList[1]; var hmacBytes = (byte[])contentObjectsList[2]; return(new ChatMessage(iv, encryptedmessageBytes, hmacBytes)); }
public static HandshakeMessage2 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var protocolId = (ProtocolType)(int)contentObjectsList[0]; //var ttps = (List<string>) contentObjectsList[1]; // todo: add TTPs return(new HandshakeMessage2(protocolId, null)); }
public static HandshakeMessage1 FromString(string str) { var contentBytes = PemParser.GetMessageContentBytes(str); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var a = (string)contentObjectsList[0]; var b = (string)contentObjectsList[1]; var keyId = (byte[])contentObjectsList[2]; var passwordId = (byte[])contentObjectsList[3]; // todo: add TTPs return(new HandshakeMessage1(a, b, keyId, passwordId, null)); }
public void ParseTest5AnybodyThere() { // 30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f - 5 anybody there? var message = new byte[] { 0x10, 0x13, 0x02, 0x01, 0x05, 0x13, 0x0e, 0x41, 0x6e, 0x79, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x3f, }; var obj = SksAsn1Parser.Parse(message); var objList = (List <object>)obj; var number = (int)objList[0]; var str = (string)objList[1]; Assert.AreEqual(5, number); Assert.AreEqual("Anybody there?", str); }
public void ParseTestKdcSample() { // kdc sample message var message = new byte[] { 0x17, 0x2B, 0x10, 0x29, 0x13, 0x0F, 0x31, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x31, 0x2E, 0x31, 0x31, 0x31, 0x02, 0x01, 0x05, 0x13, 0x0e, 0x41, 0x6e, 0x79, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x3f, 0x04, 0x00, 0x13, 0x01, 65, }; var obj = SksAsn1Parser.Parse(message); var set = (List <object>)obj; var sequence = (List <object>)set[0]; var ip = (string)sequence[0]; var number = (int)sequence[1]; var str = (string)sequence[2]; var b = (byte[])sequence[3]; var str2 = (string)sequence[4]; Assert.AreEqual("111.111.111.111", ip); Assert.AreEqual(5, number); Assert.AreEqual("Anybody there?", str); CollectionAssert.AreEqual(new byte[] {}, b); Assert.AreEqual("A", str2); }
public static KdcHelloResponse FromString(string message, byte[] kdcKey) { var contentBytes = PemParser.GetMessageContentBytes(message); var contentObjectsList = (List <object>)SksAsn1Parser.Parse(contentBytes); var iv = (byte[])contentObjectsList[0]; var encryptedPart = (byte[])contentObjectsList[1]; var decryptedSequence = SksAes.DecryptBytesFromBytes_Aes(encryptedPart, kdcKey, iv); contentObjectsList = (List <object>)SksAsn1Parser.Parse(decryptedSequence); var users = new List <User>(); foreach (var sequenceObj in contentObjectsList) { var sequence = (List <object>)sequenceObj; var ip = (string)sequence[0]; var port = (string)sequence[1]; var name = (string)sequence[2]; var key = (byte[])sequence[3]; var pass = (string)sequence[4]; var user = new User { Password = pass, Key = key, Name = name, IpAddress = ip, Port = port, }; users.Add(user); } return(new KdcHelloResponse { Users = users, }); }