# \[Résolu\]\[wget\] user, pass, checkbox, et variable "challenge"

**URL:** <https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 6:21 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109 "2016-02-20T18:21:45Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dr4gOoN](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@Dr4gOoN](https://www.debian-fr.org/u/Dr4gOoN)\
**Post date:** [Février 20, 2016, 6:21 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/1 "2016-02-20T18:21:45Z")

</div>

Bonjour,

Je souhaiterais me connecter en ligne de commande à l’interface hotspot de neuf ([hotspot.neuf.fr/](https://hotspot.neuf.fr/)), qui necessite, d’entrer un user, mot de pass, de cocher un checkbox, et de valider l’ensemble.

J’ai tenté un :

```auto

```

mais, rien n’y fait, et je crois savoir pourquoi.

D’une part, ce n’est pas les seuls variable envoyé dans le POST (plusieurs champs hidden).  
=\> Peut-être faut il spécifier TOUS les champs dans mon --post-data ?

D’une autre part, il y a une full-titude de javascript derriere la connexion, dont 1 generation pseudo-aléatoire d’un pass “challenge” de type “9ed8ef1c67ec8931fbcdce2a48dcc93c”  
=\> Comment le prendre en compte, ou le générer ?

Merci d’avance !

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 6:22 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/2 "2016-02-20T18:22:00Z")

</div>

Tu as regardé sur les wiki de neuf ([justneuf.com/wiki/index.php/Accueil](http://www.justneuf.com/wiki/index.php/Accueil)) s’ils n’avaient pas déjà fourni des scripts pour ça ?  
Sinon, tu peux aussi regarder auprés de la communauté fon ([www.fon.com](http://www.fon.com)): à priori, c’est le même systême d’authentification, et ils sont trés geeks, chez fon.  
Sinon, à part sniffer la transaction (en https ?)… Pas d’idée.

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 6:22 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/3 "2016-02-20T18:22:01Z")

</div>

Une méthode peut être d’utiliser lynx:

```auto

```

tu fais ta session, puis tu la recommence avec  
lynx [hotspot.neuf.fr/](https://hotspot.neuf.fr/) -cmd\_script=/tmp/neuf.cmd

---

<div class="post-metadata">

**Author:** ![Desintegr](https://www.debian-fr.org/user_avatar/www.debian-fr.org/desintegr/32/3771_2.png) [@Desintegr](https://www.debian-fr.org/u/Desintegr)\
**Post date:** [Février 20, 2016, 6:22 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/4 "2016-02-20T18:22:05Z")

</div>

> [@](#):
>
> Je souhaiterais me connecter en ligne de commande à l’interface hotspot de neuf ([hotspot.neuf.fr/](https://hotspot.neuf.fr/)), qui necessite, d’entrer un user, mot de pass, de cocher un checkbox, et de valider l’ensemble.

Personnellement, je n’utiliserai pas wget pour faire ce que tu souhaites, il n’a pas vraiment été conçu pour cela.

Il existe d’autres outils, plus adaptés, qui permettent de simuler facilement le comportement d’un humain à travers à navigateur : le module Perl WWW::Mechanize [1] (il existe des équivalents pour Ruby [2] ou Python [3]).

Ce module permet facilement de se connecter à une page web, de remplir des formulaires, de cliquer sur des boutons, des liens, gérer les cookies, etc.

Pour plus d’informations, lis l’article Construire des robots pour le web de Linux Magazine n°75 [4][5].

[1] [search.cpan.org/dist/WWW-Mechanize/](http://search.cpan.org/dist/WWW-Mechanize/)  
[2] [mechanize.rubyforge.org/mechanize/](http://mechanize.rubyforge.org/mechanize/)  
[3] [http://wwwsearch.sourceforge.net/mechanize/](http://wwwsearch.sourceforge.net/mechanize/)  
[4] [articles.mongueurs.net/magazines/linuxmag75.html](http://articles.mongueurs.net/magazines/linuxmag75.html)  
[5] [articles.mongueurs.net/magazines/linuxmag77.html](http://articles.mongueurs.net/magazines/linuxmag77.html)

---

<div class="post-metadata">

**Author:** ![Dr4gOoN](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@Dr4gOoN](https://www.debian-fr.org/u/Dr4gOoN)\
**Post date:** [Février 20, 2016, 6:22 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/5 "2016-02-20T18:22:14Z")

</div>

Merci de l’info, avant de creuser, j’ai un petit script shell qui marche 🙂

```auto
#!/bin/bash

url="https://hotspot.neuf.fr/nb4_crypt.php"
okmatch="licitations"
login="0000000000"
password="cacaproot"

# quel que soit le site visité, on sera redirigé vers le
# portail captif qui génerera un token. L'utilisation du switch
# -L permet de suivre la redirection de type 302
challenge=`curl -L http://www.google.com|grep name=\"challenge|sed -r 's/.*value=\"([0-9a-z]+)\".*/\1/'`

#echo "challenge: ${challenge}"

# la phase 2 renvoie une réponse au token
response=`curl -L -d "username=${login}&password=${password}&cond=on&accessType=neuf&nb4=https://hotspot.neuf.fr/nb4_crypt.php&challenge=${challenge}" ${url}|grep response=|sed -r 's/.*response=([0-9a-z]+).*/\1/'`

#echo "reponse: ${response}"
# enfin, un refresh renvoie sur une page qui attend la
# réponse précedente pour activer la connexion
final=`curl -L "http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/${login}&response=${response}&uamip=192.168.2.1&userurl=http%3A%2F%2Fwww.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&lang=fr&ARCHI"|grep ${okmatch}`

if [! -z "${final}"];then
        echo "connected"
else
        echo "connection failed"
fi
```

---

<div class="post-metadata">

**Author:** ![besla](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/e79b87/32.png) [@besla](https://www.debian-fr.org/u/besla)\
**Post date:** [Février 20, 2016, 6:24 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/6 "2016-02-20T18:24:21Z")

</div>

Bonjour,  
merci pour le petit scripte, il est vraiment très utile pour mon eepc.  
donc, j exécute, (sur une debian) et j ai une erreur du genre “curl: (77) error setting certificate verify locations”, j ai jete un coup d oeil sur les manpages mais il s arrete au 76 :  
" 76 Character conversion functions required

```
   XX There will appear more error codes here in future releases. The
          existing ones are meant to never change. "

```

quelqu un aurait une idée de ce que ca signifie ?

---

<div class="post-metadata">

**Author:** ![Dr4gOoN](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/a9adbd/32.png) [@Dr4gOoN](https://www.debian-fr.org/u/Dr4gOoN)\
**Post date:** [Février 20, 2016, 6:24 UTC](https://www.debian-fr.org/t/resolu-wget-user-pass-checkbox-et-variable-challenge/16109/7 "2016-02-20T18:24:30Z")

</div>

Je n’ai pas solution toute fait, mais regarde du coté du httpS (peut etre une librairie curl a ajouter)
