Oameni buni din lumea larga (si cartierele Crangasi si Militari), iata sursa completa a scriptului de conectare la internet folosit de CZone. ( acces.czone.ro )
Nu pare sa existe o licenta deci putem sa il licentiem sub WTFPL ( Do What The Fuck You Want To Public License ).
<?php
/*********************/
/* */
/* Version : 5.1.0 */
/* Author : RM */
/* Comment : 071223 */
/* */
/*********************/
function get_result( $link )
{
$fp = fsockopen( "ssl://acces.czone.ro", 443, $errno, $errstr, $timeout = 5 );
if ( !$fp )
{
echo $errstr." ({$errno})\n";
}
else
{
fputs( $fp, "GET ".$link." HTTP/1.1\r\n" );
fputs( $fp, "Host:acces.czone.ro \r\n" );
fputs( $fp, "Connection: close\r\n\r\n" );
$response = "";
while ( !feof( $fp ) )
{
$response .= fgets( $fp, 4096 );
}
fclose( $fp );
}
return $response;
}
function encode( $str )
{
$key = "f52412c4ff1dacd2111f4951f3db1260";
$iv = "0e32f4c96203f892";
$encryptedcbc = base64_encode( base64_encode( mcrypt_cbc( MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_ENCRYPT, $iv ) ) );
return "/czone/c-zone.php?Data=".$encryptedcbc;
}
error_reporting( 0 );
$os = substr( php_uname( ), 0, strpos( php_uname( ), " " ) );
if ( 0 < strpos( $os, "indows" ) )
{
exit( );
}
if ( 1 < substr_count( shell_exec( "ps aux | grep czone" ), "czone.sh" ) )
{
echo "Programul ruleaza deja\n";
exit( );
}
if ( $_SERVER['argc'] != 4 )
{
echo "Usage: czone.sh username password ethX\nX reprezinta numarul interfetei conectate la reteaua C-Zone\n";
exit( );
}
$username = $_SERVER['argv'][1];
$password = $_SERVER['argv'][2];
$eth = $_SERVER['argv'][3];
if ( strpos( shell_exec( "nslookup acces.czone.ro" ), "181" ) <= 0 )
{
if ( 0 < strpos( $os, "inux" ) || 0 < strpos( $os, "ree" ) )
{
shell_exec( "dhclient ".$eth );
sleep( 5 );
if ( strpos( shell_exec( "nslookup acces.czone.ro" ), "181" ) <= 0 )
{
echo "Eroare la comunicarea cu serverul de DHCP, verificati conexiunea si incercati din nou.\n";
exit( );
}
}
else
{
echo "Treceti placa de retea pe DHCP si dupa ce si-a luat ip-uri reporniti programul.\n";
exit( );
}
}
if ( 0 < strpos( get_result( "/czone/versionlinux.txt" ), "1.0.1.4" ) )
{
echo "Exista o versiune mai noua a programului pe serverul Czone\n";
if ( 0 < strpos( shell_exec( "wget -V" ), "General Public License" ) )
{
echo "Update-ul se va realiza automat, insa va trebui sa porniti din nou programul\natunci cand acesta va termina update-ul si se va inchide.\n";
shell_exec( "rm -f czone.sh" );
shell_exec( "wget -q http://acces.czone.ro/czone/czone.sh" );
shell_exec( "chmod +x czone.sh" );
exit( );
}
echo "Instalati programul wget si incercati din nou!!!\n";
exit( );
}
if ( 0 < strpos( get_result( "/czone/versionlinux.txt" ), "1.0.1.3" ) )
{
echo "Aveti deja ultima versiune a programului instalata.\n";
}
else
{
echo "Nu am putut verifica daca aveti ultima versiune a programului.\n";
}
if ( 0 < strpos( $os, "inux" ) )
{
$fis = fopen( "/proc/sys/net/ipv4/ip_forward", "r" );
$ipf = fread( $fis, 1 );
fclose( $fis );
$ipsnat = shell_exec( "iptables -t nat -L -vn 2>/dev/null | grep SNAT | wc -l" );
$ipmasq = shell_exec( "iptables -t nat -L -vn 2>/dev/null | grep MASQ | wc -l" );
$ipttl = shell_exec( "iptables -t mangle -L -vn 2>/dev/null | grep TTL | wc -l" );
}
do
{
do
{
$response = get_result( encode( "IP=unknown&COMMAND=NONCE&USERNAME=".$username ) );
if ( 0 < strpos( $response, "NONCE" ) )
{
$nonce = substr( $response, strpos( $response, "NONCE" ) + 6, 32 );
}
$response = get_result( encode( "IP=unknown&COMMAND=LOGIN&USERNAME=".$username."&PASSWORD=".$password."&NONCE=".$nonce ) );
if ( 0 < strpos( $response, "CONNECTED" ) )
{
echo "Conectat\n";
if ( 0 < strpos( $os, "inux" ) )
{
get_result( encode( "IP=unknown&COMMAND=LINUX&USERNAME=".$username."&FORWARD=".$ipf."&SNAT=".$ipsnat."&TTL=".$ipttl."&MASQ=".$ipmasq ) );
}
else
{
get_result( encode( "IP=unknown&COMMAND=LINUX&USERNAME=".$username."&FORWARD=".$os ) );
}
}
else if ( 0 < strpos( $response, "POOLCONV" ) )
{
echo "Pool private error\n";
}
else if ( 0 < strpos( $response, "POOLFULL" ) )
{
echo "Cross pool full\n";
}
else if ( 0 < strpos( $response, "POOLINVALID" ) )
{
echo "Cross pool invalid\n";
}
else if ( 0 < strpos( $response, "EXPIRED" ) )
{
echo "Contul a expirat\n";
}
else
{
if ( 0 < strpos( $response, "BLOCKED" ) )
{
echo "Contul este blocat\n";
}
else if ( 0 < strpos( $response, "INSTALL" ) )
{
echo "IP settings\nTrebuie sa modificati setarile conexiunii dumneavoastra dupa cum urmeaza:\n";
echo "IP=".substr( $response, strpos( $response, "IP=8" ) + 3, strpos( $response, "MASK=" ) - strpos( $response, "IP=8" ) - 3 )."\n";
echo "MASCA=".substr( $response, strpos( $response, "MASK=" ) + 5, strpos( $response, "GATE=" ) - strpos( $response, "MASK=" ) - 5 )."\n";
echo "GATEWAY=".substr( $response, strpos( $response, "GATE=" ) + 5, strpos( $response, "DNS=" ) - strpos( $response, "GATE=" ) - 5 )."\n";
echo "DNS=".substr( $response, strpos( $response, "DNS=" ) + 4, strpos( $response, "DNS2=" ) - strpos( $response, "DNS=" ) - 4 )."\n";
echo "Dupa care reporniti programul\n";
exit( );
}
else if ( 0 < strpos( $response, "FRAUDE" ) )
{
echo "Incercarea de frauda inregistrata\n";
}
else if ( 0 < strpos( $response, "FAILED" ) )
{
echo "Numele de utilizator sau/si parola sunt gresite.\n";
}
else if ( 0 < strpos( $response, "DBFAILED" ) )
{
echo "Eroare la comunicarea cu baza de date C-Zone.\n";
}
else if ( 0 < strpos( $response, "INVALID" ) )
{
echo "IP invalid\n";
}
else if ( 0 < strpos( $response, "MESSAGE" ) )
{
echo substr( $response, strpos( $response, "MESSAGE=" ) + 8 );
}
else
{
echo "Eroare la conectarea in reteaua C-Zone\nVa rugam apelati serviciul de relatii cu clientii la unul din numerele de telefon:\nRomtelecom: 407.22.22\nOrange: 0743.033.355\nConnex: 0722.697.085\n";
exit( );
}
}
sleep( 600 );
$i = 0;
while ( strpos( shell_exec( "nslookup acces.czone.ro" ), "181" ) <= 0 && $i < 2 )
{
sleep( 90 );
$i += 1;
}
if ( !( 0 < strpos( $os, "inux" ) ) || !( 0 < strpos( $os, "ree" ) ) )
{
break;
}
else
{
shell_exec( "dhclient ".$eth );
sleep( 5 );
}
} while ( !( strpos( shell_exec( "nslookup acces.czone.ro" ), "181" ) <= 0 ) );
echo "Eroare la comunicarea cu serverul de DHCP, verificati conexiunea si incercati din nou.\n";
exit( );
} while ( 0 );
echo "Treceti placa de retea pe DHCP si dupa ce si-a luat ip-uri reporniti programul.\n";
exit( );
?>
In atentia adminilor de la CZONE.
As putea rula scriptul asta la 20-30 minute ca sa ramanem logati fara sa mai avem alte programe instalate? inslusiv pe windows.
Cred ca ati putea scapa de informatiile statistice referitoare la
– daca avem IP forwarding;
– cate source nat avem;
– cate masquarading avem;
– cat mai avem ttl-ul;
– ce sistem de operare avem.
Script mic:
<?php
$user=”vali”;
$pass=”valypass”;
function get_result( $link ){
$fp = fsockopen( “ssl://acces.czone.ro”, 443, $errno, $errstr, $timeout = 5 );
if ( !$fp ){
echo $errstr.” ({$errno})\n”;
}
else{
fputs( $fp, “GET “.$link.” HTTP/1.1\r\n” );
fputs( $fp, “Host:acces.czone.ro \r\n” );
fputs( $fp, “Connection: close\r\n\r\n” );
$response = “”;
while ( !feof( $fp ) ){
$response .= fgets( $fp, 4096 );
}
fclose( $fp );
}
return $response;
}
function encode( $str ){
$key = “f52412c4ff1dacd2111f4951f3db1260″;
$iv = “0e32f4c96203f892″;
$encryptedcbc = base64_encode( base64_encode( mcrypt_cbc( MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_ENCRYPT, $iv ) ) );
return “/czone/c-zone.php?Data=”.$encryptedcbc;
}
echo $response;
echo “”;
$response=get_result(encode(“IP=unknown&COMMAND=NONCE&USERNAME=$user”));
echo $response;
echo “”;
$nonce=substr($response,strpos($response,”NONCE”)+6,32);
$response=get_result(encode(“IP=unknown&COMMAND=LOGIN&USERNAME=$user&PASSWORD=$pass&NONCE=$nonce”));
echo $response;
echo “”;
?>
Alex in principiu merge. Trimite raspuns ca nu ai nimic “suspect” in iptables si nu ar trebui sa fie probleme si indivizii sa nu stie ce faci tu pe acolo. Ma indoiesc ca cineva de la czone se uita pe aici. De ce nu le dai un mail ? Sunt sigur ca s-ar bucura nespus ca cineva le imbunatateste codul mizerabil.
nu mai simplu modificat open-u si numele la iptables
si poate sa-si faca si update si ce vrea scriptu lor
, ca doar cheia aia o pot schimba oricand.
http://www.czone.ro/forum/viewtopic.php?f=7&t=6&p=1591#p1591
LOL, cineva l-o pus pe sit la czone. ce oameni
. Plus o versiune Trimmed:
<?php
$user=”vali”;
$pass=”valypass”;
function get_result( $link ){
$fp = fsockopen( “ssl://acces.czone.ro”, 443, $errno, $errstr, $timeout = 5 );
if ( !$fp ){
echo $errstr.” ({$errno})\n”;
}
else{
fputs( $fp, “GET “.$link.” HTTP/1.1\r\n” );
fputs( $fp, “Host:acces.czone.ro \r\n” );
fputs( $fp, “Connection: close\r\n\r\n” );
$response = “”;
while ( !feof( $fp ) ){
$response .= fgets( $fp, 4096 );
}
fclose( $fp );
}
return $response;
}
function encode( $str ){
$key = “f52412c4ff1dacd2111f4951f3db1260″;
$iv = “0e32f4c96203f892″;
$encryptedcbc = base64_encode( base64_encode( mcrypt_cbc( MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_ENCRYPT, $iv ) ) );
return “/czone/c-zone.php?Data=”.$encryptedcbc;
}
echo $response;
echo “”;
$response=get_result(encode(“IP=unknown&COMMAND=NONCE&USERNAME=$user”));
echo $response;
echo “”;
$nonce=substr($response,strpos($response,”NONCE”)+6,32);
$response=get_result(encode(“IP=unknown&COMMAND=LOGIN&USERNAME=$user&PASSWORD=$pass&NONCE=$nonce”));
echo $response;
echo “”;
?>
In scriptul de mai sus trebuie modificat altceva in afara de valorile $user si $pass? Din pacate nu ma pricep mai deloc la php. Merci.
multumiri la baietii destepti, keep up the good work
Se poate rula acest script cu date modificate (ma refer sa-i trec eu ip-ul interfetei cu care ma conectez, ttl si ce mai trebuie) ?
As incerca urmatoarea schema:
Server Czone —- router —- pc1
Pe Pc1 sa rulez scriptul sa se autentifice la server dar eu de fapt sa fac un NAT pe router.
A much improved Linux client: http://code.google.com/p/czoink/
Good job!
Client simplu scris in C, opensource:
http://wickedprogrammer.blogspot.com/2008/07/wicked.html
La scriptul modificat de “Alex” unde anume pot incrementa variabila pentru eth respectiv…Ca sincer nu stiu unde ar apela.
De exemplu:
Astept Rapuns… Multam..
Gasiti la http://ovidiug.bleu.ro un script care foloseste iptables sa modifice TTL si face NAT.
Are cineva vre-o idee cum poate si implementat unul dintre scripturile de mai sus in smoothwall, ipcop, monowall sau pfsense? Multumesc .
are ideea cineva cum pot implementa scriptul de mai sus sa`l pot rula pe un router linksys wrt54gl? mc anticipat
Totui trebe unu si pentru Windows sa ii ajutam si pe cei mici
este adevarat ca loginul dat de ei se poate seta pe un router wireless ca autentificare de pppoe ?
am gasit si raspunsul care este “DA”