Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import log
- from collections import namedtuple
- from bitstring import BitStream
- def convert2hex(raw_data):
- data = raw_data.decode().rstrip(';\n\r').lstrip('*')
- if len(data) * log(16, 2) == 112:
- return '0x' + data
- else:
- raise ValueError
- def parser(data):
- return_tuple = namedtuple('ADSB',
- ['DF', 'CA', 'ICAO24', 'DATA', 'PC'])
- fmt = '5, 3, 24, 56, 24'
- data = BitStream(data)
- return return_tuple(*data.unpack(fmt))
- def aircraft_identification(data):
- icao24_index='#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######'
- fmt = '8, 8*6'
- bitstream_frame = BitStream(hex(data))
- icao = bitstream_frame.unpack(fmt)
- icao = ''.join([icao24_index[i] for i in icao[1:]]).strip('_')
- return icao
- def airbone_position(data):
- return_tuple = namedtuple('AIRBONE_POSITION', ['TC', 'SS', 'NICsb', 'ALT', 'T', 'F', 'LAT_CPR', 'LON_CPR'])
- EVEN = 0
- ODD = 1
- bitstream_frame = BitStream(hex(data))
- fmt = '5, 2, 1, 12, 1, 1, 17, 17'
- return return_tuple(*bitstream_frame.unpack(fmt))
- print(b'*580FF2CF7E9BA6;\n\r', parser(b'*580FF2CF7E9BA6;\n\r'))
- print(b'*580FF6B283EB7A;\n\r', parser(b'*580FF6B283EB7A;\n\r'))
- raw1 = convert2hex(b'*8D75804B580FF2CF7E9BA6F701D0;\n\r')
- raw2 = convert2hex(b'*8D4840D6202CC371C32CE0576098;\n\r')
- print(b'*8D75804B580FF2CF7E9BA6F701D0;\n\r', parser(raw1))
- print(b'*8D4840D6202CC371C32CE0576098;\n\r', parser(raw2))
- print()
- print(b'*8D4840D6202CC371C32CE0576098;\n\r')
- ident = convert2hex(b'*8D4840D6202CC371C32CE0576098;\n\r')
- print('Identification:', aircraft_identification((parser(ident).DATA)))
- print()
- f1 = b'*8D40621D58C382D690C8AC2863A7;\n\r'
- f2 = b'*8D40621D58C386435CC412692AD6;\n\r'
- d1 = convert2hex(f1)
- d2 = convert2hex(f2)
- data1 = parser(d1).DATA
- data2 = parser(d2).DATA
- print(b'*8D40621D58C382D690C8AC2863A7;\n\r', airbone_position(data1))
- print(b'*8D40621D58C386435CC412692AD6;\n\r', airbone_position(data2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement