Example #1
0
            private void Test2()
            {
                var ss = new[] {
                    "gGMAEHCAGAcB0kSc/G+ehD4Z93QxnfV6P0i0dO2SSrCsl5ZdXI8rRQzT3W3Ej1mHTO8=",
                    "gLcAEHCANQ4BsLzPNq3dJKRyAtgGjfP0kyQgN4RWzRAcO0LPfU1J0L6VszQJGwANg7Y=",
                    "gFQAEHCAWgMBpcwy1MAkLGFPRII9hUlB4+3+O1d0p2ZOgsHu21BAikAOYtjTh60Dx+s=",
                    "gHMAEHCAEAsBcdf9lNe4FL+Hvs8lUNpie7u10tSOAWqiPyQVyLTx6BbQDWehC6qQa+0=",
                    "gHMAEHCADwsB3P7NADg1Rsj2FLImBtz/9e3hVNzniwoMGUhlyC4KI8Lsvt1VKSuSyVM=",
                    "gF0AEHCATgQBdf0x8gNiz9fqC13IfE79yqd4SyMtTDyk02gQoW317HwJ6L1zt8rXAIc=",
                    "gF0AEHCATwQB/F5MgTRSRaqVjS9SZjt1rQYdPtl4hSL2Tox4Y8TRW4yatCH/7l75/Q4=",
                };
                var dic = new Dictionary <String, String>
                {
                    ["701000B7"] = "5F6C965F3AA482AF2EF8C3FBF63661FE",
                    ["70100063"] = "1BA6731021ED686C3643756311DD23CC",
                    ["701000A4"] = "ED347BE6FDDF2BCF749354694285841D",
                    ["7010005D"] = "8598B09A8CD56BC67AA55C08CEDC183E",
                    ["70100073"] = "19E52095515EBD0C2FD596DD96FD0833",
                    ["70100054"] = "53BBDC505119EB63BCB17CD15B24AD45",
                    ["70100061"] = "778960777F7B4CBAC857C06DEE818844",
                    ["701000B1"] = "35D43942B95DC82B80A79BC4BAD9457E",
                };

                foreach (var item in ss)
                {
                    Console.WriteLine();
                    Packet pk = item.ToBase64();

                    var pm = new PHYMessage();
                    pm.Read(pk.GetStream(), null);
                    Console.WriteLine(pm.Payload.ToHex(64));

                    var addr = pm.DevAddr.ToString("X8");
                    //Console.WriteLine(pm.Type);
                    Console.WriteLine("{0} {1} FCnt={2} FPort={3}", addr, pm.Type, pm.FCnt, pm.FPort);
                    //Console.WriteLine(pm.ToJson(true));

                    //var nwkSkey = "4B463EFED018F099FE3F05108618FDDA".ToHex();
                    //var appSkey = "19E52095515EBD0C2FD596DD96FD0833".ToHex();
                    var appSkey = dic[addr].ToHex();
                    var buf     = pm.Decrypt(null, appSkey);
                    Console.WriteLine(buf.ToHex());
                    //Console.WriteLine(buf.ToStr());
                }

                //var crypto = new LoRaMacCrypto();

                //var buf = "C86B3BF3".ToHex();
                //var key = "A499E0B73311D0782EC80C98FEC83B8E".ToHex();
                //var rs = crypto.PayloadDecrypt(buf, key, 0x77F7EEF0, true, 0x20);

                //var str = rs.ToHex();
                //XTrace.WriteLine(str);
                //Debug.Assert(str == "B93747B2");
            }
Example #2
0
            private void Test()
            {
                //var str = \"{\\"stat\\":{\\"time\\":\\"2019-10-25 07:05:33 UTC\\",\\"lati\\":\\"31.231013\\",\\"long\\":\\"121.200607\\",\\"alti\\":\\"30.200000\\",\\"rxnb\\":0,\\"rxok\\":0,\\"rxfw\\":0,\\"ackr\\":100.0,\\"dwnb\\":0,\\"txnb\\":0,\\"batt\\":0,\\"poe\\":0,\\"net\\":1,\\"traffic\\":780539002,\\"ver\\":\\"V3.0.864.862.868_Release\\"}}\";
                //var str = "{\"rxpk\":[{\"tmst\":196287580,\"chan\":5,\"rfch\":1,\"freq\":474.100000,\"stat\":1,\"modu\":\"LORA\",\"datr\":\"SF12BW125\",\"codr\":\"4/5\",\"lsnr\":-12.5,\"rssi\":-124,\"size\":50,\"data\":\"gHMAEHCADwsB3P7NADg1Rsj2FLImBtz/9e3hVNzniwoMGUhlyC4KI8Lsvt1VKSuSyVM=\"}]}";
                var str = "{\"rxpk\":[{\"tmst\":438505452,\"chan\":2,\"rfch\":0,\"freq\":473.500000,\"stat\":1,\"modu\":\"LORA\",\"datr\":\"SF12BW125\",\"codr\":\"4/5\",\"lsnr\":-14.0,\"rssi\":-119,\"size\":50,\"data\":\"gGEAEHCACwABRaWG3UZsomFqt4sxJmt0JGNFCS3PWweysY1Vi+94PmFTmoycmDxCviA=\"}]}";
                //var str = "{\"txpk\":{\"imme\":true,\"freq\":864.123456,\"rfch\":0,\"powe\":14,\"modu\":\"LORA\",\"datr\":\"SF11BW125\",\"codr\":\"4/6\",\"ipol\":false,\"size\":32,\"data\":\"H3P3N2i9qc4yt7rK7ldqoeCVJGBybzPY5h1Dd7P7p8v\"}}";
                var js = new JsonParser(str).Decode() as IDictionary <String, Object>;
                //var st = JsonHelper.Convert<StatModel>(js[\"stat\"]);

                //Console.WriteLine(st.ToJson(true));

                var st = StatModel.Read(js["stat"]);

                if (st != null)
                {
                    Console.WriteLine(st.ToJson(true));
                }

                var dt = RxPacket.Read(js["rxpk"]);

                if (dt.Length > 0)
                {
                    Console.WriteLine(dt.ToJson(true));

                    var dp = dt[0];
                    if (!dp.Data.IsNullOrEmpty())
                    {
                        Packet pk = dp.Data.ToBase64();
                        Console.WriteLine(pk.ToHex(64));
                        Console.WriteLine(pk.ToStr());

                        var pm = new PHYMessage();
                        pm.Read(pk.GetStream(), null);

                        Console.WriteLine(pm.ToJson(true));

                        var nwkSkey = "4B463EFED018F099FE3F05108618FDDA".ToHex();
                        //var appSkey = "19E52095515EBD0C2FD596DD96FD0833".ToHex();
                        var appSkey = "778960777F7B4CBAC857C06DEE818844".ToHex();
                        var buf     = pm.Decrypt(nwkSkey, appSkey);
                        Console.WriteLine(buf.ToHex());
                        Console.WriteLine(buf.ToStr());
                    }
                }

                var tx = TxPacket.Read(js["txpk"]);

                if (tx != null)
                {
                    Console.WriteLine(tx.ToJson(true));
                }
            }
Example #3
0
        /// <summary>上行数据包</summary>
        /// <param name="packets"></param>
        /// <param name="ext"></param>
        protected virtual void OnPushPacket(RxPacket[] packets, IDictionary <String, Object> ext)
        {
            foreach (var item in packets)
            {
                if (!item.Data.IsNullOrEmpty())
                {
                    Packet pk = item.Data.ToBase64();

                    var pm = new PHYMessage();
                    pm.Read(pk.GetStream(), null);

                    var addr = pm.DevAddr.ToString("X8");
                    WriteLog("{0} {1} {2}", addr, pm.Type, pm.FCnt);

                    OnPushMessage(pm, item, ext);
                }
            }
        }