Bonjour à tous !
Je débute en programmation (deuxième année d'école d'info) et je fais beaucoup de petits programmes pour me faciliter la vie, ou juste par simple intérêt. Je m’intéresse en ce moment aux algorithmes Brute-Force, et me suis mis en tête de réussir à cracker l'authentification de mon propre site !
J'ai donc un peu fouiné sur le net, et j'ai trouvé comment envoyer une requête POST avec des infos personnalisées depuis un programme Java.
Voici donc les étapes que mon programme réussit à faire:
* Se connecter à mon site
* Envoyer la requête POST au site
* Récupérer le code HTML (code source) de la page.
J'attire votre attention sur cette dernière étape.
Lorsqu'un inconnu se connecte au site, il est écrit "Bonjour" (page1) sur la page d’accueil.
Lorsque c'est une personne identifiée, il est écrit "Bienvenue" (page2).
Mon critère de réussite de l'algorithme est donc que la réponse HTML contienne la chaîne "Bienvenue".
Mais là est le problème: peut importe les informations envoyées par la requête POST, je reçois toujours le code source de la page réservée aux inconnus. La chaîne contient donc toujours "Bonjour" et non "Bienvenue".
J'ai donc, en rapport avec le code ci-joint, plusieurs questions:
* Le site arrive-t-il à bloquer ce genre d'authentifications ?
* Est-ce que j'envoie la requête à la bonne page ? La page 2 est bien la réponse à la requête POST vers la page 1, non ?
* J'ai entendu parler de méthodes en Java qui prennent en compte les Cookies, dois-je les utiliser ici ?
Voici mon code (je précise que j'ai récupéré certaines parties de ce code sur le net, et ne suis donc pas le seul auteur) :
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class SendHttpPost { public static String post(String adress, String[] keys, String[] values) throws IOException{ String result = ""; OutputStreamWriter writer = null; BufferedReader reader = null; try { //Paramètre de la requette POST String data=""; for(int i=0; i<keys.length; i++){ if (i!=0) data += "&"; data +=URLEncoder.encode(keys[i], "UTF-8")+"="+URLEncoder.encode(values[i], "UTF-8"); } //Initialisation de la connection URL url = new URL(adress); URLConnection conn = url.openConnection(); conn.setDoOutput(true); //Envoie de la requête writer = new OutputStreamWriter(conn.getOutputStream()); writer.write(data); writer.flush(); //Lecture de la réponse HTML reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String ligne; while ((ligne = reader.readLine()) != null) { result+=ligne; } }catch (Exception e) { e.printStackTrace(); }finally{ try{writer.close();}catch(Exception e){} try{reader.close();}catch(Exception e){} } return result; } public static void main(String[] args){ String[] keys = {"pseudo", "pass"}; String[] values = {"toto", "123soleil"}; try { System.out.print("Réponse HTML (classe1): \n"); System.out.print(post("www.monSite.fr/accueil.html",keys ,values )); } catch (IOException e) { System.out.print("Crash main"); } } }
Partager