Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1298 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

recupération page web en perl

n°1737752
yuxi
Posté le 27-05-2008 à 14:17:53  profilanswer
 

Reprise du message précédent :
je vais t'embeter mais comment, je l'installe .???  
 
comment je lance ce fichier..
 
ce que j'ai fais, cd c:\perl\lib\LWP\Authen
donc je suis placée dans le dossier Authen
apres j'ai tape Ntlm.pm
et ça n'a rien fait ...
 

mood
Publicité
Posté le 27-05-2008 à 14:17:53  profilanswer
 

n°1737797
gilou
Modérateur
Modzilla
Posté le 27-05-2008 à 15:44:12  profilanswer
 

je te l'ai pourtant deja dit:
Tu ouvres une fenetre dos, et tu tapes ppm (puisque tu utilises active state)  
Ca te lance une application en mode fenêtré qui liste les modules a installer, tu vas choisir le module NTLM, le selectionner pour l'installer, puis l'installer (avec un bouton en haut a droite de la fenetre).
A+,


Message édité par gilou le 27-05-2008 à 15:49:32

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1737799
yuxi
Posté le 27-05-2008 à 15:48:02  profilanswer
 

oui, j'ai vu entre temps, en reflechissant bien..  
j'ai fait, directement, ppm install NTLM
 
il m'a installé, NTLM-1.03
 
dc je pense que c'est bon, si c'est le cas, le code marche tjs pas...
 
ppm tout seul, me lance une fenetre, mais j'arrive pas a l'utiliser.

n°1737804
gilou
Modérateur
Modzilla
Posté le 27-05-2008 à 15:51:03  profilanswer
 

Bon, en tout cas, tu ne devrais plus avoir l'erreur  can't locate authen/NTLM.pm @inc ...
Donc ca en est ou dans les erreurs?
A+,


Message édité par gilou le 27-05-2008 à 15:51:27

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1737809
yuxi
Posté le 27-05-2008 à 15:54:46  profilanswer
 

erreur 401 : unauthorized

n°1737816
yuxi
Posté le 27-05-2008 à 15:57:10  profilanswer
 

tu crois que c'est parce qu'il me manque des modules d'installé que ça ne marche pas ?

n°1737849
gilou
Modérateur
Modzilla
Posté le 27-05-2008 à 16:34:11  profilanswer
 

Ca ne devait pas marcher a cause de cela precedemment, mais maintenant si tu n'as plus de messages d'erreur du type can't locate... ca ne doit pas venir de cela.
Essayes de dumper completement le contenu de la reponse retournée pour voir si tu n'as pas un message plus explicite.
Bizarre, parce que le code que je t'ai donné un peu plus haut devrait alors marcher.
Dans le code  
$browser->credentials('adIP:80', '', 'domaine\\login', 'password');
tu ne met bien que l'adresse IP suivie de :80, et sans http:// devant, dans le premier parametre?
A+,


Message édité par gilou le 27-05-2008 à 16:36:49

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738045
yuxi
Posté le 27-05-2008 à 21:11:18  profilanswer
 

oui bien sur. je n'ai mis que l'adresse IP.
si ça se trouve elle est protégé d'une façon que j'ignore pour le moment. Mais ça me parait bizarre, pour ce que l'on a fait, est bon, mais ça ne suffit pas. et même en locale ça ne fonctionne pas.


Message édité par yuxi le 27-05-2008 à 21:11:51
n°1738075
gilou
Modérateur
Modzilla
Posté le 27-05-2008 à 22:39:26  profilanswer
 

C'est pour ca que je te dis de dumper la reponse a la requete pour voir s'il n'y a pas des infos a en tirer:
.......................
use Data::Dumper qw( Dumper );
my $response = $browser->request($request);
print  '$response : ', Dumper($response);
A+,


Message édité par gilou le 27-05-2008 à 22:40:27

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738154
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 09:24:15  profilanswer
 

Tiens, voici le fonctionnement de la négociation d'authentification NTLM entre le client et le serveur HTTP, negociation qui devrait être effectuée par l'user-agent.
 

NTLM-over-HTTP Handshake
 
