Eh oui nopasswd continue malgré la canicule du terrible moi d'aout. Dans cette partie du zine nous allons aborder la structure du /etc/passwd, non ce n'est pas de la cryptographie mais du codage. Pour être plus précis il s'agit de calcul de TRANSLATION de lettres, l'idée mettant venue a l'esprit en faisant de la 3d.Et même si c'était considéré comme de la cryptographie celle ci est légal puisqu'elle ne possède pas de clef de cryptage, car en france seul sont autorisées les clef de codage de huit bits. Bref, pour aborder ce sujet voici un exemple de codage qui fait cet effet avec toujours un minimum de lignes, et une simple boucle fait largement l'affaire.

Exemple:

CLS

INPUT "mot"; mot$

INPUT "crypt"; d

FOR i = 1 TO LEN(mot$)

x = ASC(MID$(mot$, i, 1))

x = x + d: IF x > 84 + 26 THEN x = x - 26

cod$ = cod$ + CHR$(x)

NEXT i

PRINT : PRINT "mot code:"; cod$

PRINT

Et voilà !!! on peut pas trouve plus simple je pense. Mais qu'est - ce qu'une translation? imaginons pour des lettres classées selon le model suivant: ABCD et une translation de 3 le résultat donne: CDEF. Pour notre programme j'ai donc choisi une variable mot$, pour votre mot a coder, d qui est la valeur de la translation.

Ici nous avons une façon plus élégante d'un exemple de ce programme, moi ca me rappelle vaguement quelque chose:

CLS

LOCATE 1, 25: PRINT "Test de creation de login"

LOCATE 3, 1

INPUT "Entrez votre login"; login$

INPUT "Entrez votre password"; mot$

INPUT "Donnez une clef de codage"; d

FOR i = 1 TO LEN(mot$)

x = ASC(MID$(mot$, i, 1))

x = x + d: IF x > 84 + 26 THEN x = x - 26

cod$ = cod$ + CHR$(x)

NEXT i

PRINT : PRINT "vous avez saisie"

PRINT : PRINT "login:"; login$

PRINT : PRINT "password:"; mot$

PRINT : PRINT "password crypte:"; cod$

Voyez vous même.

Aspect d'un /etc/passwd

root:x:0:1:Super-User:/:/sbin/sh

daemon:x:1:1::/:

bin:x:2:2::/usr/bin:

sys:x:3:3::/:

adm:x:4:4:Admin:/var/adm:

Serait - il possible de refaire ce genre de fichier?

Je pense oui que ca serait pas plus dur que notre programme vu + haut. En faites il suffirait de créer un .dat un peu comme un novell, pour éviter des commandes du genre cat /etc/passwd,cela protégerai un peu mieux notre programme.

De quoi avons nous besoins?

- 1 une fonction création de login

- 2 une fonction qui sépare l'espace entre les caractères

- 3 une fonction qui cree un fichier .txt

Le but de cette fonction de trie n'est pas de remettre des nombres ou des mots dans le bon ordre, mais de les classer sous forme de tableau a l'aide de DATA afin de pouvoir reproduire ceci:

adm:x:4:4:Admin:/var/adm:

Exemple simple:

 

CLS

OPEN "PASSWD" FOR OUTPUT AS #1

DO

INPUT "user :", login$

INPUT "password :", pass$

INPUT "Donnez une clef de codage"; d

WRITE #1, login$, cod$

INPUT "Ajouter un autre user? "; R$

 

FOR i = 1 TO LEN(pass$)

x = ASC(MID$(pass$, i, 1))

x = x + d: IF x > 84 + 26 THEN x = x - 26

cod$ = cod$ + CHR$(x)

NEXT i

LOOP WHILE UCASE$(R$) = "O"

CLOSE #1

'Afficher le fichier … l'‚cran.

OPEN "PASSWD" FOR INPUT AS #1

CLS

PRINT : PRINT "vous avez saisie"

PRINT : PRINT "login:"; login$

PRINT : PRINT "password:"; pass$

PRINT : PRINT "password crypte:"; cod$

 

DO WHILE NOT EOF(1)

INPUT #1, Rec1$, Rec2$ 'Lecture depuis fichier.

PRINT Rec1$, Rec2$ 'Affichage à l'écran.

LOOP

Donc ce petit programme vous demande de saisir votre login, votre password, une clé de codage et celui ci s'enregistre dans un texte appelle: PASSWD. Nous voici en face d'un projet de cryptographie intéressant, puisqu'il offre un choix de codage différent pour chaque ligne. Quand le programme vous demande si vous voulez ajoutez une entre appuyez sur O pour continuer ou N pour arrêter. Les logins et password s'ajouteront automatiquement.

Resultat:

"passwd",""

"root","`kccgn"

"bin","`kccgn]la]lZ_V"

"demos","`kccgn]la]lZ_V]a"

 

Initiation au cracker

Un cracker c'est quoi? C'est un programme qui a pour fonction de décoder un password crypté. Le programme qui vient montre un enregitrement de mot représente sous forme de DATA. Ces DATA sont initialiser par une variable mot$ dont le nombre de mot enregistre du programme est 6.Ensuite on prends une variable m qui initialise le compteur des verifications de ces DATA. Mais si on veut créer nous meme notre propre dictionnaire, vous avez juste a changer le DIM mot$(6) et de remplacer le 6 par le nombre de mot que vous souhaitez rentrer en DATA, et bien sur de les rajouter ensuite dans les DATA en fin de ligne du programme.

DEFINT A-Z

DIM mot$(6)

RANDOMIZE time

FOR i = 1 TO 6

READ mot$(i)

NEXT

boucle:

m = INT(RND * 6) + 1

z$ = mot$(m)

CLS :

LOCATE 14, 30: PRINT "================"

LOCATE 15, 30: PRINT "TEST d'anagramme"

LOCATE 16, 30: PRINT "================"

LOCATE 1, 1: INPUT "Pressez sur entree pour voir la liste du dictionnaire:"; z$

PRINT : PRINT

IF z$ = mot$(m) THEN PRINT ""; z$ ELSE PRINT ""; mot$(m)

10 IF INKEY$ <> CHR$(13) THEN 10

GOTO boucle:

DATA boubou,bobo,toto,titi,tata,tete

Mais le vrai but d'un cracker, est d'ouvrir le fichier des mots de passe, et, bien sur de pouvoir decoder le password crypter des utilisateurs. Pour cela on a qu'a ouvrir les fichiers et d'enregistrer un maximum de mots dans les DATAdu programme, et de vérifier si la valeur est vrai au fausse afin de pouvoir afficher le résultat. Pour ce faire, on a, a connaitre bien sur le système de codage de notre système, qui sont (bien sur) différents les uns des autres.