#!/usr/bin/perl ## Versione 2.13 del 2008-07-31 ## Servono i pacchetti libwww-perl e libcrypt-ssleay-perl use LWP; use HTTP::Cookies; use HTTP::Request::Common qw(POST); $user= "user"; $pass= "pass"; $ff= $ARGV[0]; $msg= $ARGV[1]; if ($ff =~ m/(..)(.*)/) { $pre= $1; $num= $2; } if ($#ARGV != 1) { print "Usage: $0 \n"; print " if contain spaces please use \" around it\n"; die; } my $browser= LWP::UserAgent->new; $browser->agent("Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"); $browser->cookie_jar(HTTP::Cookies->new(file => "vyke.cookies", autosave => 1)); my $req= 'https://www.vyke.com/index.jsf'; my $res= $browser->get($req); if ($res->is_success) { my $ff= $res->content; if ($ff =~ m/name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"/) { $idfaces= $1; } else { dumpcode('vyke.idfaces',$ff); print "javax.faces / Regex error?\n"; die; } } else { print $res->status_line, "\n"; die; } my $req= 'https://www.vyke.com/index.jsf', my $param= [ 'AJAXREQUEST' => '_viewRoot', 'headerForm' => 'headerForm', 'autoscroll' => '', 'javax.faces.ViewState' => $idfaces, 'headerForm:openLoginForm' => 'headerForm:openLoginForm' ]; my $res= $browser->post($req, $param); if ($res->is_success) { my $ff= $res->content; if ($ff =~ m/'floatPanelInclude:loginPopupForm:(.*?)':'floatPanelInclude:loginPopupForm/) { $idlogin= $1; } else { dumpcode('vyke.idlogin',$ff); print "loginform / Regex error?\n"; die; } } else { print $res->status_line, "\n"; die; } my $req= 'https://www.vyke.com/index.jsf', my $fpil= "floatPanelInclude:loginPopupForm:$idlogin"; my $param= [ 'AJAXREQUEST' => '_viewRoot', 'floatPanelInclude:loginPopupForm:username' => $user, 'floatPanelInclude:loginPopupForm:password' => $pass, 'floatPanelInclude:loginPopupForm' => 'floatPanelInclude:loginPopupForm', 'autoscroll' => '', 'javax.faces.ViewState' => $idfaces, $fpil => $fpil ]; my $res= $browser->post($req, $param); if ($res->is_success) { my $req= 'https://www.vyke.com/index.jsf'; my $res= $browser->get($req); my $ff= $res->content; if ($ff =~ m/'smsSenderForm:(.*?)':'smsSenderForm/) { $idsms= $1; } else { dumpcode('vyke.smsform',$ff); print "smsform / Regex error?\n"; die; } if ($ff =~ m/name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"/) { $idfaces= $1; } else { dumpcode('vyke.idfaces2',$ff); print "javax.faces2 / Regex error?\n"; die; } if ($ff =~ m/(.*?)<\/span>/) { $balance= $1; print "Balance: $balance\n"; } else { dumpcode('vyke.balance',$ff); print "balance / Regex error?\n"; } } else { print $res->status_line, "\n"; die; } my $req= 'https://www.vyke.com/index.jsf', my $ssf= "smsSenderForm:$idsms"; my $param= [ 'AJAXREQUEST' => '_viewRoot', 'smsSenderForm:msisdnCountry' => $pre, 'smsSenderForm:msisdn' => $num, 'smsSenderForm:msgText' => $msg, 'smsSenderForm' => 'smsSenderForm', 'autoscroll' => '', 'javax.faces.ViewState' => $idfaces, $ssf => $ssf ]; my $res= $browser->post($req, $param); if ($res->is_success) { my $ff= $res->content; if ($ff =~ m/(.*?)<\/span>/) { $newbalance= $1; print "New Balance: $newbalance\n"; } else { dumpcode('vyke.balance2',$ff); print "balance2 / Regex error?\n"; } } else { print $res->status_line, "\n"; die; } exit 0; sub dumpcode($nf, $cont) { my($nf, $cont)= @_; open DUMP, ">$nf"; print DUMP $cont; close DUMP; }