Skip to main content

Posts

Showing posts from July, 2018

From Concept to Bench - Designing a Flipper-compatible nRF24L01 RF Module for Security Research

    Six months of design iterations, sourcing headaches, and a broken oscilloscope later — I am pleased to share a hardware module I designed to extend the Flipper ecosystem for RF security research. This write-up covers the motivation, engineering challenges, capabilities, and responsible-disclosure principles behind the project — and a frank look at a vulnerability that is very much alive in the Maldives today.   Left: 3D render of final PCB     ·     Right: Altium Designer PCB layout view Why I Built It  The trigger was reading the original MouseJack disclosure by Bastille Networks. It made me realize that a class of peripherals most people assume to be harmless — the cheap wireless mouse on your desk — can be weaponized from a car park. I wanted a research platform small enough to carry in a jacket pocket, native to the Flipper Zero ecosystem, and capable of passive scanning, protocol analysis, and controlled lab tests. What I...

Converting/Calculating GPS cordinate ddmm.mmm format to decimal degrees

Here is a thing that i have faced few times when it comes to GPS data. Below is the GPGGA string from NMEA data receives from GPS. I have highlighted the latitude and longitude from the string. $GPGGA,081902.00, 0412.75469 ,N, 07332.48758 ,E,1,08,0.97,10.7,M,-93.5,M,,*41 Latitude =  0412.75469 Longitude =  07332.48758 If you want to plot this in google maps or any other platform you need to convert this data to decimal degrees, which will be easy to point the location rather than using raw data. In order to do that please follow these steps and write your own math function for this. For my purpose i am using my own function to handle the conversions. First lets start with latitude. Get rid of the zero first. rawdate = 4 12.75469   in this case 4 is the degrees which is in blue color and minutes in green Formula: degrees = 4 minutes = rawdate - (100*degrees) minutes =  412.75469 - (100*4) minutes = 12.75469 So to find out the decimal ...

GPS hooked up to Raspberry pi - P2

In previous post you have seen the data format which Pi receives from GPS. Its in bytes and here is some raw data. Note: In order to get GPS position data i have placed the unit out of my lab where it can see clear sky. b'$GPGGA,092543.00,,,,,0,00,99.99,,,,,,*6F\r\n' b'$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30\r\n' b'$GPGSV,3,1,11,02,14,038,,05,37,025,22,12,69,190,,13,32,112,*74\r\n' b'$GPGSV,3,2,11,15,41,162,,19,09,112,,20,17,227,,21,10,283,*77\r\n' b'$GPGSV,3,3,11,24,21,189,,25,52,299,,29,19,339,18*4D\r\n' b'$GPGLL,,,,,092543.00,V,N*43\r\n' b'$GPRMC,092544.00,V,,,,,,,260718,,,N*79\r\n' b'$GPVTG,,,,,,,,,N*30\r\n' b'$GPGGA,092544.00,,,,,0,00,99.99,,,,,,*68\r\n' b'$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30\r\n' b'$GPGSV,3,1,11,02,14,038,,05,37,025,22,12,69,190,,13,32,112,*74\r\n' b'$GPGSV,3,2,11,15,41,162,,19,09,112,,20,17,227,,21,10,283,*77\r\n' b'$GPGSV,3,3,11,24,21,...

GPS hooked up to Raspberry pi - P1

Its been a while that haven't publish anything. I have been using Raspberry Pi for long time since it was released and the old pi hangs around doing nothing. So i thought of  hooking up an GPS to raspberry pi so that viewers out there who has interest in electronics and programming will know how it can be done. Note: Raspberry Pi inputs or outputs supports 3.3v so the RX and TX pins also support 3.3v. So be careful about handling the voltages with the pi and devices interfacing. I have a ublox GPS but it supports 5v so i need to do level conversion. If you want to know about level conversion please checkout my YouTube channel or the old blog posts. First have to disable pi console in order to use the UART. If not it will get terminated. For more information Google for disabling console. import serial  gpsport = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=0.2) while True:      rxgps = gpsport.readline()     if...