Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 10h06   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
Par défaut Récupérer page externe protégée par mot de passe

Bonjour.

Je sais à prés prés déjà récupérer des informations ciblés sur une page située sur un site externe avec la function PHP get_file mais cette page en question est protégée par mot de passe.
A noter que j'ai les pleins droits pour faire ceci et que je suis le gérant du système et je connais donc les mots de passe!

Quelque soit la page demandée, si la session est expirée, le serveur distant renvois vers la page d'accueil ou il est détaillé la zone de mot de passe :
Code :
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
 
<tr>
								<body>
		<script type="text/javascript">
		<!--
			checkFrameset();
 		-->
		</script>
		<table class="home-layout-table" id="Table1">
			<tr>
				<td align="center" class="tdcol0">
					<img src="image/accueil.gif" alt="Titre">
				</td>
				<td class="tdcol1">
					<table id="OvTbl" class="home-overview-table">
						<tr class="evenrow">
							<td class="tdcol0">Donnée1:</td>
							<td id="Donnée1" class="tdcol1">82,82</td>
						</tr>
						<tr class="oddrow">
							<td class="tdcol0">Donnée2:</td>
							<td id="Donnée2" class="tdcol1">48,46</td>
						</tr>
						<tr class="evenrow">
							<td class="tdcol0">Donnée3:</td>
							<td id="Donnée3" class="tdcol1">476,59</td>
						</tr>
					</table>
					<form action="login" target="mainFrame" method="post">
						<table class="home-control-table" id="Table3">
					      <tr>
						      <td class="tdcol0">Langue:</td>
						      <td class="tdcol1" colspan="2"><select name="Language" size="1">
<option Value="cs">&#268;eština </option>
<option Value="de">Deutsch </option>
<option Value="en">English </option>
<option Value="es">Español </option>
<option Value="fr" selected>Français </option>
<option Value="it">Italiano </option>
<option Value="nl">Nederlands </option>
<option Value="pt">Português </option>
<option Value="el">&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940; </option>
<option Value="ko">&#54620;&#44397;&#50612; </option>
</select>
</td>
					      </tr>
					      <tr>
						      <td height="5px"></td>
					      </tr>
							<tr>
								<td class="tdcol0">Mot de passe:</td>
								<td class="tdcol1"><input name="Password" class="input-text" type="password" size="32"></td>
							</tr>
							<tr>
						      <td></td>
								<td class="buttonrow"><input name="ButtonLogin" Value="Connexion" class="input-submit" type="submit" size="9"></td>
							</tr>
							<tr>
								<td class="messagerow" colspan="2"></td>
							</tr>
						</table>
					</form>
				</td>
			</tr>
		</table>
	</body>

Mettons que le mot de passe soit 123456, comment faire pour passer en PHP cette épreuve?
Par ailleurs, une fois loggé, je souhaiterais aller directement aller sur une page spéciale appelé TEST.html plutôt que d'afficher la lourde page de démarrage (disons après logging, une redirection 1 seconde après.
La difficulté est de différencier si on est loggé ou non afin d’éviter des scripts non optimisé, quoique si on demande TEST.html et que l'on est redirigé vers index.html, c'est qu'il faut se logguer!

Je vous remercie beaucoup pour votre aide et vous souhaite une bonne journée.

Merci
Bye
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 10h15   #2
Membre confirmé
 
Homme Arnaud
Inscription : décembre 2004
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 167
Points : 238
Points : 238
Bonjour,

il faut utiliser CURL.

Un exemple :
Code :
1
2
3
4
5
6
7
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
curl_close($ch);
A toi de jouer avec ce début de piste !
__________________
NginX, SphinxSearch Addict !!
lenono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 10h34   #3
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
Bonjour!
J'essaye déjà d'utiliser çe code avec la page d'accueil pour voir si cela fonctionne deja bien pour une page non protégée :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$ip = "12.34.56.78";
$ch=curl_init();
$timeout = 5; 
curl_setopt($ch, CURLOPT_URL, "http://".$ip."/index.html");  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
curl_setopt($ch, CURLOPT_HEADER , 0); 
curl_setopt($ch, CURLOPT_POST, 1 ); 
$response = curl_exec ($ch); 
 
print $response;
Cela m'indique :

Citation:
100 Continue Server: Cache-Control: Date: Mon, 19 Dec 2011 09:31:17 GMT Connection: keep-alive Keep-Alive: 300 HTTP/1.1 200 OK Server: NOMDUSERVEUR Cache-Control: no-store, no-cache, max-age=0 Date: Mon, 19 Dec 2011 09:31:17 GMT Pragma: no-cache Connection: keep-alive Keep-Alive: 300 ETag: Friday, December 16, 2011 Last-Modified: Fri, 16 Dec 2011 22:16:41 GMT Content-Type: text/html Content-Length: 678
Ca refuse ce genre de connections?
Merci!:
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 22h39   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
Bonjour!
Je suis débutant et peut être pas bien doué mais je ne parviens pas à passer cette barrière avec CURL! Les redirections ou mes codes m'amenes toujours vers une erreur 404.

Pourriez vous m'aider a créer ce code?? A préciser que ce n'est absolument pas pour des motifs lucratifs.

Je mets à disposition l’accès au serveur en question pour le week-end, l'adresse est 82 point 240 point 3 point 212 et le mot de passe est 1234.

Aucun risque pour la sécurité, ce serveur ne gère rien, le mot de passe est niveau utilisateur et il suffit d'appuyer sur le bouton reset pour effacer toute configuration.

Grand Grand merci pour votre aide!
Bonnes fetes!
Bye
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 12h04   #5
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
J'ai mis en accès libre le serveur en question : http://82.240.3.212 le mot de passe est 1234.

Je ne parviens pas à passer la barrière d’une redirection :

L'index indique :
Citation:
<frame src="top.htm" name="topFrame"
<frame src="home_frameset.htm" name="mainFrame"
<frame src="bottom.htm" name="bottomFrame"
Lorsqu'on regarde le code source du formulaire qui est situé sur mainFrame c'est :

Citation:
<form action="login" target="mainFrame" method="post">
<td class="tdcol0">Mot de passe:</td>
<td class="tdcol1"><input name="Password" class="input-text" type="password" size="32"></td>
<td class="buttonrow"><input name="ButtonLogin" Value="Connexion" class="input-submit" type="submit" size="9"></td>
Ainsi, la cible du login est mainFrame soit http://82.240.3.212/home_frameset.htm
Le nom du champs mot de passe est Password
Une fois identifié, je souhaite aller sur http://82.240.3.212/plant_devices_treefrm.htm

Ainsi, en toute logique soit je vise directement home_frameset.htm et je refuse les transfert dans mon curl, soit je vise index et je spécifie que le post doit se faire dans le mainFrame.

Voici mon code qui renvois vers une erreur 404 :
Code :
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
 
$post = array('Password' => '1234');
 
$ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://82.240.3.212/home_frameset.htm");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  curl_setopt($ch, CURLOPT_POST, TRUE);  
  curl_setopt ($ch, CURLOPT_AUTOREFERER, TRUE); 
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
 
curl_exec($ch);
 
curl_close($ch); 
 
 
$ch2 = curl_init();
 
$ch2 = curl_init();
  curl_setopt($ch2, CURLOPT_URL, "http://82.240.3.212/plant_devices_treefrm.htm");
  curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);  
  curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, false);
 
$output = curl_exec($ch2);
 
curl_close($ch2);
 
print_r($output);

Le soucis etant que cela ne concerne que mon serveur, si je vise Google avec ce code, cela affiche la page, contriarement à mon serveur qui renvoi vers une erreur 404 :
Code :
1
2
3
4
5
6
7
8
 
$ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://82.240.3.212/home_frameset.htm");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);  
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
Ce code doit m'en empecher dans mainFrame:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<script type="text/javascript">
		<!--
			function checkFrameset()
			{
				if(self.parent.name != "mainFrame")
				{
					top.location = "index.html";
				}
			}
		-->
		</script>
	</head>
	<body>
		<script type="text/javascript">
		<!--
			checkFrameset();
 		-->
		</script>
Une idée ?

Merci et bonne fetes
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 14h13   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

est-ce qu'avec ceci c'est pas mieux ?
Code :
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
<?php
 
$url = "http://82.240.3.212/login.php";
$ch  = curl_init($url);
$timeout = 5;
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('Password' => '1234'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);
 
if ($curl_errno > 0) {
   echo "cURL Error ($curl_errno): $curl_error\n";
}
else {
   echo "Data received: $data\n";
}
 
$ch = curl_init("http://82.240.3.212/plant_devices_treefrm.htm");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);
 
if ($curl_errno > 0) {
   echo "cURL Error ($curl_errno): $curl_error\n";
}
else {
   echo "<br />Data received: $data\n";
}
 
?>
Voici ce que je reçois :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Data received:  100 
Server: 
Cache-Control: 
Date: Thu, 12 Apr 2001 01:21:58 GMT
Connection: keep-alive
Keep-Alive: 300
 
 
<br />Data received: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
 
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Sunny WebBox</title>
	</head>
	<frameset rows="90, *" frameborder="NO" border="0" framespacing="0">
		<frame src="home_menue.htm" name="home_menue" scrolling="NO" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" noresize>
		<frame src="home.htm" name="home" scrolling="NO" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" noresize>
	</frameset>
</html>
Voilà à toi d'adapter, mais utiliser des frames c'est vraiment pas le pied.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 14h56   #7
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
On chauffe mais ce n'est pas encore bon pour l'authentification.
Ce code fonctionne uniquement si on est déjà loggué, mais il suffit de cliquer sur déconnexion pour se rendre compte que le code POST ne fonctionne absolument pas contrairement à l'affiche de la page protégée.
Comment fait tu d'ailleurs pour afficher le code source de 82.240.3.212/home_frameset.htm ??

Une piste, le bouton de déconnexion renvois vers cette adresse : <a href="home_frameset.htm?Logout=true" target="mainFrame" style="font-size: 12px; color: black; text-decoration: underline">Déconnexion</a>
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 15h42   #8
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par josse34 Voir le message
Comment fait tu d'ailleurs pour afficher le code source de 82.240.3.212/home_frameset.htm ??
Bah c'est simple : clique droit sur la page et afficher la source
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 01h41   #9
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
Citation:
Envoyé par rawsrc Voir le message
Bah c'est simple : clique droit sur la page et afficher la source
Oui ca je sait, ce que je veux dire c'est comment fait tu pour atterrir sur la source de home_frameset.htm avec ton code?!!

Par ailleurs, il ne fonctionne pas concernant la mise en POST du mot de passe, as tu une idée?

Grand merci et joyeuses fêtes!!
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 01h50   #10
Invité de passage
 
Inscription : novembre 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 29
Points : 4
Points : 4
Il dois bien exister un moyen de traiter avec PHP une page en inhibant la redirection comme le fait un view source : view-source:http://82.240.3.212/home.htm
Une fois le mot de passe inséré dans le champs "Password" sur le formulaire form action="login" target="mainFrame" (mainFrame étant home_frameset.htm contenant home_menue.htm et home.htm) method="post" de la page home.htm il doit être facile de passer cette protection pour des gens qui ont votre niveau de connaissance?!
Merci et joyeuses fêtes!
josse34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h06.


 
 
 
 
Partenaires

Hébergement Web