Update tmsi_dumper_impl.cc
Updated errors and took out for loop that was not needed.
dumps tmsi-timestamp-imsi
Timestamp is when tsmi or imsi was first paged.
d121c26b-150116085023-0
43102519-150116085024-0
06086648-150116085024-0
160f49af-150116085024-0
d8216e56-150116085024-0
00090536-150116085024-0
fb21f029-150116085024-0
d121662c-150116085024-0
c122ac70-150116085024-292730**********
imsi is filtered out for privacy reason but its not in working code.
Code is used for locating tmsi from silent sms.
diff --git a/lib/misc_utils/tmsi_dumper_impl.cc b/lib/misc_utils/tmsi_dumper_impl.cc
index 842f3bf..cdd3058 100644
--- a/lib/misc_utils/tmsi_dumper_impl.cc
+++ b/lib/misc_utils/tmsi_dumper_impl.cc
@@ -28,22 +28,299 @@
#include "tmsi_dumper_impl.h"
#include "grgsm/gsmtap.h"
#include <stdio.h>
+#include <ctime>
+FILE* tmsiFile;
namespace gr {
namespace gsm {
void tmsi_dumper_impl::dump_tmsi(pmt::pmt_t msg)
{
+ time_t now = time(0);
+ tm *ltm = localtime(&now);
pmt::pmt_t message_plus_header_blob = pmt::cdr(msg);
uint8_t * message_plus_header = (uint8_t *)pmt::blob_data(message_plus_header_blob);
size_t message_plus_header_len=pmt::blob_length(message_plus_header_blob);
gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
-
- for(int ii=sizeof(gsmtap_hdr); ii<message_plus_header_len; ii++)
- {
- printf(" %02x", message_plus_header[ii]);
- }
+ int ii=sizeof(gsmtap_hdr);
+
+ switch(message_plus_header[ii]){
+ case 37:
+ //1 tmsi 6-9
+
+ if((unsigned char)message_plus_header[ii+1] == 6 && (unsigned char)message_plus_header[ii+2] == 33)
+ {
+ if((unsigned char)message_plus_header[ii+6] != 43 && (unsigned char)message_plus_header[ii+6] != 43)
+ {
+ //printf("INSIDE 37\n");
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02i%02i%02i%02i%02i%02i-%i\n",
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,
+ 0);
+ fclose(tmsiFile);
+ }
+ }
+ break;
+ case 49:
+ if(message_plus_header[ii+2] == 33)//21 hex
+ {
+ //printf("INSIDE 49\n");
+ //1 imsi 5-12 33
+ tmsiFile = fopen("tmsicount.txt", "a");
+ fprintf(tmsiFile,"%i-%02i%02i%02i%02i%02i%02i-%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x\n",0,
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,
+
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ (unsigned char)message_plus_header[ii+12]);
+ fclose(tmsiFile);
+ }
+ break;
+ case 65:
+ //printf("INSIDE 65\n");
+ // tmsiFile = fopen("tmsicount.txt", "a");
+ //fclose(tmsiFile);
+ break;
+ case 73:
+ //printf("INSIDE 73\n");
+ //3 tmsi 4-7 8-11 15-18
+ if(message_plus_header[ii+2] == 34)
+ {
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n",
+ (unsigned char)message_plus_header[ii+4],
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+15],
+ (unsigned char)message_plus_header[ii+16],
+ (unsigned char)message_plus_header[ii+17],
+ (unsigned char)message_plus_header[ii+18],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0);
+ fclose(tmsiFile);
+ }
+ break;
+ case 77:
+ if(message_plus_header[ii+2] == 33 && message_plus_header[ii+4] == 8)
+ {
+ //1 imsi 1 tmsi 5-12 16-19
+ //printf("INSIDE 77 + 33 + 8\n");
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x\n",
+ (unsigned char)message_plus_header[ii+16],
+ (unsigned char)message_plus_header[ii+17],
+ (unsigned char)message_plus_header[ii+18],
+ (unsigned char)message_plus_header[ii+19],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,
+
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ (unsigned char)message_plus_header[ii+12]);
+ fclose(tmsiFile);
+ }
+ else if(message_plus_header[ii+2] == 33 && message_plus_header[ii+4] == 5)
+ {
+ //1 tmsi 1 imsi 6-9 12-19
+ //printf("INSIDE 77 + 33 + 5\n");
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x\n",
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,
+
+ (unsigned char)message_plus_header[ii+12],
+ (unsigned char)message_plus_header[ii+13],
+ (unsigned char)message_plus_header[ii+14],
+ (unsigned char)message_plus_header[ii+15],
+ (unsigned char)message_plus_header[ii+16],
+ (unsigned char)message_plus_header[ii+17],
+ (unsigned char)message_plus_header[ii+18],
+ (unsigned char)message_plus_header[ii+19]);
+ fclose(tmsiFile);
+ }
+ else if(message_plus_header[ii+2] == 34)
+ {
+ //printf("INSIDE 77 + 34\n");
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n",
+ (unsigned char)message_plus_header[ii+4],
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+15],
+ (unsigned char)message_plus_header[ii+16],
+ (unsigned char)message_plus_header[ii+17],
+ (unsigned char)message_plus_header[ii+18],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0);
+ fclose(tmsiFile);
+ }
+ else if(message_plus_header[ii+2] == 36)
+ {
+ //printf("INSIDE 77 + 36\n");
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n",
+ (unsigned char)message_plus_header[ii+4],
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+12],
+ (unsigned char)message_plus_header[ii+13],
+ (unsigned char)message_plus_header[ii+14],
+ (unsigned char)message_plus_header[ii+15],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+16],
+ (unsigned char)message_plus_header[ii+17],
+ (unsigned char)message_plus_header[ii+18],
+ (unsigned char)message_plus_header[ii+19],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0);
+ fclose(tmsiFile);
+ }
+ break;
+ case 85:
+ if(message_plus_header[ii+2] == 34)//hex 22
+ {
+ //printf("INSIDE 85\n");// hex is 55
+ tmsiFile = fopen("tmsicount.txt", "a+");
+ fprintf(tmsiFile,"%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n%02.2x%02.2x%02.2x%02.2x-%02d%02d%02d%02d%02d%02d-%i\n",
+ (unsigned char)message_plus_header[ii+4],
+ (unsigned char)message_plus_header[ii+5],
+ (unsigned char)message_plus_header[ii+6],
+ (unsigned char)message_plus_header[ii+7],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0,
+
+ (unsigned char)message_plus_header[ii+8],
+ (unsigned char)message_plus_header[ii+9],
+ (unsigned char)message_plus_header[ii+10],
+ (unsigned char)message_plus_header[ii+11],
+ 1900 + ltm->tm_year-2000,
+ 1+ltm->tm_mon,
+ ltm->tm_mday,
+ ltm->tm_hour,
+ ltm->tm_min,
+ ltm->tm_sec,0);
+ fclose(tmsiFile);
+ }
+ break;
+
+ }
+
std::cout << std::endl;
}