Aller au contenu

Modifier le signal émis sur les porteuses GSM avec Android ?


babar32

Recommended Posts

Tout d'abord je me permets de me présenter rapidement. J'ai 30 ans et je connais bien le java. J'ai bcp touché au VHDL et je connais pas trop mal la norme GSM. Mais je n'ai jamais touché à Android.

 

Or j'ai un projet en tête qui passera forcément par de l'Android. (aussi du IOS et tout et tout...mais Android est un bon début car si ça bloque à cet endroit, pas la peine d'aller plus loin).

 

Comme vous le savez peut être, la norme GSM utilise une émission en  modulation de fréquence sur deux fréquences distantes de 45Mhz, l'une pour la réception, l'autre pour l'émision. Je passerai sur les détails techniques ardus mais en gros, une fréquence est divisée en 8 slots (soit une trame TDMA de 4.6ms), le 0 est pour le contrôle (BCH = voix de contrôle), les autres pour l'émission ou la réception. Sur chaque slot, on envoie habituellement 114 bits qui en GSM ont un rôle précis.

 

Dans ces 114 bits, l'on a la voix humaine numérisée. Pour être précis, la voix est échantillonée, vocodée, et pas mal bidouillée...mais en gros le GSM, c'est ça voix numérisée que l'on fait passer par paquets de 114 bits dans un slot de 1/8 de 4.6ms en modulation de fréquence sur une porteuse aux alentours 900 ou 1800 MHz...ça donne une onde que l'on appelle un "Burst".

 

La technologie GPRS, elle, permet d'utiliser plus que un créneau sur 8 et surtout de l'utiliser en fonction du besoin à un instant donné. On ne paye plus à la durée mais à la quantité de donnée échangée.

 

Alors voilà mon problème : Android permet apparement de faire plein de choses. Dans un téléphone il y a en particulier toute une chaine de composants qui vont de la voix aux signaux émis (Echantillonneur, vocodeur, correcteur d'erreurs, filtres gaussiens etc...) (voir la figure 30 sur cet excellent cours : http://www.louis-armand-mulhouse.eu/btsse/aa-gsm/gsm.pdf ). Ma question est la suivante : peut on imaginer avec Android accéder directement au signal d'un de ces composants et le modifier ? En gros, puis je imaginer avec Android avoir la main sur les chaines de bits émises par mon téléphone ? Par exemple, au lieu de voix encodée à la norme GSM, émettre un signal numérique à moi ?

 

Je vous remercie de votre attention,

 

Bien cordialement

 

Babar

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et bienvenue

 

Tu es ici dans la sous-section dev et tuto de la section : Personnalisation Visuelle

T'as question n'est pas en rapport du tout avec cela, je déplaces donc dans une section plus approprié ( la section développement )

néanmoins j'hésite pour la sous section, je demandes avis plus haut et reviens vers toi ensuite :) 

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Après concertation, sujet déplacé dans la section Développement > Réseaux qui paraît la plus proche même si cela reste approximatif.

Faute de mieux, on va dire...

Merci à Mstrl d'avoir escaladé la question.

 

Un petit élément de réponse peut-être : cela risque de ne pas être facile sur beaucoup de plateformes. Souvent la partie gestion à bas niveau des comms GSM/WCDMA est faite par un coprocesseur indépendant de celui qui exécute le code principal (c-a-d le noyau Linux et les couches supérieures d'Android).

Ce coproc' qui fait partie du SOC (System On a Chip) tourne lui-même un firmware qui lui est "injecté" lors du démarrage par le processeur principal. Ce firmware qu'on appelle souvent le "modem" est parfois contenu dans un fichier, parfois dans une partition séparée de la flash interne du smartphone.

Là où ça se gâte c'est que je n'ai jamais entendu parler d'API documentée de ce "modem" et encore moins de sources divulgués.

Tout cela est dans le domaine du fermé et du propriétaire du fondeur du SOC...

Attention : le fait que je n'en ai jamais entendu parler ne signifie pas du tout que cela n'existe pas :) mais bon, il va falloir gratter :

- bien choisir sa plateforme, celle ou des infos de ce genre ont fuité ou bien ou la partie comms radio est moins isolée

- trouver les infos

 

En tous cas merci, j'ai appris des choses sur la techno GSM. Même si je suis ingé. télécoms de formation initiale, j'ai viré vers l'informatique pure il y a longtemps et quand j'ai eu mon diplôme les téléphones portables étaient encore loin d'exister :)

 

Bon courage en tous cas, j'espère que quelqu'un aura des infos plus positives et précises.

Lien vers le commentaire
Partager sur d’autres sites

Re bonjour,

 

Merci tout d'abord de cette réponse ! J'ai entre temps bcp tourné et j'arrive à la même réponse. On touche ici au coeur du GSM et en aucun cas cela n'est accessible par une API divulguée et distribuée. La seule possibilité serait d'aller toucher au dur du téléphone, de reprogrammer le noyau, ou ses composants mais ça c'est une autre paire de manche. Et je partais plus sur un projet propre et généralisable à plein de types de téléphone que vers de la "bidouille" (attention hein, rien de péjoratif :-) ) limite légale.

 

Je ne suis en fait pas le premier à me poser ce genre de questions : http://debian.2.n7.nabble.com/HS-Cryptage-communications-GSM-td1230492.html

 

Il faut dire que si l'on pouvait avoir accès direct aux bits envoyés sur les porteuses GSM, ça deviendrait vite la fête du slip avec chacun qui commence à envoyer ce que bon lui semble et certainement des problèmes au niveau du réseau pour gérer ça. Pas étonnant donc que ça soit un peu préservé.

 

Du coup, je me suis lancé dans une lecture passionnante : www.3gpp.org/DynaReport/46-series.htm   Toutes les normes Européennes sur le GSM. Un peu roboratif mais idéal pour les insomnies.

 

J'explore une autre idée pour contourner le problème et je vous dis rapido ! (le temps de rebrancher matlab... :-) )

 

A bientôt !

Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...

Bonjour à tous,

 

Je me permets de déterrer ce sujet qui correspond parfaitement à ma problématique ( dites moi s'il est préférable d'en créer un autre ).

 

Je souhaite réaliser une application de cryptage de la voix. Pour cela, j'ai besoin de récupérer le signal numérique de la voix et de le modifier afin de le transmettre crypté via le réseaux gsm.

 

 

De plus, j'ai besoin de réaliser une trame avec des données perso me permettant de décoder le signal à la réception.

 

Est-ce possible ? Avez vous trouvé une solution ?

 

Merci par avance pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...

Avec du retard je te réponds. A priori, non, ce n'est pas possible. La chaine d'encryptage du GSM n'est pas accessible ; elle est sur le dur du téléphone et pas la partie programmable d'un Android. Tu entres dessus en vocal, le codec tourne, il encode et met le tout sur la porteuse. Mais tu n'as pas accès à l'étape encodage =>mise en porteuse.

 

Je pense à une solution mais ça serait énorme comme problématique. Puis, aujourd'hui, avec la 4G, le cryptage numérique via data va devenir de plus en plus accessible et je me demande si ça vaut le coup de suer sur une solution GSM pure qui aura peu d'intérêt commercial. (cf Open circle ou autres trucs de ce style...)

 

Je reste très intéressé pour échanger avec des gens qui se penchent sur ce problème. J'ai une idée beaucoup plus générique et vaste mais je regarde la faisabilité car c'est certainement beaucoup de travail...

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...