<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1612"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1612/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1612/atom/feed</id>
  <updated>2008-08-07T00:19:19+02:00</updated>
  <entry>
    <title>Forcer la reconnection du routeur Linksys</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1612" />
    <id>http://artisan.karma-lab.net/node/1612</id>
    <published>2008-08-07T00:19:19+02:00</published>
    <updated>2008-08-07T00:19:19+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Perl" />
    <category term="Aucun" />
    <category term="OK" />
    <category term="Snipet" />
    <summary type="html"><![CDATA[<p>
L'idée est de forcer le rédémarrage d'un routeur linksys. Cela n'a plus grand intérêt mais cela peut service à d'autres usages.
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
L'idée est de forcer le rédémarrage d'un routeur linksys. Cela n'a plus grand intérêt mais cela peut service à d'autres usages.
</p>
<!--break-->
<p>

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co1">#! /usr/bin/perl</span><br />
<br />
<span class="kw2">use</span> LWP<span class="sy0">;</span><br />
<span class="co1">#use LWP::Debug qw(+);</span><br />
<br />
<br />
<span class="kw1">my</span> <span class="re0">$browser</span> <span class="sy0">=</span> LWP<span class="sy0">::</span><span class="me2">UserAgent</span><span class="sy0">-&gt;</span><span class="me1">new</span><span class="sy0">;</span><br />
<span class="re0">$browser</span><span class="sy0">-&gt;</span><span class="me1">credentials</span><span class="br0">&#40;</span><span class="st0">'moya.karma-lab.net:80'</span><span class="sy0">,</span> <span class="st0">'', '</span>root<span class="st0">', '</span>karma8<span class="sy0">%</span>2lab9<span class="sy0">*&amp;</span><span class="st0">');<br />
my $router_url='</span>http<span class="sy0">://</span>moya.karma<span class="sy0">-</span>lab.net<span class="st0">';<br />
sub get_setup<br />
{<br />
&nbsp; my $request = HTTP::Request-&gt;new( GET =&gt; $router_url.&quot;/index.asp&quot; );<br />
&nbsp; my $response = $browser-&gt;request($request);<br />
<br />
&nbsp; if (!$response-&gt;is_success) <br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Impossible d'</span>avoir la page d<span class="st0">'index :&quot;.$response-&gt;status_line.&quot;\n&quot;;<br />
&nbsp; } <br />
}<br />
<br />
<br />
sub is_adsl_up<br />
{<br />
&nbsp; my $request = HTTP::Request-&gt;new( GET =&gt; $router_url.&quot;/Status_DSL.asp&quot; );<br />
&nbsp; my $response = $browser-&gt;request($request);<br />
<br />
&nbsp; if ($response-&gt;is_success) <br />
&nbsp; {<br />
&nbsp; &nbsp; my $status=$response-&gt;content;<br />
&nbsp; &nbsp; if ($status =~ m/.*share\.nottrained.*/)<br />
&nbsp; &nbsp; { &nbsp;<br />
&nbsp; &nbsp; &nbsp; return 0;<br />
&nbsp; &nbsp; }<br />
&nbsp; }<br />
&nbsp; else <br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;Impossible d'</span>avoir le status ADSL <span class="sy0">:</span><span class="st0">&quot;.$response-&gt;status_line.&quot;</span>\n<span class="st0">&quot;;<br />
&nbsp; } <br />
&nbsp; return 1;<br />
}<br />
<br />
sub is_ppp_up<br />
{<br />
&nbsp; my $request = HTTP::Request-&gt;new( GET =&gt; $router_url.&quot;</span><span class="sy0">/</span>Status_Router.asp<span class="st0">&quot; );<br />
&nbsp; my $response = $browser-&gt;request($request);<br />
<br />
&nbsp; if ($response-&gt;is_success) <br />
&nbsp; {<br />
&nbsp; &nbsp; my $status=$response-&gt;content;<br />
&nbsp; &nbsp; if ($status =~ m/.*share<span class="es0">\.</span>down.*/)<br />
&nbsp; &nbsp; { &nbsp;<br />
&nbsp; &nbsp; &nbsp; return 0;<br />
&nbsp; &nbsp; }<br />
&nbsp; }<br />
&nbsp; else <br />
&nbsp; {<br />
&nbsp; &nbsp; print &quot;</span>Impossible d<span class="st0">'avoir le status PPP :&quot;.$response-&gt;status_line.&quot;\n&quot;;<br />
&nbsp; } <br />
&nbsp; return 1;<br />
}<br />
<br />
sub reset_ppp<br />
{<br />
&nbsp; print &quot;Reseting PPP...\n&quot;;<br />
&nbsp; get_setup();<br />
&nbsp; my $request = HTTP::Request-&gt;new( POST =&gt; $router_url.&quot;/apply.cgi&quot; );<br />
&nbsp; $request-&gt;authorization_basic('</span>root<span class="st0">', '</span>karma8<span class="sy0">%</span>2lab9<span class="sy0">*&amp;</span><span class="st0">');<br />
my $headers = $request-&gt;headers();<br />
<br />
# Simulation d'</span>un navigateur Konqueror. J<span class="st0">'aurais pu mettre <br />
# &nbsp;'</span>Mozilla<span class="sy0">/</span><span class="nu0">4.0</span> <span class="br0">&#40;</span>compatible<span class="sy0">;</span> MSIE <span class="nu0">6.0</span><span class="sy0">;</span> Windows NT <span class="nu0">5.1</span><span class="br0">&#41;</span><span class="st0">'<br />
# Pour simuler un IE... <br />
$headers-&gt;header( '</span>User<span class="sy0">-</span>Agent<span class="st0">','</span>Mozilla<span class="sy0">/</span><span class="nu0">5.0</span> <span class="br0">&#40;</span>compatible<span class="sy0">;</span> Konqueror<span class="sy0">/</span><span class="nu0">3.4</span><span class="sy0">;</span> Linux<span class="br0">&#41;</span> KHTML<span class="sy0">/</span><span class="nu0">3.4</span><span class="nu0">.2</span> <span class="br0">&#40;</span>like Gecko<span class="br0">&#41;</span><span class="st0">');<br />
<br />
# Ajoute une liste de contenu supporté (types mime)<br />
$headers-&gt;header( '</span>Accept<span class="st0">', '</span>text<span class="sy0">/</span>html<span class="sy0">,</span> image<span class="sy0">/</span>jpeg<span class="sy0">,</span> image<span class="sy0">/</span>png<span class="sy0">,</span> text<span class="sy0">/*,</span> image<span class="sy0">/*,</span> <span class="sy0">*/*</span><span class="st0">');<br />
<br />
# Authorize le serveur à renvoyer des contenus compressés. Attention, vous devrez les décompresser vous même. A prendre avec précaution.<br />
$headers-&gt;header( '</span>Accept<span class="sy0">-</span>Encoding<span class="st0">','</span>x<span class="sy0">-</span>gzip<span class="sy0">,</span> x<span class="sy0">-</span>deflate<span class="sy0">,</span> gzip<span class="sy0">,</span> deflate<span class="st0">');<br />
<br />
# Type d'</span>encodage caractères <a target="blank" href="http://perldoc.perl.org/functions/accept.html"><span class="kw3">accept</span></a>é<br />
<span class="re0">$headers</span><span class="sy0">-&gt;</span><span class="me1">header</span><span class="br0">&#40;</span> <span class="st0">'Accept-Charset'</span><span class="sy0">,</span> <span class="st0">'iso-8859-15, utf-8;q=0.5, *;q=0.5'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1"># Type de langage accepté</span><br />
<span class="re0">$headers</span><span class="sy0">-&gt;</span><span class="me1">header</span><span class="br0">&#40;</span> <span class="st0">'Accept-Language'</span><span class="sy0">,</span> <span class="st0">'fr, en'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1"># Bien pratique, permet de faire croire au serveur que l'on vient du site www.sourceclick.com</span><br />
<span class="re0">$headers</span><span class="sy0">-&gt;</span><span class="me1">header</span><span class="br0">&#40;</span><span class="st0">'Referer'</span><span class="sy0">,</span> <span class="st0">'http://moya.karma-lab.net/index.asp'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="re0">$request</span><span class="sy0">-&gt;</span><span class="me1">content_type</span><span class="br0">&#40;</span><span class="st0">'application/x-www-form-urlencoded'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$request</span><span class="sy0">-&gt;</span><span class="me1">content</span><span class="br0">&#40;</span><span class="st0">'submit_button=index&amp;change_action=&amp;submit_type=&amp;action=Apply&amp;daylight_time=1&amp;lan_ipaddr=4&amp;vcc_config=&amp;mtu_config=&amp;wan_connection=0&amp;wan_applyonboot=1&amp;wan_encapmode=pppoe&amp;now_encapmode=pppoe&amp;wan_multiplex=llc&amp;wan_qostype=ubr&amp;wan_autodetect=1&amp;pppoe_config=&amp;pppoe_servicename=wanadoo&amp;pppoe_username=USERe&amp;pppoe_password=PASSWORD&amp;pppoe_demand=0&amp;pppoe_redialperiod=20&amp;wan_hostname=moya&amp;wan_domain=karma-lab.net&amp;mtu_auto=1&amp;lan_ipaddr_0=192&amp;lan_ipaddr_1=168&amp;lan_ipaddr_2=154&amp;lan_ipaddr_3=100&amp;lan_netmask=255.255.255.0&amp;lan_proto=static&amp;dhcp_check=&amp;time_zone=-08+1+1&amp;timer_interval=3600&amp;_daylight_time=1'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">my</span> <span class="re0">$response</span> <span class="sy0">=</span> <span class="re0">$browser</span><span class="sy0">-&gt;</span><span class="me1">request</span><span class="br0">&#40;</span><span class="re0">$request</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$response</span><span class="sy0">-&gt;</span><span class="me1">is_success</span><span class="br0">&#41;</span> <br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;Impossible de ré-initialiser le PPP :&quot;</span>.<span class="re0">$response</span><span class="sy0">-&gt;</span><span class="me1">status_line</span>.<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span> <br />
<span class="br0">&#125;</span><br />
<br />
<span class="co5">$|</span><span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span><br />
<br />
<span class="kw1">if</span> <span class="br0">&#40;</span>is_adsl_up<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;ADSL Down. Nothing to do about that...<span class="es0">\n</span>&quot;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;ADSL Up<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>is_ppp_up<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;PPP Down.<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; reset_ppp<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a target="blank" href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;PPP Up. Ok.<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>
</p>
    ]]></content>
  </entry>
</feed>
