I. Avant-propos

Alphabet Radio International - Radiocommunication
Image non disponible Alphabet radio (fr.wikipedia.org/wiki/Alphabet_radio)
Alphabet phonétique de l'OTAN
www.aviationpassion.org

On appelle "Alphabet Radio" l'alphabet international utilisé en radiotéléphonie. Les transmissions radio sont soumises fréquemment à des parasites et interférences. Il est donc parfois nécessaire d'épeler les mots importants.

Pour éviter les ambiguïtés entre les sons semblables (comme "m" et "n", "p" et "b") et par souci de redondance, on utilise des mots pour désigner les lettres. Ces mots constituent un alphabet radio international qui a été adopté par l'Union internationale des télécommunications, l'Organisation de l'aviation civile internationale (OACI) et l'OTAN.


Code Morse
Image non disponible www.codemorse.fr : codes, caractères spéciaux, ...

Inventé par Samuel Morse en 1835, le "Morse" associe à chaque caractère du texte à transmettre, une suite unique de "beeps" courts ou longs. Ces signaux sont transmis par radio, par lumières ou par télégraphie, comme initialement.

Après avoir été utilisé notamment pour des communications en mer ou par les militaires, il est principalement utilisé aujourd'hui par les radio-amateurs pour des communications radio à longue distance (ondes courtes).

II. Principe

Principe :
  • La création de 2 tableaux array() mettant en correspondance les éléments "en clair" et les éléments "codés" ;
  • Un paramètre séparateur ;
  • Une fonction de codage ;
  • Une fonction de décodage.

Les 2 scripts présentés ici sont des adaptations du standard.

Des caractères ont été ajoutés, pour pouvoir coder/décoder des phrases courantes (avec ponctuations, ...).
Elles renvoient une chaine parfaitement compréhensible, et ... fun!

Les scripts incluent :
  • Une fonction de suppression des accents, ("international") ;
  • Le caractère de séparation est ici : " " (espace) ;
  • Quelques "adaptations" (non-conformes au standard).

Ces 2 scripts ne sont pas des méthodes de cryptage ! NE PAS les utiliser pour des données sensibles !!!

En effet, le codage/décodage d'une chaine ne donne pas forcément la chaine initiale (suppression des accents, adaptations...)
De plus, les codes "Alphabet Radio" et "Morse" sont très connus, donc faciles à décoder !

III. Alphabet Radio International

III-A. Alphabet Radio International + Adaptations

Alphabet Radio International
A Alpha N November 0 Zero
B Bravo O Oscar 1 One
C Charlie P Papa 2 Two
D Delta Q Quebec 3 Three
E Echo R Romeo 4 Four
F Foxtrot S Sierra 5 Five
G Golf T Tango 6 Six
H Hotel U Uniform 7 Seven
I India V Victor 8 Eight
J Juliet W Whisky 9 Nine
K Kilo X X-ray    
L Lima Y Yankee , Decimal
M Mike Z Zulu . Stop
Adaptations (non-conformes au standard)
- chiffres : 0 1 ... 9 Zero One ... Nine
- lettres minuscules : a b, ... z alpha bravo ... zulu
- lettres majuscules : A B, ... Z ALPHA BRAVO ... ZULU
- lettres accentuées   on supprime les accents
- ponctuation (standard) : , . Decimal Stop
- ponctuation (autres) : ? ' ! / ( ) & : ;
= + - _ " $ @ €
(on conserve tel quel)
- cas particulier : ' \' (en PHP)
- espace (entre les mots) :   | (barre verticale)
Exemple
phrase : C'est l'idée à 2€ !
codée : CHARLIE ' echo sierra tango | lima ' india delta echo echo | alpha | Two € | !
décodée : C'est l'idee a 2€ !

III-B. Alphabet Radio : Les fichiers

AlphaRadioCorresp.php
Sélectionnez

