示例#1
0
        public async Task CanDecryptAxiPassword()
        {
            using (var reader = new OmmConfReader("omm_conf.txt"))
            {
                var user = await reader.GetValueAsync("XAC", "name", "axi", CancellationToken.None);

                var passwd  = user["passwd"];
                var bf_key  = new byte[] { 0x09, 0x6B, 0xA9, 0x87, 0x98, 0x90, 0xB6, 0x7A, 0x18, 0x93, 0xE3, 0x97, 0xB9, 0x77, 0xF3, };
                var bf      = new BlowFish(bf_key);
                var crypted = HexEncoding.HexToByte(passwd);

                HexEncoding.SwapEndianess(crypted);

                var plain = bf.Decrypt_ECB(crypted);

                HexEncoding.SwapEndianess(plain.Span);


                var eos = plain.Span.IndexOf((byte)0);
                if (eos >= 0)
                {
                    passwd = Encoding.UTF8.GetString(plain.Slice(0, eos).Span);
                }

                _output.WriteLine(plain.ToHex());
                Assert.Equal("axi", passwd);
            }
        }
示例#2
0
 public async Task CanReadOmmConfig()
 {
     using (var reader = new OmmConfReader("omm_conf.txt"))
     {
         await reader.ParseAsync(CancellationToken.None);
     }
 }
示例#3
0
        protected override async Task <string> GetRootPasswordHashAsync(CancellationToken cancellationToken)
        {
            using (var reader = new OmmConfReader(_ommConf))
            {
                var user = await reader.GetValueAsync("UA", "user", "root", cancellationToken);

                return(user?["password"]);
            }
        }
示例#4
0
        public async Task NonExistentRfpDoesNotThrow()
        {
            using (var reader = new OmmConfReader("omm_conf.txt"))
            {
                var rfp = await reader.GetValueAsync("RFP", "mac", "abcdef012345", CancellationToken.None);

                Assert.Null(rfp);
            }
        }
示例#5
0
        public async Task CanReadRootPassword()
        {
            using (var reader = new OmmConfReader("omm_conf.txt"))
            {
                var user = await reader.GetValueAsync("UA", "user", "root", CancellationToken.None);

                Assert.Equal("$1$$juPq1oleiGg7WHdZ5itlC/", user["password"]);
            }
        }
示例#6
0
        public async Task CanGetSection()
        {
            using (var reader = new OmmConfReader("omm_conf.txt"))
            {
                var section = await reader.GetSectionAsync("RFPA", CancellationToken.None);

                Assert.NotNull(section);
                Assert.NotEmpty(section);
            }
        }
示例#7
0
        public async Task CanGetEntry()
        {
            using (var reader = new OmmConfReader("omm_conf.txt"))
            {
                var rfp = await reader.GetValueAsync("RFP", "mac", "0030421B1737", CancellationToken.None);

                var id = rfp["id"];
                Assert.Equal("RFP: id:000, mac:0030421B1737, sit:1, location:zivillian, fl:0900,", rfp.ToString().Substring(0, 66));
                var rfpa = await reader.GetValueAsync("RFPA", "id", id, CancellationToken.None);

                var key = rfpa[1];
                Assert.Equal("RFPA", rfpa.Type);
                Assert.Equal("5E00AFDF3295C6080FDD462B90AFF987D6726CC1B89DC64F7C1FA7AB747A997BFDD835D698C95D7F083105457755232581AA7F8AD5F41509E7BE7EBF1A1CD342", key);
                Assert.Equal("000", rfpa[0]);
                Assert.Throws <IndexOutOfRangeException>(() => rfpa[2]);
            }
        }
示例#8
0
        protected override async Task <Memory <byte> > GetRfpaAsync(CryptedRfpConnection connection, CancellationToken cancellationToken)
        {
            using (var reader = new OmmConfReader(_ommConf))
            {
                var rfp = await reader.GetValueAsync("RFP", "mac", connection.Identifier.ToString().ToUpper(), cancellationToken).ConfigureAwait(false);

                if (rfp is null)
                {
                    return(Memory <byte> .Empty);
                }
                var id   = rfp["id"];
                var rfpa = await reader.GetValueAsync("RFPA", "id", id, cancellationToken).ConfigureAwait(false);

                if (rfpa is null)
                {
                    return(Memory <byte> .Empty);
                }
                var key = rfpa[1];
                return(HexEncoding.HexToByte(key));
            }
        }