Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bramka Gadu-Gadu
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Nie wiem czy napisanie bramki Gadu-Gadu to znowuz taki trudny orzech do zgryzienia ale pomyslalem sobie, ze podziele sie moim doswiadczeniami w pisaniu tego skryptu. Skrypt bedzie nam sluzyl TYLKO do wysylania wiadomosci do uzytkownikow GG.

Protokol GG oparty jest na TCP/IP co ulatwia nam prace.
Aby polaczyc sie z serwerem GG nalezy uzyc funkcji fsockopen()
Kod
$fp = fsockopen( "appmsg.gadu-gadu.pl", 80, $errno, $errmsg, 3 );

pierwsza wartosc to nazwa hosta GG. Nastepna to nr. portu, kolejne dwie to stringi z bledami jezeli takowe sie pojawia, a ostatnia to liczba w sekundach timeoutu (opis funkcji fsocopen() znajduje sie tu).
Teraz musimy podszyc sie pod przegladarke i wyslac odpowiednie dane protokolem HTTP.
Kod
$get = "GET /appsvc/appmsg.asp?fmnumber=$UIN&version=$VERSION&fmt=$FORMAT&lastmsg=$MSG HTTP/1.0rn";

$get .= "Host: appmsg.gadu-gadu.plrn";

$get .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)rn";

$get .= "Pragma: no-cachern";



fputs($fp, $get);

$UIN - numer clienta
$VERSION - wersja clienta
$FORMAT - jest to wartosc oznaczajaca czy wiadomosc systemowa bedzie przesylana czystym textem ($FORMAT='') czy w HTMLu ($FORMAT != '') ja osobiscie nie uzywam formatu HTML i nie wiem jak go uzywac, wiec nie bede sie tym zagadnieniem zajmowal.
$MSG - numer ostatniej wiadomosci systemowej (zostawiamy pusta wartosc)

Serwer odpowie na to:
Cytat
HTTP/1.0 200 OK
...
0 217.17.41.84:8074 217.17.41.84

ostatni wiersz w kodzie pobieramy funkcja fgets()
Kod
$buf = fgets( $fp, 128 );

Uprzednio pomijajac pozostale linie.
Wiersz ten mowi nam o tym czy zawarta jest wiadomosc systemowa (0), nr. hosta wraz z portem pod jaki musimy sie podlaczyc, a ostatnia wartosc to sam IP hosta. Nas interesuje tylko IP hosta wraz z portem. Przyczym port 8074 nie jest jedynym do ktorego mozna sie podlaczyc. Wrazie bledu przy podlaczaniu sie do hosta mozna skorzystac z portu 443.
Teraz musimy wydobyc IP i port ze stringu. Nie bede tu podawal metody bo chyba kazdy wie jak to zrobic a sposobow jest wiele poczawszy od substr() ((IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ), explode() itp...
Przed lub po wydobyciu IP i portu mozemy (NIE MUSIMY) zamknac socket:
Kod
fclose($fp);

Teraz czas przyszedl na polaczenie sie z wlasciwym hostem umozliwiajacym nam wkoncu komunikacje w GG.
Kod
$fp = fsockopen( "217.17.41.85", 8074, $errno, $errmsg, 3 );

IP i port podalem w tej postaci, zeby zobrazowac jak to ma wygladac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
dodam jeszcze, czego nie powiedzialem wczesniej, ze po kazdym polaczeniu funkcja fsocopen() nalezy dodac kod zbezpieczajacy - obslugujacy blad wrazie gdyby nie mozna bylo sie polaczyc:
Kod
if( !$fp ){

  echo "blad";

}else{

...

dalsza czesc skryptu

...

Polaczywszy sie do hosta otrzymamy pakiet postaci:
Cytat
unsigned long typ
unsigned long rozmiar
unsigned long klucz

typ i rozmia nie bedzie nam potrzebny wiec pomijam jego opis.
Bedzie nam natomiast potrzebny klucz do stworzenia hasha hasla i przeslania go do hosta GG.
Do pobrania pakietu przeslanego od hosta po polaczeniu z nim uzyjemy funkcji unpack()
Kod
$data = fread($fp, 12);

if(!$data){

  echo "error";

}else{

  $hash_pack = unpack("Vtyp/Vrozmiar/Vklucz", $data);

  ...

Zmienna $hash_pack jest zmienna tablicowa, a jako, ze interesuje nas tylko klucz pobieramy z niej jego wartosc w nastepujacy sposob:
Kod
$key = $hash_pack['klucz'];

W opisie protokolu GG z ktorego korzystalem byl bledny algorytm uzywany do stworzenia hasha hasla, tak wiec po zmudnych poszukiwaniach natknalem sie na ten oto skrypt autorstwa Piotr Pawłowa:
Kod
function oblicz_hash_hasla($haslo, $klucz) {

    $temphi = 0;

    $templo = 1;

    for ($i = 0; $i < strlen($haslo); $i++) {

        $znak = ord($haslo[$i]);

        $templo *= $znak + 1;

        $temphi = ($temphi * ($znak + 1) + ($templo >> 16)) & 0xffff;

        $templo &= 0xffff;

    }

    $hashlo = $templo * ($klucz & 0x7fff);

    $hashhi = (($temphi * ($klucz & 0x7fff)) & 0xffff) + ($hashlo >> 16);

    $hashlo &= 0xffff;

    if ($klucz & 0x8000) {

        $hashlo += ($templo & 1) << 15;

        $hashhi += (($temphi & 1) << 15) + ($templo >> 1) + ($hashlo >> 16);

        $hashlo &= 0xffff;

    }

    $hashhi &= 0xffff;

    $hash = sprintf("%04x%04x", $hashhi, $hashlo);

    $hash = hexdec($hash);

    settype($hash, 'integer');



return $hash;

}

Do funkcji przesylamy haslo naszego konta bramki i klucz uzyskany wczesniej od hosta GG.
Teraz musimy wyslac pakiet do hosta:
Kod
fwrite($fp, pack("VVVVVVVv", 0x000c, 0x16, $gg_gate_uid, $hash, 0x0002, 0x0b, 0, 0));

$gg_gate_uid - nrume konta bramki
$hash - otrymany hash z funkcji oblicz_hash_hasla()
Teraz host zwroci nam odpowiedz na probe zalogowania w postaci
Cytat
unsigned long status_loginu
unsigned long rozmiar

Pobieramy go nastepujaco:
Kod
if( !$data = fread($fp, 8) ){

  echo "error";

}else{

...

dalsza czesc kodu

...

$data to interesujacy nas pakiet.
Teraz uzywajac funkcji unpack() pobieramy jego wartosc status_loginu
Kod
$pack = unpack("Vstatus_loginu/Vrozmiar", $data);

$status = $pack['status_loginu'];

Wartosci statusu mozemy zdefiniowac nastepujaco:
Kod
define("GG_LOGIN_OK", 0x0003);

define("GG_LOGIN_FAILED", 0x0009);

Nazwy mowia same za siebie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Teraz jezeli zostalismy zalogowani(GG_LOGIN_OK) mozemy wyslac wiadomosc do uzytkownika GG.
Struktura pakietu z wiadomoscia do uzytkownika wyglada nastepujaco:
Cytat
unsigned long GG_SEND_MG
unsigned long rozmiar
unsigned long uid_odbiorcy
unsigned long seq
unsigned long classa_wiadomosci
unknown

unknow - niestety nie wiem co oznacza ta wartosc ale ustawiajac ja na 0(zero) mozna ja pominac w opisie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
GG_SEND_MSG ma wartosc:
Kod
define("GG_SEND_MSG", 0x000b);

rozmiar to dlugosc naszej wiadomosci. Uwaga wiadomosc nie moze byc wieksza niz 2000 znakow.
seq - numer sekwencji jest wykorzystywany przy potwierdzaniu dostarczenia lub zakolejkowaniu pakietu.
classa_wiadomosci - rodzaj wiadomosci, jeden z ponizszych:
Kod
define("GG_CLASS_QUEUED", 0x0001);

define("GG_CLASS_MSG", 0x0004); // wiadomosc w nowym oknie

define("GG_CLASS_CHAT", 0x0008); // wiadomosc jest czescia rozmowy

define("GG_CLASS_CTCP", 0x0010);

define("GG_CLASS_ACK", 0x0020);// bez potwierdzania wiadomosci


Kod wysylajacy pakiet jest nastepujacy:
Kod
mt_srand((double)microtime() * 1000000);

$seq = mt_rand();



$uin_odbiorcy = 'xxxx...'; // numer gg odbiorcy

$msg = ''; // wiadomosc do odbiorcy <= 2000 znakow



$data = pack("VVVVVa".strlen($msg)."C", GG_SEND_MSG, 0x0d + strlen($msg), $uin_odbiorcy,

        $seq, GG_CLASS_ACK, $msg, 0);



fwrite($fp, $data);

$msg - to oczywiscie wiadomosc dla odbiorcy
$uid_odbiorcy - nr gg odbiorcy

I oto wyslalismy wiadomosc do GG 8)

Na koniec pozostalo nam jeszcze wylogowanie sie:
Kod
define("GG_STATUS_NOT_AVAIL",0x0001);

define("GG_STATUS_AVAIL", 0x0002);



fwrite($fp, pack('VVV', GG_NEW_STATUS, 0x04, GG_STATUS_NOT_AVAIL););

fclose($fp);


Tak oto wyglada wysylanie wiadomosci do uzytkownikow GG. Z przykroscia musze powiedziec, ze strona z opisem protokolu GG ostatnio nie dziala ale jezeli sa to tylko chwilowe problemy warto na nia zajzec: www.dev.null.pl/ekg/docs/protocol.html

Opisany tu kod wymaga oczywiscie kilku zabiegow min. napisanie obslugi bledow, rozpisania wszystkiego na poszczegolne funkcje ew. napisania classy itp. Tak wiec jest to zarys skryptu bramki GG. Skrypt moze nie dzialac prawidlowo bo gdzies sie moglem rabnac (jestem tylko czlowiekem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ), wiec zadawajcie pytania na forum.

PROSZE NIE PISAC ABYM PODAL CALY SKRYPT BRAMKI GDYZ WSZYSTKO ZOSTALO JUZ NAPISANE (TO CO MIALO BYC NAPISANE (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ), WIEC NALEZY TYLKO WYTEZYC SZARE KOMORKI I WZIASC SIE DO PRACY (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
4 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 68)
em1X
post
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


eh a na http://gg.wha.la sa pelne zrodla (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Seth
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


ehh ta bramka nie dziala dobrze... jezeli masz status inny niz dostepny lub zaraz wracam wiadomosc nie dotrze to adresata... moj kodzik dziala 100% 8)
Go to the top of the page
+Quote Post
kwiateek
post
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 13.01.2003
Skąd: 3rd ball of mud behind a big ball of burning gas

Ostrzeżenie: (0%)
-----


Cytat
ehh ta bramka nie dziala dobrze... jezeli masz status inny niz dostepny lub zaraz wracam wiadomosc nie dotrze to adresata... moj kodzik dziala 100%  8)

tesowalem tamto co podal em1X i przy statusie zaraz wracam chodzi... natomiast nie dziala przy niewidoczny.
Rozumiem Seth ze twoj chodzi nawet przy niewidoczny i nidostepny ?
Go to the top of the page
+Quote Post
Seth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


tak
Go to the top of the page
+Quote Post
pm
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


seth, bredzisz. "twoj" skrypt niczym sie nie rozni , po za tym bezczelnie spisales go z bramki www2gg, funkcja liczaca hash hasla byla tylko tam dostepna i nie podales zrodla.
A wysylanie wiadomosci w trybie niewidoczny jest zwiazane tylko z trescia i wyrazeniami "pl" "www" ktore www2gg filtruje.
Chciales sie popisac cudzym kodem, nie wyszlo, wstydz sie:)
Go to the top of the page
+Quote Post
itsme
post
Post #7





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




Jedno pytanie jak mozna skopiowac kod php ?
co otwierasz strone i dajesz ^a ^c ^v ?
nalezy uwazac co sie mowi ... bez dowodow bym uwazal

Seth: daj te narzedzie ktorym kopiowales skrypty php (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ))
ehhhhhh dlaczego ten swiat jest pelen zawisci ?
Go to the top of the page
+Quote Post
pm
post
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


