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)
- 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.asp
Sélectionnez

<%
' -----------------------------------------------------------
' 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.asp
Sélectionnez

<%
' -----------------------------------------------------------
' fonction equivalente (adaptation) a strtr() en PHP
function strtr(chaine, strFrom, strTo)
   for i = 1 to len(strFrom) step 1
      c0 = mid(strFrom, i, 1)
      c1 = mid(strTo, i, 1)
      chaine = Replace(chaine, c0, c1)
   next
   strtr = chaine
end function
' -----------------------------------------------------------
' fonction de suppression des caracteres accentues
function noaccent(chaine)
   avecaccent = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ"
   sansaccent = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy"
   noaccent = strtr(chaine, avecaccent, sansaccent)
end function
' -----------------------------------------------------------
' fonction d ENCODAGE
function encode_AlphaRadio(chaine)
%>
<!-- #include file="AlphaRadioCorresp.asp"-->
<%
   chaine = noaccent(chaine)
   chainecode = ""
   for i=0 to (len(chaine)-1) step 1
      for j=0 to ubound(table1) step 1
         if (table1(j)=mid(chaine,i+1,1)) then
            chainecode = chainecode & table2(j)
            if (i<>len(chaine)-1) then
               chainecode = chainecode & separateur
            end if
         end if
      next
   next
   encode = chainecode
end function
' -----------------------------------------------------------
' fonction de DECODAGE
function decode_AlphaRadio(chaine)
%>
<!-- #include file="AlphaRadioCorresp.asp"-->
<%
   tablechaine = split(chaine,separateur)
   chainedecode = ""
   for i=0 to ubound(tablechaine) step 1
      for j=0 to ubound(table2) step 1
         if (table2(j)=tablechaine(i)) then
            chainedecode = chainedecode & table1(j)
         end if
      next
   next
   decode = chainedecode
end function
' -----------------------------------------------------------
%>

III-C. Alphabet Radio : Utilisation

Encoder
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="AlphaRadioCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
chaine = "C'est l'idée à 2€ !"
chainecode = encode_AlphaRadio(chaine)
%>
Décoder
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="AlphaRadioCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
chainecode = "CHARLIE ' echo sierra tango | lima ' india delta echo echo | alpha | Two  | !"
chainedecode = decode_AlphaRadio(chainecode)
%>
Afficher
Sélectionnez

<%
' ----------------------------------------------------------
response.write chaine
%>

III-D. Alphabet Radio : Exemple (formulaire)

AlphaRadioForm.asp
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="AlphaRadioCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
if (request.form("codage") = "encoder") then
   machaine = request.form("machaine")
   retourchaine = encode_AlphaRadio(machaine)
elseif (request.form("codage") = "decoder") then
   machaine = request.form("machaine")
   retourchaine = decode_AlphaRadio(machaine)
end if
' ----------------------------------------------------------
%>
<!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"><% response.write request.form("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">
      <% response.write 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.asp
Sélectionnez

<%
' ----------------------------------------------------------
' 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.asp
Sélectionnez

<%
' ----------------------------------------------------------
' fonction equivalente (adaptation) a strtr() en PHP
function strtr(chaine, strFrom, strTo)
   for i = 1 to len(strFrom) step 1
      c0 = mid(strFrom, i, 1)
      c1 = mid(strTo, i, 1)
      chaine = Replace(chaine, c0, c1)
   next
   strtr = chaine
end function
' ----------------------------------------------------------
' fonction de suppression des caracteres accentues
function noaccent(chaine)
   avecaccent = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ"
   sansaccent = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy"
   noaccent = strtr(chaine, avecaccent, sansaccent)
end function
' ----------------------------------------------------------
' fonction d ENCODAGE
function encode_Morse(chaine)
%>
   <!-- #include file="MorseCorresp.asp" -->
<%
   chaine = noaccent(chaine) ' supprime les accents
   chaine = ucase(chaine)    ' tout en majuscules
   chainecode = ""
   for i=0 to (len(chaine)-1) step 1
      for j=0 to ubound(table1) step 1
         if (table1(j)=mid(chaine,i+1,1)) then
            chainecode = chainecode & table2(j)
            if (i<>len(chaine)-1) then
               chainecode = chainecode & separateur
            end if
         end if
      next
   next
   encode = chainecode
end function
' ----------------------------------------------------------
' fonction de DECODAGE
function decode_Morse(chaine)
%>
   <!-- #include file="MorseCorresp.asp" -->
<%
   tablechaine = split(chaine,separateur)
   chainedecode = ""
   for i=0 to ubound(tablechaine) step 1
      for j=0 to ubound(table2) step 1
         if (table2(j)=tablechaine(i)) then
            chainedecode = chainedecode & table1(j)
         end if
      next
   next
   decode = chainedecode
end function
' ----------------------------------------------------------
%>

IV-C. Code Morse : Utilisation

Encoder
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="MorseCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
chaine = "C'est l'idée à 2€ !"
chainecode = encode_Morse(chaine)
%>
Décoder
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="MorseCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
chainecode = "-.-. .----. . ... - | .-.. .----. .. -.. . . | .- | ..--- ...-.-.--- | -.-.-----."
chainedecode = decode_Morse(chainecode)
%>
Afficher
Sélectionnez

<%
' ----------------------------------------------------------
response.write chaine
%>

IV-D. Code Morse : Exemple (formulaire)

MorseForm.asp
Sélectionnez

<!-- --------------------------------------------------- -->
<!-- #include file="MorseCodeDecode.asp" -->
<!-- --------------------------------------------------- -->
<%
if (request.form("codage") = "encoder") then
   machaine = request.form("machaine")
   retourchaine = encode_Morse(machaine)
elseif (request.form("codage") = "decoder") then
   machaine = request.form("machaine")
 retourchaine = decode_Morse(machaine)
end if
' ----------------------------------------------------------
%>
<!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>Code Morse</b><br />
<form method="POST">
<textarea rows="3" name="machaine" cols="36">
<% response.write request.form("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">
      <% response.write 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)