<?php
// ----------------------------------------------------------
// Tables de CORRESPONDANCE
// ----------------------------------------------------------
$table1 = array("0","1","2","3","4","5","6","7","8","9",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Z","Y","Z",
",","."," ","?","'","!","/","(",")","&",":",";","=","+","-","_","\"","$","@","");
// ----------------------------------------------------------
$table2 = array("Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine",
"alpha","bravo","charlie","delta","echo","foxtrot","golf","hotel","india","juliet","kilo","lima",
"mike","november","oscar","papa","quebec","romeo","sierra","tango","uniform","victor","whisky","x-ray",
"yankee","zulu","ALPHA","BRAVO","CHARLIE","DELTA","ECHO","FOXTROT","GOLF","HOTEL","INDIA","JULIET",
"KILO","LIMA","MIKE","NOVEMBER","OSCAR","PAPA","QUEBEC","ROMEO","SIERRA","TANGO","UNIFORM","VICTOR",
"WHISKY","X-RAY","YANKEE","ZULU","Decimal","Stop","|","?","\'","!","/","(",")","&",":",";","=","+",
"-","_","\"","$","@","");
// ----------------------------------------------------------
$separateur = ' ';
// ----------------------------------------------------------
?>
AlphaRadioCodeDecode.php
Sélectionnez

<?php
// ----------------------------------------------------------
// fonction de suppression des caracteres accentues
function noaccent($chaine) {
   $avecaccent = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
   $sansaccent = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
   $noaccent = strtr($chaine, $avecaccent, $sansaccent);
   return $noaccent;
}
// ----------------------------------------------------------
// fonction d ENCODAGE
function AlphaRadioencode($chaine) {
   include("AlphaRadioCorresp.php");
   $chaine = noaccent($chaine);
   $chainecode = '';
   for ($i=0;$i<strlen($chaine);$i++) {
      for ($j=0;$j<count($table1);$j++) {
         if ($table1[$j]==substr($chaine,$i,1)) {
            $chainecode .= $table2[$j];
            if ($i!=strlen($chaine)-1) {
               $chainecode .= $separateur;
            }
         }
      }
   }
   return $chainecode;
}
// ----------------------------------------------------------
// fonction de DECODAGE
function AlphaRadiodecode($chaine) {
   include("AlphaRadioCorresp.php");
   $tablechaine = explode($separateur,$chaine);
   $chainedecode = '';
   for ($i=0;$i<count($tablechaine);$i++) {
      for ($j=0;$j<count($table2);$j++) {
         if ($table2[$j]==$tablechaine[$i]) {
            $chainedecode .= $table1[$j];
         }
      }
   }
   return $chainedecode;
}
// ----------------------------------------------------------
?>

III-C. Alphabet Radio : Utilisation

Encoder
Sélectionnez

<?php
// ----------------------------------------------------------
   include("AlphaRadioCodeDecode.php");
// ----------------------------------------------------------
$chaine = "C'est l'idée à 2 !";
$chainecode = AlphaRadioencode($chaine);
?>
Décoder
Sélectionnez

<?php
// ----------------------------------------------------------
   include("AlphaRadioCodeDecode.php");
// ----------------------------------------------------------
$chainecode = "CHARLIE ' echo sierra tango | lima ' india delta echo echo | alpha | Two  | !";
$chainedecode = AlphaRadiodecode($chainecode);
?>
Afficher
Sélectionnez

<?php // enlever les antislash (a cause des apostrophes)
// ----------------------------------------------------------
echo stripslashes($chaine);
?>

III-D. Alphabet Radio : Exemple (formulaire)

AlphaRadioForm.php
Sélectionnez

<?php
// ----------------------------------------------------------
   include("AlphaRadioCodeDecode.php");
// ----------------------------------------------------------
if (@$_POST['codage'] == 'encoder') {
   $machaine = $_POST['machaine'];
   $retourchaine = AlphaRadioencode($machaine);
} elseif (@$_POST['codage'] == 'decoder') {
   $machaine = $_POST['machaine'];
   $retourchaine = AlphaRadiodecode($machaine);
}
// ----------------------------------------------------------
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Alphabet Radio</title>
</head>
<body>
Coder/Décoder - <b>Alphabet Radio</b><br />
<form method="POST">
<textarea rows="3" name="machaine" cols="35">
<?php echo stripslashes($_POST['machaine']); ?>
</textarea><br />
<input type="radio" name="codage" value="encoder">
ENCODER une phrase<br />
<input type="radio" name="codage" value="decoder">
DECODER un Alphabet Radio<br />
<input type="submit" value="Generer" name="submit">
</form>
<table border="1" width="300" height="50">
   <tr>
      <td valign="top">
      <?php echo stripslashes($retourchaine); ?>
      </td>
   </tr>
</table>
</body></html>

IV. Code Morse

IV-A. Code Morse International + Adaptations

Code Morse
A .- N -. 0 ----
B -... O --- 1 .----
C -.-. P .--. 2 ..---
D -.. Q --.- 3 ...--
E . R .-. 4 ....-
F ..-.. S ... 5 ....
G --. T - 6 -....
H .... U ..- 7 --...
I .. V ...- 8 ---..
J .--- W .-- 9 ----.
K -.- X -..-  
L .-.. Y -.--
M -- Z --..
Caractères spéciaux (ponctuation)
Point . .-.-.- Deux-points : ---...
Virgule , --..-- Point-virgule ; -.-.-.
Point d'interrogation ? ..--.. égal = -...-
Apostrophe ' .----. plus + .-.-.
Point d'exclamation ! -.-.-----. moins / trait d'union - -....-
Barre oblique / -..-. Tiret bas (underscore) _ ..--.-
Parenthèse ouvrante ( -.--. Guillemet " .-..-.
Parenthèse fermante ) -.--.- Dollar $ ...-..-
Esperluette & .-... Arobase @ .--.-.
Adaptations (non-conformes au standard)
- lettres minuscules : a b, ... z on les change en majuscules
- lettres majuscules : A B, ... Z (voir ci-dessus)
- chiffres : 0 1 ... 9
- ponctuation : . , ? ' ! / ( ) & : ;
= + - _ " $ @
- lettres accentuées   on supprime les accents
- espace (entre les mots) :   | (barre verticale)
- caractère ajouté : ...-.-.--- (concaténation de EURO)
Exemple
phrase : C'est l'idée à 2€ !
codée : -.-. .----. . ... - | .-.. .----. .. -.. . . | .- | ..--- ...-.-.--- | -.-.-----.
décodée : C'EST L'IDEE A 2€ !

IV-B. Code Morse : Les fichiers

MorseCorresp.php
Sélectionnez

<?php
// ----------------------------------------------------------
// Tables de CORRESPONDANCE en CODE MORSE
// ----------------------------------------------------------
$table1 = array("0","1","2","3","4","5","6","7","8","9",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
" ",".",",","?","'","!","/","(",")","&",":",";","=","+","-","_","\"","$","@","");
// ----------------------------------------------------------
$table2 = array("----",".----","..---","...--","....-","....","-....","--...","---..","----.",".-",
"-...","-.-.","-..",".","..-..","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",
".-.","...","-","..-","...-",".--","-..-","-.--","--..","|",
".-.-.-","--..--","..--..",".----.","-.-.-----.","-..-.","-.--.","-.--.-",".-...","---...","-.-.-.",
"-...-",".-.-.","-....-","..--.-",".-..-.","...-..-",".--.-.","...-.-.---");
// ----------------------------------------------------------
$separateur = ' ';
// ----------------------------------------------------------
?>
MorseCodeDecode.php
Sélectionnez

<?php
// ----------------------------------------------------------
// fonction de suppression des caracteres accentues
function noaccent($chaine) {
   $avecaccent = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
   $sansaccent = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
   $noaccent = strtr($chaine, $avecaccent, $sansaccent);
   return $noaccent;
}
// ----------------------------------------------------------
// fonction d ENCODAGE
function Morseencode($chaine) {
   include("MorseCorresp.php");
   $chaine = noaccent($chaine);   // supprime les accents
   $chaine = strtoupper($chaine); // tout en majuscules
   $chainecode = '';
   for ($i=0;$i<strlen($chaine);$i++) {
   for ($j=0;$j<count($table1);$j++) {
      if ($table1[$j]==substr($chaine,$i,1)) {
      $chainecode .= $table2[$j];
      if ($i!=strlen($chaine)-1) {
         $chainecode .= $separateur;
      }
      }
   }
   }
   return $chainecode;
}
// ----------------------------------------------------------
// fonction de DECODAGE
function Morsedecode($chaine) {
   include("MorseCorresp.php");
   $tablechaine = explode($separateur,$chaine);
   $chainedecode = '';
   for ($i=0;$i<count($tablechaine);$i++) {
   for ($j=0;$j<count($table2);$j++) {
      if ($table2[$j]==$tablechaine[$i]) {
      $chainedecode .= $table1[$j];
      }
   }
   }
   return $chainedecode;
}
// ----------------------------------------------------------
?>

IV-C. Code Morse : Utilisation

Encoder
Sélectionnez

<?php
// ----------------------------------------------------------
   include("MorseCodeDecode.php");
// ----------------------------------------------------------
$chaine = "C'est l'idée à 2 !";
$chainecode = Morseencode($chaine);
?>
Décoder
Sélectionnez

<?php
// ----------------------------------------------------------
   include("MorseCodeDecode.php");
// ----------------------------------------------------------
$chainecode = "-.-. .----. . ... - | .-.. .----. .. -.. . . | .- | ..--- ...-.-.--- | -.-.-----.";
$chainedecode = Morsedecode($chainecode);
?>
Afficher
Sélectionnez

<?php // enlever les antislash (a cause des apostrophes)
// ----------------------------------------------------------
echo stripslashes($chaine);
?>

IV-D. Code Morse : Exemple (formulaire)

MorseForm.php
Sélectionnez

<?php
// ----------------------------------------------------------
   include("MorseCodeDecode.php");
// ----------------------------------------------------------
if (@$_POST['codage'] == 'encoder') {
   $machaine = $_POST['machaine'];
   $retourchaine = Morseencode($machaine);
} elseif (@$_POST['codage'] == 'decoder') {
   $machaine = $_POST['machaine'];
   $retourchaine = Morsedecode($machaine);
}
// ----------------------------------------------------------
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Code Morse</title>
</head>
<body>
Coder/Décoder - <b>Code Morse</b><br />
<form method="POST">
<textarea rows="3" name="machaine" cols="35">
<?php echo stripslashes($_POST['machaine']); ?>
</textarea><br />
<input type="radio" name="codage" value="encoder">
ENCODER une phrase<br />
<input type="radio" name="codage" value="decoder">
DECODER un code morse<br />
<input type="submit" value="Generer" name="submit">
</form>
<table border="1" width="300" height="50">
   <tr>
      <td valign="top">
      <?php echo stripslashes($retourchaine); ?>
      </td>
   </tr>
</table>
</body></html>

V. Conclusion

Les scripts présentés ici ne sont pas des méthodes de cryptage ! NE PAS les utiliser pour des données sensibles !!!

En effet, le codage/décodage d'une chaine ne donne pas forcément la chaine initiale (suppression des accents, adaptations...)
De plus, les codes "Alphabet Radio" et "Morse" sont très connus, donc faciles à décoder !

Cependant, elles renvoient une chaîne parfaitement compréhensible, ... et fun !
Amusez-vous !

5 commentaires Donner une note à l'article (0)