PHP curl script to fetch your aib accounts (Compilments of Jon (kudos) Cremin)
updated to work with visa validation by me!
Linux users can display this infromation neetly on your desktop using such applications as http://conky.sourceforge.net
Screenshot
Code
regnumber = $regnumber; $this->challenge_phone = $challenge_phone; $this->challenge_visa = $challenge_visa; $this->challenge = ""; $this->pac = str_split($pac); array_unshift($this->pac, null); $this->ch = curl_init(); curl_setopt( $this->ch , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $this->ch , CURLOPT_SSL_VERIFYPEER , 0 ); curl_setopt( $this->ch , CURLOPT_COOKIEFILE , ".cookiefile" ); curl_setopt( $this->ch , CURLOPT_COOKIEJAR , ".cookiefile" ); curl_setopt( $this->ch , CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt( $this->ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-gb) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17" ); } public function balances() { curl_setopt( $this->ch , CURLOPT_URL , "https://aibinternetbanking.aib.ie/inet/roi/login.htm" ); $output = curl_exec( $this->ch ); preg_match( '@id="transactionToken" value="(.*)"@' , $output , $token ); curl_setopt( $this->ch , CURLOPT_POST , 1 ); curl_setopt( $this->ch , CURLOPT_POSTFIELDS , "jsEnabled=TRUE&transactionToken=" . $token[1] . "®Number=".$this->regnumber."&_target1=true" ); curl_setopt( $this->ch , CURLOPT_URL , "https://aibinternetbanking.aib.ie/inet/roi/login.htm" ); $output = curl_exec( $this->ch ); preg_match( '@id="transactionToken" value="(.*)"@' , $output, $token); preg_match( '@@' , $output , $pac1 ); preg_match( '@@' , $output , $pac2 ); preg_match( '@@' , $output , $pac3 ); $this->challenge = preg_match( "/home phone number/" , $output ) > 0 ? $this->challenge_phone : $this->challenge_visa ; $postinfo = "_finish=true&transactionToken=" . $token[1]; $postinfo .= "®Number=" . $this->regnumber; $postinfo .= "&pacDetails.pacDigit1=" . $this->pac{$pac1[1]}; $postinfo .= "&pacDetails.pacDigit2=".$this->pac{$pac2[1]}; $postinfo .= "&pacDetails.pacDigit3=" . $this->pac{$pac3[1]}; $postinfo .= "&challengeDetails.challengeEntered=".$this->challenge; curl_setopt( $this->ch , CURLOPT_POST , 1 ); curl_setopt( $this->ch , CURLOPT_POSTFIELDS , $postinfo ); curl_setopt( $this->ch , CURLOPT_URL , "https://aibinternetbanking.aib.ie/inet/roi/login.htm" ); $output = curl_exec( $this->ch ); if( preg_match( "/continue to account overview/" , $output ) > 0 ) { preg_match( '@id="transactionToken" value="(.*)"@' , $output , $token ); curl_setopt( $this->ch , CURLOPT_POST , 1 ); curl_setopt( $this->ch , CURLOPT_POSTFIELDS , "iBankFormSubmission=false&transactionToken=" . $token[1] ); curl_setopt( $this->ch , CURLOPT_URL , "https://aibinternetbanking.aib.ie/inet/roi/accountoverview.htm" ); $output = curl_exec( $this->ch ); } $output = str_replace( "\n" , "" , $output ); $output = str_replace( "\r" , "" , $output ); preg_match_all( '@(.*?)(.*?)@s', $output , $names ); preg_match_all( '@
(.*?)
@s' , $output , $bal ); for( $i = 0; isset( $names[2][$i] ); $i++ ) { $accounts[] = array( "name" => $names[2][$i] , "balance" => str_replace( " " , "" , str_replace( " " , "" , $bal[1][$i] ) ) ); } return $accounts; } public function __destruct() { curl_close( $this->ch ); } } $regnumber = "88888888"; $challenge_phone = "4444"; $challenge_visa = "2222"; $pac = "77777"; $aib = new aib($regnumber, $challenge_phone, $challenge_visa, $pac); $accounts = $aib->balances(); foreach((array)$accounts as $account) { echo trim($account['name']) . "\${goto 150}" . trim($account['balance']) . "\n\n"; } ?>