itsme: może tak http://gg.wha.la/www2gg-2.0.tar.gz , trudne nie? fajne forum...
Go to the top of the page
+Quote Post
itsme
post
Post #9





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




pm: wlasnie tak ... argumenty sa podstawa zarzutow nic innego
Go to the top of the page
+Quote Post
Seth
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


(IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)
nie kopjowaem zadnego kodu, funkcje do hashowania hasla podeslal mi qmpel.

A tak wogole to moge juz udostepnic jej skrypt, wiec zobacz cwe** czy ten kod jest podobony:

[php:1:02a64d5d13]<?php
// gg_gate class v1.9
// Copyright©2002/2003 by Michal 'Seth' Golebiowski
// E-Mail: sethmail@poczta.fm
// All rights reserved

define( 'GG_LOGIN', 0x000c );
define( 'GG_STATUS_AVAIL', 0x0002 );
define( 'GG_LOGIN_OK', 0x0003 );
define( 'GG_SEND_MSG', 0x000b );
define( 'GG_CLASS_MSG', 0x0004 );
define( 'GG_NEW_STATUS', 0x0002 );
define( 'GG_STATUS_NOT_AVAIL', 0x0001 );

// Classa bramki gg
class gg_gate{
var $to = ''; // uin gg adresata
var $msg = ''; // wiadomosc do adresata
var $from = ''; // nadawca
var $debug_mode = 0; // tryb debugera
var $debug_log = array(); // tablica loga debugera
var $_inner_vars = array(); // wewnetrzne zmienne classy


function gg_gate( $to='', $msg='', $from='' ){
$this->to = $to;
$this->msg = $msg;
$this->from = $from;
$this->debug_mode = 0;
$this->debug_log = array();
$this->_inner_vars = array();

$this->_inner_vars['gate_uinpass'] = array( '12345' => 'xxx', '4335' => 'xxx' ); // uin i haslo konta
$this->_inner_vars['sys_msg'] = array(); // nr osatniej wiadomosci systemowej
}


// Debuger skryptu
// $debug_mode=
// 0 - wylaczony debuger
// 1 - wyswietlaj wiadomosci debugera i zapisuj do tablicy loga debugera ($debug_log)
// 2 - tylko wyswietlaj wiadomosci debugera
// 3 - tylko zapisuj do tablicy loga debugera ($debug_log)
function debug( $msg ){
if( $this->debug_mode == 0 ) return;

if( $this->debug_mode == 1 || $this->debug_mode == 2 )
echo "<b>DEBUG></b> $msg<br>";

if( $this->debug_mode == 1 || $this->debug_mode == 3 )
$this->debug_log[count( $this->debug_log )] = date("[H:i:s d/m/Y] ").$msg;
}


// Tworzenie hasha hasla
// Funkcja autorstwa: Piotra Pawłowa
function create_hash( $pass, $key ){
$x = 0;
$y = 1;

for( $i = 0; $i < strlen( $pass ); $i++) {
$char = ord( $pass[$i] );
$y *= $char + 1;
$x = ( $x * ( $char + 1 ) + ( $y >> 16)) & 0xffff;
$y &= 0xffff;
}

$y = $y * ( $key & 0x7fff );
$x = ( ( $x * ( $key & 0x7fff ) ) & 0xffff ) + ( $y >> 16 );
$y &= 0xffff;

if( $key & 0x8000 ){
$y += ( $y & 1 ) << 15;
$y += ( ( $x & 1 ) << 15 ) + ( $y >> 1 ) + ( $y >> 16 );
$y &= 0xffff;
}

$x &= 0xffff;
$hash = sprintf( "%04x%04x", $x, $y );
$hash = hexdec( $hash );
settype( $hash, 'integer' );

return $hash;
}


// Pobieranie tablicy wiadomosci systemowych dla odpowiednich uin'ow
function system_msg( $mode ){
if( $mode == 'get' ){
$this->debug( 'Pobieranie listy wiadomosci systemowych...' ); // debug

$lines_array = @file( 'data/sys_msg.dat' );

foreach( $lines_array as $line ){
$vals = explode(':', $line);
if( $vals[0] != '' || $vals[1] != '' ) $this->_inner_vars['sys_msg']["$vals[0]"] = $vals[1];
}
}elseif( $mode == 'put' ){
$this->debug( 'Zapisywanie listy wiadomosci systemowych...' ); // debug

$fp = fopen( 'data/sys_msg.dat', 'w' );
flock( $fp, 2 );
foreach( $this->_inner_vars['sys_msg'] as $uin => $msg_no ){
if( $uin != '' || $msg_no != '' ) fwrite( $fp, $uin.':'.$msg_no."rn" );
}
flock( $fp, 3 );
fclose( $fp );
}

$this->debug( '...zakonczone' ); // debug
}


// Pobieranie hosta i portu
function get_host( &$host, &$port, $uin = 0, $msg_no = 0 ){
$this->debug( 'Laczenie z hostem...' ); // debug
$fp = @fsockopen( 'appmsg.gadu-gadu.pl', 80, $errno, $errmsg, 3 );

if( !$fp ){
$this->debug( '...niepowiodlo sie [!]' ); // debug
return 0;
}else{
$this->debug( '...zakonczone sukcesem' ); // debug
}

$get = "GET /appsvc/appmsg2.asp?fmnumber=$uin&version=5%2C+0%2C+1%2C+76&fmt=&lastmsg=$msg_no HTTP/1.0rn";
$get.= "Host: appmsg.gadu-gadu.plrn";
$get.= "User-Agent: Mozilla/4.7 [en] (Win98; I)rn";
$get.= "Pragma: no-cachernrn";
@fwrite( $fp, $get );

$this->debug( 'Pobieranie IP i portu...' ); // debug
if( !$buf = fread( $fp, 300 ) ){
@fclose( $fp );
$this->debug( '...polaczenie zerwane [!]' ); // debug
return 0;
}

$tmp = explode( "rn", $buf );
list( $new_msg_no, $host, $port ) = split( '[ :]', ( $msg_no != null ? $tmp[0] : $tmp[5] ) );

if( is_numeric( $new_msg_no ) ){
$this->_inner_vars['sys_msg']["$uin"] = $new_msg_no;
}else{
$this->_inner_vars['sys_msg']["$uin"] = 0;
}

if( !is_numeric( $port ) ){
$this->debug( '...blad danych [!]' ); // debug
return 0;
}else{
$this->debug( '...zakonczone sukcesem' ); // debug
}

fclose( $fp );

return 1;
}


// Logowanie do serwera gg
function logon( &$fp, $uin, $pass, $msg_no ){
if( !$this->get_host( $host, $port, $uin, $msg_no ) ){
$host = '217.17.41.'.rand( 86, 89 ); // Losowanie domyslnego host
$port = 8074; // Domyslny port hosta
$this->debug( "Wybrano domyslnego hosta $host:8074
[*]" ); // debug
}

$this->debug( "Laczenie z $host:$port..." ); // debug
$fp = @fsockopen( $host, $port, $errno, $errmsg, 3 );

if( !$fp ){
$this->debug( '...nie mozna nawiazac polaczenia [!]' ); // debug
return 0;
}
$this->debug( '...zakonczone sukcesem' ); // debug

if( !$data = @fread( $fp, 12 ) ){
@fclose( $fp );
$this->debug( 'Polaczenie zerwane [!]' ); // debug
return 0;
}

$packet = unpack( "V/V/Vkey", $data );
$hash = $this->create_hash( $pass, $packet['key'] );

$this->debug( 'Logowanie do hosta...' ); // debug
@fwrite( $fp, pack( "VVVVVVVv", GG_LOGIN, 0x16, $uin, $hash, GG_STATUS_AVAIL, 0x0b, 0, 0 ) );

if( !$data = fread( $fp, 8 ) ){
@fclose( $fp );
$this->debug( '...polaczenie zerwane [!]' ); // debug
return 0;
}

$packet = unpack("Vstatus/V", $data);

if( $packet['status'] == GG_LOGIN_OK ){
$this->debug( '...zakonczone sukcesem' ); // debug
return 1;
}else{
@fclose( $fp );
$this->debug( '...logowanie niepowiodlo sie [!]' ); // debug
return 0;
}
}


// Wysylanie wiadomosci
// zwraca:
// 0 - nie wylasno wiadomosci
// 1 - wiadomosc wyslano
function send_msg(){
$err_level = error_reporting();
error_reporting(0); // tymczasowe wylaczenie bledow

$this->system_msg( 'get' );

foreach( $this->_inner_vars['gate_uinpass'] as $uin => $pass ){
$this->debug( 'Logowanie na konto: '.$uin.' [~]' ); // debug

for( $i = 3; $i >= 1; $i-- ){ // 3 proby zalogowania sie do hosta w razie bledow
if( $this->logon( $fp, $uin, $pass, $this->_inner_vars['sys_msg']["$uin"] ) ) break;
if( $i == 1 ){
$this->debug( 'Proby zalogowania do hosta niepowiodly sie [!]' ); // debug
}
}

if( $fp ) break;
}

if( !$fp ){
error_reporting( $err_level );

return 0;
}

mt_srand( ( double ) microtime() * 1000000 );
$seq = mt_rand();

$msg = "{$this->msg}rnWiadomość od: {$this->from}rnrnWiadomość wysłana z bramki Gadu-Gadu";
$msg = strtr( $msg, "xA1xA6xACxB1xB6xBC", "xA5x8Cx8FxB9x9Cx9F" );
$msg_len = strlen( $msg );

$this->debug( "Wyslano wiadomosc do {$this->to}" ); // debug
@fwrite( $fp, pack( "VVVVVa".$msg_len."C", GG_SEND_MSG, 0x0d + $msg_len, $this->to, $seq, GG_CLASS_MSG, $msg, 0 ) );

$this->logoff( $fp );
$this->system_msg( 'put' );

error_reporting( $err_level );

return 1;
}


// Wylogowanie
function logoff( &$fp ){
@fwrite( $fp, pack( "VVV", GG_NEW_STATUS, 0x04, GG_STATUS_NOT_AVAIL ) );
@fclose( $fp );
$this->debug( 'Wylogowano z konta [~]' ); // debug
}
}
?>[/php:1:02a64d5d13]

Jezeli nie masz 100% pewnosci swoich sadow nie [ciach] glupot i nie obrazaj ani nie oskarzaj innych :!: (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif) (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif) (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)
Go to the top of the page
+Quote Post
pm
post
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


ah tak, "kumpel" podeslal , podzial funkcji jest identyczny, konsturcje pack/unpack tez , losowanie hosta... tylko nazwy i komunikaty zmienione, ale moze kazdemu by wyszedl by taki sam uklad gdyby sie za to zabral:) funkcja liczaca hash jest zywcem z www2gg (tak wiem - kumpel podeslal)

