рдореИрдВ рдПрдХ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд┐рдирдХреЗ рджреЛрд╕реНрдд рдпрд╛ рдкрд░рд┐рд╡рд╛рд░ рдХрднреА рднреА рд╡рд┐рдорд╛рди рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдиреЗ рдлреНрд▓рд╛рдЗрдЯрд░рд╛рдбрд░ 24 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЙрдбрд╝рд╛рдиреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлреНрдд рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реЗрд╡рд╛ред
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдорд╛рди рдФрд░ рдЧреНрд░рд╛рдЙрдВрдб рд╕реНрдЯреЗрд╢рди рдХреЗ рдмреАрдЪ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрдЪрд╛рд░рд┐рдд рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдо рднреА рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░реЗрдВрдЧреЗред
рдЗрддрд┐рд╣рд╛рд╕
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХрд╛ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдбреАрдПрд╕ - рдмреА (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрднрд░ рдирд┐рдЧрд░рд╛рдиреА - рдкреНрд░рд╕рд╛рд░рдг) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗрдВрдЯрд░ рдХреЛ рд╡рд┐рдорд╛рди рд╕реВрдЪрдирд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЧрддрд┐, рд╢реАрд░реНрд╖, рдКрдВрдЪрд╛рдИ рдФрд░ рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рдбрд┐рд╕реНрдкреИрдЪрд░ рд░рдбрд╛рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ред рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ рдЬрдм рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рднрд╛рд░реА рд╡реГрджреНрдзрд┐ рд╣реБрдИред
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдПрдбреАрдПрд╕-рдмреА рдореЗрдВ рд╡рд┐рдорд╛рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ 1090 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕реВрдЪрдирд╛ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рднреЗрдЬрддрд╛ рд╣реИ (рдХреБрдЫ рдЕрдиреНрдп рдореЛрдб рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрддрдиреЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗрд╡рд▓ рдпрд╣рд╛рдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реИрдВ )ред рдмреЗрд╢рдХ, рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдкрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рд░рд┐рд╕реАрд╡рд░ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рд░рд┐рд╕реАрд╡рд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдмрд╕ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЖрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдРрд╕рд╛ рд╕рд┐рд╕реНрдЯрдо, Airnav Radarbox, 2007 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕рдХреА рдХреАрдордд рд▓рдЧрднрдЧ $ 900 рдереА, рдФрд░ рд▓рдЧрднрдЧ 250 рдбреЙрд▓рд░ рдкреНрд░рддрд┐ рд╡рд░реНрд╖ рдЙрдирдХреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реНрдЪ рд╣реБрдИ (рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╣реИред
рдХрдИ рд░рд┐рд╕реАрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ, рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд░рд┐рд╕реАрд╡рд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмреЗрдХрд╛рд░ рд╣реИ)ред

рдЕрдм, рдЬрдм RTL-SDR рд░рд┐рд╕реАрд╡рд░ рдЕрдзрд┐рдХ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдП рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдорд╛рди рдЙрдкрдХрд░рдг $ 30 рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣
рд▓реЗрдЦ рдХреЗ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЖрдЧреЗ рдЬрд╛рдХрд░ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ - рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдирдореВрдирд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреВрд░реЗ рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдХреЗрд╡рд▓ 120 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдПрдХ рдЕрдЪреНрдЫреЗ "рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди" рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо 5 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдирдореВрдирд╛ рджрд░ рдХреЗ рд╕рд╛рде рдПрд╕рдбреАрдЖрд░-рд░реЗрдбрд┐рдпреЛ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ 5,000,000 рд╕реИрдВрдкрд▓ / рд╕реЗрдХ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рджрд░ рдХреЗ рд╕рд╛рде рдПрдХ WAV-рдлрд╛рдЗрд▓ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдЧрднрдЧ 64MB рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕реБрдирдирд╛ рдмреЗрдХрд╛рд░ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдзреНрд╡рдирд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рд╣реА рд╣реИ - рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдлрд╛рдЗрдВрдб рд░реЗрдбрд┐рдпреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рд▓реЛрдЧ рд╕реНрд╡рдпрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ
рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рдПрдХ рдирдореВрдирд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдУ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ, рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред
from scipy.io import wavfile import matplotlib.pyplot as plt import numpy as np fs, data = wavfile.read("adsb_20190311_191728Z_1090000kHz_RF.wav") data = data.astype(float) I, Q = data[:, 0], data[:, 1] A = np.sqrt(I*I + Q*Q) plt.plot(A) plt.show()
рдкрд░рд┐рдгрд╛рдо: рд╣рдо рд╢реЛрд░ рдкрд░ рдХреБрдЫ 'рдЖрд╡реЗрдЧреЛрдВ' рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ "рдЖрд╡реЗрдЧ" рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдпрджрд┐ рд╣рдо рдЧреНрд░рд╛рдл рдкрд░ рд╕рдВрдХрд▓реНрдк рдмрдврд╝рд╛рддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд┐рддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдХреЛрдбрд┐рдВрдЧ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рд╣реА рдореИрдирдЪреЗрд╕реНрдЯрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ:

рдЖрдзреЗ-рдХрд╛рдЯрдиреЗ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ "0" рдФрд░ "1" рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
bits_str = "" for p in range(8): pos = start_data + bit_len*p p1, p2 = A[pos: pos + bit_len/2], A[pos + bit_len/2: pos + bit_len] avg1, avg2 = np.average(p1), np.average(p2) if avg1 < avg2: bits_str += "0" elif avg1 > avg2: bits_str += "1"
рд╕рдВрдХреЗрдд рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реНрд╡рдпрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдЦреЗрддреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред
DF (рдбрд╛рдЙрдирд▓рд┐рдВрдХ рдлреЙрд░реНрдореЗрдЯ, 5 рдмрд┐рдЯреНрд╕) - рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

(
рдкреЗрдЬ рд╕реЛрд░реНрд╕ )
рд╣рдо рдХреЗрд╡рд▓ DF17 рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЖрдИрд╕реАрдПрдУ (24 рдмрд┐рдЯреНрд╕) - рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рд╡рд┐рдорд╛рди рдХреЛрдб рд╣реИред рд╣рдо
рдЗрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕рдХреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдорд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓реЗрдЦрдХ рдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3c5ee2 рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ:
рдбреЗрдЯрд╛ (56 рдпрд╛ 112 рдмрд┐рдЯреНрд╕) - рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдбрд┐рдХреЛрдб рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ 5 рдмрд┐рдЯреНрд╕
рдЯрд╛рдЗрдк рдХреЛрдб рдлрд╝реАрд▓реНрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (
DF рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП)ред рдРрд╕реЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

(
рддрд╛рд▓рд┐рдХрд╛ рд╕реНрд░реЛрдд )
рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рд╡рд┐рдорд╛рди рдХреА рдкрд╣рдЪрд╛рдирдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
00100 011 000101 010111 000111 110111 110001 111000
рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб:
+------+------+------+------+------+------+------+------+------+------+ | TC,5 | EC,3 | C1,6 | C2,6 | C3,6 | C4,6 | C5,6 | C6,6 | C7,6 | C8,6 | +------+------+------+------+------+------+------+------+------+------+
TC = 00100b = 4, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреАрдХ C1-C8 рдореЗрдВ рдХреЛрдб рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рддреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
#ABCDEFGHIJKLMNOPQRSTUVWXYZ ##### _ ##################123456789 #####
рд╡рд┐рдорд╛рди рдХрд╛ рдирд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╕рд╛рди рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж: EWG7184
symbols = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######" code_str = "" for p in range(8): c = int(bits_str[8 + 6*p:8 + 6*(p + 1)], 2) code_str += symbols[c] print("Aircraft Identification:", code_str.replace('#', ''))
рд╡рд╛рдпреБ рдХреА рд╕реНрдерд┐рддрд┐рдирд╛рдо рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╕рд░рд▓ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╡реЗ 2 рдлреНрд░реЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╕рдо рдФрд░ рд╡рд┐рд╖рдоред рдлрд╝реАрд▓реНрдб рдХреЛрдб TC = 01011b = 11ред

рд╕рдо рдФрд░ рд╡рд┐рд╖рдо рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
01011 000 000101110110 00 10111000111001000 10000110101111001 01011 000 000110010000 01 10010011110000110 10000011110001000
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ:

(
рд╕реНрд░реЛрдд )
рдореИрдВ рдЬреАрдЖрдИрдПрд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреМрди рдмреЗрд╣рддрд░ рдЬрд╛рдирддрд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рд╕рд░рд▓ рд╣реИ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕реЗ 25 рдпрд╛ 100 рдлреАрдЯ рдХреЗ рдХрдИ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рдпреБ рдХрд╛ рд╡реЗрдЧрдЯреАрд╕реА = 19 рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдлреНрд░реЗрдоред рдпрд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЧрддрд┐ рдЬрдореАрди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдЬрд┐рд╕реЗ рдЧреНрд░рд╛рдЙрдВрдб рд╕реНрдкреАрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдПрдпрд░рд╕реНрдкреАрдб, рд╡рд┐рдорд╛рди рдПрдпрд░ рд╕реЗрдВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╡рд╛ рдХреЗ рдХрд╛рд░рдг рдХрдо рд╕рдЯреАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдХрдИ рдЕрдиреНрдп рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рднреА рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

(
рд╕реНрд░реЛрдд )
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдбреАрдПрд╕-рдмреА рддрдХрдиреАрдХ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╣рдЬреАрд╡рди рдмрди рдЧрдИ рд╣реИ, рдЬрдм рдПрдХ рдорд╛рдирдХ рди рдХреЗрд╡рд▓ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рдПрд╕рдбреАрдЖрд░ рд░рд┐рд╕реАрд╡рд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд╕рд╕реНрддреЗрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдереА, рдЬреЛ рдмрд╣реБрдд рд╕рд╕реНрддреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рд╕реЗ рдЕрдзрд┐рдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╣реИред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ
ICAO рдкреГрд╖реНрда рдкрд░ PDF рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП
рдореЛрдб-s.org рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╛рдардХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рд╡реИрд╕реЗ, рдПрдбреАрдПрд╕-рдмреА рдкрд╛рдпрдерди рдбрд┐рдХреЛрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ, рдпрд╣
рдЧрд┐рддреБрдм рдкрд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рдбреАрдЖрд░ рд░рд┐рд╕реАрд╡рд░реНрд╕ рдХреЗ рдорд╛рд▓рд┐рдХ
рдЗрд╕ рдкреЗрдЬ рд╕реЗ рдПрдбреАрдПрд╕-рдмреА рдбрд┐рдХреЛрдбрд░ рдХреЗ рд▓рд┐рдП рд░реЗрдбреА-рдЯреВ-рдпреВрдЬ рдХрд╛ рднреА рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, (рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛) рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╣рдо рдЗрд╕ рд▓реЗрдЦ
рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рднреА рджреЗрддреЗ рд╣реИрдВред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкрд╛рд░реНрд╕рд░ рд╕реНрд░реЛрдд рдХреЛрдб, рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдКрдкрд░ рджрд░реНрдЬ рдХреА рдЧрдИ
WAV-рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб (рдкрд╛рдпрдерди) from __future__ import print_function from scipy.io import wavfile from scipy import signal import matplotlib.pyplot as plt import numpy as np import math import sys def parse_message(data, start, bit_len): max_len = bit_len*128 A = data[start:start + max_len] A = signal.resample(A, 10*max_len) bits = np.zeros(10*max_len) bit_len *= 10 start_data = bit_len*8
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рдерд╛, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред