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$
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.