mirror of
https://github.com/UberGuidoZ/Flipper.git
synced 2024-12-22 06:20:12 +00:00
Added scripts and readme.md with link to YouTube video for further instructions
This commit is contained in:
parent
a90c582b65
commit
f24a5c8dc3
@ -0,0 +1,10 @@
|
||||
# lrs
|
||||
Python source code file "lrs_pager.py" for generating manchester encoded binary files. Use with LRS pagers, GNU Radio and HackRF.
|
||||
|
||||
Please watch the following YouTube video for more information.
|
||||
|
||||
https://www.youtube.com/watch?v=ycLLb4eVZpI
|
||||
|
||||
GNU Radio file "lrs_pager.grc. Use with GNU Radio software.
|
||||
|
||||
File "pager_0.zip" contains binary pager files for ringing all pagers at the same time. Restaurant ID must match pager setting. View the read me file for more info.
|
@ -0,0 +1,124 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
"""
|
||||
Written by: Tony Tiger 6/2019
|
||||
|
||||
This program generates manchester encoded data packets for LRS pagers and GNU Radio.
|
||||
|
||||
Output file name: pager.bin
|
||||
|
||||
Watch the YouTube video for more information: https://www.youtube.com/watch?v=ycLLb4eVZpI
|
||||
|
||||
This program 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 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import re
|
||||
import struct
|
||||
|
||||
|
||||
def encode_manchester( bin_list ):
|
||||
|
||||
pre = [] # create extra preambles to wake up the pager
|
||||
for x in range(0,50):
|
||||
pre.append('1')
|
||||
pre.append('0')
|
||||
|
||||
l = re.findall('.', "".join( pre + bin_list ) ) # join the preamble and the rest of the packet
|
||||
|
||||
m = []
|
||||
print '\n'
|
||||
print "".join(str(x) for x in l) # convert list to string
|
||||
|
||||
for x in l: # convert to manchaster coding
|
||||
if( x == '0'):
|
||||
m.append(1)
|
||||
m.append(0)
|
||||
|
||||
if( x == '1'):
|
||||
m.append(0)
|
||||
m.append(1)
|
||||
return m
|
||||
|
||||
|
||||
# calculate the crc
|
||||
def calculate_crc( pre, sink_word, rest_id, station_id, pager_n, alert_type ):
|
||||
|
||||
l = re.findall('..', pre + sink_word + rest_id + station_id + pager_n + '0000000000' + alert_type )
|
||||
|
||||
bin_array = []
|
||||
for c in l:
|
||||
bin_array.append ( (format( int(c, 16) , '08b')))
|
||||
|
||||
sum=0
|
||||
for b in bin_array:
|
||||
sum += int(b , 2)
|
||||
|
||||
print '\n{0} {1} {2} {3} {4} {5} {6} {7}'.format( pre, sink_word, rest_id, station_id, pager_n, '0000000000', alert_type, format( ( sum % 255), '02x' ))
|
||||
bin_array.append( format( ( sum % 255), '08b') )
|
||||
return bin_array
|
||||
|
||||
|
||||
|
||||
|
||||
##########################################
|
||||
# main program start #
|
||||
##########################################
|
||||
|
||||
try:
|
||||
rest_id=int(raw_input('\nEnter restaurant id 0-255: '))
|
||||
except ValueError:
|
||||
print "Not a number"
|
||||
|
||||
try:
|
||||
pagers=(raw_input('Enter one or more pager numbers 0-1023 : '))
|
||||
except ValueError:
|
||||
print "Not a number"
|
||||
|
||||
pager_list = []
|
||||
pager_list = map( int, re.split('\s+',pagers))
|
||||
|
||||
print '1 Flash 30 Seconds\n2 Flash 5 Minutes\n3 Flash/Beep 5X5\n4 Beep 3 Times\n5 Beep 5 Minutes\n6 Glow 5 Minutes\n7 Glow/Vib 15 Times\n10 Flash/Vib 1 Second\n68 beep 3 times\n'
|
||||
|
||||
|
||||
try:
|
||||
alert_type=int(raw_input('Enter alert type: '))
|
||||
except ValueError:
|
||||
print "Not a number"
|
||||
|
||||
|
||||
handle = open('pager.bin', 'wb')
|
||||
|
||||
data = []
|
||||
for pager_n in pager_list:
|
||||
crc_out = ( calculate_crc( format(11184810, '06x') , format( 64557,'04x'), format(rest_id, '02x'), '0', format( pager_n ,'03x' ), format(alert_type, '02x') ) )
|
||||
|
||||
data = encode_manchester( crc_out )
|
||||
[ data.append(0) for x in range(0,100) ]
|
||||
|
||||
print '\n';
|
||||
print "".join(str(x) for x in data)
|
||||
print '\n'
|
||||
|
||||
for d in data:
|
||||
if d == 0:
|
||||
handle.write(struct.pack('f', .0001))
|
||||
elif d == 1:
|
||||
handle.write(struct.pack('f', 1))
|
||||
else:
|
||||
print "Error detected in data"
|
||||
sys.exit()
|
||||
|
||||
handle.close()
|
||||
|
2181
Sub-GHz/Restaurant_Pagers/LRS_Pagers/thanks_tony-tiger/lrs_pager_grc
Normal file
2181
Sub-GHz/Restaurant_Pagers/LRS_Pagers/thanks_tony-tiger/lrs_pager_grc
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue
Block a user