IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer page externe protégée par mot de passe


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    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 : 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
     
    <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">Č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">Ελληνικά </option>
    <option Value="ko">한국어 </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

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 174
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    il faut utiliser CURL.

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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!:

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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 :
    <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 :

    <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 : 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
     
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
     
    <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

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    est-ce qu'avec ceci c'est pas mieux ?
    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
    <?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 : 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
    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.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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>

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    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

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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!!

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Points : 57
    Points
    57
    Par défaut
    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!

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/11/2014, 09h40
  2. Réponses: 2
    Dernier message: 04/12/2013, 21h01
  3. [XP Pro]Partage protégé par mot de passe
    Par arkienou dans le forum Windows XP
    Réponses: 4
    Dernier message: 08/02/2007, 13h41
  4. Comment ouvrir une base Access protègée par mot de passe
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/09/2006, 13h53
  5. Ouvrir classeur Excel "protégé" par mot de passe
    Par LostIN dans le forum Sécurité
    Réponses: 1
    Dernier message: 19/07/2006, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo