Tutoriaux

Tutoriaux
Cracker des logiciels:

- Tutorial 1: Le 1° tutorial va vous apprendre à cracker votre premier programme et les bases de l'assembleur.

Ce tutorial est destiné aux personnes qui ont des bases en programmation. Pour devoir cracker on va devoir se munir du programme OllyDbg qui permet de décompiler(désassembler) le programme à cracker en Assembleur.

En peu d'assembleur:
Pour pouvoir cracker un programme, il faut connaitre en peu l'Assembleur. L'Assembleur est un language de programmation dérivé du langage machine (0 et 1).
En Assembleur il y a 2 types de saut conditionnel. Un saut conditionnel est un saut d'adresse mémoire dans un programme qui s'effectue à une certaine condition.

- Tutorial 2: Vous allez apprendre à cracker le programme du tutorial 1 d'une autre façon.
- Tutorial 3: Vous allez apprendre à faire des "break point" dans les programmes.
Maintenant nous allons essayer de trouver le mot de passe du programme crack3.exe. Pour cela, nous allons devoir stopper le programme au moment où il compare le bon mot de passe avec le mot de passe que l'ont a rentré. Stopper un programme à un endroit précis s'appelle faire Break Point (BP).
Déterminer le mot de passe:
Tout d'abord ouvrez le programme crack3.exe. On constate que le programme nous dit "Mauvais mot de passe" si on tappe un mot de passe bidon. Commençons par ouvrir le programme crack3.exe avec OllyDbg. Recherchez après la phrase: "Veuillez entrer le mot de passe". On peut constater que le programme crack3.exe à la même structure que le programme crack1.exe.

A l'addresse mémoire 004011A8 on peut voir le saut conditionnel et 3 lignes plus haut à l'adresse 0040119E on voit "CALL crack3.0040BBA8". Cette ligne appelle une variable qui est le mot de passe, donc nous allons faire un Break Point(BP) sur cette ligne. Pour faire un BP, cliquer 2 fois sur la valeur hexadécimal du "CALL crack3.0040BBA8"(E8 05AA0000) et l'adresse mémoire 0040119E ce met en rouge. Maintenant nous allons démarrer le programme en appuyant soit sur F9 ou soit sur la flèche "Run".
Dans le programme crack3.exe qui est ouvert: tappez un mot de passe bidon et valider. Dans la petite fenêtre en bas à droite on peut voir le mot de passe bidon mais aussi le bon mot de passe: "system".

Cette façon de procéder ne marche que pour les mots de passe et non pour les sérials. La raison c'est que la vérification des mots de passe s'effectue lettre par lettre et la vérification des sérials s'effectue directement.
- Tutorial 4: Ce tutorial va vous expliquer comment créer un crack en C++.

Ce tutorial va vous apprendre à créer un crack pour le tutorial 2. Nous allons donc simplement mettre la valeur "90" à l'adresse 00401180 et 00401181.
Offset:
Si on ouvre le programme "crack1" avec un éditeur de texte, on peut voir plein de caractère ASCII. Le premier caractère ASCII correspond à l'offset 1, le deuxième à l'offset 2, etc. L'offset se calcule en hexadécimal et il va nous faciliter la tâche pour créer notre crack en C++.
Nous allons calculer l'offset de l'adresse 00401180. Pour cela on a besoin du programme LordPe.
1) Ouvrez le programme LordPe puis cliquez sur "PE editor" pour ouvrir le fichier à cracker.
2) Ensuite cliquer sur "FLC" et cochez la case "VA".
3) Entrez la valeur 00401180 et cliquez sur "DO" pour obtenir l'offset.

Vous devriez obtenir l'offset 780h qui correspond donc à l'adresse 00401180. Maintenant nous allons convertir l'offset en décimal pour plus de facilité, ce qui donne: 1920
Nous allons aussi convertir le chiffre 90 en décimal: 144.

Voila nous somme prêt pour réaliser le crack qui va mettre la valeur 144 à l'offset 1920 et 1921.
[ Dash a comment ] [ No comments ]

# Posted on Thursday, 22 September 2005 at 4:43 PM

Edited on Friday, 01 June 2007 at 1:47 PM

Cryptage

Cryptage
Décryptage:
- Introduction 1: Introduction à la cryptologie avec une petite explication des différents types de cryptage.

Introduction:
Dans cette rubrique nous n'allons pas parler de tout les cryptages existants vu qu'il y a en beaucoup trop mais nous allons parler des plus important.

Monoalphabétique: Remplace un alphabet par un autre.
Polyalphabétique: Utilise plusieurs alphabets pour crypter un message.
Tomogrammique: Remplace chaque lettre par un symbole pour les crypter.
Polygrammique: Crypte les lettres groupe par groupe.
Moderne: Nous parlerons biensur des cryptages utilisés actuellements.


Monoalphabétique:
Le cryptage monoalphabétique ne représente pas une grand sécurité car il suffit de faire l'analyse de fréquence pour pouvoir décrypter.

- Polybe: Ce cryptage a été créé vers 150 avant J-C.
- César: Cryptage inventé par Jules César vers 70 avant J-C.


Polyalphabétique:
Le cryptage polyalphabétique est dans la plupart des cas facilement décryptable par la faiblesse du cryptage et de l'analyse des fréquences.

- Vigenère: Cryptage célèbre créé par Blaise Vigenère vers 1585.
- Gronsfeld: Ce cryptage a été créé vers 1734.
- Beaufort: En construction.


Tomogrammique:
- Collon: En construction.


Polygrammique:
- Playfair: En construction.
- Hill: En construction.

- Décryptage 1: On va crypter et décrypter le cryptage de César. Décrypter un tel cryptage est très facile.
Crypter:
Imaginons que l'on veut crypter la lettre "a" avec un décalage de 2, ça donnerait ceci: "b" et avec un décalage de 3: "c" etc...
Pour crypter une phrase on décale tout simplement les lettres de n positions. (1<n<27)


Décrypter:
Voici le message à décrypter: "hudtup leki q cujp". Il y a 2 façons de décrypter ce message:

- En français il y a des lettres qui reviennent beaucoup plus que d'autre. Par exemple la lettre "e". Donc dans le texte crypté on peut remarquer que le "u" apparait 3 fois. On peut donc suposer que le "u" remplace le "e" ce qui fait un décalage de -17. Si on décale toutes les lettres de -17 on obtient: "rendez vous a metz". Voici les fréquences des lettres pour les textes écrits en français:

A 8.40% N 7.13%
B 1.06% O 5.26%
C 3.03% P 3.01%
D 4.18% Q 0.99%
E 17.26% R 6.55%
F 1.12% S 8.08%
G 1.27% T 7.07%
H 0.92% U 5.74%
I 7.34% V 1.32%
J 0.31% W 0.04%
K 0.05% X 0.45%
L 6.01% Y 0.30%
M 2.96% Z 0.12%

- Il y a maximum 25 possibilités de cryptage donc on peut les essayer toutes grâce à un programme que j'ai fait en C++.
Voici le programme: cesar.exe et pour ceux que ça interresse, voici la source: cesar.cpp.
Ouvrez le programme et tappez le phrase "hudtup leki q cujp" et validez. Le message apparait en clair au décalage -17, donc le message a été codé avec un décalage de 17.
[ Dash a comment ] [ No comments ]

# Posted on Thursday, 22 September 2005 at 5:02 PM

Edited on Friday, 01 June 2007 at 2:04 PM

Décryptage 2:

Décryptage 2:
- Décryptage 2: Au début de ce tutorial de cryptage, on va apprendre le fonctionnement du cryptage de Vigenère et puis on le décryptera.


Introduction:
Le cryptage de Vigenère est semblable au cryptage de César mais il possède une clef de cryptage et de décryptage en plus. Le cryptage de Vigenère est dit symétrique parce que il possède la même clef pour crypter et décrypter.


Cryptage:
On va crypter le texte suivant: "system" avec la clef: "need" ce qui nous donne ceci: "fcwwrq". Voici le carré de Virgenère pour comprendre le cryptage:


