Pb d'identification automatisée lors de l'accès à un site web

hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006 - 29 août 2005 à 13:52
hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006 - 30 août 2005 à 17:17
Bonjour et merci de pretter attention à mon prob.

Tout d'abord je suis débutant en java et en prog réseau donc n'hésitez pas à être explicite !
Voilà je cherche à aspirer des fichiers sur un site qui est protégé par mots de passe. J'ai essayé de "posté" un cookie avec les bons paramètres :

String donnees = URLEncoder.encode("USER", "UTF-8")+
"="+URLEncoder.encode("[mailto:machin@truc.fr machin@truc.fr]", "UTF-8");
donnees += "&"+URLEncoder.encode("PASSWORD", "UTF-8")+
"=" + URLEncoder.encode("abc123", "UTF-8");
//System.out.println(donnees);
//création de la connection
URL url = new URL(args[0]);
URLConnection conn = url.openConnection();
//conn.setDoOutput(true);
//envoi de la requête
/*writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(donnees);
writer.flush();*/

//conn.setRequestProperty("cookie","[mailto:USER=machin@truc.fr&PASSWORD=abc123 USER=machin@truc.fr&PASSWORD=abc123]");
conn.setRequestProperty("cookie",donnees);

//lecture de la réponse
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

Les paramètres st stockés ds la variable donnees en utilisant URLEncoder à cause du symbole "@" qui apparait ds l'identifiant. Comme on peut voir ds les commentaires, j'ai essayé avec et sans URLEncoder. On peut aussi voir que j'ai essayé d'envoyer à la main les paramètres avec la méthode "post" avec un OutputStreamWriter

Ca ne fonctionne pas et je reçois le message suivant :

java.io.IOException: Server returned HTTP response code: 400 for URL: https://www.extranetgc.entreprises.francetelecom.com/extranetgc_auth.fcc?TYPE=33554433&REALMOID=06-3d4943e4-a1cd-0019-0000-668e0000668e&GUID=&SMAUTHREASON=0&TARGET=$SM$https%3a%2f%2fwww%2eextranetgc%2eentreprises%2efrancetelecom%2ecom%2fcgi-bin%2ffo_egc%2fextranetgc%2fjsp%2ffront%2fStartPortal%2edo


at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)


at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)


at post.main(post.java:53)

qui signifie qu'il y a une erreur d'identification !

Je me disais que tt simplement je n'envoyais pas les bons paramètres (il faut peut-etre ajouter les "hidden inputs"). Ci-joint le formulaire d'identification du site en question https://www.extranetgc.entreprises.francetelecom.com/extranetgc_auth.fcc
J'ai mis en orange la partie qui me semble pertinente

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>France Telecom - Extranet Grands Comptes</title>
<meta http-equiv="imagetoolbar" content="no"/>
<script language="JavaScript"><!--
var essai=0;
var maxessai=4;
var cook =document.cookie;


function preload() {
if (document.images) {
// Ce navigateur reconna� les objets Image
var sFilename=new Array(
"/extranetgc/css/front/menu/all.css",
"/extranetgc/css/front/menu/ie.css",
"/extranetgc/css/front/menu/nn.css",
"/extranetgc/javascript/front_menu.js",
"/extranetgc/javascript/menu/nav.js"
);
var oFile=new Array();
for (var i=0 ; i<sFilename.length ; i++) {
oFile[i]=new Image();
oFile[i].src=sFilename[i];
}
}
}


function getEssai() {
var pos=cook.indexOf("SMTRYNO=", 0);
if (pos>=0) {
var fin=cook.indexOf(";", pos);
if (fin<=-1)
fin=cook.length,
essai=cook.substring(pos+8, fin);
essai=essai.substring(0, 1);
}
}


function openInTopWindow() {
top.checkIsTop=true;
if (!self.checkIsTop)
top.location=self.location;
setFocus();
if (getEssai()==0)
preload();
}


function setFocus() {
var oForm=document.forms[0];
if (!oForm)
return;
var oUser=oForm.USER;
if (oUser && oUser.focus)
oUser.focus();
} //--></script>
<link rel="stylesheet" type="text/css" href="/extranetgc/css/front/menu/all.css"/>
<!--[if IE]><link rel="stylesheet" type="text/css" href="/extranetgc/css/front/menu/ie.css"/><![endif]-->
<![if !IE]><link rel="stylesheet" type="text/css" href="/extranetgc/css/front/menu/nn.css"/><![endif]>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>



<form name=\"Login\" method=\"POST\">
----

,
<table width="260" border="0" cellspacing="0" cellpadding="0">
----, </td>
,
,

----

,
,

----

,
,
,

----

<table width="100%" border="0" cellspacing="0" cellpadding="0">
----, </td>

</td>
<td height="28"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
----, </td>

<script language="JavaScript">
<!--
getEssai();
if(essai>0)
{
essai++;
maxessai=4-essai;
document.write("Votre indentifiant ou votre mot de passe est incorrect.
Attention, il vous reste " + maxessai + " essai(s)<!"+"-"+"-");
}
//-->
</script>

<script language="JavaScript">
<!--
if(essai>0)
document.write("-"+"->");
//-->
</script>

</td>
<td width="39"></td>
<td colspan="2"></td>
</tr>
</table>
,




,
,
,

----

,
<table width="100%" border="0" cellpadding="3">
----,
<script language=\"JavaScript\">
<!--
if(essai>0)
document.write('Pour acc&eacute;der &agrave; votre espace client, veuillez saisir votre identifiant
et votre mot de passe.<!'+'-'+'-');
//-->
</script>
Si vous ne poss&eacute;dez pas encore d'identifiant et de mot de passe
pour acc&eacute;der &agrave; votre extranet, contactez d&egrave;s &agrave; pr&eacute;sent votre
interlocuteur commercial France T&eacute;l&eacute;com.
<script language=\"JavaScript\">
<!--
if(essai>0)document.write(\"-\"+\"->\");
//-->
</script>

</td>

</td>
<td width="36" valign="top"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>

</html>

Pour ce qui est du cookie envoyé et utilisé par le site, il n'est pas permanent ( c'est un "session cookie") et je n'ai pas réussi à le récupérer d'une manière ou d'une autre...
Merci de bien vouloir m'aiguiller, c'est urgent !!!

1 réponse

hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
30 août 2005 à 17:17
J'ai réussi en employant la méthode
conn.setRequestProperty("Cookie","Une longue liste de valeurs alphanumériques");
où la "longue liste de valeurs alphanumériques" a été récupérer à partir d'un outil permettant de scruter l'activité du réseau (ethereal pour ne pas le nommer). J'ai alors intercepter un paquet entre ma machine et mon compte e-mail yahoo où apparaissait le cookie.

Or yahoo, c'était juste pour essayer la méthode. Moi, je vx me connecter au site donné un peu plus haut (dsl pr la longueur du prem mess) et c'est un site HTTPS donc la partie HTTP de la trame ds ethereal est encodée, impossible de lire le champ cookie !

Qqn aurait une idée, please ? Et sinon, en oubliant les cookies, ça ne serait possible de créer un prog qui remplissent les deux champs d'authentification du site en question (je rpl l'url https://www.extranetgc.entreprises.francetelecom.com/extranetgc_auth.fcc) comme le ferait un utilisateur depuis son browser
0
Rejoignez-nous