• 超声波攻击关键技术总结


     超声波攻击关键技术总结

     非线性影响

    ​ 典型的麦克风由四个部分组成,换能器产生的电压与声压成正比,之后通过放大器放大信号。之后使用低通滤波器滤除高频成分。最后,使用模数转换器(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(2pi f_{1}t)+cos(2pi f_2 t)$ ,那么输出的二阶项为:

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

    其中包含谐波$2f_1​$和$2f_2​$ ,以及互调频率$ f_1pm 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(2pi 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(2pi f_c t))$,使用$S_{attack}$进行攻击。

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

      

  • 相关阅读:
    @3 UOJ428 & UOJ461 & UOJ671
    DZY Loves Chinese II
    [冲刺国赛2022] 模拟赛12
    [冲刺国赛2022] 模拟赛11
    【记录】将labelme json文件转为mask掩模图
    两阶段深度学习中的两阶段是指什么意思?
    Docker(一)安装、介绍、镜像、容器与仓库
    C++ Primer Plus 学习 (一)C++介绍与数据处理
    C++ 疑问合集
    遇到ImportError: cannot import name ‘soft_unicode’ from 'markupsafe’问题
  • 原文地址:https://www.cnblogs.com/backahasten/p/8449639.html
Copyright © 2020-2023  润新知