diff --git a/grc/gsm_block_tree.xml b/grc/gsm_block_tree.xml
index f9ff1ff..ff13a87 100644
--- a/grc/gsm_block_tree.xml
+++ b/grc/gsm_block_tree.xml
@@ -58,6 +58,7 @@
       <block>gsm_message_file_source</block>
       <block>gsm_extract_system_info</block>
       <block>gsm_extract_immediate_assignment</block>
+      <block>gsm_extract_cmc</block>
       <block>gsm_controlled_rotator_cc</block>
       <block>gsm_controlled_fractional_resampler_cc</block>
       <block>gsm_message_printer</block>
diff --git a/grc/misc_utils/CMakeLists.txt b/grc/misc_utils/CMakeLists.txt
index 7bdf894..7bd9c6d 100644
--- a/grc/misc_utils/CMakeLists.txt
+++ b/grc/misc_utils/CMakeLists.txt
@@ -20,6 +20,7 @@
 install(FILES
     gsm_extract_system_info.xml
     gsm_extract_immediate_assignment.xml
+    gsm_extract_cmc.xml
     gsm_controlled_rotator_cc.xml
     gsm_message_printer.xml
     gsm_bursts_printer.xml
diff --git a/grc/misc_utils/gsm_extract_cmc.xml b/grc/misc_utils/gsm_extract_cmc.xml
new file mode 100755
index 0000000..66a6408
--- /dev/null
+++ b/grc/misc_utils/gsm_extract_cmc.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<block>
+  <name>Extract Cipher Mode Command</name>
+  <key>gsm_extract_cmc</key>
+  <import>import grgsm</import>
+  <make>grgsm.extract_cmc()</make>
+  <sink>
+    <name>msgs</name>
+    <type>message</type>
+  </sink>
+  <doc>
+Extracts the framenumber and the assigned encryption algorithm from Cipher Mode Commands.
+
+Input: decoded control channel messages
+
+The information can be retrieved using following functions:
+get_frame_numbers(), get_a5_versions()
+
+</doc>
+</block>
diff --git a/include/grgsm/misc_utils/CMakeLists.txt b/include/grgsm/misc_utils/CMakeLists.txt
index d21dcca..ea3ad06 100644
--- a/include/grgsm/misc_utils/CMakeLists.txt
+++ b/include/grgsm/misc_utils/CMakeLists.txt
@@ -28,6 +28,7 @@
     message_file_source.h
     extract_system_info.h
     extract_immediate_assignment.h
+    extract_cmc.h
     controlled_rotator_cc.h
     message_printer.h
     tmsi_dumper.h
diff --git a/include/grgsm/misc_utils/extract_cmc.h b/include/grgsm/misc_utils/extract_cmc.h
new file mode 100755
index 0000000..8af12be
--- /dev/null
+++ b/include/grgsm/misc_utils/extract_cmc.h
@@ -0,0 +1,59 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GSM_EXTRACT_CMC_H
+#define INCLUDED_GSM_EXTRACT_CMC_H
+
+#include <grgsm/api.h>
+#include <gnuradio/block.h>
+#include <vector>
+
+namespace gr {
+  namespace gsm {
+
+    /*!
+     * \brief <+description of block+>
+     * \ingroup gsm
+     *
+     */
+    class GRGSM_API extract_cmc : virtual public gr::block
+    {
+     public:
+      typedef boost::shared_ptr<extract_cmc> sptr;
+
+      /*!
+       * \brief Return a shared_ptr to a new instance of gsm::extract_cmc.
+       *
+       * To avoid accidental use of raw pointers, gsm::extract_cmc's
+       * constructor is in a private implementation
+       * class. gsm::extract_cmc::make is the public interface for
+       * creating new instances.
+       */
+      static sptr make();
+      virtual std::vector<int> get_framenumbers() = 0;
+      virtual std::vector<int> get_a5_versions() = 0;
+    };
+
+  } // namespace gsm
+} // namespace gr
+#endif /* INCLUDED_GSM_EXTRACT_CMC_H */
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 660bbfd..a0913d9 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -62,6 +62,7 @@
     misc_utils/bursts_printer_impl.cc
     misc_utils/extract_system_info_impl.cc
     misc_utils/extract_immediate_assignment_impl.cc
+    misc_utils/extract_cmc_impl.cc
     qa_utils/burst_sink_impl.cc
     qa_utils/burst_source_impl.cc
     qa_utils/message_source_impl.cc
diff --git a/lib/misc_utils/extract_cmc_impl.cc b/lib/misc_utils/extract_cmc_impl.cc
new file mode 100755
index 0000000..b367def
--- /dev/null
+++ b/lib/misc_utils/extract_cmc_impl.cc
@@ -0,0 +1,90 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gnuradio/io_signature.h>
+#include <grgsm/gsmtap.h>
+#include <unistd.h>
+#include <grgsm/endian.h>
+
+#include "extract_cmc_impl.h"
+
+namespace gr {
+  namespace gsm {
+    void extract_cmc_impl::process_messages(pmt::pmt_t msg)
+    {
+        pmt::pmt_t message_plus_header_blob = pmt::cdr(msg);
+        uint8_t * message_plus_header = (uint8_t *)pmt::blob_data(message_plus_header_blob);
+        gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
+        uint8_t * msg_elements = (uint8_t *)(message_plus_header+sizeof(gsmtap_hdr));
+
+        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;
+
+            d_framenumbers.push_back(frame_nr);
+            d_a5_versions.push_back(a5_version);
+        }
+    }
+    
+    std::vector<int> extract_cmc_impl::get_framenumbers()
+    {
+        return d_framenumbers;
+    }
+    
+    std::vector<int> extract_cmc_impl::get_a5_versions()
+    {
+        return d_a5_versions;
+    }
+    
+    extract_cmc::sptr
+    extract_cmc::make()
+    {
+      return gnuradio::get_initial_sptr
+        (new extract_cmc_impl());
+    }
+
+    /*
+     * The private constructor
+     */
+    extract_cmc_impl::extract_cmc_impl()
+      : gr::block("extract_cmc",
+              gr::io_signature::make(0, 0, 0),
+              gr::io_signature::make(0, 0, 0))
+    {
+        message_port_register_in(pmt::mp("msgs"));
+        set_msg_handler(pmt::mp("msgs"), boost::bind(&extract_cmc_impl::process_messages, this, _1));
+    }
+    
+    /*
+     * Our virtual destructor.
+     */
+    extract_cmc_impl::~extract_cmc_impl()
+    {
+    }
+  } /* namespace gsm */
+} /* namespace gr */
diff --git a/lib/misc_utils/extract_cmc_impl.h b/lib/misc_utils/extract_cmc_impl.h
new file mode 100755
index 0000000..fe97f22
--- /dev/null
+++ b/lib/misc_utils/extract_cmc_impl.h
@@ -0,0 +1,45 @@
+/* -*- c++ -*- */
+/*
+ * @file
+ * @author Roman Khassraf <rkhassraf@gmail.com>
+ * @section LICENSE
+ *
+ * Gr-gsm is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * Gr-gsm is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gr-gsm; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GSM_EXTRACT_CMC_IMPL_H
+#define INCLUDED_GSM_EXTRACT_CMC_IMPL_H
+
+#include <grgsm/misc_utils/extract_cmc.h>
+#include <vector>
+
+namespace gr {
+  namespace gsm {          
+    class extract_cmc_impl : public extract_cmc
+    {
+     private:
+      void process_messages(pmt::pmt_t msg);
+      std::vector<int> d_framenumbers;
+      std::vector<int> d_a5_versions;
+     public:
+      virtual std::vector<int> get_framenumbers();
+      virtual std::vector<int> get_a5_versions();
+      extract_cmc_impl();
+      ~extract_cmc_impl();
+    };
+  } // namespace gsm
+} // namespace gr
+#endif /* INCLUDED_GSM_EXTRACT_CMC_IMPL_H */
diff --git a/swig/grgsm_swig.i b/swig/grgsm_swig.i
index ca987b8..a7e7813 100644
--- a/swig/grgsm_swig.i
+++ b/swig/grgsm_swig.i
@@ -31,6 +31,7 @@
 #include "grgsm/misc_utils/tmsi_dumper.h"
 #include "grgsm/misc_utils/burst_file_sink.h"
 #include "grgsm/misc_utils/burst_file_source.h"
+#include "grgsm/misc_utils/extract_cmc.h"
 #include "grgsm/qa_utils/burst_sink.h"
 #include "grgsm/qa_utils/burst_source.h"
 #include "grgsm/qa_utils/message_source.h"
@@ -101,6 +102,8 @@
 GR_SWIG_BLOCK_MAGIC2(gsm, msg_to_tag);
 %include "grgsm/misc_utils/controlled_fractional_resampler_cc.h"
 GR_SWIG_BLOCK_MAGIC2(gsm, controlled_fractional_resampler_cc);
+%include "grgsm/misc_utils/extract_cmc.h"
+GR_SWIG_BLOCK_MAGIC2(gsm, extract_cmc);
 
 
 %include "grgsm/qa_utils/burst_sink.h"
