******************************************************************************
************************P.G.K n9: Novembre 99 version 1.1********************
******************************************************************************

                 
                    
           ۲۲  ۲۲  ۲   ۲ 
           ۲۲ ۲۲  ۲۲ ۲۲  ۲۲  ۲ 
           ۱  ۱  ۲  ۲  ۱  ۱ 
           ۲  ۲  ۲  ۲  ۲  ۱ 
           ۱  ۱  ۱  ۱  ۱  ۱ 
           ۱  ۲  ۲  ۲  ۱ ۱ 
           ۲  ۱  ۱  ۱  ۲۱ 
           ۱  ۰  ۰  ۲  ۰۱ 
           ۱۰  ۱۱  ۱ ۰ 
           ۱  ۱  ۱  ۱ 
           ۰      ۱  ۰  ۰ 
           ۰          ۱  ۰  ۰  ۰ 
           ۰          ۰  ۰  ۰  ۰ 
           ۰          ۱߰  ۰   ۰ 
                            
                       

                  w w w . m u l t i m a n i a . c o m / p g k

                                       Asphyx


            "Travailler pour un P.G.K. meilleur, c'est travailler
                          pour un monde meilleur!"
                                  Bug-in


******************************************************************************
**********************************Disclaimer**********************************
******************************************************************************

  Quelles que soient les conneries que vous pourriez faire suite  la lecture  
de cet e-zine ou  la consultation du site de Pretty Good Keys (www.multimania  
.com/pgk), les deux principaux auteurs que sont NONO (nono_18_02@hotmail.com)
et Johann__3 (johann__3@hotmail.com) ne sauraient en tre tenus responsables.
  En effet, de par la nature mme des lois qui tentent vainement de rgir 
notre putain de pays de merde, vous tes libres de poursuivre ou non votre 
lecture, en sachant cependant que si vous continuez plus loin, les auteurs 
respectifs de tout ce qui suit n'encouragent personne  raliser les actions 
dcrites ci-dessous, mais les dcrivent uniquement  titre informatif.
  Cependant, les lois ne sont bien videmment pas les mmes dans tous les
pays, et donc, si chez vous, votre droit d'accs aux informations que vous
pourriez trouver ici est encore plus restreint qu'en France, vous vous
devez de prendre vos responsabilits.    
  Ainsi, en lisant ceci, ou plus simplement, rien que par le simple fait d'
avoir charg ce site (et donc cette page et ce texte), vous prenez
connaissance de ces principes et de la "dresponsabilisation" des auteurs de
tout ce que vous pourrez trouver ici. Ce n'est pas du tout un manque de
courage de notre part, mais tout simplement un simple avertissement: aprs
tout, rien ne vous invite  lire, croire, et encore moins  reproduire les
actions dcrites ici.
  De plus, bien que vous pouvez trouver ici des rfrences  des substances
qui peuvent tre prohibes dans votre pays (notamment des substances
psychotropes), et qui le sont hls ici en France, cela ne constitue en aucun
cas un encouragement de quelque nature que ce soit  consommer ou mme
cultiver ces substances qui peuvent avoir des effets parfois incontrlables,
et qui peuvent s'avrer quelquefois dangereux (surtout pour ceux qui n'en
ont pas l'habitude).    
  Pour finir, en continuant votre lecture, vous acceptez ainsi de prendre
vos responsabilits et ainsi, en cas de problmes avec la justice (un malheur
est si vite arriv, et puis il faut dire que les keufs sont partout), nous
ne saurions en aucun cas tre impliqus dans vos problmes...    

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

  Je sais, ce numro sort avec deux mois de retard... Alors pour un soi-disant
numro anniversaire, c'est plutt rat... Mais j'ai une excuse: pendant
environ un mois-et-demi, j'avais pas de PC  ma disposition pour crire ce
numro ni pour m'occuper du site. Donc, je ne l'ai pas mis  jour comme je
l'avais promis, et en fait, il y a plein de choses que je n'ai pas eu le temps
de faire. Mais, pour me faire pardonner, si cela se peut, ce numro est le
plus gros de tous les P.G.K., alors voil.
  Et comme je n'ai plus vraiment le temps de m'occuper de P.G.K., hls, je
suis en train de rflchir  la seule solution que j'ai trouve (si vous en
voyez d'autres, crivez-moi): je vais peut-tre arrter P.G.K.. Oh, rassurez-
vous, je serais encore prsent, mais je crois que cela sera trs limit. Et
je ne m'occuperais mme plus du site.
  Si cela doit se faire, je pense que je me dchargerais de mon "fardeau"
(en fait, je dois dire que j'ai rellement pris du plaisir  faire P.G.K.
pendant un an, mais je garde a pour la conclusion) sur (roulement de tambour)
Bug-in, qui, ces temps-ci, s'est montr particulirement actif et qui s'est
spontanment propos pour reprendre le flambeau... Car Johann__3 ne peut pas
non plus le faire, et j'en suis dsol...

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
************************************Sommaire**********************************
******************************************************************************

  - Courrier des lecteurs
  - W95.CIH (t00nx)
  - Quelques ides (Bug-in)
  - Les codes barres de la norme EAN 13 (Raffaelo)
  - Lettre au Procureur de Justice (Bug-in)
  - Cours d'Assembleur (suite) (Adam - traduit par NONO)
  - Le nihilisme (King Fisher)
  - Cryptage (Bug-in)
  - Cours d'Assembleur (suite) (Adam - traduit par NONO)
  - La gravure (Pyton51)

  Eh bien voil ce que j'appelle un numro exceptionnellement riche et
imposant, non?

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
******************************Courrier des lecteurs***************************
******************************************************************************

From: Raffaelo <raffaelo@ifrance.com>
To: nono_18_02@hotmail.com 
Subject: P.G.K. ezine 
Date: Sun, 5 Sep 1999 11:25:00 +0200 

Salut,

j'ai fond un groupe de crackers franais dbut juillet, et on est environ 20.
Le site est http://zone14.cjb.net. Bon, a c'tait pour la pub ;-].

  En fait, c'est pour dire que je suis un cracker d'origine, et que je
m'intresse depuis 2/3 jours au H/P et j'ai lu une bonne quantit de mags, et
le votre a l'air le plus vivant et motiv. Je sais pas encore grand-chose, et
j'ai encore jamais hack, mais je me dbrouille pas mal en crack, je connais
comment les codes barres, les cartes de crdits marchent, et comment viter
les bannires sur certains hbergeurs gratuits... et quelques autres trucs
bien marrants.

  Quand j'ai fond mon groupe, j'ai recherch des gens motivs, et ils taient
tous des dbutants. Je n'ai pas cherch des lites, qui savent tout faire mais
ne sont plus motivs. C'est pour a que mon groupe bouge bien aujourd'hui.

Quel rapport? J'ai choisi ton groupe parce qu'il est motiv, et moi aussi.
Donc, si tu veux bien, je serai content de faire partie de ton groupe si a
drange personne, et aussi participer aux articles du super e-zine. Je te
joins un tutorial sur les codes barres que j'ai fait il y a quelques temps.

Voil, j'espre que tu me rpondras vite, parce que c'est bientt la rentre
des classes pour moi, et a va bien me faire chier pour mon temps libre.

Atchao bonsoir, et merci!

  Raffaelo

[NONO: salut! Tu sais quoi, ta motivation fait plaisir  voir! Si si je t'
assure. Je dirais pas que a me rappelle mes propres dbuts, car a ferait un
peu prtentieux, mais c'est vrai. Mme si P.G.K. n'est pas un groupe 
proprement parler. En effet, au dbut, je me suis content d'crire un e-zine,
avec l'aide plus ou moins rgulire de Johann__3. Ensuite, des gens ont
commenc  m'crire, pour me dire qu'ils aimaient bien ce que je faisais.
Alors a m'a pouss  continuer, comme le fait aujourd'hui ta lettre et ton
excellent article sur les codes barres. Non, franchement, j'ai vraiment
apprci. J'avais dj lu des trucs sur les codes barres, mais rien d'aussi
prcis... Alors, pas de problme, tu es le bienvenu... Hls, c'est la
rentre... Peu de monde y chappe... A+]
         
From: Nicky HAckRRIS <toonx@caramail.com>
To: nono_18_02@hotmail.com 
Subject: article;) 
Date: Thu, 12 Aug 1999 17:57:11 GMT+1 

Salut NONO,

Je t'envoie un p'tit article pour P.G.K.! Je sais pas si tu le publieras, 
toi de voir ;) !

Tiens, en tant que newbie, j'essaye, grce  tes explications, de dplomber un
prog dont je me sers au boulot. Je t'embterais avec a plus tard! 

RESPECT.

[NONO: Bon, je crois qu'il n'y a pas grand-chose  dire sinon que c'est
exactement le genre de mails que j'adore recevoir... Voici donc l'article en
question. Et au fait, si vous avez des problmes pour le cracking ou quoi que
ce soit, n'hsitez pas  m'crire, je me ferais une joie d'essayer de vous
aider.]

******************************************************************************
***********************************W95.CIH************************************
******************************************************************************

  Ayant eu devant mes yeux cet e-zine sympa qu'est P.G.K., je me suis dit:
"tiens, a serait sympa d'crire un petit article pour eux!". Je me prsente:
tOOnx, certains d'entre vous me connaissent via le web, d'autres (pour les
plus vieux, j'ai 27 ans!;) ) me connaissent sous le pseudo zeus/Z.F.K. (sur
Amiga!) ou encore Crystal Angel! J'ai galement contribu au Swap de AGNUS, un
petit zine sur disk qui existait sur Amiga... Nostalgie, quand tu nous tiens..

  Bon, si NONO est d'accord, j'crirais d'autres articles traitant de sujets
divers, mais bon, on verra a plus tard...

  Je vais vous causer d'un virus, et pas n'importe lequel:
W95.CIH.
  Plus connu par les mdias sous le nom de Tchernobyl, cette saloperie de
virus infecte tous les fichiers .exe de votre disque dur, quand il ne le
crashe pas, et vous nique le bios "manu militari"! J'ai, videmment, eu
affaire  cette grosse merde, aprs avoir pomp un prog sur le net. Ce virus
est vicieux, il ne se dclenche que le 26 de chaque mois, d'o son appellation
"Tchernobyl" par les mdias, le 26 tant la date de cette catastrophe...

  Le pire, c'est que la bcane infecte tait celle que j'utilise pour bosser,
du coup il me fallait rcuprer mon prcieux disque, et refoutre ma bcane en
route! Je fonce chez un revendeur informatique, et je change ma carte mre.
  J'utilise Norton 5.0 sur disk en b0oo sur mon premier disque: 6 go - Norton