Wiec wszystkie obelgi dotycza owego tajemniczego "kumpla" ktory zachowal sie nieładnie a Ty jestes oczywiscie czysty, niedobry ten kumpel fe;)
Go to the top of the page
+Quote Post
Seth
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


A dlaczego niby konstrukcje packa mialy by byc inne ? Chyba korzystales z tego samego opisu protokolu co ja ?

Chcesz czy nie chcesz wierzyc ale kod napisalem sam korzystajac z protokolu gg opisanego na podanej przezmnie stronce + troche wlasnej inwencji. Co do hashowania hasla to jest on taki sam gdyz owy kolega podeslal mi jego kod po tym jak zapytalem sie czy nie wie jak to rozgryzc. Przyczym jeszcze dodam, ze nie jest wykluczone, a nawet jest pewne, ze wyciagnal on ze skryptu z www2gg. Ale pwoedz mi jedno... po co niby mial bym umieszczac autora tej funkcji gdybym zerznal toczka w toczka kod z www2gg ? Przeciez kazdy odrazu by sie kapnal.
Jeszcze jedno, ten skrypt na www2gg ma jakis blad, ktory nie wysyla wiadomosci jezeli uzytkownik nie jest dostepny lub zaraz wracam. Czy wiec przepisanie calego kodu i ew zmienienie jego fragmentow nie wiazalo by sie z powieleniem owego bledu ?
Misiek... rozumiem, ze moze sie wydac, ze skoro juz ktos udostepnia kod to wiekszosc chca go zerznac i podpisac sie pod nim ale bynajmniej nie kazdy ma tego typu aspiracje.
Zabaloalo mnie tylko jedno... to, ze po kilku nocach spedzonych nad pisaniem tego kodu ktos uwaza mnie za zlodzieja.
Go to the top of the page
+Quote Post
pm
post
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


Dobra pokój, możemy normalnie pogadać.

>
Cytat
A dlaczego niby konstrukcje packa mialy by byc inne ?
> Chyba korzystales z tego samego opisu protokolu co ja ?

tak, napisalem to w październiku 2001... od tego czasu wyszło pare aktualizacji, zrobienie każdej nowe wersji zajeło mi 1 dzień

> Chcesz czy nie chcesz wierzyc ale kod napisalem sam korzystajac z
> protokolu gg opisanego na podanej przezmnie stronce + troche wlasnej

W tym protokole też mam pewien udział. dziwi mnie skąd wziałeś
akurat wersje 0x0b klienta do której pasuje ten hash obecnie w opisie protokolu jest nowy pasujacy do wersji >0x14 dziwnym zbiegiem www2gg 1.4 (na której jak wczesniej podejrzewałem bazował ten skrypt) używa też 0x0b, do tego te konstrukcje $host = '217.17.41.'.rand( 86, 89 ); tez podobne , 3 proby logowania..., ale niech bedzie wykazujac dobra wole jestem w stanie uwierzyc w zbieg okolicznosci.


> inwencji. Co do hashowania hasla to jest on taki sam gdyz owy kolega
> podeslal mi jego kod po tym jak zapytalem sie czy nie wie jak to
> rozgryzc. Przyczym jeszcze dodam, ze nie jest wykluczone, a nawet jest
> pewne, ze wyciagnal on ze skryptu z www2gg. Ale pwoedz mi jedno...
> po co niby mial bym umieszczac autora tej funkcji gdybym zerznal
> toczka w toczka kod z www2gg ? Przeciez kazdy odrazu by sie kapnal.

ok, dziwie sie jeszcze, że nie znales tego skryptu wczesniej, google zwraca 1500 trafien na www2gg, jest w downlodach paru stron o php. Ze nawet kolega podsyłając hash nie powiedział skąd jest.

> Jeszcze jedno, ten skrypt na www2gg ma jakis blad, ktory nie wysyla
> wiadomosci jezeli uzytkownik nie jest dostepny lub zaraz wracam. Czy
> wiec przepisanie calego kodu i ew zmienienie jego fragmentow nie
> wiazalo by sie z powieleniem owego bledu ?

Ten "blad" nie dotyczy skryptu a praktycznie kazdego klienta gadu gadu
wysylajac w trybie offline a wiec i invisible wiadomosc zawierajaca linki lub
adresy www i email zostanie ona odfiltorowana przez serwer gg jako spam
(co jest bardzo glupie z ich strony ale coż) skrypt w wersji 2.0 radzi sobie z tym podmieniajac te wyrazenia na inne i unika odfiltorowania ( w wersji 1.4 tez to robil ale filtry ulegly zmianie stad zauwazone przez Ciebie niedziałanie w trybie offline i invisible) Twoja wersja jesli nie podmienia tych wyrazen w textach tez musi sie charakteryzowac podobna wlasciwoscia. Jest to zwiazane rozniez z trzymanien na liscie kontaktow numeru bramki wiec czasami trudno dojsc przyczyn.

> Misiek... rozumiem, ze moze sie wydac, ze skoro juz ktos udostepnia
> kod to wiekszosc chca go zerznac i podpisac sie pod nim ale bynajmniej
> nie kazdy ma tego typu aspiracje.

Niestety juz ktos tak kiedys zrobil, chyba jakis velo ze scrypty.com lub scryty.net (juz nie pamietam www) po prostu umiescil w downloadzie moj skrypt podpisujac sie wszedzie swoim nickiem , ale po mojej reakcji szybko to usunal.

> Zabaloalo mnie tylko jedno... to, ze po kilku nocach spedzonych nad
> pisaniem tego kodu ktos uwaza mnie za zlodzieja.


Złożyło sie na to zbyt wiele jak sie okazuje zbiegów okolicznosci i nie wspomnienia o www2gg w pierwszym poscie,
nie uważam Cie za złodzieja i proponuje pokój:)
Go to the top of the page
+Quote Post
Seth
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Pokoj przyjety (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wiec na wstepie chce powiem, ze doskonale Cie rozumiem. Sam nie lubie jak ktos wykorzystuje cudza prace. Po moim pierwszym poscie mozna bylo wysnuc wrazenie, ze opisuje twoj skrypt, wiec dlatego udostepnilem tu swoj.

Co do wersji 0x0b to wlasnie dzieki niej dochodza wiaodmosci nawet jak uzytkownik ma 'nie ten' status. Doszedlem do tego przez przypadek.

Co do 3 logowan: pisalem juz kilka aplikacji client-server i zawsze po 3ech nieudanych probach logowania wywalalem blad, wiec to ile razy sie pruboje logowac to poprostu kwestia przyzwyczajenia. Zauwaz jeszcze, ze tak naprawde nie sa to tylko 3 logowania a w tym przypadku 6, gdyz na poczatku podalem 2 uiny bramek. Czyli jezeli na pierwsza po3ech logowaniach nie da sie wejsc to wchodzimy na druga.

Co do Twojego skryptu: to wzasadzie traf chcial, ze zainteresowalem sie protokolem gg. Kiedys na jakiejs stronie znalazlem link do zrodel gg i miedzy innymi do protokolu gg (nie mowie tu o Twojej stronie tylko o: http://www.dev.null.pl/ekg/). A ze wlasnie skonczylem pisac bramki sms, pomyslalem sobie, ze fajnie bylo by umiescic jeszcze bramke gg.

To, ze nie wspomnialem o www2gg jest byc moze bledem ale nie chcialem aby ludzie odrazu szli na latwizne i sciagali kod zanim nie poglowkuja jak go samemu napisac.
Go to the top of the page
+Quote Post
5z474n
post
Post #15





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


dobra spece .... bramka zawsze cos ale sa lepsze rzeczy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ale zanim sie narobei musze wiedziec ze moj plan wypali (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

chcialbym wiedziec:
:arrow: ile trfa polaczene isie z serwerem zalogowanie, wyslanei wiadomosci i zamkniecie polaczenia (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) :]
:arrow: czy sie da przez php logowac nowych userow i jak to zrobic ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
:arrow: czy mozna naraz zalogowac sie na pare kont ? i jak to wplynei na czas wykonania zapytania ? ( tak zeby wyszukiwarka nei zglaszala bledu bo strona sie nei wladuje przez jakistam czas )
:arrow: na jakie problemy zwiazane z tematem moge trafic ? ;]

heh.... z gory dzieki ! ( piszcie wszystko co wiecie, przyda sie kazda informacja ) ( tylk nie mowcie ze odpowiedzi znajduja sie wyzej )
Go to the top of the page
+Quote Post
Seth
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Ad.1
:arrow: Zalogowanie do servera: 0.213155984879 s.
(ustawiaijac sztywno wybrany IP i port hosta)
:arrow: Zalogowanie do servera w przypadku bledu laczenia: 3.38346207142 s (moze byc wiecej)
Skrypt wymaga jeszcze poprawienia logowania, lecz na 90% wysle wiaodmosc.
:arrow: Wysylanie wiadomosci: 0.000111937522888 s. (~1000 znakow)
:arrow: Wylogowanie: 0.000216960906982 s.

Ad.2
Jezeli przez program sie da to i przez php takze. Jak to zrobic ? Musisz poszperac sniferem w jaki sposob wysylane sa dane i otrzymywane przez program gg. Nie wiem czy przypadkiem na http://dev.null.pl/ekg/docs.php nie ma protokolu tworzenia usera (sprawdz).

Ad.3
Tak mozna. Czas bedzie taki jak suma poszczegolnych logowan, wysylania wiadomosci i wylogowania sie na poszczegolne konta. Aby nie bylo bledow wylacz zawieszenie skryptu po okreslonym czasie.

Ad.4
W przypadku gdy bedzie wiele polaczen moze sie zapchac lacze i spowolnic wysylanie (glownie logowanie) do serwera. W ekstremalnych przypadkach moze spowodowac zawieszenie serwera.
Go to the top of the page
+Quote Post
5z474n
post
Post #17





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


wieeelkie dzieki ... oczywiscie ze na tej strone ito jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czasy tez mnei bardzo ciesza ....... wielkie dzieki !
Go to the top of the page
+Quote Post
5z474n
post
Post #18





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


gdzie jest zdefiniowany nr i haslo bramki (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

chce zeby bylo zdefioniowane poza klasa ? :] czy ktos moze powiedziec jak to zrobic ?
Go to the top of the page
+Quote Post
Seth
post
Post #19





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Cytat
 function gg_gate( $to='', $msg='', $from='' ){  
   $this->to          = $to;  
   $this->msg         = $msg;  
   $this->from        = $from;  
   $this->debug_mode  = 0;  
   $this->debug_log   = array();  
   $this->_inner_vars = array();  

   $this->_inner_vars['gate_uinpass']  = array( '12345' => 'xxx', '4335' => 'xxx' ); // uin i haslo konta
   $this->_inner_vars['sys_msg']       = array(); // nr osatniej wiadomosci systemowej  
 }


Wyrozniony tekst to miejsce gdzie podaje sie nr-y i hasla do kont.

Kod
$this->_inner_vars['gate_uinpass']  = array( '12345' => 'xxx', '4335' => 'xxx' );

Tworzy sie tablice z kontami, gdyz jak nie wejdziemy po 3-ch zlaogowaniach na jedno konto idziemy na drugie itd. - w zaleznosci ile podalismy kont.
Struktura podawania kont jest taka:
'<nr konta>' => '<haslo>'

Jezeli chcesz miec to poza klasa to skasuj wyrozniona wyzej linijke i poza nia ustaw np tak:
[php:1:250cfadd23]
(...)
$gg = new gg_gate();
(...)
$gg->_inner_vars['gate_uinpass'] = array( '<nr konta 1>' => '<haslo 1>', '<nr konta 2>' => '<haslo 2>' ); // uin i haslo konta [/php:1:250cfadd23]
Go to the top of the page
+Quote Post
5z474n
post
Post #20





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


hm.. troche inaczej to pzrerobilem ale cos skopalem bo
Kod
DEBUG> Pobieranie listy wiadomosci systemowych...

DEBUG> ...zakonczone

DEBUG> Logowanie na konto: [~]

DEBUG> Laczenie z hostem...

DEBUG> ...zakonczone sukcesem

DEBUG> Pobieranie IP i portu...  

DEBUG> ...blad danych [!]                //!!!!!!!!

DEBUG> Wybrano domyslnego hosta 217.17.41.89:8074 [*]

DEBUG> Laczenie z 217.17.41.89:8074...

DEBUG> ...nie mozna nawiazac polaczenia [!] .... itd

no wlasnei jakis blad ... :|

[php:1:7e9e998195]<?php
function gg_gate( $to='', $msg='', $from='' ,$pass='' ){
$this->pass = $pass;
$this->to = $to;
$this->msg = $msg;
$this->from = $from;
$this->debug_mode = 2;
$this->debug_log = array();
$this->_inner_vars = array();

$this->_inner_vars['sys_msg'] = array(); // nr osatniej wiadomosci systemowej
}
?>[/php:1:7e9e998195]

tam dalej pozmeinailem na $this -> pass i $this -> from i ne iamm pojecia co jest nie tak :|
Go to the top of the page
+Quote Post
Seth
post
Post #21





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Zrob tak jak Ci podalem powinno byc wszystko OK. Jak nie to pisz na forum (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
5z474n
post
Post #22





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


nie moge :|

[php:1:4124bc5da6]<?php

for( $i = 3; $i >= 1; $i-- ){
if( $this->logon( $fp, $this->from, $this->pass, $this->_inner_vars['sys_msg']["$this->from"] ) ) break;
if( $i == 1 ){
$this->debug( 'Proby zalogowania do hosta niepowiodly sie [!]' ); // debug
}

?>[/php:1:4124bc5da6]

raz siewysyla a raz nei :| ale jak juz to za 2 lub 3 razm sie wysyla nigdy za 1 :|
Go to the top of the page
+Quote Post
Seth
post
Post #23





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Tam gdzie masz:
[php:1:9d39583ab0]function logon( &$fp, $uin, $pass, $msg_no ){
if( !$this->get_host( $host, $port, $uin, $msg_no ) ){
$host = '217.17.41.'.rand( 86, 89 ); // Losowanie domyslnego host
$port = 8074; // Domyslny port hosta
$this->debug( "Wybrano domyslnego hosta $host:8074
[*]" ); // debug
}

(...)
[/php:1:9d39583ab0]

Zmien na:
[php:1:9d39583ab0]function logon( &$fp, $uin, $pass, $msg_no ){
$host = '217.17.41.'.rand( 86, 89 ); // Losowanie domyslnego host
$port = 8074; // Domyslny port hosta
$this->debug( "Wybrano domyslnego hosta $host:8074
[*]" ); // debug
[/php:1:9d39583ab0]

Musze poprawic jeszcze pobieranie hosta i portu, wiec narazie bedzielosowal ze znanych.
Go to the top of the page
+Quote Post
5z474n
post
Post #24





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


no :!: teraz sie zgadza :mrgreen:

niestety musze pzrerac prace bo mama mnei przegonila z kompa :| ale pzryjdzie noc to skoncze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pomzsle tey nad tym hostem moze z jakiegos inneg skryptu wyciagne go .. a jaka jest roznica miedzy tym wylosowanym a ty ktory podalaby ta funkcja ? jeszce doloze funkcje ktora ustawia opis po wyslaniu tak jak w tym dormowym skrypcie z wla.pl czy jakos tak ... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) nappp (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

kurzce :/ przydalo by sie to jakos zrobic bo na te znane czesto sie ne ichce zalogowac :| a bladne zalogowanie jakos dlugo trwa :|
Go to the top of the page
+Quote Post
Seth
post
Post #25





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Wszystko ladnie pkienie ale ktos tu nie przestrzega praw autorskich.
Za samodzielne zmiany w skrypcie juz nie odpowiadam.

Co do hosta i portu to jest do tego specjalna strona, ktora podaje hosta i port, ale akurat ta czesc kodu troche zrobilem na luzno. Tak wiec wymaga poprawek... moze w przyszlej wersji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
5z474n
post
Post #26





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 2.05.2003

Ostrzeżenie: (0%)
-----


luzz... dobrze wysyla ze znnych kont :mrgreen:

no troche przerobilem .... ale nie tak duzo :wink:
zastanawiam sie co robi function system_msg( $mode ){ :mrgreen: i czy przypadkiem nei mozna tego usunac

a chwilowo mam jakis blad bo do mnei nei dochodza wiadomosci ale do kolego dochodza :| kompletnei nei wiem dlaczego tak jest
a tak wogole to zaczynam powoli kumac te klasy :mrgreen:
Go to the top of the page
+Quote Post
Seth
post
Post #27





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


system_msg( $mode )
to funkcja odczytajaca uprzednio zapisane nr-y wiadomosci systemowych lub zapisujaca je do pliku, w zaleznosci od parametru $mode. wiecej o wiadomosciach systemowych w SDK do protkolu gg.
Go to the top of the page
+Quote Post
Solitary
post
Post #28





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 29.08.2002
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


no dobra, a co zrobic, zeby wyslac pinga ? zeby nie zerwalo polaczenia (przy dluzszych polaczeniach)
Go to the top of the page
+Quote Post
Seth
post
Post #29





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Solitary: w tym skrypcie nie ma przewidzianych zadnych "dlugich polaczen" z serwerem. Odrazu po zalogowaniu zostaje wyslana wiadomosc i nastepuje wylogowanie.

4 kubatron:
Aby uruchomic skrypt nalezy umiescic ten kod w skrypcie php gdzie chcemy wywolac wysylanei wiadomosci:
[php:1:2cba8a0877]//...

// Includowanie klasy gg
// oczywiscie zgodnie z Twoja nazwa i sciezka
require_once( 'gg_gate.class.php' );

$gg = new gg_gate();
$gg->to = 11111; // numer gg odbiorcy
$gg->msg = 'wiadomosc do odbiorcy';
$gg->from = 'podpis nadawcy';
$gg->debug_mode = 0; // wylacznie debugera. Inne ustawienia podane sa przy metodzie debug

if ( $gg->send_msg() )
{
print 'wyslano wiadomosc';
}
else
{
print 'nie wyslano wiadomosci';
}
[/php:1:2cba8a0877]
Go to the top of the page
+Quote Post
kubatron
post
Post #30





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

Ostrzeżenie: (0%)
-----


dzięki Seth (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
Go to the top of the page
+Quote Post
spyx
post
Post #31





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.11.2003

Ostrzeżenie: (0%)
-----


Seth: nie zabardzo rozumiem skad moge wziasc key z twojego kodu, chcialbym utworzyc pod niego formularz, znalazlem zmienne:
- $msg
- $to
- $from
- $pass
tworze formularz z takimi polami i wysylam i nic. z kodu wynika ze potrzebny jest key?
Go to the top of the page
+Quote Post
Seth
post
Post #32





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


W samej klasie do obslugi gg jest taka linia:
[php:1:95bb39f499]...
$this->_inner_vars['gate_uinpass'] = array( '12345' => 'xxx', '4335' => 'xxx'
); // uin i haslo konta
...[/php:1:95bb39f499]
...wlasnie tutaj podajesz nr. bramki gg oraz haslo (przejzyj caly temat juz o tym pisalem).
Go to the top of the page
+Quote Post
GrayHat
post
Post #33





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

Ostrzeżenie: (0%)
-----


moze ktos zrobic pelny listing tego skryptu bo sie polapac nie moge...
Go to the top of the page
+Quote Post
Seth
post
Post #34





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


To nie jest temat opisujacy jak zainstalowac skrypt, a wrecz przeciwnie na poczatku chodzilo mi tylko i wylacznie o przedstawienie jak sie zabrac doo jego napisania. Podanie kodu zostalo niejako wymuszone na mnie, wiec dalej nie bede kontynuowal dyskusji w spraoie instalacji, konfiguracji i umieszczania go na swojej stronie !
Go to the top of the page
+Quote Post
kubatron
post
Post #35





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

Ostrzeżenie: (0%)
-----


jakbyś wrócił się o jedną strone w stecz to byś zobaczył kod php który seth mi podał (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
macnow
post
Post #36





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.05.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


a ja bym chciał zrobić wysyłanie seryjne, zeby np. subskrypcje rozsyłało również na GG (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Seth
post
Post #37





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


A ja aby moja pralka prasowala mi ubrania i zarabiala za mnie kase (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Bakus
post
Post #38


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Seth - masz jak zwykle cudowne pomysły...
Jak napiszesz sobie taką pralkę (najlepiej w php) to daj znać...

P.S. Skoro jest program do parzenia herbaty (Linux), to czemu nie może być pralki która prasuje ubrania... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

P.S. 2: http://dev.null.pl/ekg/docs/protocol.html [bez www na początku]
to jest adres który działa! (dot. pierwszego postu Setha)
Go to the top of the page
+Quote Post
AZAZELLO
post
Post #39





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 21.06.2003

Ostrzeżenie: (0%)
-----


A ja mam odnośnie tych waszych bramek:)

chyba nikt tu o tym nie pisał a czy w którejs z tych wersji bramki możliwe jest dorobienie czegoś takiego jak stopka, czyli np.
sms został wysłany z bramki na stronie www.xxxxxx.pl ?
Go to the top of the page
+Quote Post
GrayHat
post
Post #40





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

Ostrzeżenie: (0%)
-----


hmm a jaka funkcja wywolujemy wyslanie wiadomosci??
moze total kod?
bym prosil
Go to the top of the page
+Quote Post
BzikOS
post
Post #41





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Cytat
hmm a jaka funkcja wywolujemy wyslanie wiadomosci??
moze total kod?
bym prosil

http://forum.php.pl/viewtopic.php?t=1140&s...&start=30#45337

Następne takie posty będą kasowane.
Go to the top of the page
+Quote Post
Cr0n!x
post
Post #42





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 24.05.2003

Ostrzeżenie: (0%)
-----


a ja mam cos takiego i nie wysyla :/

Kod
DEBUG> Pobieranie listy wiadomosci systemowych...

DEBUG> ...zakonczone

DEBUG> Logowanie na konto: 4364790 [~]

DEBUG> Laczenie z hostem...

DEBUG> ...zakonczone sukcesem

DEBUG> Pobieranie IP i portu...

DEBUG> ...blad danych [!]

DEBUG> Wybrano domyslnego hosta 217.17.41.86:8074 [*]

DEBUG> Laczenie z 217.17.41.86:8074...

DEBUG> ...nie mozna nawiazac polaczenia [!]

DEBUG> Laczenie z hostem...

DEBUG> ...zakonczone sukcesem

DEBUG> Pobieranie IP i portu...

DEBUG> ...blad danych [!]

DEBUG> Wybrano domyslnego hosta 217.17.41.88:8074 [*]

DEBUG> Laczenie z 217.17.41.88:8074...

DEBUG> ...zakonczone sukcesem

DEBUG> Logowanie do hosta...

DEBUG> ...logowanie niepowiodlo sie [!]

DEBUG> Laczenie z hostem...

DEBUG> ...zakonczone sukcesem

DEBUG> Pobieranie IP i portu...

DEBUG> ...blad danych [!]

DEBUG> Wybrano domyslnego hosta 217.17.41.86:8074 [*]

DEBUG> Laczenie z 217.17.41.86:8074...
Go to the top of the page
+Quote Post
-anAKiN`-
post
Post #43





Goście







http://anakin.scene.pl/www2gg/
jak ktos chce zrodla, chetnie udostepnie...
Go to the top of the page
+Quote Post
pm
post
Post #44





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


Ja poprosze:)
Go to the top of the page
+Quote Post
Chewolf
post
Post #45





Grupa: Zarejestrowani
Postów: 335
Pomógł: 0
Dołączył: 15.11.2003

Ostrzeżenie: (0%)
-----


Witajcie,
Jest to bardzo ważna sprawa. Więc tak razem z kolegą chcemy przejąć stronę http://gg.wha.la i wszystko jest okej mamy konto lecz autor tej strony juz od dluzszego czasu sie nie odzywa , (jak na zlość). Podstawowym atutem strony jest wizytówka każdego użytkownika GG http://gg.wha.la/numerek . Autor sie nie odzywa wiec nie mamy kodu tej strony, postanowilem wiec ze sam go jakos napisze , zeby nam jeszcze konta(strona www) nie wywali . Pytanie:
Jak za pomocą php polaczyć się z serwerem i podając nr gg osoby wyciagnac z katalogu publicznego jej dane. Czyli tak jak w gadu-gadu wpisujesz nr gg i masz imie nazwisko itd.Czy ktoś z was mógłby napisać mi taki mały kod który po podaniu numeru gadu-gadu wyswietlal dane osoby (licze na Setha :-)). Próbowałem juz pisac ale mi nie wychodziło. Oglądałem kod bramki z gg.wha.la i nic. Gdybym miał taki kod napewno bym się nauczył. Czytałem manual o protolkole ale kody sa w C a ja go nie znam.
Prosiłem o to pana Piotra Kupisiewicza (http://dev.null.pl/ekg), napisałby ale ma dużo pracy i nie może.

Ten post edytował Chewolf 7.03.2007, 18:18:48
Go to the top of the page
+Quote Post
pm
post
Post #46





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


>Witajcie,
>Jest to bardzo ważna sprawa. Więc tak razem z kolegą chcemy przejąć >stronę http://gg.wha.la i wszystko jest okej mamy konto lecz autor tej >strony juz od dluzszego czasu sie nie odzywa , (jak na zlość).

Dostalem 1 zdanie od Ciebie, nie mam czasu na takie rzeczy odpisywac:)

>Podstawowym atutem strony jest wizytówka każdego użytkownika GG >http://gg.wha.la/numerek . Autor sie nie odzywa wiec nie mamy kodu tej >strony, postanowilem wiec ze sam go jakos napisze , zeby nam jeszcze >konta nie wywali .

konta?

>Jak za pomocą php polaczyć się z serwerem i podając nr gg osoby
>[...]Oglądałem kod bramki z gg.wha.la i nic. Gdybym miał taki kod >napewno bym się nauczył. Czytałem manual o protolkole ale kody sa w >C a ja go nie znam.

Tam nie ma nic w C

>Prosiłem o to pana Piotra Kupisiewicza (http://dev.null.pl/ekg), napisałby >ale ma dużo pracy i nie może.

Ja tez akurat nie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) moze kiedy indziej, jak znajde na to dzien:)
Go to the top of the page
+Quote Post
rubin
post
Post #47





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 5.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Z przykroscia musze zauwazyc ze od jakiegos czasu nie da sie wyslac wiadomosci z bramek ww2gg takze ze strony wha.la.costam (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)
Czy ktos wie jaki jest problem i co z tym zrobic? Wywala sie przy probie autoryzacji uzytkownika.

Czy ekipa GG zabezpieczyla sie jakos prze wysylanie maseowego spamu? :wink:
Go to the top of the page
+Quote Post
Xinn
post
Post #48





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 20.04.2003
Skąd: Krosno

Ostrzeżenie: (0%)
-----


Uwaga! Obecnie Gadu-Gadu działa tylko z najnowszą wersją programu. Prosimy o ściągnięcie i zainstalowanie najnowszej wersji Gadu-Gadu
[cytat z gadu-gadu.pl]

wydaje mi sie ze zmienili protokol wysylania wiadomosci [i inne..]
Go to the top of the page
+Quote Post
pm
post
Post #49





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


Jest nowa wersja na http://gg.wha.la/jak.html .

Jesli ktos chce szybko bez sciagania to wystarczy zmienic wersje
z 0x16 na 0x20 w wywolaniu funckji gg_login.
W skrypcie zmienilem wiecęj na zapas.
Go to the top of the page
+Quote Post
Bakus
post
Post #50


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


wielkie podziękowania i pokłony wdzięczności... wreszcie działa... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam
Go to the top of the page
+Quote Post
mls
post
Post #51





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W wersji 2.0.1 był też błąd w pakiecie GG_LOGIN.

Było:
[php:1:6f566a0f16]<?
define("GG_LOGIN", 0x000c);
// ...
// ...
// ...
$data = pack("VVVVVVVva".strlen($opis), GG_LOGIN, 0x16 + strlen($opis), $numer, $hash, ($opis)?GG_STATUS_AVAIL_DESCR:GG_STATUS_AVAIL, $wersja, 0, 0, $opis);
?>[/php:1:6f566a0f16]

Powinno być:
[php:1:6f566a0f16]<?
define("GG_LOGIN60", 0x0015);
// ...
// ...
// ...
$data = pack("VVVVVVcVvVvcca".strlen($opis), GG_LOGIN60, 0x1f + strlen($opis), $numer, $hash, ($opis)?GG_STATUS_AVAIL_DESCR:GG_STATUS_AVAIL, $wersja, 0, 0, 0, 0, 0, 0, 190, $opis);
?>[/php:1:6f566a0f16]

Dopiero gdy wprowadziłem te modyfikacje, wszystko zaczęło działać.
A w wolnej chwili dopiszę sobie do tego funkcję do wysyłania tekstu z formatowaniem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ))
Go to the top of the page
+Quote Post
mls
post
Post #52





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Hyhy, ale to już zostało poprawione, jak widzę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
pm
post
Post #53





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 6.03.2003

Ostrzeżenie: (0%)
-----


> Dopiero gdy wprowadziłem te modyfikacje, wszystko zaczęło działać.

Masz refleks;) to nie blad a uaktualnienie i nie tylko to bo jeszcze notif60 trzeba bylo zmienic

>A w wolnej chwili dopiszę sobie do tego funkcję do wysyłania tekstu z formatowaniem

Jak dopiszesz to mi ją podeslij, dolącze do skryptu.
Go to the top of the page
+Quote Post
mls
post
Post #54





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Wiem, że nie błąd, ale gdy ściągałem wersję 2.0.1, nie było nowszej, więc zmiany musiałem wprowadzić samemu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Wave
post
Post #55





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Wie ktoś jak zrobić coś takiego jak na tej aukcji:
http://www.allegro.pl/show_item.php?item=61954264
?
Go to the top of the page
+Quote Post
Speedy
post
Post #56





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


Cytat(Wave @ 2005-08-30 17:55:24)
Wie ktoś jak zrobić coś takiego jak na tej aukcji:
http://www.allegro.pl/show_item.php?item=61954264
?

Ten skrypt jest jakiś wadliwy . Ta strona testowa wypluwa błędy...
Go to the top of the page
+Quote Post
Wave
post
Post #57





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


Skrypt działał, sam testowałem na kilku kontach. Prawdopodobnie któryś serwer gg padł.
Go to the top of the page
+Quote Post
camelx
post
Post #58





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A nie wiecie może jak zrobić coś takiego jak jest na bash.org.pl w subskrypcji gg, tzn. wysyłam wiadomość 'zapisz' i zostaję zapisany do systemu, 'help' lista komend, itd... Chodzi mi o coś takiego, że wysyłąm jakąś komende na numer gg mojej bramki a bramka automatycznie mi odpowiada, np. wysyłam 'lista' i otrzymuję w odpowiedzi listę czegoś tam odczytaną z bazy danych. Może ktoś z Was jest w posiadaniu takiej klasy?

Ten post edytował camelx 22.09.2005, 14:46:07
Go to the top of the page
+Quote Post
hwao
post
Post #59


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




tu php nie polecam, aczkolwiek da sie to w nim zrobic.

Poszukaj jakis botow lepiej, napewno lepiej sie spisza.
Go to the top of the page
+Quote Post
vala
post
Post #60





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

Ostrzeżenie: (0%)
-----


http://dev.null.pl/ekg/docs/protocol.html
?
Go to the top of the page
+Quote Post
camelx
post
Post #61





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tak jak napisał hwao znalazłem sobie bota (GGBot, narazie pod win). Teraz powstał problem jak "nauczyć" go odczytywać dane z bazy danych? Może ktoś ma jakiś pomysł albo skrypt do tego?

Ten post edytował camelx 25.09.2005, 18:39:01
Go to the top of the page
+Quote Post
bivv
post
Post #62





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Jak zrobić aby można było wysłać wiadomość do kilku numerów gg?
Np. oddzielonych przecinkiem.
Go to the top of the page
+Quote Post
matid
post
Post #63





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(bivv @ 2006-03-14 17:56:29)
Jak zrobić aby można było wysłać wiadomość do kilku numerów gg?
Np. oddzielonych przecinkiem.

Umieścić wywołanie funkcji wysyłającej w pętli? (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

Ten post edytował matid 15.03.2006, 07:00:56
Go to the top of the page
+Quote Post
hwao
post
Post #64


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat(matid @ 2006-03-15 07:00:40)
Cytat(bivv @ 2006-03-14 17:56:29)
Jak zrobić aby można było wysłać wiadomość do kilku numerów gg?
Np. oddzielonych przecinkiem.

Umieścić wywołanie funkcji wysyłającej w pętli? (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

teraz gg wprowadzilo ostre restrykcje co do wysylania wiadomosci, lepiej sie z nimi zapoznac i zaprojektowac odpowiednioo kod bo inaczej zbanuja nr gg bota i juz nic nie wysle.
Go to the top of the page
+Quote Post
ripek
post
Post #65





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.12.2003

Ostrzeżenie: (0%)
-----


Witam,

gdzie mogę znaleźć działającą bramke www2gg - szukałem po googlach ale wszedzie 404 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) a gg.wha.la nie odpowiada.

Jeśli ktoś ma namiar na skrypt wyszukiwarki w katalogu gg - chętnie wezmę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Próbował ktoś się zmierzyć z tematem bramki www->gg obsługującej rozmowę a nie pojedyńczą wiadomość? Coś jak chat - np. przy użyciu AJAXa.
Go to the top of the page
+Quote Post
Speedy
post
Post #66





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


Cytat
Próbował ktoś się zmierzyć z tematem bramki www->gg obsługującej rozmowę a nie pojedyńczą wiadomość? Coś jak chat - np. przy użyciu AJAXa.

Na oficjalnej stronie gadu-gadu jest gadu-gadu w ajaksie, więc na pewno ktoś próbował. Co więcej, udało mu się to.
Go to the top of the page
+Quote Post
ripek
post
Post #67





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.12.2003

Ostrzeżenie: (0%)
-----


Ponawiam pytanie o www2gg (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Robuscracker
post
Post #68





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.08.2006

Ostrzeżenie: (0%)
-----


Nurtuje mnie jedna rzecz:
Cytat(Seth @ 27.10.2002, 16:55:17 ) *
fwrite($fp, pack("VVVVVVVv", 0x000c, 0x16, $gg_gate_uid, $hash, 0x0002, 0x0b, 0, 0));
$data = pack("VVVVVa".strlen($msg)."C", GG_SEND_MSG, 0x0d + strlen($msg), $uin_odbiorcy,$seq, GG_CLASS_ACK, $msg, 0);
fwrite($fp, pack('VVV', GG_NEW_STATUS, 0x04, GG_STATUS_NOT_AVAIL)(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ;


Po co są owe bity(?), porównując do dokumentacji protokołu gg tego w ogóle nie powinno być, a bez tego dostaje błąd ze strony serwerów gg?
Go to the top of the page
+Quote Post
Kicok
post
Post #69





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Najprawdopodobniej jest to długość pakietu
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:38