| a b c d e f g h i j k l m n o p q r s t u v w x y z
a| a b c d e f g h i j k l m n o p q r s t u v w x y z
b| b c d e f g h i j k l m n o p q r s t u v w x y z a
c| c d e f g h i j k l m n o p q r s t u v w x y z a b
d| d e f g h i j k l m n o p q r s t u v w x y z a b c
e| e f g h i j k l m n o p q r s t u v w x y z a b c d
f| f g h i j k l m n o p q r s t u v w x y z a b c d e
g| g h i j k l m n o p q r s t u v w x y z a b c d e f
h| h i j k l m n o p q r s t u v w x y z a b c d e f g
i| i j k l m n o p q r s t u v w x y z a b c d e f g h
j| j k l m n o p q r s t u v w x y z a b c d e f g h i
k| k l m n o p q r s t u v w x y z a b c d e f g h i j
l| l m n o p q r s t u v w x y z a b c d e f g h i j k
m| m n o p q r s t u v w x y z a b c d e f g h i j k l
n| n o p q r s t u v w x y z a b c d e f g h i j k l m
o| o p q r s t u v w x y z a b c d e f g h i j k l m n
p| p q r s t u v w x y z a b c d e f g h i j k l m n o
q| q r s t u v w x y z a b c d e f g h i j k l m n o p
r| r s t u v w x y z a b c d e f g h i j k l m n o p q
s| s t u v w x y z a b c d e f g h i j k l m n o p q r
t| t u v w x y z a b c d e f g h i j k l m n o p q r s
u| u v w x y z a b c d e f g h i j k l m n o p q r s t
v| v w x y z a b c d e f g h i j k l m n o p q r s t u
w| w x y z a b c d e f g h i j k l m n o p q r s t u v
x| x y z a b c d e f g h i j k l m n o p q r s t u v w
y| y z a b c d e f g h i j k l m n o p q r s t u v w x
z| z a b c d e f g h i j k l m n o p q r s t u v w x y


Décryptage:
1° méthode: (analyse du texte crypté)
On va décrypter un texte crypter par l'algorithme de Vigenère mais il faut que le texte soit minimum 25 fois plus long que la clef.

Pour décrypter on doit chercher des groupes de lettre les mêmes dans le texte crypté et déterminer la longeur entre ces groupes de lettre:
HDPXELVSVKHCHDPMOSUTFVSV
La distance entre les "HDP" est de: 12 et entre les "VSV": 15. Ces 2 nombres sont tout les 2 divibles par 3, donc on peut dire que la clef de cryptage est de longeur 3.
Maintenant, on doit prendre les lettres du texte crypté de 3 en 3 et faire l'analyse des fréquences d'apparitions des lettres. La lettre qui apparaitra le plus souvent sera normalement un "e" et on pourra donc déduire les autres lettres.

Tout ceci est bien long à réaliser à la main, j'ai donc fait un programme en C++ qui décrypte et crypte Vigenère. Je vous laisse la source afin que vous puissiez améliorer le programme. Voici le programme: Vigenère.exe et la source: Vigenère.cpp.


2° méthode: (recherche du mot probable)
Il se peut que le message soit trop court pour faire l'analyse des fréquences des lettres. Dans ce cas il faut connaitre au moins un mot du texte qui a été crypter. Si vous ne connaissez aucun mot de ce texte, vous pouvez utiliser des mots courrants comme: 'les', 'des' ou des mots qui pourraient avoir un rapport avec le texte.

Voici un exemple simple que l'ont va décrypter: ZYAAUQGIVGMWBNMBZMI.
Nous allons esseyer de soustraire le mot 'LES' au texte crypté. Voici le positionnement des lettres 'L', 'E' et 'S' dans l'alphabet: 11 4 18.
Il faut maintenant décaler la lettre 'Z' de 11 caractères vers l'arrière et 4 caractères vers l'arrière pour la lettre 'Y' et ainsi de suite. Le texte final obtenu est: OUIPQYVEDVIEQJUQVUX.
Le seul mot que l'on peut trouver dans ce texte est: 'OUI', ce mot est la clef de cryptage.
[ Dash a comment ] [ No comments ]

# Posted on Thursday, 22 September 2005 at 5:03 PM

Edited on Monday, 13 November 2006 at 5:12 AM

Décryptage 3:

Décryptage 3:
- Décryptage 3: Le cryptage de Gronsfeld ressemble fortement au cryptage de Vigenère mais il utilise une clef numérique au lieu d'une clef à lettre.

Introduction:
Le cryptage de Gronsfeld est très semblable au cryptage de Vigenère mais au lieu d'utiliser une clef à lettre, il utilise une clef à chiffre. La méthode de la recherche du mot probable est pratiquement impossible à effectuer sur ce cryptage contrairement au cryptage de Vigenère.


Cryptage:
On va crypter le texte suivant: "system" avec la clef: "123" ce qui nous donne ceci: "tavugp". Voici un exemple pour mieux comprendre le fonctionnement du cryptage de Gronsfeld:


Texte clair: system
Clef: +123123
Texte crypté: tavugp


Décryptage:
On va décrypter un texte crypter par l'algorithme de Gronsfeld mais il faut que le texte soit minimum 25 fois plus long que la clef.

Pour décrypter on doit chercher des groupes de lettre les mêmes dans le texte crypté et déterminer la longeur entre ces groupes de lettre:
HDPXELVSVKHCHDPMOSUTFVSV
La distance entre les "HDP" est de: 12 et entre les "VSV": 15. Ces 2 nombres sont tout les 2 divibles par 3, donc on peut dire que la clef de cryptage est de longeur 3.
Maintenant, on doit prendre les lettres du texte crypté de 3 en 3 et faire l'analyse des fréquences d'apparitions des lettres. La lettre qui apparaitra le plus souvent sera normalement un "e" et on pourra donc déduire les autres lettres.

Tout ceci est bien long à réaliser à la main, j'ai donc fait un programme en C++ qui décrypte et crypte Gronsfeld. Je vous laisse la source afin que vous puissiez améliorer le programme. Voici le programme: Gronsfeld.exe et la source: Gronsfeld.cpp.
[ Dash a comment ] [ No comments ]

# Posted on Thursday, 22 September 2005 at 5:05 PM

Edited on Monday, 13 November 2006 at 5:11 AM

Décryptage 4:

Décryptage 4:
- Décryptage 4: Voici un petit tuturial qui explique comment crypter et décrypter le cryptage de Polybe.


Introduction:
Le cryptage de Polybe est un des premiers cryptages de substitution. Il a été inventé voila environ 2200 ans.


Cryptage:
Pour notre exemple de cryptage, nous allons crypter le texte "system" avec la clef "need":
Dans ce cryptage la lettre "W" est supprimé et est remplacé par "V".
Dans le clef de cryptage on ne peut pas avoir 2 fois la même lettre et donc nous devons remplacer la clef "need" par "ned". Voici le tableau de 25 cases où l'ont met la clef:

0 1 2 3 4 5
1 n e d a b
2 c f g h i
3 j k l m o
4 p q r s t
5 u v x y z


Le cryptage de la lettre "a" donne: "14", le cryptage de "v" donne: 52, etc...
Le cryptage du mot "system" avec la clef "ned" donne: 445444451234


Décryptage:
Le décryptage d'un cryptage monoalphabéthique se fait principalement grâce à la fréquence des lettres mais on n'obtient pas toujours un beau résultat...

Pour commencer on recherche le chiffre qui apparait le plus souvent dans le texte crypté et on peut en déduire que ce chiffre est la lettre "e" vu que en français c'est la lettre qui apparait le plus souvent.
On peut faire pareil avec le "a" qui apparait à 8.40% mais attention le "s" apparait à 8.08% ce qui est très proche du "a" et donc il pourrait y avoir une erreur.
Il y a aussi d'autre chose que la fréquence des lettres qui peut nous aider pour le décryptage: en français le bigramme "es" apparait très souvent et donc on peut en déduire qu'après le "e" qu'il y a peut-être un "s".

Biensur, il est pratiquement impossible d'obtenir un résultat parfait mais si l'ont trouve plus ou moins la clef, le texte décrypté sera plus ou moins clair.
Voici le programme qui permet de crypter/décrypter en Polybe: Polybe.exe et la source: Polybe.cpp.
[ Dash a comment ] [ No comments ]

# Posted on Thursday, 22 September 2005 at 5:07 PM

Edited on Monday, 13 November 2006 at 5:10 AM