a mis 03 h 15  le scanner, il  analys 5868 fichiers dont 262 infects et
heureusement rpars. Pour le second de 4 go, il a mis 01 H 50, a analys 4946
fichiers parmi lesquel 162 taient infects... :(

  Bref, j'ai russi  rcuprer mes deux disques, et ma bcane fonctionne 
nouveau, c'est d'ailleurs par le biais de celle-ci que je vous cris ;) [NONO:
comme quoi,  quelque chose malheur est bon. En effet, si t'avais pas chop ce
putain de virus, t'aurais pas crit cet article, et peut-tre que ton
intervention va sauver d'autres lecteurs de ce vritable flau... En plus, a
m'aurait fait un article de moins :-) .].

  Les gars, faites gaffe  ce putain de virus, c'est le pire que je connaisse
:( .

  Le 26 mai dernier, il a infect 18 bcanes d'un lyce, je vous explique pas
la gueule du service technique!! ;)

  Si vous avez NORTON 5.0, utilisez le AVANT le 26, sinon vous courrez droit 
la catastrophe !

  La seule solution pour pouvoir conserver sa carte mre, d'aprs mon
revendeur, c'est de pouvoir rcuprer une EPROM identique  la sienne, booter
sur Norton pour nettoyer son disque de cette saloperie de virus. Ensuite, il
faut copier le contenu de l'eprom; si vous avez un copieur d'eprom, et que par
une chance formidable, vous avez copi votre bios, tant mieux pour vous ;) -
sinon vous devez faire une manip risque: vous bootez avec un bios identique
au vtre, une fois sous DOS, vous remplacez le BIOS par celui qui est flamb,
et vous flashez ce dernier... unique solution :( Grr..

  Evidemment, cette solution n'est possible que si vous avez un bios dit "
pattes", sinon si c'est un bios comme celui qui quipe certaines cartes mre
ASUS (c'est une puce carre qui s'embote dans un compartiment tudi pour),
vous renvoyez votre carte mre chez votre revendeur, qui devrait,
thoriquement, pouvoir rsoudre le problme en renvoyant la carte mre chez le
constructeur. Si votre carte mre est trop ancienne, laissez tomber, c'est
foutu!
  Par contre, si vous avez une carte mre rcente, vous devriez pouvoir
activer la protection de votre bios, soit par cavalier, soit directement par
le bios lui-mme [NONO: cette manip consiste  empcher la modification
(volontaire ou non) des informations contenues dans le BIOS (Basic Input
Output System) et qui contient de prcieux renseignements sur votre matriel.]
!

  A part a, il existe,  ma connaissance, plusieurs antivirus qui permettent
de l'radiquer:
CLEANCIH, KILL CIH, remove_cih, NORTON 5.0...

  Voili, voilou, si vous avez d'autres infos sur cette grosse merde de virus,
mailez-moi :
t00nx@caramail.com

  J'attends maintenant la rponse de NONO,  savoir si je peux crire d'autres
articles pour P.G.K., qui traiteront de divers sujets [NONO: tu rigoles ou
quoi? Depuis quand je refuse de l'aide?]!

*** FREE CONDOR *** NEWBIES RULEZ *** FUCK W95.CIH *** CHOCHON RULEZ ***
C4rD1n9 RuLeZ***

                                       tOOnx, t00nx@caramail.com
                                                                
******************************************************************************
**************************Quelques ides (Bug-in)*****************************
******************************************************************************

  Lors du numro 8, je finissais mon article (sur le concept de "monde
virtuel"), en parlant des diffrentes drogues, je continue donc  partir de
l.

  L'alcool, le tabac, et la TV font partie des drogues lgales, tandis que le
cannabis ne l'est pas, et en voici la raison, que l'on peut dduire:

  Quand une personne boit de l'alcool, sur le coup, elle ne sera pas en tat
de faire tout correctement, et ainsi, jusqu'au lendemain, au rveil, le
travail peut ainsi tre repris quasiment normalement et donc, vous tes
toujours productif, ainsi l'tat autorise l'alcool, car on peut toujours
produire (bien qu'on puisse se demander ce que signifie production dans l'ge
de la simulation), contrairement au cannabis; je m'explique: l'alcool, une
fois pris, libre des barrires mentales que la personne s'est fixe, et
abaisse aussi son attention (ainsi qu'un massacre du foie et de l'estomac),
tandis que le cannabis permet  certaine personne de se reposer et de fuir le
stress de la vie, et durant ce temps, elle reflechit  elle-mme,  sa place
dans la societe, et a, le gouvernement, a lui plat pas.
  Le gouvernement ne vous demande pas de rflchir mais de travailler. Quand
vous allez  l'ecole, au lyce,  la fac, on vous apprend  travailler et
avoir des bases culturelles, et de l'histoire, on ne nous apprend pas 
rflchir,  se poser des questions; il est impos un systme, avec certains
problmes connus, qui ont des rponses connues. En aucun cas, on ne vous
demande de rflchir  une meilleure solution ou de trouver de nouveaux
problmes.
  Seulement voil, le cannabis a un inconvnient comme expliqu dans P.G.K. 8,
il permet de rflchir  soi et c'est tout. Il n'apporte pas de solution
miracle, et pire, vous met en situation latente, voire vous nerve, parce que
vous vous dites que la socit est mal faite, mais vous n'agissez pas donc...
  Comme beaucoup de gens, on se retrouve alors vite en mauvaise posture, c'est
 dire critiquer, sans savoir, sans pouvoir donner de solution ou d'aider 
cette recherche, ou d'expliquer clairement le problme, certains critiquent
mme parce que a leur semble a la mode!
  Quand vous regardez la tl, le taux de passivit est  son maximum, vous ne
faites plus rien. Vous n'agissez pas, vous ne faites que recevoir, certains
regardent des documentaires, soit, mais prenez au moins des notes pendant que
vous les regardez; je sais, a parat chiant et con, mais au moins vos
neurones ragissent. De mme, quand vous lisez un journal, vous ne voyez
qu'une partie des choses, il en faut plus; quand on rve, le cerveau dpense
plus de kilojoules que quand on lit un livre (au cours de notre vie, on
dpense 2,4 kilojoules en lisant et 4 kilos joules en rvant [ce qui peut nous
faire penser qu'en fait, au cours du rve, l'esprit peut enfin se librer de
la viande, pour s'vader en des lieux o il n'y a ni temps ni espace, l se
runissent les idees, et ainsi elles se diffusent, et atterrissent dans
notre inconscient]). Car quand on rve, le cerveau travaille, alors qu'en
lisant, il ne rflchit pas beaucoup, il lit la ralit, ou du moins la vrit
que l'on lui impose, sauf certains livres ractionnaires (ou les e-zines ;-))
...

                                       Bug-in,
                                       buginutopia@multimania.com
                                       http://www.multimania.com/buginutopia/  

******************************************************************************
********************Les codes barres de la norme EAN 13***********************
********************************(Raffaelo)************************************
******************************************************************************

Introduction:

  Ca y est, je suis revenu tout bronz de vacances, et en pleine forme.
  Aujourd'hui, nous allons apprendre  cracker les codes barres... Comment?
Les codes barres? Je croyais qu'on crackait les sharewares...
  Ben voyons, tre un crackeur, c'est pas avoir des sharewares sans payer...
C'est tout un style de vie: un crackeur est curieux, mais pas curieux pour les
choses sans valeur (ce que fait le voisin...), curieux pour savoir comment les
choses marchent! N'avez-vous jamais t curieux de savoir comment les codes
barres marchent?
  Peut-tre avez-vous dj fait des recherches sur internet et que vous avez
trouv des milliers de rponses sans intrt... Et le fonctionnement n'est
pas trs mdiatis! Eh bien, le bon vieux Raffaelo va vous apprendre  les
dchiffrer et  en crer!

Rflexions:

  Si vous avez dj observ attentivement un code barre, vous avez srement
remarqu que le mme chiffre n'est pas toujours cod par la mme srie de
barres...
  Ensuite, les gens pensent souvent que le prix est inscrit dans le code barre
,  ce qui est totalement faux! Si on rflchit un peu, on se rend compte que
le code barre est diffrent pour chaque produit (deux produits diffrents de
mme prix n'ont pas le mme code).
  Et comment font les caisses pour afficher la dsignation du produit sur
l'cran et sur le ticket de caisse? Le code barre doit tre unique pour chaque
produit et ne contient aucune information: c'est seulement un nombre... Alors,
quand on passe  la caisse, le lecteur optique dchiffre et envoie le code 
la machine, qui consulte une norme base de donnes qui contient la
description et le prix associ  chaque code.
  C'est trs pratique, et c'est pour a que le code barre a t cr. Pour
changer le prix d'un produit, il n'y a pas besoin de changer toutes les
tiquettes des botes concernes (comme dans une petite picerie par exemple),
il suffit de changer le prix dans la base de donnes! Autre avantange, on
embrouille le client qui est cens ne rien comprendre aux codes barres.
  Enfin, a doit servir  grer les stocks en enregistrant les quantits de
tel ou tel produit vendu...

Thorie:

Bon, alors, je commence par o??? E.A.N. veut dire European Article Numbering
system, et le 13 signifie que le code a 13 chiffres! Cette norme est
utilise en Europe et un peu partout dans le monde. Par contre, aux USA, ils
utilisent la norme U.P.C. qui signifie Universal Product Code... On va bien
sr parler de la norme utilise en France plus particulirement, qui est la
mme partout en Europe. Prenez n'importe quel objet, et vous verrez ces
petites barres sur le paquet, ou la couverture, etc... Sauf pour les magazines
et journaux qui utilisent une autre norme qui ne fait pas l'objet de ce
tutorial.
  Alors, les codes barres sont composs de barres et de chiffres. Les barres
sont la transcription des chiffres pour que le lecteur optique puisse lire le
code. Les chiffres servent juste aux humains et ne sont d'aucune utilit pour
la machine, incapable de reconnatre les chiffres. Donc, il y a 13 chiffres,
et chaque chiffre est cod par 7 barres verticales. Ces barres sont soit
blanches, soit noires. La machine ne comprend que des 0 ou des 1, alors le
blanc code 0 et le noir 1. Les chiffres sont spars en 3 groupes par des
barres plus longues. Le premier chiffre est tout seul  l'extrieur des barres
 gauche, alors que les autres sont regroups par 6  l'intrieur des barres.
Le premier chiffre n'est pas cod par des barres.
  Chaque code barre a 13 valeurs, des chiffres de 0  9, #0  #12. #0 et #1
indiquent l'origine du produit, #2  #11 donnent le code de l'article et #12
(le 13me et dernier) est une somme de contrle (checksum) qui vrifie la
validit des autres valeurs.
  Voici les 4 tapes du calcul de #12: 


VALEUR A : somme des chiffres en position impaire, donc A = #0 + #2 + #4 + #6
+ #8 + #10


VALEUR B : somme des chiffres en position paire, puis multiplier par 3, donc
B = (#1 + #3 + #5 + #7 + #9 + #11) x 3


VALEUR C : somme de A et B, donc C = A + B


VALEUR D : C modulo 10 (on divise par 10 et on garde le reste de la division,
ce qui revient  garder seulement le chiffre des units de C) puis on
retranche le rsultat  10 si le rsultat est diffrent de 0, donc
D = C (mod 10); if D <> 0 then; 10 - D; endif


  Les codes barres ont des zones vides blanches tout autour, en gnral 10
fois la largeur d'une petite barre. Ces zones sont indispensables, et sans
elles, le code peut tre illisible. Ensuite, il y a 3 groupes de barres
noir/blanc/noir de chaque ct du code et au milieu. Les barres sont plus
longues que les autres et dpassent vers le bas. Elles servent au lecteur  se
caler et s'adapter  la taille du code barre.
  Voici maintenant la partie magique. Accrochez-vous bien... Je vous avais dit
que le mme chiffre n'est pas forcment cod par les mmes barres, et ben
c'est normal: a a t fait pour que le consommateur n'y comprenne rien, et
voici comment a marche: les codes barres utilisent diffrents jeux de
caractres pour reprsenter les valeurs de 0  9. Cela devrait rendre
impossible pour les gens de comprendre ce qui se passe, comme d'habitude, dans
cette socit, les esclaves n'ont pas besoin de s'inquiter du fonctionnement
des choses. Voici les codes graphiques des 3 jeux de caractres:

Ŀ
Valeur Code A         Code B (xor C) Code C (not A)
Ĵ
0      0001101 (13)   0100111 (39)   1110010 (114) 
1      0011001 (25)   0110011 (51)   1100110 (102) 
2      0011001 (19)   0011011 (27)   1101100 (108) 
3      0111101 (61)   0100001 (33)   1000010 (66)  
4      0100011 (35)   0011101 (29)   1011100 (92)  
5      0110001 (49)   0111001 (57)   1001110 (78)  
6      0101111 (47)   0000101 (05)   1010000 (80)  
7      0111011 (59)   0010001 (17)   1000100 (68)  
8      0110111 (55)   0001001 (09)   1001000 (72)  
9      0001011 (11)   0010111 (23)   1110100 (116) 


  Les barres plus longues des bords sont reprsents par 101 et celle du
centre par 01010.
  Ensuite, ce n'est pas fini! Les chiffres  gauche de la barre du milieu et
ceux  droite n'utilisent pas les mmes jeux de caractres... La premire
moiti du code barre ( gauche) est code avec les jeux A et B, alors que la
deuxime moiti ( droite) est code uniquement avec le jeu C. En plus, les
jeux A et B sont utilis avec une combinaison qui dpend de la valeur du
premier chiffre du code barre, #0:

Ŀ
Valeur de #0   #1     #2     #3     #4     #5     #6
Ĵ
0              A      A      A      A      A      A 
1              A      A      B      A      B      B 
2              A      A      B      B      A      B 
3              A      A      B      B      B      A 
4              A      A      B      B      B      A 
5              A      B      B      A      A      B 
6              A      B      B      B      A      A 
7              A      B      A      B      A      B 
8              A      B      A      B      B      A 
9              A      B      B      A      B      A 


  Ah, les stupides consommateurs ne comprendrons jamais pourquoi les mmes
valeurs donnent des barres diffrentes! Rien n'est aussi fiable que les codes
barres! =]. Nous allons voir concrtement maintenant comment dchiffrer un
code barre...
  Prenons comme exemple le livre "Assembleur" de chez Marabout. Le code est
9 782501 011761. Alors, on a 9 78 donc c'est un livre. Le premier chiffre est
9 donc la combinaison des jeux de caractres A et B pour les valeurs #1  #6
est ABBABA, et pour les valeurs #7  #12, c'est toujours CCCCCC. La somme des
chiffres en position impaire est 9 + 8 + 5 + 1 + 1 + 7 = 31, et la somme des
chiffres en position paire multiplie par 3 est (7 + 2 + 0 + 0 + 1 + 6) x 3 =
48. Ensuite, 31 + 48 = 79 et donc 79 (mod 10) = 9. Enfin, comme 9 est
diffrent de 0 (si si, j'vous jure...), on fait 10 - 9 = 1 et le dernier
chiffre, la somme de contrle, est 1.
  Deuxime exemple, on prend le livre "Accder  tout l'internet par e-mail",
de chez Marabout lui aussi. On a le code, et on voudrait gnrer les barres...
Le code est 9 782501 031752. On regarde le premier chiffre, qui est un 9, et
on jette un coup d'oeil dans le petit tableau. La combinaison est donc
ABBABA CCCCCC. On fait afficher le 9  gauche des barres, puis la longue barre
 gauche: 101 mais qui dpasse vers le bas. Ensuite, on va coder les 6
premiers chiffres #1  #6: on regarde dans le premier tableau. #1 est cod
avec le jeu A, et c'est un 7, donc a donne 0111011. #2 est un 8, mais il est
cod avec le jeu B, donc il faut mater dans la deuxime colonne: 0001001...etc
...#6 est un 1, et il est cod avec le jeu A, donc on a 0001101. Maintenant
qu'on a transcrit les chiffres en barres, on affiche toutes les traductions en
0 et 1  la suite. Lorsqu'on a un 0, on affiche une barre blanche, et quand
c'est un 1, c'est une barre noire. On affiche alors les barres de #1  #6, ce
qui donne 011101100010010011011011000101001110011001 pour la premire moiti.
Ensuite on fait afficher la longue barre du milieu: 01010, puis on continue
avec les 6 derniers chiffres. Enfin, on fait afficher la longue barre  droite
: 101 et on affiche les chiffres sous le code barre. Surtout, il ne faut pas
oublier les espaces vierges blancs tout autour du code barre. Et voil, on
peut construire n'importe quel code barre  partir des chiffres!

Pratique:

  Ben maintenant que vous savez la thorie, la pratique ne devrait pas poser
de problme particulier... Vous savez dchiffrer et gnrer les codes barres,
alors a devrait aller. Je vais quand mme vous donner quelques petits
conseils.
  D'abord, vous n'allez pas faire vos codes  la main! Il vous faut un
logiciel... Il y en a un inclus dans Corel Draw 8 (mme dans la version dmo)
qui fait des codes dans pas mal de normes, mais vous pouvez aussi chercher
sur internet. Pour vous pargner du temps, je vous dis quand mme comment
ils s'appellent: AnyLabel (pour tiquettes mais fait aussi les codes barres
dans plusieurs normes) et CodeBar (uniquement des codes barres EAN 13). Je
vous apprends pas  chercher efficacement, vous devriez savoir... Si vous
savez chercher par e-mail, c'est encore mieux.
  Sinon, ce qui est franchement le mieux, c'est de programmer son propre
logiciel de code barres dans votre langage prfr. Si vous ne savez pas
programmer, faites-en un en Visual Basic en trs peu de temps, le VB est trs
nul, fait des programmes lents et gros mais c'est facile...
  Personnellement, j'en ai fait un sur ma calculatrice (j'avais pas accs 
l'ordinateur quand je l'ai fait), la TI-89. Pour l'imprimer, je connecte la
TI-89  l'ordinateur et je fait une capture d'cran. Je vais bientt en faire
un en Delphi aussi, quand j'aurai le temps...
  Voil, maintenant vous avez fait un code barre et vous l'avez imprim sur
une tiquette autocollante, et vous vous demandez bien s'il marche... Pas
d'inquitude  avoir! Les lecteurs optiques ont une grande tolrance: ils
doivent reconnatre des codes barres trs diffrents sur chaque produit!
Certains sont petits, d'autres gros, certains hauts et fins, d'autres
dforms parce qu'ils sont colls sur des bouteilles rondes... Ils
reconnatraient mme les codes barres vert et rouge fluo avec des chiffres
crits  la main, mais c'est pas trs discret pour passer  la caisse! Une
fois que vous avez imprim un code barre, passez le sur une borne
"information" au supermarch. Ca marche  chaque fois, mais il vaut mieux
vrifier quand mme, et a rassure...
  Ensuite, essayez le code barre sur le produit qu'il dsigne et passez  la
caisse avec. La caissire ne devrait rien remarquer, et il n'y a pas d'
inquitude  avoir du ct du lecteur optique. Franchement, la caissire qui
passe toute sa journe  faire dfiler des produits ne devrait pas se rendre
compte qu'un code barre a t coll par-dessus le vrai. Normalement, les
vrais sont directement imprims sur l'emballage. Si jamais elle remarquait
(trs improbable) quelque chose, personne ne peut savoir que c'est vous qui
avez coll l'tiquette par-dessus. Comment un simple consommateur saurait
comment les codes barres marchent? Il y a eu une erreur, et vous avez
simplement pris la mauvaise bote dans le rayon...
  Ensuite, vous pouvez passer aux choses srieuses: vous trouvez un bon livre,
mais bien cher. Qu' cela ne tienne: vous cherchez un livre moins cher, et
vous relevez son code barre. Vous rentrez chez vous et vous imprimez une
tiquette avec le code barre du livre pas cher. Vous retournez au magasin et
collez l'tiquette sur le livre cher qui vous intresse. Vous paierez le livre
cher au prix du pas cher! C'est bien sr illgal, mais vous prenez vos
responsabilits, et de toute faon, vous n'tes pas au courant des codes
barres, hein? ;-]
  Autre chose, ne collez pas le code barre d'un livre sur une bouteille de
champagne! Dbrouillez-vous pour trouver une bouteille de champagne moins
chre que celle que vous dsirez... La seule chose "risque" est que les deux
produits doivent avoir presque la mme description sur l'cran de la caisse
pour ne pas attirer l'attention. Dernier conseil: ne changez qu'un code barre
 la fois, et achetez quelques autres articles avec... C'est tout, vous voil
savant!

Le mot de la fin:

  Ben j'espre que vous avez pas eu trop de mal  suivre ce tutorial assez
inhabituel, parce que j'ai eu un peu de mal  expliquer et  organiser mes
ides. Si je n'ai pas t assez clair sur un point, envoyez-moi un message, et
je me ferais un plaisir de vous rpondre... Ca fait toujours plaisir de savoir
qu'on n'a pas pass du temps pour rien, et que a sert  quelqu'un.
  Bon, peut-tre que je parlerai dans un prochain tutorial des codes barres
des magazines, mais pour l'instant, je sais pas trop comment a marche... Mais
je vais les tudier! Comme je rpte souvent, il faut avoir l'esprit libre,
cracker dans la vie de tous les jours... Pour moi, cracker ne signifie pas
pirater ni illgal, mais apprendre et comprendre.

Allez,  + et bon crack !

Ecrivez-moi  raffaelo@ifrance.com pour vos critiques, compliments, conseils,
autres mthodes, demande d'claircissement, demande de crack sur un programme
particulier...
                                       Raffaelo, raffaelo@ifrance.com
                                       http://zone14.cjb.net

******************************************************************************
***********************Lettre au Procureur de Justice*************************
********************************(Bug-in)**************************************
******************************************************************************

"Mr. ou Mme. le Procureur de Justice,
Je vous demande dans la prsente lettre, les 3 choses suivantes:

1. Pourquoi doit-t-on payer pour connatre l'information [Moi mme par le
prsent courrier, j'ai pay plus de 20 Francs pour tre inform] (de toutes
sortes, sur tout support)? A qui appartient-elle? Pourquoi doit-on payer pour
que justice soit faite? N'est-t-il pas logique que la Justice soit rendue
gratuitement, permettant ainsi  chacun le droit d'tre, d'attaquer ou d'tre
dfendu contre les injustices.

2. Dans le mme ordre d'ides, pouvez-vous me faire parvenir gratuitement le
CODE CIVIL dans son intgralit afin que je puisse connatre mes droits et
devoirs, car une des seules choses que l'on m'a apprise  l'cole, c'est les
droits de l'Hommes; hors ceux-ci prcisent que nul ne peut ignorer la loi, si
la loi me force  la connatre, en toute logique, un exemplaire du CODE CIVIL
devrait tre donn  la naissance de chaque enfant.

  Dsirant combler cette lacune de connaissance, qui me mettrait hors-la-loi,
je vous demande par la prsente lettre de me l'envoyer. Tenez compte, je vous
prie, du fait que si vous ne me l'envoyez pas, vous serez dans l'illgalit,
puisce que vous m'empchez de connatre mes droits et devoirs. Dans ce cas,
vous me verrez dans l'obligation de vous attaquer en justice pour non-respect
des droits de l'Homme et de la loi (je prendrai comme chance: pas de
rponse en 1 an).

3. Dans un tout autres genre d'ide, je voudrais savoir quand vous prendrez
les mesures d'obliger d'imposer une mme calculatrice  ceux qui passent leur
bac, de manire  ce qu'ils soient tous sur le mme pied d'galit; en effet,
vous remarquerez que tout le monde n'est pas issu de la mme classe sociale,
et que personne n'a la mme somme  mettre dans une calculatrice, certaines
permettant des calculs plus performants que d'autres, l'ingalit devant les
problmes  rsoudre s'amenuise.

  Est-il prvu, donc, d'imposer une calculatrice commune  tous les bacheliers
, si non, vous remarquerez qu'il y a ici une ingalit, et que tant qu'elle ne
sera pas rsolue, je ferai parvenir une lettre du mme type.

  Evidemment, il est logique de choisir pour une calculatrice commune la moins
chre des plus performantes, o d'avoir des prix pour que chacun puisse se la
procurer.

  Conscient que vous ne pourrez peut-tre pas rpondre  toutes ces questions
(surtout la n3), je vous demande de les faire parvenir aux services
comptents (ce qui ne vous cotera rien).

  Ou de me faire parvenir leurs adresse Internet (de prfrence), ou crite si
il n'y en a pas.

  Cela ne fera que ralentir les procdures, de toutes faons, de la part de
votre Hirarchie et de l'Administration, a ne serai pas tonnant, je me
contenterai de mettre la mme chose dans que dans la prsente lettre en
prcisant bien sr que vous n'avez pas pu (ou voulu) les faire parvenir vous-
mme, me rendant la tche plus difficile.

  Je tiens  prciser que la copie de cette lettre sera expose sur Internet,
au public, et que vos rponses  mes propos aussi.

  Dans l'attente d'une rponse, veuillez recevoir mes salutations les plus
respectueuses."

                                       buginutopia@multimania.com 
                                       http://wwww.multimania.com/buginutopia

  Cette lettre a donc t envoye par Bug-in, et il attend toujours une
rponse, sans grand espoir...
                             
******************************************************************************
***************************Cours d'assembleur (suite)*************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************


          ͻ
                       Cours d'Assembleur par Adam                Ŀ
                                                                   
                                 PARTIE V                          
          ͼ 
            


         Ŀ
                                                                   
                         RESUME DU JEU D'INSTRUCTIONS              
                                                                   
         



    ADC <DEST>, <SOURCE>        - Nom : Ajout + Dplacement
                                   Type: 8086+

                                   Description: Cette instruction ajoute la   
                                   valeur de <SOURCE> dans <DEST>, de mme que
                                   celle du carry flag, qui sera un 1 ou un 0.

                                   Logiquement, DEST = DEST + SOURCE + CF

                                   Ex: ADC AX, BX


    ADD <DEST>, <SOURCE>        - Nom : Ajout
                                   Type: 8086+

                                   Description: Cette instruction ajoute les
                                   valeur de <SOURCE> et <DEST>, et stocke le
                                   rsultat en <DEST>.

                                   Ex: ADD AX, BX


    AND <DEST>, <SOURCE>        - Nom : ET Boolen 
                                   Type: 8086+

                                   Description: Cette instruction ralise une
                                   comparaison bit  bit de <DEST> et <SOURCE>
                                   , et crit le rsultat dans <DEST>.

                                   Ex: AND 0, 0     = 0
                                       AND 0, 1     = 0
                                       AND 1, 0     = 0
                                       AND 1, 1     = 1


    BT <DEST>, <NUMERO DE BIT>  - Nom : Test de Bit
                                   Type: 80386+

                                   Description: Cette instruction teste le bit
                                   <NUMERO DE BIT> de <DEST>, qui peut tre
                                   aussi bien un  registre 16 ou 32 bit, ou
                                   mme une adresse mmoire. Si <DEST> est un
                                   nombre 16 bit, alors le bit <NUMERO DE BIT>
                                   est compris entre 0 et 15, et si <DEST> est
                                   un nombre 32 bit, le bit <NUMERO DE BIT>
                                   est compris entre 0 et 31.

                                   La valeur contenue dans le bit <NUMERO DE
                                   BIT> de <DEST> est ensuite copie dans le
                                   carry flag.

                                   Ex: BT   AX, 3
                                       JC   EgalA1


    CALL <DEST>                 - Nom : Appel de Procdure
                                   Type: 8086+

                                   Description: Cette instruction appelle
                                   simplement une sous-routine. En des termes
                                   plus techniques, elle met l'adresse de la
                                   prochaine instruction, IP, en haut de la
                                   pile, et ensuite, met le Pointeur d'
                                   Instruction, IP,  la valeur spcifie par
                                   <DEST>.

                                   Ex: CALL MaProcdure


    CBW                          - Nom : Convertir un octet en word
                                    Type: 8086+

                                    Description: Cette instruction tent
                                    l'octet de AL  AX.

                                    Ex: MOV   AL, 01h
                                        CBW
                                        ADD   BX, AX   ; N'importe quoi avec 
                                                         AX


    CLC                          - Nom : Efface le Carry Flag
                                    Type: 8086+

                                    Description: Cette instruction efface le 
                                    carry flag dans le registre des flags en
                                    le mettant  0.

                                    Ex: CLC


    CLD                          - Nom : Efface le Direction Flag
                                    Type: 8086+

                                    Description: Cette instruction efface le
                                    direction flag dans le registre des flags
                                    en le mettant  0. Quand le direction
                                    flag est  0, n'importe quelle chane
                                    d'instructions augmente les registres
                                    d'index SI et DI.

                                    Ex: CLD


    CLI                          - Nom : Efface l'Interrupt Flag
                                    Type: 8086+

                                    Description: Cette instruction efface l' 
                                    interrupt flag dans le registre des flags
                                    en le mettant  , puis en dsactivant les
                                    interruptions hardware.

                                    Ex: CLI


    CMC                          - Nom : Complte le Carry Flag
                                    Type: 8086+

                                    Description: Cette instruction vrifie la
                                    valeur dans le carry flag. Si c'est 0 - a
                                    passe  1, et si c'est 1 - a passe  0.

                                    Ex: BT   AX, 1    ; Teste le premier bit
                                                        de AX
                                        JC   EgalA1
                                        JMP  Done

                                        EgalA1:
                                        CMC           ; Met le CF  0

                                        Done:


    CMP <VALEUR1>, <VALEUR2>     - Nom : Compare deux entiers
                                    Type: 8086+

                                    Description: Cette instruction compare
                                    <VALEUR1> et <VALEUR2> et reflte la
                                    comparaison dans les flags.

                                    Ex: CMP AX, BX

                                    Voir aussi l'instruction Jcc.


    CWD                          - Nom : Convertir un Word en Doubleword
                                    Type: 8086+

                                    Description: Cette instruction tend le
                                    word dans AX  une paire en DX:AX.

                                    Ex: CWD


    DEC <VALEUR>                 - Nom : Diminue
                                    Type: 8086+

                                    Description: Cette instruction soustrait
                                    1 du nombre dans <VALEUR> et y stocke
                                    le rsultat.

                                    Ex: DEC AX


    DIV <VALEUR>                 - Nom : Division Relative
                                    Type: 8086+

                                    Description: Cette instruction divise 
                                    <VALEUR> par soit AX pour un octet, soit
                                    DX:AX pour un word ou EDX:EAX pour un
                                    doubleword.

                                    Pour un octet, le quotient est inscrit en
                                    AL et le reste (de la division) en AH;
                                    pour un word, le quotient est inscrit en
                                    AX et le reste en DX; et pour un DWORD
                                    (doubleword), le quotient est inscrit en
                                    EAX et le reste en EDX.

                                    Ex: MOV   AX, 12
                                        MOV   BH, 5
                                        DIV   BH
                                        MOV   Quotient, AL
                                        MOV   Reste, AH


    IN <ACCUMULATEUR>, <PORT>    - Nom : Entre du port I/O (Input/Output:
                                          Entre/Sortie)
                                    Type: 8086+

                                    Description: Cette instruction lit une
                                    valeur d'un des 65536 ports matriels dans
                                    l'accumulateur spcifi.

                                    AX et AL sont gnralement utiliss pour
                                    les ports d'entre, et DX pour identifier
                                    le port.

                                    Ex: IN    AX, 72h

                                        MOV   DX, 3C7h
                                        IN    AL, DX


    INC <VALEUR>                 - Nom : Augmente 
                                    Type: 8086+

                                    Description: Cette instruction ajoute 1 au
                                    nombre contenu dans <VALEUR>, et y crit
                                    le rsultat.

                                    Ex: MOV   AX, 13h   ; AX = 13h
                                        INC   AX        ; AX = 14h


    INT <INTERRUPTION>           - Nom : Gnre une Interruption
                                    Type: 8086+

                                    Description: Cette instruction sauvegarde
                                    les flags courants et le pointeur d'
                                    instruction sur la pile, et ensuite
                                    appelle l'<INTERRUPTION> base sur la
                                    valeur en AH.

                                    Ex:   MOV   AH, 00h   ; Passe en mode
                                                            vido
                                          MOV   AL, 13h   ; Mode vido 13h
                                          INT   10h       ; Gnre une
                                                            interruption


    Jcc                          - Nom : Saut si Condition
                                    Type: 8086+

   Je ne vais pas me rpter pour les 32, vous n'avez qu' regarder dans le
   Tutorial 3 pour avoir la liste complte. Gardez  l'esprit que ce serait
   une bonne ide d'utiliser CMP, OR, DEC ou quelque chose de semblable avant
   d'utiliser une de ces instructions :) .

   Ex: DEC   AX
       JZ    AX_A_Atteint_0


    JMP <DEST>                   - Nom : Saut
                                    Type: 8086+

                                    Description: Cette instruction charge
                                    simplement une nouvelle valeur, <DEST>,
                                    dans l'IP, puis transfre le programme
                                     une autre partie du code.

                                    Ex: JMP   MyLabel


    LAHF                         - Nom : Remplit AH avec des flags
                                    Type: 8086+

                                    Description: Cette instruction copie les
                                    bas octets des registres de flags dans AH.
                                    Le contenu d'AH ressemblera  a aprs
                                    que l'instruction ait t excute:


              Ŀ
               Flag  SF  ZF  --  AF  --  PF  --  CF 
              Ĵ
               Bit   07  06  05  04  03  02  01  00 
              

            Vous pouvez maintenant tester les bits individuellements, ou
          raliser une instruction similaire  la suivante pour obtenir un
          flag individuel:

          Ex: LAHF
              SHR   AH, 6
              AND   AH, 1   ; AH contaient maintenant le flag ZF


    LEA <DEST>, <SOURCE>         - Nom : Charge une Adresse Effective
                                    Type: 8086+

                                    Description: Cette instructrion charge
                                    l'adresse mmoire dans laquelle est
                                    <SOURCE>, dans <DEST>.

                                    Ex: J'utilise LEA   SI, Str dans une de
                                        mes procdure qui affiche trs
                                        rapidement une chane  l'cran.


    LOOP <LABEL>                 - Nom : Diminue CX et effectue un
                                          Branchement
                                    Type: 8086+

                                    Description: Cette instruction est une 
                                    forme de la boucle "For... Do" qui existe
                                    dans de nombreux langages haut-niveau.
                                    En fait; cela renvoie a un label (nom
                                    donn  une srie d'instructions), ou
                                    une adresse mmoire, jusqu' ce que
                                    CX = 0.

                                    Ex: MOV   CX, 12

                                        PeuImporte:
                                           ;...
                                           ;...
                                           ;... Ca va tre rpt 12 fois

                                        LOOP PeuImporte


    Lseg <DEST>, <SOURCE>        - Nom : Charge le registre de segment
                                    Type: 8086+

                                    Description: Cette instruction existe
                                    sous plusieurs formes. Toutes acceptent la
                                    mme syntaxe, dans laquelle <SOURCE> est
                                    un pointeur 48 bit, constitu d'un offset
                                    32 bit et d'un slecteur 16 bit. L'offset
                                    32 bit est charg dans <DEST>, et le
                                    slecteur est charg dans le registre de
                                    segment spcifi par seg.

                                    Les formes suivantes existent:

                                    LDS
                                    LES
                                    LFS     * 32-bit
                                    LGS     * 32-bit
                                    LSS

                                    Ex: LES   SI, Un_Pointeur


    MOV <DEST>, <SOURCE>         - Nom : Dplacement de donnes
                                    Type: 8086+

                                    Description: Cette instruction copie
                                    <SOURCE> dans <DEST>.

                                    Ex: MOV   AX, 3Eh
                                        MOV   SI, 12h


    MUL <SOURCE>                 - Nom : Multiplication Relative
                                    Type: 8086+

                                    Description: Cette instruction multiplie
                                    <SOURCE> par l'accumulateur, qui dpend de
                                    la taille de <SOURCE>.

                                    Si <SOURCE> est un octet:  

                                    * AL est le multiplicateur;
                                    * AX est le produit.

                                    Si <SOURCE> est un word:   

                                    * AX est le multiplicateur;
                                    * DX:AX est le produit.

                                    Si <SOURCE> est un doubleword:   

                                    * EAX est le multiplicateur;
                                    * EDX:EAX est le produit.

                                    Note: Les flags sont laisss tels quels
                                    sauf pour OF et CD, qui sont remis  0
                                    si le haut octet, le word ou le dword du
                                    produit est 0.

                                    Ex: MOV   AL, 3
                                        MUL   10
                                        MOV   Rsultat, AX


    NEG <VALEUR>                 - Nom : Ngation
                                    Type: 8086+

                                    Description: Cette instruction soustrait
                                    <VALEUR>  0, donnant une ngation  2
                                    complments de <VALEUR>.

                                    Ex: MOV   AX, 03h
                                        NEG   AX       ; AX = -3


    NOT <VALEUR>                 - Nom : Complment Boolen
                                    Type: 8086+

                                    Description: Cette instruction inverse  
                                    l'tat de chaque bit de <VALEUR>.

                                    Ex: NOT   CX


    OR <DEST>, <SOURCE>          - Nom : OU Boolen
                                    Type: 8086+

                                    Description: Cette instruction ralise une
                                    opration de OU Boolen entre chaque bit
                                    de <DEST> et de <SOURCE>, et crit le
                                    rsultat dans <DEST>.

                                    Ex: OR 0, 0     = 0
                                        OR 0, 1     = 1
                                        OR 1, 0     = 1
                                        OR 1, 1     = 1


    OUT <PORT>, <ACCUMULATEUR>   - Nom : Sortie vers un Port
                                    Type: 8086+

                                    Description: Cette instruction envoye la 
                                    valeur  l'accumulateur dans <PORT>. En
                                    utilisant le registre DX pour passer le
                                    port avec OUT, vous pouvez accder 
                                    65536 ports.

                                    Ex: MOV   DX, 378h
                                        OUT   DX, AX


    POP <REGISTRE>               - Nom : Remplir Registre
                                    Type: 8086+

                                    Description: Cette instruction enlve la
                                    valeur courante de la pile et la place
                                    dans <REGISTRE>.

                                    Ex: POP   AX


    POPA                         - Nom : Remplir tous les Registres Gnraux
                                    Type: 80186+

                                    Description: Cette instruction remplit
                                    tous les registres 16 bit gnraux 
                                    l'aide de la pile, sauf SP.

                                    C'est la mme chose que:

                                    POP   AX
                                    POP   BX
                                    POP   CX
                                    ...

                                    Ex: POPA


    POPF                         - Nom : Sparer la Pile en Flags
                                    Type: 8086+

                                    Description: Cette instruction clate les
                                    bas octets de la pile en flags.

                                    Ex: POPF


    PUSH <REGISTRE>              - Nom : Mettre un Registre en haut
                                    Type: 8086+

                                    Description: Cette instruction pousse
                                    <REGISTRE> en haut de la pile.

                                    Ex: PUSH  AX


    PUSHA                        - Nom : Mettre tous les Registres Gnraux
                                          sur la Pile
                                    Type: 80186+

                                    Description: Cette instruction pousse tous
                                    les registres 16 bit gnraux en haut de
                                    la pile.

                                    C'est la mme chose que:

                                    PUSH  AX
                                    PUSH  BX
                                    PUSH  CX
                                    ...

                                    Ex: PUSHA


    PUSHF                        - Nom : Mettre les Flags dans la pile
                                    Type: 8086+

                                    Description: Cette instruction met les
                                    bas octets des flags dans la pile.

                                    Ex: PUSHF


    REP                          - Nom : Rpter l'instruction suivante
                                    Type: 8086+

                                    Description: Cette instruction rpte
                                    la suivante le nombre de fois spcifi
                                    dans le registre CX.

                                    Ex: MOV   CX, 6
                                        REP   STOSB    ; Stocke 6 octets


    RET                          - Nom : Renvoi au plus proche      
                                    Type: 8086+

                                    Description: Cette instruction met dans IP
                                    la valeur qu'il contenait avant le dernier
                                    CALL. RET, ou RETF pour un saut, doit
                                    tre utilis lorsqu'on programme
                                    uniquement en assembleur.

                                    Ex: RET


    ROL <DEST>, <VALEUR>         - Nom : Effectue une rotation vers la gauche
                                    Type: 8086+

                                    Description: Cette instruction effectue
                                    une rotation de <DEST> <VALEUR> fois. Une
                                    rotation consiste  dplacer <DEST> une
                                    fois, ensuite transfrer le bit dplac
                                    de la plus haute  la plus basse position
                                    de <DEST>.

                                    Ex: ROL   AX, 3


    ROR <DEST>, <VALEUR>         - Nom : Effectue une rotation vers la droite
                                    Type: 8086+

                                    Description: Cette instruction effectue
                                    une rotation de <DEST> <VALEUR> fois. Une
                                    rotation consiste  dplacer <DEST> une
                                    fois, ensuite transfrer le bit dplac
                                    de la plus basse  la plus haute position
                                    de <DEST>.

                                    Ex: ROR    BX, 5


    SAHF                         - Nom : Stocke Ah dans les flags
                                    Type: 8086+

                                    Description: Cette instruction charge le
                                    contenu du registre AH dans les bits
                                    7, 6, 4, 2 et 0 du registre des flags.

                                    Ex: SAHF


    SBB <DEST>, <SOURCE>         - Nom : Soustraction avec Emprunt
                                    Type: 8086+

                                    Description: Cette instruction soustrait
                                    <SOURCE>  <DEST>, et diminue <DEST> de 1
                                    si le carry flag est  1, stockant le
                                    rsultat dans <DEST>.

                                    Donc, <DEST> = <DEST> - <SOURCE> - CF

                                    Ex: SBB   AX, BX


    SHL <DEST>, <VALEUR>        - Nom : Dplacement vers la gauche
                                   Type: 8086+

                                   Description: Cette instruction dplace
                                   <DEST> vers la gauche de <VALEUR>. Je vais
                                   pas recommencer  expliquer la thorie des
                                   dplacements. Si vous n'tes pas sr de
                                   comprendre, cette instruction, rfrez-vous
                                   au tutorial 4.

                                   Ex: SHL   AX, 5


    SHR <DEST>, <VALEUR>        - Nom : Dplacement vers la droite
                                   Type: 8086+

                                   Description: Cette instruction dplace
                                   <DEST> vers la droite de <VALEUR>. Rfrez-
                                   vous au tutorial 4 pour la thorie des
                                   dplacements.

                                   Ex: SHR   DX, 1


    STC                         - Nom : Active le Carry Flag
                                   Type: 8086+

                                   Description: Cette instruction donne au
                                   Carry flag la valeur de 1.

                                   Ex: STC


    STD                         - Nom : Active le Direction Flag
                                   Type: 8086+

                                   Description: Cette instrucion donne au
                                   carry flag la valeur de 1 [NONO: ne serait-
                                   ce pas plutt au direction flag?]. Cela
                                   ordonne de diminuer les registres d'index.

                                   Ex: STD
                                       REP STOSB   ; DI est diminu


    STI                         - Nom : Active l'Interrupt Flag
                                   Type: 8086+

                                   Description: Cette instruction donne  l'
                                   interrupt flag la valeur de 1, ce qui
                                   permet des interruptions matrielles.

                                   Ex: CLI      ; Stoppe les interruptions
                                       ...      ; Ralise une fonction
                                                  importante
                                       STI      ; Permet les interruptions


    STOS                        - Nom : Stocke une chane
                                   Type: 8086+

                                   Description: Cette instruction existe sous
                                   les formes suivantes:

                                   STOSB      - Stocke un octet      - AL
                                   STOSW      - Stocke un word       - AX
                                   STOSD      - Stocke un doubleword - EAX

                                   Cette instruction crit le contenu de
                                   l'accumulateur  l'adresse mmoire
                                   indique par ES:DI. Ensuite, elle augmente
                                   ou diminue DI suivant les instructions,
                                   et suivant la valeur dans le direction
                                   flag.

                                   Ex: MOV   AX, 0A000h
                                       MOV   ES, AX
                                       MOV   AL, 03h
                                       MOV   DI, 0
                                       STOSB           ; Stocke 03 en ES:DI,
                                                       ; ce qui est en fait
                                       ; le haut de l'cran en mode 13h


    SUB <DEST>, <SOURCE>        - Nom : Soustraire
                                   Type: 8086+

                                   Description: Cette instruction soustrait
                                   <SOURCE> de <DEST>, stockant le rsultat
                                   dans <DEST>.

                                   Ex: SUB   ECX, 12


    TEST <DEST>, <SOURCE>       - Nom : Test des Bits
                                   Type: 8086+

                                   Description: Cette instruction ralise une
                                   opration ET bit--bit sur <SOURCE> et
                                   <DEST>. Le rsultat est reflet dans les
                                   flags, et ils sont activs comme aprs
                                   une opration ET.

                                   Ex: TEST   AL, 0Fh   ; Vrifie si il y a
                                                        ; des bits dans le bas
                                                        ; nibble d'AL


    XCHG <VALEUR1>, <VALEUR2>   - Nom : Echange
                                   Type: 8086+

                                   Description: Cette instruction change les
                                   valeurs dans <VALEUR1> et <VALEUR2>.

                                   Ex: XCHG   AX, BX


    XOR <DEST>, <SOURCE>        - Nom : OU Boolen Exclusif
                                   Type: 8086+

                                   Description: Cette instruction ralise une
                                   opration de OU exclusif bit--bit entre
                                   <SOURCE> et <DESt>. L'opration est la
                                   suivante:

                                   XOR   0, 0    = 0
                                   XOR   0, 1    = 1
                                   XOR   1, 0    = 1
                                   XOR   1, 1    = 0

                                   Ew: XOR   AX, BX


 

Ouf! Il y en a beaucoup, et on a seulement vu les basiques! Vous n'tes pas
cens tous les comprendre. Vous avez probablement vu des choses comme
"ngation  2 complments" et pens: "Qu'est ce que a veut bien dire?".

Mais ne vous en inquitiez pas pour le moment. On va continuer  notre rythme
habituel, and introduire les nouvelles instructions une  une, en les
expliquant. Si vous avez dj tout compris, eh bien considrez ceci comme un
bonus. Vous remarquerez aussi qu'il y avait de nombreuses instructions 8086.
Il y a pour le moment peu de situations ncessitant l'emploi d'instructions
386 ou 486, sans parler des pour les Pentium [NONO: videmment, cela n'est
plus trs vrai aujourd'hui. Tout au plus on peut dire que les instructions
KNI pour le Pentium III ne sont sans doute pas trop utilises pour le moment].

De toute faon, avant de passer au VGA, je vais juste lister la vitesse 
laquelle chacune des instructions ci-dessus s'excute, pour que vous
ayez une ide de la vitesse de vos routines en Assembleur.


 

 Instruction      Battements d'horloge    Battements d'horloge
                        386                    486

 

    ADC                  2                     1
    ADD                  2                     1
    AND                  2                     1
    BT                   3                     3
    CALL                 7+m                   3
    CBW                  3                     3
    CLC                  2                     2
    CLD                  2                     2
    CLI                  5                     3
    CMC                  2                     2
    CMP                  2                     1
    CWD                  2                     3
    DEC                  2                     1
    DIV                  -                     -
        - Octet          9-14                  13-18
        - Word           9-22                  13-26
        - DWord          9-38                  13-42
    IN                   12/13                 14
    INC                  2                     1
    INT                  dpend                dpends
    Jcc                  -                     -
        - Branchement    7+m                   3
        - Pas de Branch. 3                     1
    JMP                  7+m                   3
    LAHF                 2                     3
    LEA                  2                     1
    LOOP                 11                    6
    Lseg                 7                     6
    MOV                  2                     1
    MUL                  -                     -
        - Octet          9-14                  13-18
        - Word           9-22                  13-26
        - DWord          9-38                  13-42
    NEG                  2                     1
    NOT                  2                     1
    OR                   2                     1
    OUT                  10/11                 16
    POP                  4                     1
    POPA                 24                    9
    POPF                 5                     9
    PUSH                 2                     1
    PUSHA                18                    11
    PUSHF                4                     4
    REP                  dpend                dpend
    RET                  10+m                  5
    ROL                  3                     3
    ROR                  3                     3
    SAHF                 3                     2
    SBB                  2                     1
    SHL                  3                     3
    SHR                  3                     3
    STC                  2                     2
    STD                  2                     2
    STI                  3                     5
    STOS                 4                     5
    SUB                  2                     1
    TEST                 2                     1
    XCHG                 3                     3
    XOR                  2                     1

 Note: m = Nombre de composants dans la prochaine instruction excute.

Oh, je ne veux plus jamais voir un tableau comme celui-ci! Maintenant, passons
 la partie "amusante" - le VGA!


 

Vous avez probablement remarqu que votre carte vido a plus de 256K de RAM.
Mme si vous avez seulement 256K de RAM, comme c'est le cas sur mon vieux 386,
vous pouvez accder au mode 13h - 320x200x256. Cependant, cela soulve
quelques problmes.

Multipliez 320 par 200 et vous remarquerez que vous avez seulement besoin de
64000 octets pour stocker un simple cran.

Eh bien, le VGA est dispos en plans, comme ceci:


                     3Ŀ
                   2Ŀ 
                 1Ŀ  
               0Ŀ   
                                  
                                  
                    64,000       
                                
                               
               

Chaque plan fait 64000 octets. Voici comment a marche:

 Un pixel en 0, 0 est dfini dans le plan 0  l'offset 0;
 Un pixel en 1, 0 est dfini dans le plan 1  l'offset 0;
 Un pixel en 2, 0 est dfini dans le plan 2  l'offset 0;
 Un pixel en 3, 0 est dfini dans le plan 3  l'offset 0;
 Un pixel en 4, 0 est dfini dans le plan 0  l'offset 1...et ainsi de suite..

Parce que les pixels sont enchans sur les quatre okans, il est impossible
d'utiliser plusieurs pages en mode 13h sans recourir  un cran virtuel ou
quelque chose dans le genre.

La rpartition (mapping) automatique des pixels est compltement effectue par
la carte vido, aussi vous pouvez tranquillement travailler dans rien
connatre  ce sujet, si a vous chante.

On verra a plus tard, en utilisant un mode spcial, connu sous le nom de
Mode X, mais pour le moment, voyons voir ce que l'on peut dj faire avec ce
bon vieux mode 13h.


 

         Ŀ
                                                                   
                              DESSINER DES LIGNES                  
                                                                   
         


Bon, on a un peu dpass la taille prvue pour ce tutorial, et j'avais prvu
de voir l'Algorithme de Bresenham pour des Lignes, mais a devra attendre la
semaine prochaine. Cependant, on va dj voir comment dessiner une ligne en
Assembleur.


  Un Routine pour afficher une Ligne Horizontale en Assembleur:
 ---------------------------------------------------------------

Dj, on va envoyer ES en VGA.

Ceci devrait faire l'affaire:

   MOV   AX, 0A000h
   MOV   ES, AX

Maintenant, on doit lire X1, X2 et les valeurs de Y dans les registres, avec
quelque chose comme a:

   MOV   AX, X1    ; AX vaut maintenant X1
   MOV   BX, Y     ; BX vaut maintenant Y
   MOV   CX, X2    ; CX vaut maintenant X2

Il est ncessaire de prciser la longueur de la ligne, aussi on va utiliser
CX pour la stocker: i) CX contient dj X2, et ii) on va utiliser une
instruction REP, pour faire de CX un compteur.

   SUB   CX, AX    ; CX = X2 - X1

Maintenant on va utiliser DI pour le premier pixel  afficher, donc on va se
servir de la routine PutPixel vue prcdemment:

   MOV   DI, AX    ; DI = X1
   MOV   DX, BX    ; DX = Y
   SHL   BX, 8     ; Dplacer Y de 8 vers la gauche
   SHL   DX, 6     ; Dplacer Y de 6 vers la gauche
   ADD   DX, BX    ; DX = Y SHL 8 + Y SHL 6
   ADD   DI, DX    ; DI = Y x 320 + X

On a maintenant l'offset du premier pixel, donc il ne nous reste plus qu'
prciser la couleur, dans AL, et utiliser STOSB pour afficher le reste de la
ligne.

   MOV   AL, Couleur ; Dplacer la couleur dans AL
   REP   STOSB       ; Afficher les pixels de CX

Remarquez qu'on a utilis STOSB car il va incrmenter DI pour nous, pour
conomiser des instructions MOV et INC. Maintenant, suivant le langage que
vous utilisez, vous aurez quelque chose comme a:


   void Draw_Horizontal_Line(int x1, int x2, int y, char color);
   {
   asm {
      mov   ax, 0xa000
      mov   es, ax        ; Mettre ES en VGA

      mov   ax, x1        ; AX = X1
      mov   bx, y         ; BX = Y
      mov   cx, x2        ; CX = X2

      sub   cx, ax        ; CX = Diffrence entre X2 et X1

      mov   di, ax        ; DI = X1
      mov   dx, bx        ; DX = Y
      shl   bx, 8         ; Y SHL 8
      shl   dx, 6         ; Y SHL 6
      add   dx, bx        ; DX = Y SHL 8 + Y SHL 6
      add   di, dx        ; DI = Offset du premier pixel

      mov   al, color     ; Stocke la couleur en AL
      rep   stosb         ; Dessine la ligne
            }
   }

                                       Adam Hyde, blackcat@faroc.com.au

******************************************************************************
***********************Le nihilisme (King Fisher)*****************************
******************************************************************************

  Dans P.G.K. n1, j'ai pass le fameux texte "la conscience d'un hacker".
  Bug-in m'a dit qu'il avait t inspir par le texte suivant (pourtant dat
de 1995!), crit par King Fisher, et que je n'avais jamais lu (mais je dois
reconnatre que je n'ai plus le temps de lire tout ce que je trouve sur le
net...).

                                       NONO, nono_18_02@hotmail.com

  "Ils disent qu'un nihiliste est une personne qui renie les valeurs. Ce n'est
pas tout  fait vrai. Un nihiliste est quelqu'un qui renie certaines valeurs,
et en construit de nouvelles. Quelqu'un qui ne fait que renier les valeurs,
et ne veut que dtruire la socit, est plutt un anarchiste, ou un pur et
simple vandale, un prophte de l'absence de valeurs.
  Pour moi, je prfre me dire un adhrent de la philosophie Zen, le
Faillibilisme, ou simplement: une personne qui croit qu'il n'y a pas d'entits
fixes telles que "Le Bien", "Le Mal" ou "La Proprit Prive", tous concepts
qui ne sont que des constructions momentanes de l'esprit humain. Je suis du
ct de Nietzsche, en un sens, mais je veux aller au-del de Nietzsche, car le
Nihilisme est toujours cratif.
 
  Ils disent que les crackers sont des cafards malfiques qui veulent ruiner
les compagnies de logiciels et voler les sous qui reviennent aux malheureux
programmeurs. Moi, ce que je dis, c'est que l'information est  tout le monde,
comme l'air qui nous entoure, et que personne n'a le droit de la mettre
derrire des murs. Si vous pensez que les hackers ne sont qu'une bande
d'anarchistes prts  tout mettre  feu et  sang parce que a les amuse, vous
vous trompez du tout au tout.
  Nous sommes bien pires que a. 
 
  Nous mettons  bas, oui, mais nous en sommes fiers, et nous le faisons parce
que nous devons le faire. Quelqu'un doit librer l'information. Je ne hacke
pas parce que je hais la socit, mais parce que je l'aime et que je souhaite
qu'elle volue. Je considre le hack comme une action hautement politique, et
je suis fermement convaincu qu'il est JUSTE de hacker! 
 
  Maintenant vous tes troubls. Laissez-moi encore vous expliquer. 
 
  Cette anne, en 1995, je peux entrer dans n'importe quelle bibliothque,
prendre N'IMPORTE QUEL livre, aller  la photocopieuse et copier toutes les
pages si je le souhaite. Tout ceci est parfaitement lgal, du moins ici en
Sude. L'tat sudois (comme beaucoup d'autres) a dcid que ses citoyens
avaient le droit de copier des livres.
 
  Maintenant, je rentre  la maison. Je regarde mon lecteur de CD. Je n'ai pas
le droit de me faire une cassette de mes morceaux favoris. C'est illgal. Je
regarde mes cassettes vido. Je n'ai pas le droit de les copier. C'est illgal
. Je regarde mes botes de disquettes qui contiennent des logiciels Microsoft
que j'ai achets. Eh bien, j'ai le droit de me faire des copies de sauvegarde,
mais pas de les donner  mes amis. C'est illgal.
 
  Ca me rend malade! Quelle diffrence entre des logiciels, des CD, des
cassettes vido et les livres que j'emprunte  la bibliothque du quartier?
Tout cela est de l'information, grands dieux! Le problme dans ce cas n'est
pas l'information en elle-mme. Le problme est que cette socit m'a
conditionn  croire qu'on avait le droit de possder l'information, comme la
terre ou l'argent, ou comme les Grecs ou les leveurs de coton sudistes purent
croire qu'on avait le droit de possder DES GENS. Ils appelaient a
l'esclavage. Je ralise que je suis un esclave de la socit qui contrle
l'information. Parce que c'est de cela qu'il est question. De contrle.
Complet, absolu, et indiscutable contrle.
 
  Je ne suis pas en train de vous dire que je veux que les lois sur les droits
d'auteur soient remplaces par le chaos. Si je souhaitais le chaos, je serais
une bte destructrice et pas un citoyen constructif. J'aime notre socit, et
je pense qu'elle est une des meilleures au monde. J'aime encore plus les
communauts du cyberespace comme la Scne ou Use Net, parce qu'elles sont
internationales et multiculturelles. C'est pourquoi je veux dire  la socit
qu'il y a quelque chose qui ne va pas. Je veux souffler dans mon sifflet
pendant qu'il est encore temps.
 
  Je n'ai rien contre les compagnies de logiciels et je ne les hais pas. En
fait, je veux qu'il existe des compagnies de logiciels. Ce que je n'aime pas,
c'est la structure sociale et le cadre conomique qui gouvernent les gens
comme les entreprises, et auxquelles ils doivent obir. Je crois les
entreprises et les gens galement prisonniers de ce systme.
  Vous dites que quelqu'un doit payer. Pourquoi? En quoi consiste ce paiement,
de toute faon? Qu'est ce que le "savoir sous licence" et le "savoir dans le
domaine public"? Ou, pour utiliser le langage lui-mme de l'autorit: en quoi
consiste cette arnaque de la "proprit intellectuelle" autour de laquelle
vous faites tant de bruit? Quelle information ai-je le droit de possder ?
Quelle information ai-je le droit de transporter dans ma tte ?
 
  Pour les partisans de l'conomie post-moderne, la proprit et le droit sur
l'information sont une religion. Ils suivent les dieux de l'conomie et
pensent qu'ils seront au paradis le jour o ils deviendront des yuppies avec
la cravate et le costume. Pour eux, le gars qui mourra en laissant le plus de
voitures et de gadgets lectroniques derrire lui aura t le plus malin de la
bande. Mon dieu, je dteste ces demi-dieux. Il n'y a rien qui ne soit de
l'information, yuppies  la tte carre. William Gibson a peut-tre t le
premier  le raliser en 1982. Pourtant, bien peu de gens ont compris ce qu'il
voulait vraiment dire. Peut-tre n'en tait-il pas tout  fait conscient
lui-mme ?
 
  Le changement ncessaire dans cette socit, c'est d'arracher le savoir du
contrle des grandes compagnies et de l'tat pour le rendre aux gens  qui il
appartient, faute de quoi le monde a toutes les chances de ressembler  celui
que dcrivait Gibson dans "Neuromancien". 
 
  C'est pourquoi nous prenons le nom de cyberpunks. Nous sommes des
hors-la-loi, branchs et connects. Nous ferons natre une re nouvelle. A nos
yeux, l'information lectronique n'est pas un symbole ou un statut, ou une
faon de gagner de l'argent et la considration gnrale, mais une extension
de l'esprit humain.
  C'est pourquoi Timothy Leary a appel le micro-ordinateur le LSD des annes
90 - les ordinateurs semblent largir le champ de vision des gens.
 
  Nous ne voulons pas voler les entreprises. Diable non. Nous voulons juste
qu'on nous rende nos droits de citoyens. Si je possde un bout d'information,
je veux avoir le droit de le copier. Et si vous essayez de m'en empcher,
c'est sr que je vais mordre. Ne touchez pas ma vie prive ! Foutez le camp de
ma vie!
 
  Mon idologie brle pour moi comme une lanterne dans la nuit. Ce n'est pas
une idologie de libralisme, ni le socialisme, le conservatisme, le
communisme ou toutes ces idologies qu'on vous apprend  l'cole. Mon
idologie s'appelle Cyberpunk.
 
  Les mafias qui s'accaparent la terre, les pirates qui gagnent des fortunes
en vendant des jeux  des pauvres dingues de l'ordinateur, ceux qui gagnent
leur vie en parasites de la socit, tous ceux-l, vous pouvez les pourchasser
et les tuer si a vous plait. Personne ne les regrettera. MAIS NE TOUCHEZ PAS
LES HACKERS ET LES SWAPPERS, car ceux-ci ne sont pas vos ennemis. Un vrai
cyberpunk ne ferait jamais payer une information. Il change seulement, et je
pense qu'il en a le droit. D'autres ne le pensent pas. 
 
  Je ne veux pas dtruire. 
  Je veux crer." 
 
                                       King Fisher

******************************************************************************
******************************Cryptage (Bug-in)*******************************
******************************************************************************

  Bon, dans ce texte, je ne vais pas vous dire comment dcrypter un code en x
bits, ni comment a marche, non rien de tout a. Juste vous dire quel est le
type de cryptage le plus sr pour l'envoi de mail, et comment bien s'en servir
et le crer.

  Donc, voil. Ce n'est pas nouveau, le courrier lectronique est filtr grce
 de petits programmes recherchant des mots-cls...mais il ne font pas que a.
Tout courrier apparemment trange, ne contenant que des chiffres, aucun espace
entre les lettres, un fichier attach sous forme exe... sera repr.

  La technique est donc simple: pour que votre mail soit crypt, il ne faut
utiliser que des phrases courantes, mais ayant un sens totalement diffrent.
En plus, je vous rappelle que si on trouve un courrier crypt, l'Etat a le
droit de vous demander la cl de cryptage si il vous souponne de quoi que ce
soit (surtout de terrorisme).
  Il faut donc employer des mots normaux, ou envoyer un .jpg, o l tu peux
t'amuser  crypter un truc avec des dessins, parce que l, c'est plus dur 
dcrypter qu'un message cod avec des chiffres, le hacking en est la preuve
mme... N'employez PAS DE NOMBRE de plus de 10 chiffres.

  Donc vous crez votre dico de mots quivalents et l'envoyez par la poste ou
autre  votre correspondant.

  Le message peut-tre reu ainsi:
"Bonjour Vitali, c'est Fox. Vous savez le Mozart Institure... Je vous appelle
pour une modification d'ordinateur. Pour un client  Dsseldorf.
Il faudrait se voir, disons, demain  16 heures? Au 38?... Ah aussi pendant
que j'y pense, vous pourriez penser  me ramener le livre de Voltaire que je
vous ai prt?"

  Toujours tre poli dans les messages, comme si vous connaissiez juste la
personne. Pour les plus littraires, vous aurez reconnu ici le code de Ari,
utilis dans le livre "La sirne rouge" ,de "Maurice G. Dantec" (le code ari
n'existe pas en fait, ce n'est que pour le livre qu'il est cit).
  Dans cet extrait, "le livre de Voltaire" signifie qu'il faut se servir du
dcodage de Voltaire pour le comprendre. Le 16h peut signifier 19h, 38
aprs-demain, et demain signifie et-demi, donc: aprs demain  19h30 sera le
dcodage de cette unique ligne.

  C'est tout bte mais c'est le seul moyen rel de dfense.

  Bon, je vous rappelle aussi qu'il y des mots  ne pas employer,  savoir:

"FBI CIA NSA IRS ATF BATF DOD WACO RUBY RIDGE OKC OKLAHOMA CITY MILITIA
GUN HANDGUN MILGOV ASSAULT RIFLE TERRORISM BOMB DRUG HORIUCHI KORESH 
DAVIDIAN KAHL POSSE COMITATUS RANDY WEAVER VICKIE WEAVER SPECIAL FORCES
LINDA THOMPSON SPECIAL OPERATIONS GROUP SOG SOF DELTA FORCE CONSTITUTION
BILL OF RIGHTS WHITEWATER POM PARK ON METER ARKANSIDE IRAN CONTRAS OLIVER
NORTH VINCE FOSTER PROMIS MOSSAD NASA MI5 ONI CID AK47 M16 C4 MALCOLM X
REVOLUTION CHEROKEE HILLARY BILL CLINTON GORE GEORGE BUSH WACKENHUT 
TERRORIST TASK FORCE 160 SPECIAL OPS 12TH GROUP 5TH GROUP SF"

  Puisque ce sont les mots clef de recherche de la machine Echelon, une
protection gouvernementale amricaine qui traque les e-mails.

  Voil,  vous de jouer.

  En attendant, voici un codage d'exemple, qui videment ne sera plus du tout
sr ds que P.G.K. sera sorti, donc j'en donne un facile pour la base, aprs
vous pouvez le driver comme bon vous semble.

A|B|C \J/ Pour le reste, rajouter un point dans le symbole, en faisant tourner 
----- L|M les lettres dans le mme sens. Ainsi on peut obtenir ceci (ce code
D|E|F /K\ est trs dur  reprsenter sur un fichier .TXT,  mais  l'crit
-----     c'est beaucoup mieux).
G|H|I        

                    S   A   L   U      T
                   __       \   __    __
                   |.    |   | |. |   . |
                   --  --   /


  Voil, bonne chance  tous; je crois que NONO le dit souvent, mais a a pas
l'air de vous bouger: les gars, si vous nous aidez pas, on n'ira pas loin,
n'attendez pas, ragissez, envoyez vos articles. Ne passer pas votre temps
comme a se voit en ce momment  crer des tonnes d'e-zines diffrents un peu
partout, essayez plutt de rejoindre un dj existant, je crois que NONO sera
d'accord avec a [NONO: tout  fait... Par exemple, j'ai entendu parler d'un
e-zine assez sympa, qui cherchait des volontaires.. Je crois qu'il s'appelle
P.G.K., quelque chose comme a... :-) Non, plus srieusement, je ne vous
conseille gure de crer votre propre e-zine,  moins d'tre srieusement
motiv et d'avoir beaucoup d'ides. Je crois qu'aucun e-zine ne refusera de
l'aide.]. Il faut s'unir pour y parvenir. Avec une tonne de petits e-zines
par-ci par-l, vous voyez bien que ce n'est pas trs enrichissant.

  Enfin, allez ciao tout le monde.

                                       Bug-in, buginutopia@multimania.com

******************************************************************************
***************************Cours d'assembleur (suite)*************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************


          ͻ
                       Cours d'Assembleur par Adam                Ŀ
                                                                   
                                 PARTIE VI                         
          ͼ 
            


 

La dernire fois, on a vu la routine pour dessiner une ligne -

      mov   ax, 0xa000
      mov   es, ax        ; Mettre ES en VGA

      mov   ax, x1        ; AX = X1
      mov   bx, y         ; BX = Y
      mov   cx, x2        ; CX = X2

      sub   cx, ax        ; CX = Diffrence entre X2 et X1

      mov   di, ax        ; DI = X1
      mov   dx, bx        ; DX = Y
      shl   bx, 8         ; Y SHL 8
      shl   dx, 6         ; Y SHL 6
      add   dx, bx        ; DX = Y SHL 8 + Y SHL 6
      add   di, dx        ; DI = Offset du premier pixel

      mov   al, color     ; Stocke la couleur en AL
      rep   stosb         ; Dessine la ligne


Bien que cette routine tait plus rapide que celles en langage "classique",
elle peut tre largement amliore. Si on utilise cette routine et la liste
des cycles d'horloges fournie prcdemment, vous verrez que l'on perd pas
mal de cycles.

Je vous laisse le soin de l'optimisation pour le moment (on verra cela plus
tard), mais dj remplacer STOSB par un MOV ES:[DI], AL ou STOSW augmentera
dj la cadence. N'oubliez pas que si vous dcidez d'utiliser une boucle,
vous devrez diminuer CX de 1.

Maintenant, attaquons-nous  une ligne verticale. On doit calculer l'offset
du premier pixel comme pour la ligne horizontale, avec quelque chose comme:


   mov   ax, 0A000h      ; Met le segment VGA dans AX 
   mov   es, ax          ; Met ES en VGA

   mov   ax, Y1          ; Dplace la premire valeur Y en AX
   shl   ax, 6           ; Y x 2 puissance 6
   mov   di, ax          ; Met la nouvelle valeur d'Y dans DI
   shl   ax, 2           ; On a donc: Y = Y x 320
   add   di, ax          ; Ajoute cette valeur dans DI
   add   di, X           ; Ajoute X  DI


Un peu de bricolage par-dessus...


   mov   cx, Y2          ; Stocke Y2 dans CX
   mov   al, Color       ; Stocke la couleur  afficher en AL
   sub   cx, Y1          ; CX = hauteur de la ligne


Et maintenant la boucle finale...


Plot:
   mov   es:[di], al     ; Affiche un pixel  l'offset courant
   add   di, 320         ; Descend  la colonne suivante
   dec   cx              ; Diminue CX de un
   jnz   Plot            ; Si CX <> 0, alors continuer d'afficher


Ce n'est pas une super routine, mais c'est dj pas mal. Remarquez qu'il est
possible de faire une comparaison aprs DEC CX. C'est trs utile, aussi ne
l'oubliez pas.

Amusez-vous un peu avec ce code, et essayez de l'acclerer. Essayez d'autres
mthodes...


 

Ca, c'tait la partie facile. Maintenant, on va cherche  afficher des lignes
en diagonales.

La routine suivante est tire de "SWAG", auteur inconnu, et elle est idale
pour dmonter l'algorithme. Mais elle a besoin d'tre optimise, ce qui ne
tient qu' vous. Les points  regarder sont:

   1) Celui qui l'a crite n'a jamais entendu parler de XCHG - a conomisera
      quelques cycles d'horloge;

   2) Il comporte un des grands pchs du code non-optimis - il lit, puis
      dplace une valeur en AX, et ensuite ralise une opration impliquant
      AX dans l'instruction suivante, ce qui provoque un cycle supplmentaire
      (on verra a plus en dtail la prochaine fois).

   3) Elle utilise des octets et non des word, ce qui doublerait la vitesse
      d'criture en VGA.

   4) Et le pire de tout, c'est qu'il utilise un MUL pour calculer l'offset.
      Utiliser des dplacement ou un change acclrerait les choses.

De toute faon, j'ai comment le code, et je pense qu'il est assez clair,
aussi je n'entrerai pas dans les dtails. Vous devriez tre capable de
tout comprendre par vous-mme. Essayez-la, et voyez comment elle fonctionne.


Procedure Line(X1, Y1, X2, Y2 : Word; Color : Byte);   Assembler;

Var
   DeX          : Integer;
   DeY          : Integer;
   IncF         : Integer;

Asm     { Line }
   mov   ax, [X2]      { Met X2 en AX                                       }
   sub   ax, [X1]      { Calcule la longueur de la ligne: X2 - X1           }
   jnc   @Dont1        { Est-ce que le rsultat tait ngatif?              }
   neg   ax            { Oui, alors mettons-la positive (* -1)                    }

@Dont1:
   mov   [DeX], ax     { Mettons la longueur dans DeX                       }
   mov   ax, [Y2]      { Met Y2 dans AX                                     }
   sub   ax, [Y1]      { Y2 - Y1, pour avoir la hauteur de la ligne         }
   jnc   @Dont2        { Rsultat ngatif?                                  }
   neg   ax            { Oui, alors mettons-le positif (* -1)                     }

@Dont2:
   mov   [DeY], ax     { Met la hauteur en DeY                              }
   cmp   ax, [DeX]     { Compare la hauteur  la longueur                   }
   jbe   @OtherLine    { Si la hauteur est <=  la longueur alors saute     }

   mov   ax, [Y1]      { Met Y1 dans AX                                     }
   cmp   ax, [Y2]      { Compare Y1 et Y2                                   }
   jbe   @DontSwap1    { Si Y1 <= Y2 alors saute, sinon...                  }
   mov   bx, [Y2]      { Met Y2 en BX                                       }
   mov   [Y1], bx      { Met Y2 en Y1                                       }
   mov   [Y2], ax      { Met Y1 dans Y2                                     }
                       { Donc au final...                                   }
                       { Y1 = Y2 et Y2 = Y1                                 }

   mov   ax, [X1]      { Met X1 dans AX                                     }
   mov   bx, [X2]      { Met X2 dans BX                                     }
   mov   [X1], bx      { Met X2 dans X1                                     }
   mov   [X2], ax      { Met X1 dans X2                                     }

@DontSwap1:
   mov   [IncF], 1     { Met 1 en IncF, et dessine un autre pixel           }
   mov   ax, [X1]      { Met X1 dans AX                                     }
   cmp   ax, [X2]      { Compare X1 avec X2                                 }
   jbe   @SkipNegate1  { Si X1 <= X2 alors saute, sinon...                  }
   neg   [IncF]        { Multiplie IncF par -1                              }

@SkipNegate1:
   mov   ax, [Y1]      { Met Y1 dans AX                                     }
   mov   bx, 320       { Met 320 dans BX                                    }
   mul   bx            { Multiplie 320 par Y1                               }
   mov   di, ax        { Stocke le rsultat dans DI                         }
   add   di, [X1]      { Ajoute X1  DI, et donc, l'offset est dans DI      }
   mov   bx, [DeY]     { Met DeY en BX                                      }
   mov   cx, bx        { Met DeY en CX                                      }
   mov   ax, 0A000h    { Met le segment  afficher en AX                    }
   mov   es, ax        { ES pointe vers le VGA                              }
   mov   dl, [Color]   { Met la couleur utilise en DL                      }
   mov   si, [DeX]     { Pointe SI vers DeX                                 }

@DrawLoop1:
   mov   es:[di], dl   { Mel la couleur avec DL en ES:DI                    }
   add   di, 320       { Ajoute 320  DI, c'est--dire la ligne suivante    }
   sub   bx, si        { Soustrait DeX  BX, DeY                            }
   jnc   @GoOn1        { Rsultat ngatif?                                  }
   add   bx, [DeY]     { Si oui, ajoter DeY  BX                            }
   add   di, [IncF]    { Ajouter IncF  DI                                  }

@GoOn1:
   loop  @DrawLoop1    { Rsultat positif, alors afficher le prochain pixel }
   jmp   @ExitLine     { Fini!                                              }

@OtherLine:
   mov   ax, [X1]      { Met X1 dans AX                                     }
   cmp   ax, [X2]      { Compare X1  X2                                    }
   jbe   @DontSwap2    { X1 <= X2 ?                                         }
   mov   bx, [X2]      { Sinon, mettre X2 dans BX                           }
   mov   [X1], bx      { Met X2 dans X1                                     }
   mov   [X2], ax      { Met X1 dans X2                                     }
   mov   ax, [Y1]      { Met Y1 dans AX                                     }
   mov   bx, [Y2]      { Met Y2 dans BX                                     }
   mov   [Y1], bx      { Met Y2 dans Y1                                     }
   mov   [Y2], ax      { Met Y1 dans Y2                                     }

@DontSwap2:
   mov   [IncF], 320   { Met 320 dans IncF, pour la prochaine colonne       }
   mov   ax, [Y1]      { Met Y1 dans AX                                     }
   cmp   ax, [Y2]      { Compare Y1 et Y2                                   }
   jbe   @SkipNegate2  { Y1 <= Y2?                                          }
   neg   [IncF]        { Sinon, multiplier IncF par -1                      }

@SkipNegate2:
   mov   ax, [Y1]      { Met Y1 dans AX                                     }
   mov   bx, 320       { Met 320 dans BX                                    }
   mul   bx            { Multiplier AX par 320                              }
   mov   di, ax        { Stocke le rsultat dans DI                         }
   add   di, [X1]      { Ajoute X1  DI, donnant l'offset                   }
   mov   bx, [DeX]     { Met DeX dans BX                                    }
   mov   cx, bx        { Met BX dans CX                                     }
   mov   ax, 0A000h    { Dplace l'adresse du VGA dans AX                   }
   mov   es, ax        { Pointe ES vers VGA                                 }
   mov   dl, [Color]   { Stocke la couleur  afficher en DL                 }
   mov   si, [DeY]     { Met DeY dans SI                                    }

@DrawLoop2:
   mov   es:[di], dl   { Met l'octet en DL  ES:DI                          }
   inc   di            { Incrmente DI de un, le prochain pixel             }
   sub   bx, si        { Soustrait SI  BX                                  }
   jnc   @GoOn2        { Rsultat ngatif?                                  }
   add   bx, [DeX]     { Si oui, ajouter DeX  BX                           }
   add   di, [IncF]    { Ajouter IncF  DI                                  }

@GoOn2:
   loop  @DrawLoop2    { Continuer de dessiner                              }

@ExitLine:
                       { Termin!                                           }
End;



 

         Ŀ
                                                                   
                       LES ENTREES(IN) ET SORTIES(OUT)             
                                                                   
         


IN et OUT sont trs importants en Assembleur. Ils vous permettent d'envoyer ou
de recevoir des donnes directement de l'un des 65 536 ports matriels d'un
PC, ou registres. La syntaxe de base est la suivante:


    IN <ACCUMULATEUR>, <PORT>    - Nom : Entre du port I/O (Input/Output:
                                          Entre/Sortie)
                                    Type: 8086+

                                    Description: Cette instruction lit une
                                    valeur d'un des 65536 ports matriels dans
                                    l'accumulateur spcifi.

                                    AX et AL sont gnralement utiliss pour
                                    les ports d'entre, et DX pour identifier
                                    le port.

                                    Ex: IN    AX, 72h

                                        MOV   DX, 3C7h
                                        IN    AL, DX


    OUT <PORT>, <ACCUMULATEUR>   - Nom : Sortie vers un Port
                                    Type: 8086+

                                    Description: Cette instruction envoye la 
                                    valeur  l'accumulateur dans <PORT>. En
                                    utilisant le registre DX pour passer le
                                    port avec OUT, vous pouvez accder 
                                    65536 ports.

                                    Ex: MOV   DX, 378h
                                        OUT   DX, AX


O.K., a ne vous a pas vraiment aid, car cela n'indique pas comment s'en
servir - mais laissons a de ct pour le moment. Bon, si vous voulez
approfondir votre usage du VGA, vous devez tre  mme de programmer ses
registres internes. C'est un peu pareil aux registres classiques, mais vous
pouvez les considrer comme des interruptions, sauf que: 1) Vous envoyez la
valeur au port, et c'est tout; et 2) C'est presque instantan.

Par exemple, on va voir comment utiliser la palette directement en se servant
du matriel VGA.


Le VGA a plein de registres, mais les trois prochains sont les plus     
importants:

    03C7h       - PEL Registre d'Adresse (Lecture)
                   Met la palette en mode lecture

    03C8h       - PEL Registre d'Adresse (Ecriture)
                   Met la palette en mode criture

    03C9h       - PEL Registre de Donnes (Lecture/Ecriture)
                   Lit ou crit 3 valeurs RGB (les 3 couleurs de base: Rouge,
                   Vert, Bleu; en franais: RVB), et toutes les trois valeurs
                   crites, l'index est incrment de 1.

Voici la signification de tout cela:

Si on voulait inscrire une valeur RGB, on enverrait la valeur de la couleur 
changer en 03C8h, puis on lirait les 3 valeurs de 03C9h. En Assembleur, on
ferait donc cela:

   mov   dx, 03C8h        ; Met le valeur de DAC(lecture) en DX
   mov   al, [Color]      ; Met la valeur de la couleur en AL
   out   dx, al           ; Envoie AL au port DX
   inc   dx               ; On passe au port 03C9h
   mov   al, [R]          ; Met la nouvelle valeur ROUGE en AL
   out   dx, al           ; Envoie AL au port DX
   mov   al, [G]          ; Met la nouvelle valeur VERTE en AL
   out   dx, al           ; Envoie AL au port DX
   mov   al, [B]          ; Met la nouvelle valeur BLEUE en AL
   out   dx, al           ; Envoie AL au port DX

Cela devrait faire l'affaire. Pour lire la palette, on utilise:

   mov   dx, 03C7h        ; Mel valeur de DAC(criture) en DX
   mov   al, [Color]      ; Met la valeur de la couleur en AL
   out   dx, al           ; Envoye AL au port DX
   add   dx, 2            ; On passe au port 03C9h

   in    al, dx           ; Met la valeur lue au port DX en AL
   les   di, [R]          ; Pointe DI vers la variable R
   stosb                  ; Stocke AL en R

   in    al, dx           ; Met la valeur lue au port DX en AL
   les   di, [G]          ; Pointe DI vers la variable G
   stosb                  ; Stocke AL en G

   in    al, dx           ; Met la valeur lue au port DX en AL
   les   di, [B]          ; Pointe DI vers la variable B
   stosb                  ; Stocke AL en B

Remarquez que cette routine est diffrente. Elle vient du langage Pascal. 

Si vous travaillez en Assembleur seul, vous pouvez coder cela de manire plus
efficace, comme le premier exemple. J'ai laiss le code tel quel pour que ceux
travaillant avec un langage de haut niveau n'ai pas de difficults.

Maitenant vous avez vu combien IN et OUT peuvent tre utiles. Contrler
directement le matriel est  la fois rapide et efficace. Dans les prochaines
semaines, je rajouterai peut tre une liste des ports les plus communs.


 

 Rajouts sur les registres de FLAGS:


Maintenant, bien que nous avons utilis les registres de flags dans nos codes,
je n'ai pas vraiment expliqu leur fonctionnement. Vous pouvez travailler
dans ces conditions, comparer avec ce que vous savez, et essayer de
comprendre comma a, mais si vous voulez aller plus loin en Assembleur, vous
devez savoir quelques choses en plus.

Dans le tutorial 3, j'ai donn une vue extrmement simplifie des registres
de FLAGS. En ralit, le registre de FLAGS, ou EFLAGS, est un registre 32
bits, mais seul les bits 0  18 sont utiliss. De toute faon, on n'a pas
vraiment besoin de plus que le bit 11, mais il est bon de savoir qu'ils
existent.


Le registre EFLAGS ressemble en fait  a:

18  17  16  15  14  13  12  11  10  09  08  07  06  05  04  03  02  01  00
AC  VM  RF  --  NT  IO/PL   OF  DF  IF  TF  SF  ZF  --  AF  --  PF  --  CF


Les flags sont les suivants:

    AC   - Vrifie l'Alignement (80486)
    VM   - Mode Virtuel 8086
    RF   - Flag de rsume
    NT   - Flag pour les tches imbriques
    IOPL - Level privilgi d'Entre/Sorite (I/O)

    OF   - Flag de Dpassement (overflow)
            Ce bit est  UN si une opration arithmtique donne un rsultat
            trop grand ou trop petit pour tenir dans le registre de       
            destination.

    DF   - Flag de Direction
            Quand il est  ZERO, les instruction sur les chanes, telles MOVS,
            LODS et STOS incrmenteront les adresses mmoires qu'elles
            utilisent de un. Cela signifie que, par exemple, DI sera augment
            quand vous utilisez STOSB pour afficher un pixel en ES:DI. Mettre
            ce bit  ZERO diminuera l'adresse mmoire aprs chaque appel de
            fonction.

    IF   - Flag pour Permettre les Interruptions
            Quand ce bit est activ, le processuer rpondra aux interruptions
            matrielles extrieures. Quand il est  0, les interrupetions   
            matrielles sont ignores.

    TF   - Flag de "pige"(trap)
            Quand ce bit est activ, une interruption est gnre aprs chaque
            instruction. C'est gnralement utilise pour dbugger.

    SF   - Flag de Signe
            Ce bit est modifi aprs une opration mathmatique. Le bit
            recoit le bit de haut niveau(on parle aussi de bit de poids fort)
            du rsultat, et si c'est UN, il indique le rsultat de l'opration
            tait ngatif.

    ZF   - Flag Zro
            Ce bit est activ quand une opration mathmatique donne un 
            rsultat de zro.

    AF   - Flag de Carry Auxiliaire
            Ce bit indique qu'un dpassement de bas niveau d'un demi-octet de
            AL est survenu pendant une opration arithmtique.

    PF   - Flag de Parit
            Ce bit est activ quand le rsultat d'une opration est un nombre
            sur un bit.

    CF   - Flag de Carry
            Ce bit est activ quand le rsultat d'une opration est trop 
            grand ou trop petit pour le registre de destination ou pour l'
            adresse mmoire.


Maintenant, vous n'avez pas vraiment besoin de vous occuper de tout ceux-l.
Pour le moment, connatre Cf, PF, ZF, SF, IF, DF et OF suffira.

Vous pouvez, si vous le voulez, dplacer une copie des flags dans AH avec
LAHF ("Load AH with Flags", mettre les flags dans AH), et modifier ou lire
des bits individuels, ou modifier l'tat des bits plus facilement qu'avec
CLx et STx. Cependant, si vous dcidez de modifier les flags, rappelez-vous
qu'ils peuvent tre extrmement utiles dans beaucoup de situations.

(Ils peuvent tre aussi utiles quand, tard ans la nuit, des lignes se
dessinent  l'envers, et qu'au bout d'une heure, vous vous rendez compte que
vous avez oubli de vider le flag de direction!)


                                       Adam Hyde, blackcat@faroc.com.au

******************************************************************************
*****************************La gravure (Pyton51)*****************************
******************************************************************************

Introduction:

  Alors, tu as de srieux trous dans ton budget??? Manque de fric??? Et tu as
2500 francs au maximum  investir [NONO: personnellement, ce n'est pas ce que
j'appelle manquer de fric, mais bon...]? Une solution:
  Le graveur, une des rponses  tous ces problmes. C'est donc de quoi cet
article va parler...

Sommaire:

1 Bien choisir son graveur et ses CD vierges
2 Quel logiciel choisir?
3 Qu'est-ce qui rapporte le plus?
4 Divers


        1 Bien choisir son graveur et ses CD vierges:


  Cela dpend de votre disque dur et de votre budget:

  Premirement: vous avez un assez gros DD (disque dur) avec au moins 700MO de
place: pas de problme, il y a juste a acheter un graveur IDE (1200
FF a 2000FF), cette solution est celle qui est la mieux adapte pour un petit
budget mais avec un gros DD.

  Deuximement: Il y a pas trop de place sur le DD. Bon la solution s'impose:
un graveur SCSI: l c'est tranquille, on fait du lecteur CD au graveur sans
passer par le DD.
 Un prix se situant entre 1500FF (sans carte SCSI)  2500FF (avec carte SCSI).

Les CD vierges:

  Pour les CD Playtation, prferez des CD  face bleue ou verte, mais pas
jaune (a blouit la lentille). Les meilleures marques: Memorex (c'est ce que
j'utilise personnelement), Sony et Phillips, mais je dois en oublier.

  Pour les CD d'ordi, il vaut mieux prferer les Kodak, je crois que c'est une
bonne marque pour les CD d'ordi.


        2 Quel logiciel choisir?

  Nero burning rom (pour les IDE) s'impose, il en loupe presque pas mais
CDRwin est bien aussi (plus pour les SCSI) (c'est les deux seuls que je
connaissent qui sont fiables)...


        3 Qu'est-ce qui rapporte le plus?

  Play ou ordi???
  Ben en fait a dpend de vous:
si vous avez le cble, vous pouvez faire du warez (voir article dans P.G.K. 8)
et donc faire des compil de plusieurs nouveaux jeux se vendant facilement 
200FF pice. Sinon je crois que les CD Play sont mieux si vous avez pas le
cble, ils se vendent facilement  40FF pice (mais on en vend plus que les
compils  200FF).
  Sinon un ou deux jeux d'ordi gravs de temps  autre peuvent faire tenir le
bizness.


        4 Divers:

Question: Comment,  partir d'un crack (recupr sur crakstore ou un autre
site), on peut cracker le jeu?
Rponse: la question du dbutant: il faut un gros DD (651Mo de place libre
suffisent: 650 pour le jeu, et au max 1 mo pour le crack). Il faut mettre tout
le CD sur le DD (dans un rpertoire spcial de prfrence) et excuter le
crack l ou le .exe se trouve  cracker (on peut faire le crack soi-mme, il
faut suivre les cours de NONO pour a).


La suite, ( votre avis???) au prochain numro...

                                Pyton51, Pyton51@altern.org
                                http://altern.org/pyton51
                     
******************************************************************************
**********************************Conclusion**********************************
******************************************************************************

  Franchement, si je dois arrter P.G.K., je pense trs sincrement que a me
manquera. D'ailleurs, je pense que, pendant encore au moins quelques numros,
je continuerai  crire une intro et une conclusion, et  parsemer le numro
de quelques commentaires, comme j'aime le faire. Peut-tre mme que je
rpondrai  quelques lecteurs, car, je vous l'avoue, pendant toute cette
anne, mon plus grand plaisir tait quand j'allais voir ma mailbox et que je
voyais des mails (de noms qui m'taient inconnus) intituls P.G.K..
  C'est donc en fait la reconnaissance que j'ai tant apprcie, non pas la
reconnaissance d'un quelconque talent, mais la reconnaissance de mon
existence et de mon oeuvre. En effet, je peux maintenant dire que pas mal
de gens me connaissent sur le net et savent ce que j'ai fait.

  Et j'en suis trs fier...

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
***********************************GREETINGS**********************************
******************************************************************************

PLUGIN, Nunus, Manue, Johann__3, Laurence et David, |hiha|, Tom, CYBZ,
Fulla, Sandrine, Fanny, Vinc, BounBoun, et bien sr tous ceux qui ont tran
sur #houseofwarez et #warezfrancais (en undernet)...

******************************************************************************
*****************************SPECIAL GREETINGS TO:****************************
*************************************Sarah************************************
******************************************************************************
