1. 程式人生 > >超聲波攻擊關鍵技術總結

超聲波攻擊關鍵技術總結

tac true post cor respond file rip 獲取 int

超聲波攻擊關鍵技術總結

非線性影響

? 典型的麥克風由四個部分組成,換能器產生的電壓與聲壓成正比,之後通過放大器放大信號。之後使用低通濾波器濾除高頻成分。最後,使用模數轉換器(ADC)進行數字化和量化。由於聲音的頻率範圍從20HZ到20kHZ,所以,一般來說,ADC的采樣率是48Khz或者44.1hkz,濾波器的截止頻率一般為20khz。為了獲得高質量的錄音,換能器和放大器應該盡可能的線性制作,然而,他們在實際中仍表現為非線性。假設輸入的信號為 $S_{in}$,放大器輸出的信號為$S_{out}$ ,那麽:

$S_{out}=\sum_{i=1}^ {\infty}G_iS_{in}^i=G_1S_{in}+G_2S_{in}^2+G_3S_{in}^3+......$

$G_1S_{in}$ 是線性項並且占輸入的主導地位,其他的項反映了非線性對大振幅輸入的影響,通常,三階和以上的高階項相對於二階項影響較弱。非線性將諧波失真和互調失真引入輸出信號。假設輸入信號的兩個信號的頻率是$f_1$和$f_2$ ,$S_{in}=cos(2\pi f_{1}t)+cos(2\pi f_2 t)$ ,那麽輸出的二階項為:

$G_2 S_ {in}^2=G_2+\frac{G_2}{2}(cos(2\pi (2f_1)t)+cos(2\pi (2f_2)t))+G_2(cos(2\pi(f_1 + f_2)t)+cos(2\pi (f_1 - f_2)t)) $

其中包含諧波$2f_1?$和$2f_2?$ ,以及互調頻率$ f_1\pm f_2?$。

? 我們的攻擊使用互調頻率來從超聲波頻率中獲取正常的聲音頻率,例如,有兩個超聲波頻率25Khz和30Khz,這時候,聽筒會產生30Khz-25Khz=5Khz的頻率,其他頻率會被低通濾波器濾除。

音頻處理方法

假設輸入信號為$S_{normal}$

[Snormal, Fs] = audioread(inputFile);

首先,使用低通濾波器對聲音$S_{normal}$進行處理,截至頻率為8khz,輸出信號為$S_{filter}$

Fp = 8e3; % 8 kHz passband-edge frequency
Fs = 48e3; % 48 kHz sampling frequency
Rp = 0.00057565; % Corresponds to 0.01 dB peak-to-peak ripple
Rst = 1e-4; % Corresponds to 80 dB stopband attenuation

Fst = 9e3; % Transition Width = Fst - Fp
numMinOrder = firgr(‘minorder‘,[0,Fp/(Fs/2),Fst/(Fs/2),1],[1 1 0 0],...
[Rp Rst]); % useful function to determine numMinOrder

lowpassFIR = dsp.FIRFilter(‘Numerator‘,numMinOrder); % Design Low pass Filter
Sfilter = step(lowpassFIR,Snormal); % Apply low pass filter

對$S_{filter}$進行插值,得到$S_{up}$

Sup = interp(Sfilter,4);

使用載波$f_c$進行調制,得到$S_{modu}=n_1 S_{up} cos(2\pi f_c t)$,這會產生$f_c -8Khz$和$f_c + 8Khz$兩個邊帶,為了讓人耳聽不見,$f_c$最低為28Khz。

fc = 30e3;
fs = Fs * 4;
[Smodu,t_modu] = modulate(Sup,fc,fs,‘am‘);
Smodu = n1 * Smodu;

利用上文的非線性性質,加入一個信號,使麥克風產生互調波。$S_{attack}=n2(S_{mode}+cos(2\pi f_c t))$,使用$S_{attack}$進行攻擊。

Sattack = n2 * ( Smodu + cos(2*pi*fc*t_modu) );
audiowrite(filename,Sattack,Fs_up)

  

?

超聲波攻擊關鍵技術總結