From 8f121c1e7c3e052ffcb63904f56de4eec7741dc2 Mon Sep 17 00:00:00 2001 From: Piotr Krysik Date: Thu, 30 Mar 2017 10:55:08 +0200 Subject: Added interpretation of SC (start ciphering) field in cmc extractor --- include/grgsm/misc_utils/extract_cmc.h | 1 + lib/misc_utils/extract_cmc_impl.cc | 12 +++++++++--- lib/misc_utils/extract_cmc_impl.h | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/grgsm/misc_utils/extract_cmc.h b/include/grgsm/misc_utils/extract_cmc.h index 8af12be..7b31564 100755 --- a/include/grgsm/misc_utils/extract_cmc.h +++ b/include/grgsm/misc_utils/extract_cmc.h @@ -52,6 +52,7 @@ namespace gr { static sptr make(); virtual std::vector get_framenumbers() = 0; virtual std::vector get_a5_versions() = 0; + virtual std::vector get_start_ciphering() = 0; }; } // namespace gsm diff --git a/lib/misc_utils/extract_cmc_impl.cc b/lib/misc_utils/extract_cmc_impl.cc index b367def..5fa6a6b 100755 --- a/lib/misc_utils/extract_cmc_impl.cc +++ b/lib/misc_utils/extract_cmc_impl.cc @@ -42,10 +42,11 @@ namespace gr { if((msg_elements[3] & 0xF) == 0x6 && msg_elements[4] == 0x35) { - - int frame_nr = be32toh(header->frame_number); - int a5_version = ((msg_elements[5] & 0xE) >> 1) + 1; + int frame_nr = be32toh(header->frame_number); + int a5_version = ((msg_elements[5] & 0xE) >> 1) + 1; //10.5.2.9 Cipher Mode Setting + int start_ciphering = ((msg_elements[5] & 0x1)); + d_start_ciphering.push_back(start_ciphering); d_framenumbers.push_back(frame_nr); d_a5_versions.push_back(a5_version); } @@ -60,6 +61,11 @@ namespace gr { { return d_a5_versions; } + + std::vector extract_cmc_impl::get_start_ciphering() + { + return d_start_ciphering; + } extract_cmc::sptr extract_cmc::make() diff --git a/lib/misc_utils/extract_cmc_impl.h b/lib/misc_utils/extract_cmc_impl.h index fe97f22..fe03bc8 100755 --- a/lib/misc_utils/extract_cmc_impl.h +++ b/lib/misc_utils/extract_cmc_impl.h @@ -34,9 +34,11 @@ namespace gr { void process_messages(pmt::pmt_t msg); std::vector d_framenumbers; std::vector d_a5_versions; + std::vector d_start_ciphering; public: virtual std::vector get_framenumbers(); virtual std::vector get_a5_versions(); + virtual std::vector get_start_ciphering(); extract_cmc_impl(); ~extract_cmc_impl(); }; -- cgit v1.2.3