我计划开发Android应用程序,它将加密/解密语音数据,以便各方可以使用安全通道进行通信。所以问题是:如何在GSM通话期间拦截语音/音频数据?有可能吗?我应该使用Android NDK还是别的什么?
答案 0 :(得分:8)
在GSM中,由于信道特性,无法对语音进行加密并通过语音信道发送。通过语音信道发送的信号必须(类似于)人声,因为声码器(CELP)用于信道编码。
因此,即使您可以访问低级库并使用它来加密语音以直接通过语音通道发送它,被叫方也无法接收和解密信号。
然而,加密的语音可以作为数据通过数据通道发送。
答案 1 :(得分:4)
这是在操作系统的低级别中发生的事情。您将无法在应用程序级别访问此信息。
我建议您像SipDroid一样研究VOIP。我打赌你可以设置它以便轻松使用加密。 (srtp而不是rtp)
即使你的SipDroid不支持这个,它也是开源的,所以你可以添加这个功能。
答案 2 :(得分:3)
Android上无法进行通话录音。请参阅此feature request。
您可以从麦克风录制语音,但无法录制对方的声音。如果你只想录制你的语音,请使用android.media.MediaRecorder.AudioSource.MIC
答案 3 :(得分:1)
简单回答,不!
答案 4 :(得分:1)
如果您能够访问低级库并使用它来加密语音以通过语音通道直接发送它,那么被叫方将无法接收和解密信号,但如果您调制加密的语音数据并将此语音数据转换为类似波形的语音,并通过GSM的语音信道发送,然后其他方肯定会收到并解密语音。
答案 5 :(得分:1)
我知道有些应用程序可以像语音转换器那样改变你的声音并通过gsm语音传输。也许你可以制作一个采用语音的应用程序,然后将其调制为类似相移键控或数字无线电单体的功能,例如用于甚高频和高频无线电通信的火腿,然后将音频传输到gsm,然后将其解调回语音,而不是直接进行调制解调你可以添加pgp,aes或任何你喜欢的加密。我也有兴趣看到这样的项目。
我认为如果您可以通过语音gsm通道(例如过去的56k调制解调器而不是gprs通道)传输数据,那也很棒。