Récupérer le code source d'une page protégée par htaccess

Soyez le premier à donner votre avis sur cette source.

Vue 9 544 fois - Téléchargée 1 028 fois

Description

Voilà ça fait plusieurs jours que je cherche comment récupérer le code source d'une page protégée par htaccess (login et mot de passe), sans rien trouver.
Après plusieurs heures de recherche j'ai enfin trouvé, donc je publie cette source qui sera certainement très utile pour certains :)

Objet de connexion nécessaire : un winsock

Source / Exemple :


Dim Port As Integer
Dim Codes As String
Dim Login As String
Dim Password As String

Login = "votre_login"
Password = "votre_password"

Port = 80 'port HTTP
Codes = Encoder(Login & ":" & Password)
'La fonction Encoder est une fonction à développer (cryptage Base64).

'Si les codes d'accès sont déjà connus, vous pouvez simplement utiliser un convertisseur par exemple à cette adresse :
'http://yansanmo.no-ip.org/contenu/?id=214
'Rappel : le code doit être encrypté sous la forme de Login:Mot_de_passe

''''''''''PREMIER CAS : CONNEXION A UN ROUTEUR''''''''''

Dim Adresse_IP As String
Adresse_IP = "192.168.0.1" 'IP de votre routeur, à modifier selon le cas.

Winsock.Connect Adresse_IP, Port

Private Sub Winsock_Connect()
Text1.Text = ""
Winsock.SendData "GET / HTTP/1.1" & vbCrLf & "User-Agent: Navigateur" & vbCrLf & _ 'nom du navigateur client (facultatif :)  )
    "Host: " & Adresse_IP & vbCrLf & "Authorization: Basic " & Codes & vbCrLf & vbCrLf 'envoi des codes cryptés, plus double retour chariot

End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
    Dim data As String
    Winsock.GetData data
    Text1.Text = Text1.Text + data 'data contient donc le code source.
End Sub

''''''''''SECOND CAS : CONNEXION A UN SERVEUR WEB''''''''''

Dim Serveur As String
Serveur = "www.machin.com" 'Adresse du site

Winsock.Connect Serveur, Port

Private Sub Winsock_Connect()

Dim Page As String
Page = "http://www.machin.com/page.html/" 'avec le slash final

Winsock.SendData "GET " & Page & " HTTP/1.0" & vbCrLf & _ 'demande de récupération d'information + définition du protocole ainsi que sa version
    "User-Agent: Navigateur" & vbCrLf & _ 'nom du navigateur client (facultatif :)  )
    "Accept: */*" & vbCrLf & "Accept: text/html" & vbCrLf & _ 'type de données acceptées
    "Authorization: Basic " & Codes & vbCrLf & vbCrLf 'envoi des codes cryptés, plus double retour chariot

End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
    Dim data As String
    Winsock.GetData data
    Text1.Text = Text1.Text + data 'data contient donc le code source.
End Sub

''''''''''''''''''''

Conclusion :


Informations supplémentaires :
http://fr.wikipedia.org/wiki/HTTP_Authentification

Une page de conversion rapide Base64 :
http://yansanmo.no-ip.org/contenu/?id=214

Je n'ai peut être pas été très très clair mais c'est assez complet, donc si vous avez une question n'hésitez pas et je serai plus précis :)

PS : pour une raison inconnue, il peut arriver qu'il faille plusieurs essais pour que ça marche :P.
Cela dit, la théorie est là.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
27
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
23 décembre 2017

Très fort ! Ca marche du premier coup
Thank's a lot
GZ
Messages postés
359
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
7 septembre 2009

Les version de HTTP sont différentes car j'ai remarqué (je ne sais pas pourquoi) que pour la 1.1 il y avait des problèmes pour le 2e cas.

Pour ce qui est de la gestion des paquets oui j'aurais pu faire un
Text1.Text = Text1.Text + data

L'en-tête Host m'a été données par Fiddler et j'ai vu que ça marchait.. Donc je change pas une équipe qui gagne ! :)

Pour finir, je ne vois pas ce que je peux rajouter pour que ma source soit davantage complète...
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
Salut :)
Trop d' à peu-près.

Les Data_Arrival() sont pas bon parce qu'ils acceptent bien les paquets mais au bout du compte on ne se retrouve qu' avec le dernier.

Pourquoi le premier est HTTP /1.0 et le second HTTP 1.1 ? Gardes 1.1 pour les deux, on est en 2006.

Toujours côté RFC2616, spécifier le Host n'a strictement rien à voir avec le routeur: l'info Host est exclusivement destinée au système HTTP du serveur ça n' a rien à voir avec le client qui a un routeur.

Le "double retour charriot" est en réalité un double CRLF. Ce n'est pas pour respecter les normes réseau mais pour se conformer au protocole HTTP.

Je sais c'est difficile à accepter toutes ces remarques c'est juste pour éviter de transmettre et véhiculer des informations erronées.

Il faudrait revoir tout ça et pourquoi pas déposer une source complète qui soit testable juste pour vérifier que ça marche.

Bonne prog l' ami
Messages postés
359
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
7 septembre 2009

Ok, je vais même faire sous forme de fonction pour plus de portabilité..
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Et pourquoi pas nous faire un zip avec tout dedans ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.