Cifrado personalizado de llamadas GSM

¿Es posible captar la transmisión de audio de voz con java (JME o Android), cifrarla de forma personalizada y luego enviarla como una transmisión normal a través de una llamada GSM normal? Y, por supuesto, descifrar el cifrado en otro teléfono. ¿Se permite que Java a nivel de aplicación intercepte la transmisión de audio o está deshabilitado a nivel de hardware?

¿Ya hay aplicaciones que hacen eso?

Respuesta 1

Las redes móviles realizan transcodificaciones con pérdida en canales de voz, por ejemplo con

  • Codificación / decodificación "nativa"
  • canceladores de eco,
  • generadores de ruido o
  • Cambios de códec.

Por lo tanto, dudo que un flujo de datos de voz encriptados sobreviva a la transmisión a través de una red móvil de una manera que permita el descifrado en el lado receptor.

Analogía simple: audio -> cifrar -> compresión de MP3 -> decodificación de MP3 -> descifrar -> audio. Esto puede no funcionar. O: si hace que esto funcione, entonces tiene la posibilidad de transportar la transmisión encriptada a través de un soporte de voz.

Su opción sería hacerlo en un portador de datos, transportando la voz encriptada a través de IP. Pero esto requiere una aplicación de telefonía separada en los dispositivos móviles.

Respuesta: 2

Según algunos comentarios anteriores, ese nivel de acceso a las llamadas de voz solo es posible con un teléfono rooteado, e incluso con un dispositivo específico. Lo mejor que podría hacer para una aplicación de voz encriptada genérica es una aplicación de estilo VOIP / SIP que usaría una conexión de datos.

Incluso si pudiera hacerlo, el cifrado a través de una llamada analógica no sería trivial. La compresión utilizada en los códecs GSM está optimizada para voz y hace ciertas suposiciones sobre las características de la señal. No podría simplemente usar un simple analógico -> digital -> cifrar -> analógico -> red telefónica -> analógico -> digital -> descifrar -> cadena de señal de tipo analógico.

Puede notar que he incluido analógico como un paso, porque toda la codificación digital final a la red GSM es realizada por el chipset de radio GSM al que no tiene acceso desde ningún teléfono, incluso si está rooteado.

Respuesta: 3

El códec de voz de velocidad completa GSM funciona a 13 kbits / sy utiliza un códec de pulso normal excitado (RPE): esto significa que el micrófono y la detección de voz en GSM están optimizados para la transmisión a través de un canal 'digital' multiplexado por división de tiempo que luego se modula a través de la interfaz aérea utilizando GMSK, un esquema de modulación de modulación por desplazamiento de frecuencia de fase continua.

Los ruidos que no sean el patrón de voz "promedio" están muy distorsionados (o suprimidos): por ejemplo, los DTMF (tonos) no se reciben bien en un dispositivo y deben ser transmitidos por el núcleo de la red, pero los tonos diseñados para personas con discapacidad auditiva funcionan bien. La voz se forma (filtra) en la entrada al códec (diseño del micrófono) para la mejor detección y reproducción de códecs en el otro extremo.

En resumen: no es posible "volver a modular" en todo el sistema GSM, porque el punto de entrada no es una radio (interfaz aérea), o incluso acceder a la trama digital GSM. Su único acceso para una llamada de voz es el códec GSM que espera una voz en un espectro de audio confinado.

Sin embargo, si puede crear una forma de onda de voz para el códec GSM, entonces puede tener un camino hacia adelante

Respuesta: 4

Codificar voz analógica en el sitio del altavoz / MIC es más práctico. O bien, debe rootear Android para modificar phone.APP. Al igual que AECall. Cifra y descifra los auriculares. http://mrhyper.blogspot.tw/2015/12/iphone-encrypt-phone-call_9.html

Respuesta: 5

Estoy tratando de analizar una fecha 2014-12-03T10: 05: 59.5646 + 08: 00 usando estos dos formatos: aaaa-MM-dd'T'HH: mm: ss aaaa-MM-dd'T'HH: mm: ssXXX Cuando analizo usando aaaa-MM-dd'T'HH: mm: ss funciona bien, pero cuando ...

Estoy usando la función UUID.nameUUIDFromBytes (byte []) para convertir una cadena a UUID. ¿Es posible volver a convertir a la cadena original una vez que tengo el UUID?

Estoy tratando de construir una interfaz de usuario para un juego de ajedrez. He usado un GridBagLayout lleno de JLabels y las piezas de ajedrez son ImageIcons de los JLabels. Ahora me gustaría mover las piezas por ...

Cómo cambiar el nombre del mes a mayúsculas. Alguien sabe de esto? Esta es mi condición de ejemplo: (nuevo SimpleDateFormat ("MMMM aaaa")). Format ($ P {date_start})