Stage 1: Client requests a web page.
 
    1: C  --> S   GET ...
Stage 2: Server responds and says the client needs to authenticate in NTLM manner.
 
    2: C <--  S   401 Unauthorized
                  WWW-Authenticate: NTLM
Stage 3: Client responds with NTLM negotiate message that contains the identity and the domain of the client.
 
    3: C  --> S   GET ...
                  Authorization: NTLM <base64-encoded type-1-message>
Stage 4: Server challenges the client with a 8-bytes random number in the NTLM challenge message.
 
    4: C <--  S   401 Unauthorized
                  WWW-Authenticate: NTLM <base64-encoded type-2-message>
Stage 5: Client responds with a reply that uses its password to encrypt the 8-bytes random number.
 
    5: C  --> S   GET ...
                  Authorization: NTLM <base64-encoded type-3-message>
Stage 6: Authentication success. Server replies with the web page.
 
    6: C <--  S   200 Ok


Tout ca devrait se faire par les modules perl, mais en dumpant la reponse, tu devrais voir a quel stade ca coince. Dans un premier temps, avant d'utiliser Data::Dumper, ajoutes use LWP::Debug qw(+); en debut de programme, et tu devrais pouvoir tracer ce qui se passe en interne et voir ou il y a pb; ca devrait être suffisant comme trace, sinon, voir avec Data::Dumper.
A+,


Message édité par gilou le 28-05-2008 à 09:45:43

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 28-05-2008 à 09:24:15  profilanswer
 

n°1738165
yuxi
Posté le 28-05-2008 à 09:45:13  profilanswer
 

LWP::UserAgent::new:()
LWP::UserAgent::request:()
HTTP::Cookies::add_cookie_header: Checking IP for coockies
HTTP::Cookies::add_cookie_header: Checking IP for coockies (sans le premier chiffre)
HTTP::Cookies::add_cookie_header: Checking IP for coockies (sans le 1er chiffre ni le point)
HTTP::Cookies::add_cookie_header: Checking IP for coockies (sans les deux premiers chiffres)
HTTP::Cookies::add_cookie_header: Checking IP for coockies (sans les 2 premier chiffres ni le point)
HTTP::Cookies::add_cookie_header: Checking IP for coockies (sans les trois premier chiffres exp : ".144" )
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request:()
LWP::Protocol::collect: read 808 bytes
LWP::Protocol::collect: read 1089 bytes
LWP::Protocol::http::request: Keep the http connection to AD IP : PORT
LWP::UserAgent::request: Simple response: Unauthorized
 
 
voila le debut de reponse lors du lancement du script...

n°1738166
yuxi
Posté le 28-05-2008 à 09:45:56  profilanswer
 

les :() signifie, "  : ()  "

n°1738170
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 09:50:19  profilanswer
 

Si tu as mis  
use LWP::Debug qw(+);  
tu dois avoir un message  avec:
"authenticate() has been called"
et ce qui suit ce message va dire ce qui se passe au niveau de l'authentification.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738174
yuxi
Posté le 28-05-2008 à 10:01:07  profilanswer
 

#!usr/bin/perl
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTTP::Status;
use Data::Dumper qw( Dumper );  
use LWP::Debug qw(+);
 
print "Content-type: text/html\n\n";
my $browser = new LWP::UserAgent(keep_alive=>1);
$browser->credentials('IP:80', '', 'domaine\\login, 'pass');
$browser ->cookie_jar({});
$| = 1; #autoflush
my $request = new HTTP::Request( GET => "http://ad Ip/lmc/current_usage/currentUsage.jsp" ); #un seul http://
my $response = $browser->request($request);
print  '$response : ', Dumper($response);  
if ($response->is_success) {
  my $headers = $response->headers();
  print "Encoding : ".$headers->header("Content-Encoding" );            
  print "Content:\n".$response->content."\n";
} else {
  print "Erreur:".$response->status_line."\n";
}
 
 
voila le code/
 
mais j'ai pas, "authenticate () has been called"


Message édité par yuxi le 28-05-2008 à 10:07:06
n°1738177
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:08:08  profilanswer
 

Citation :

mais j'ai pas, "authenticate () has been called"


Il faut voir ce qui se passe au niveau de $browser->credentials, c'est la que ca coince, car ca n'appelle pas l'authentification NTLM. Je vais regarder dans le source de LWP
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738186
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:20:31  profilanswer
 

Bon, je vois que tu as ceci dans la reponse:

Citation :

'lient-warning' => 'Unsupported authentification scheme \'ntlm\'',


Ce qui veut dire qu'il n'a pas pu loader le module authen/NTLM
Premiere piste:
Dans le module
LWP/Authen/Ntlm.pm
remplaces la ligne
use Authen::NTLM "1.02";
par
use Authen::NTLM "1.03";
vu qu'on a installé la 1.03, c'est peut etre ca qui coince.
Ca devrait pas, car si on met 1.02 ca doit etre bon aussi pour une version superieure, mais a tout hasard...
A+,


Message édité par gilou le 28-05-2008 à 11:35:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738190
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:37:14  profilanswer
 

En tout cas, dans le code de LWP::User-Agent, c'est ici que ca se joue:

Code :
  1. $scheme = $1;  # untainted now
  2. my $class = "LWP::Authen::\u$scheme";
  3. $class =~ s/-/_/g;
  4. no strict 'refs';
  5. unless (%{"$class\::"}) {
  6. # try to load it
  7. eval "require $class";
  8. if ($@) {
  9.     if ($@ =~ /^Can\'t locate/) {
  10.  $response->header("Client-Warning" =>
  11.      "Unsupported authentication scheme '$scheme'" );
  12.     }
  13.     else {
  14.  $response->header("Client-Warning" => $@);
  15.     }
  16.     next CHALLENGE;
  17. }
  18.     }
  19.     unless ($class->can("authenticate" )) {
  20. $response->header("Client-Warning" =>
  21.     "Unsupported authentication scheme '$scheme'" );
  22. next CHALLENGE;
  23.    }
  24.   return $class->authenticate($self, $proxy, $challenge, $response,
  25.    $request, $arg, $size);


Et c'est la qu'il va falloir tracer pour comprendre, si on ne loade toujours pas le module.
A+,


Message édité par gilou le 28-05-2008 à 10:40:09

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738197
yuxi
Posté le 28-05-2008 à 10:42:21  profilanswer
 

le message d'erreur ne change pas
j'ai installe aussi MIMI::Base 64 et change la version dans le doc.pm

n°1738200
yuxi
Posté le 28-05-2008 à 10:43:27  profilanswer
 

ta trouvé ce code dans qu'elle page ?

n°1738201
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:45:05  profilanswer
 

Damned: Je pense que je sais ce qui deconne:
 
use Authen::NTLM "1.02";
use MIME::Base64 "2.12";
Je pensais le module MIME::Base64  installé par défaut, or ce n'est pas le cas. A tout les coups, c'est ce qui doit faire foirer le load du module.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738202
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:46:00  profilanswer
 

yuxi a écrit :

le message d'erreur ne change pas
j'ai installe aussi MIMI::Base 64 et change la version dans le doc.pm

Ah zut, c'était une bonne piste.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738204
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 10:49:33  profilanswer
 

yuxi a écrit :

ta trouvé ce code dans qu'elle page ?


C'est le code de LWP//User-Agent, donc dans LWP/User_Agent.pm
 
Bon premier truc a tracer:
Fais un  
print "un message reperable\n";
avant les lignes  
use Authen::NTLM "1.02";  
use MIME::Base64 "2.12";  
Qu'on sache si on arrive au moins en debut de LWP::Authen::Ntlm
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738206
yuxi
Posté le 28-05-2008 à 10:49:54  profilanswer
 

ou s'installe les modules perl ?
je fais ppm ds la console, j'installe les modules que je veux.. et ou ça va apres ?

n°1738208
yuxi
Posté le 28-05-2008 à 10:53:18  profilanswer
 

#!usr/bin/perl
print "un message reperable\n";
use Authen::NTLM "1.02";  
use MIME::Base64 "2.12";  
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTTP::Status;
use Data::Dumper qw( Dumper );  
use LWP::Debug qw(+);
 
print "Content-type: text/html\n\n";
my $browser = new LWP::UserAgent(keep_alive=>1);
$browser->credentials('10.5.211.144:80', '', 'KDEMO\\Administrateur', 'Kappa2005');
$browser ->cookie_jar({});
$| = 1; #autoflush
my $request = new HTTP::Request( GET => "http://10.5.211.144/lmc/current_usage/currentUsage.jsp" ); #un seul http://
my $response = $browser->request($request);
print  '$response : ', Dumper($response);  
if ($response->is_success) {
  my $headers = $response->headers();
  print "Encoding : ".$headers->header("Content-Encoding" );            
  print "Content:\n".$response->content."\n";
} else {
  print "Erreur:".$response->status_line."\n";
}
 
 
 
reponse de la console :
 
=> Can't locate Authen/NTLM.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib.) at connexweb.pl line 3.
BEGIN failed--compilation aborted at connexionweb.pl.line3

n°1738217
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:04:02  profilanswer
 

Bon, alors il y a pb avec ta procedure d'install des modules, puisqu'ils doivent s'installer dans C:\Perl\site\lib  (et chez moi, c'est ce que ca a fait)
Donc si tu n'as pas les modules ou il faut, ca ne va pas aller.
Et ca expliquerait bien des choses.
 
Fais ppm, et utilises la fenetre pour installer, c'est tout simple, et ca te dit ou vont les modules.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738222
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:11:33  profilanswer
 

Avec la fenetre ppm, tu choisis le menu EDIT > Preferences
Et dans la dialog box PPM Preferences, la tab Area va te dire ou ca s'installe.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738224
yuxi
Posté le 28-05-2008 à 11:16:59  profilanswer
 

merci beaucoup  !!!!  
 
je crois bien que cette fois ci ça a marché !!!!!
 
heureusement, que tu étais là, sans toi, je pense bien, que je n'aurais pas réussi...
 
mais tu as l'air de t'y connaitre.. tu en fais ton metier ?

n°1738225
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:17:48  profilanswer
 

En tout cas, on sait maintenant pourquoi le module n'était pas loade: parce qu'il n'était pas correctement installé.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738226
yuxi
Posté le 28-05-2008 à 11:22:33  profilanswer
 

oui, je vais enfin, pouvoir continuer mon travail... si j'ai besoin de toi je te fais signe !! ;) ^^
 
non, en tout cas merci encore, A+

n°1738227
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:24:16  profilanswer
 

yuxi a écrit :

merci beaucoup  !!!!  
 
je crois bien que cette fois ci ça a marché !!!!!
 
heureusement, que tu étais là, sans toi, je pense bien, que je n'aurais pas réussi...
 
mais tu as l'air de t'y connaitre.. tu en fais ton metier ?

Je suis devellopeur C a la base, j'ai écrit de grosses parties de divers editeurs structurés connus, mais je suis aussi assez utilisateur de Perl, car je le trouve extremement pratique.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738228
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:24:37  profilanswer
 

yuxi a écrit :

oui, je vais enfin, pouvoir continuer mon travail... si j'ai besoin de toi je te fais signe !! ;) ^^
 
non, en tout cas merci encore, A+

:jap:  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1738234
gilou
Modérateur
Modzilla
Posté le 28-05-2008 à 11:33:59  profilanswer
 

Juste un dernier point, tu peux virer les lignes
print "un message reperable\n";  
use Authen::NTLM "1.02";    
use MIME::Base64 "2.12";  
En tete de code utilisé, c'etait juste pour tester si tout etait en place.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
intégrer un diaporama aléatoire dans ma pageIntégrer une galerie Simpleviewer sur une page HTML
Rechargement d'une partie de la page, frame obligatoire ?Lancement script PHP depuis script PERL
désigner la distance entre le haut de la fenêtre et le haut de la pageProbleme récupération valeur d'un select[Résolu]
page html sous interface mail yahoo.frUrgent ! Appel d'une page html en perl
Question pour page type .php?id 
Plus de sujets relatifs à : recupération page web en perl


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR