php+icq

Programovacie jazyky, rady, poradňa...
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

php+icq

Príspevok od používateľa final »

Hi all,

ehm, nevie pls niekto, ako poslať cez php-čko message niekomu na icq?
dostal som taký tip, prezreť si icq protokol, trebars v zdrojákoch mirandy, ale nie že by som bol lenivý, čo vlastne som, takže sa mi tam nechce babrať v komplet procedurálne riešenom kode .) gúgla som prešiel snaď celého, ale výsledky boli len programy staré 4 roky, čiže nefunkčné a žiadne source code..
aa.. btw, pls shell_exec() vynechať.. bodlo by iba fsockopen()..

many thx ;P
roman3x
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 448
Registrovaný: 02 nov 2005, 18:30
Kontaktovať používateľa:

Príspevok od používateľa roman3x »

niekde(a tusim viac krat) som videl php --> jabber a jabber servery uz maju casto transport na ICQ, tak mozno tak
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

Príspevok od používateľa final »

HUH.. jabber jabber.. čo to? tuším chatovací program? abo ja neviem, viem, že to tu mám ako plugin v trilliane, ale ešte som nečekol čo to je zač..
skúsim pozrieť na nete, ale pochybujem, že to tak pôjde..
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

jabber nie je chatovaci program ale protokol.
roman3x
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 448
Registrovaný: 02 nov 2005, 18:30
Kontaktovať používateľa:

Príspevok od používateľa roman3x »

Finalway napísal:HUH.. jabber jabber.. čo to? tuším chatovací program? abo ja neviem, viem, že to tu mám ako plugin v trilliane, ale ešte som nečekol čo to je zač..
skúsim pozrieť na nete, ale pochybujem, že to tak pôjde..
hadam si uz nasielhttp://www.jabber.sk/, presnejsie: http://www.jabber.sk/sluzby.php
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

Príspevok od používateľa final »

mno, po dlhom čase trochu prekonaná lenivosť a trochu naštudovaný icq protokol z http://iserverd1.khstu.ru/oscar/ a výsledok icq trieda na posielanie správ do icq siete cez phpčko... ak by to dakto chcel, tak to tu máte..

Kód: Vybrať všetko

<?
class icq
      {
      var $soket,$input,$return,$bos_soket;
      var $flap_pozicia = 44;
      var $xor = "\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C";
      function flap_poziadavok()
               {
               $this->flap_pozicia++;
               return pack('c',$this->flap_pozicia);
               }
      function spracuj($cislo,$icq=NULL,$pwd=NULL,$klient=NULL,$obsah=NULL,$cookie=NULL,$pre=NULL,$sprava=NULL)
               {
               // dlzky n a c pre flap: c=8 bitova, n=16 bitova
               $this->return  = '';
               switch($cislo)
                     {
                     case '1' : // vyhotovenie ziadosti o autorizaciu + XORovane heslo - http://iserverd1.khstu.ru/oscar/cli_ident.html
                                // je tam este jedna moznost pomocou md5 hashu, ale nakolko to je zdlhavejsi proces, vyberam tento
                     $this->return  = "\x00\x00\x00\x01";                            // verzia protokolu
                     $this->return .= "\x00\x01" . pack('n',strlen($icq)) . $icq;    // kanal . dlzka . icq_cislo
                     $this->return .= "\x00\x02" . pack('n',strlen($pwd)) . ($pwd ^ (substr($this->xor,0,strlen($pwd)))); // kanal . dlzka . xornute_heslo
                     $this->return .= "\x00\x03" . pack('n',strlen($klient)) . $klient; // kanal . dlzka . nazov_klienta
                     $this->return .= "\x00\x16" . pack('n',2) . pack('n',266);      // kanal . dlzka . id_klienta
                     $this->return .= "\x00\x17" . pack('n',2) . pack('n',4);        // kanal . dlzka . verzia_klienta
                     $this->return .= "\x00\x18" . pack('n',2) . pack('n',65);       // kanal . dlzka . vedlajsia_verzia
                     $this->return .= "\x00\x19" . pack('n',2) . pack('n',1);        // kanal . dlzka . najmensia_verzia
                     $this->return .= "\x00\x1A" . pack('n',2) . pack('n',3281);     // kanal . dlzka . vyrobna_verzia
                     $this->return .= "\x00\x14" . pack('n',4) . pack('N',85);       // kanal . dlzka . distribucne_cislo
                     $this->return .= "\x00\x0F" . pack('n',2) . "sk";               // kanal . dlzka . jazyk_klienta
                     $this->return .= "\x00\x0E" . pack('n',2) . "sk";               // kanal . dlzka . adresa_klienta
                     $this->return  = "\x2a\x01\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return; // FLAP . FLAP_id . dlzka . ziadost
                     break;
					 
                     case '2' : // spracovanie output-u, kanal: 0x05: xx xx BOS server:port
                     $this->parsuj = explode("\x00", $obsah);
                     $this->return = substr($this->parsuj[4],1);
                     break;

                     case '3' : // spracovanie output-u, kanal: 0x06: xx xx cookie, cookie moze obsahovat oznacenie kanalu 0x06
                                // preto sa parsuje od prvej najdenej hodnoty, dlzka cookie je 2048 bitov
                     $this->parsuj = explode("\x06", $obsah);
                     $this->return = substr($this->fread, strlen($this->parsuj[0])+3);
                     break;
					 
                     case '4' : // poslatie cookie BOS serveru - http://iserverd1.khstu.ru/oscar/cli_cookie.html 
                     $this->return  = "\x00\x00\x00\x01"; // verzia protokolu
                     $this->return .= "\x00\x06" . pack('n', strlen($cookie)) . $cookie;   // kanal coookie . dlzka . cookie
                     $this->return  = "\x2a\x01\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return; //  flap . flap_id . dlzka . obsah
                     break;
					 
                     case '5' : // vytvorenie ziadosti - http://iserverd1.khstu.ru/oscar/snac_01_17.html
                                // hodnoty mozu byt default, pokial by vsak neposlal niektoru z horeuvedenych rodin, vtedy server nevyhovie 
                     $this->return  = "\x00\x01\x00\x17\x00\x00\x00\x00\x00\x17";
                     $this->return .= "\x00\x01\x00\x03\x00\x13\x00\x02\x00\x02\x00\x01\x00\x03\x00\x01";
                     $this->return .= "\x00\x15\x00\x01\x00\x04\x00\x01\x00\x06\x00\x01\x00\x09\x00\x01";
                     $this->return .= "\x00\x0A\x00\x01\x00\x0B\x00\x01";
                     $this->return  = "\x2a\x02\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return; // flap/flap_id . dlzka ziadosti . ziadost
                     break;
					 
                     case '6' : // ziadost o rate limits - http://iserverd1.khstu.ru/oscar/snac_01_06.html
                     $this->return = "\x00\x01\x00\x06\x00\x00\x00\x00\x00\x06"; // rodiny
                     $this->return = "\x2a\x02\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return; // flap/flap_id . dlzka ziadosti . ziadost
                     break;
					 
                     case '7' : // http://iserverd1.khstu.ru/oscar/snac_01_08.html
                     $this->return  = "\x2a\x2\x13" . $this->flap_poziadavok() . "\x0\x12\x0\x1\x0\x1e\x0"; // flap/flap_id, dlzka a default rodiny/SNAC rate-limits
                     $this->return .= "\x0\x1\x5e\xb4\x5c\x0\x6\x0\x4\x20\x8\x0\x20";
                     break;
					 
                     case '8' : // http://iserverd1.khstu.ru/oscar/snac_01_1e.html
                                // status som nastavil na 0x0000 - online
								// - http://iserverd1.khstu.ru/oscar/lists.html#user_status
                     $this->return  = "\x00\x01\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x06\x00\x04\x00\00\x00\x00";
                     $this->return  = "\x2a\x02\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return; // flap/flap_id . dlzka . obsah
                     break;
					 
                     case '9' : // oboznamenie servera o tom, ze sme pripraveni na pouzivanie zakladnych funkcii
                                // http://iserverd1.khstu.ru/oscar/snac_01_02.html
                     $this->return  = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x00\x00";
                     $this->return .= "\x01\x00\x03\x01\x10\x02\x8a\x00\x02\x00\x01\x01\x01\x02\x8a";
                     $this->return .= "\x00\x03\x00\x01\x01\x10\x02\x8a\x00\x15\x00\x01";
                     $this->return .= "\x01\x10\x02\x8a\x00\x04\x00\x01\x01\x10\x02\x8a";
                     $this->return .= "\x00\x06\x00\x01\x01\x10\x02\x8a\x00\x09\x00";
                     $this->return .= "\x01\x01\x10\x02\x8a\x00\x0a\x00\x01\x01\x10\x02\x8a";
                     $this->return  = "\x2a\x02\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return;
                     break;
					 
                     case '10' : // vypracovanie ziadosti a zaslatie spravy
                     $pre = str_replace('-', '', $pre);
                     $this->return = "\x0\x0\x0\x0" . $sprava; // kanal pre spravu . sprava
                     $this->return = "\x5\x1\x0\x1\x31\x1\x1" . pack('n', strlen($this->return)) . $this->return; // oznacenie spravy . dlzka . kanal+sprava
                     $this->return = "\x0\x4\x0\x6\x0\x0\x1\x5e\xb8\xe3\x0\x0\x0\x0\x1\x5e\xb8\xe6\x0\x1" . pack('c', strlen($pre)) . $pre . "\x0\x2" . pack('n', strlen($this->return)) . $this->return;
                     $this->return = "\x2a\x2\x13" . $this->flap_poziadavok() . pack('n', strlen($this->return)) . $this->return;
                     break;
                     }
               return $this->return;
               }
      function pripoj($icq_cislo,$icq_heslo)
               {
               $icq_cislo = str_replace('-', '', $icq_cislo);
               $this->soket = fsockopen('login.icq.com','5190'); // zacina spojenie s autorizacnym serverom
               	   
               $this->fread = fread($this->soket, 10); // precita sa welcome "sprava"
               	   
               $this->input = $this->spracuj(1,$icq_cislo,$icq_heslo,'ultra vyborny ;)');
               fwrite($this->soket, $this->input);     // posle sa ziadost o autorizaciu
               	   
               $this->fread = fread($this->soket, 310);// server vracia icq, BOS server:port, a aut. cookie
               	   
               @fclose($this->soket); // konci spojenie s autorizacnym serverom
               	   
               if(strlen($this->fread) < 289)
                 {
                 return 0; // odstaveny log-in, alebo zle icq cislo/heslo, http://iserverd1.khstu.ru/oscar/auth_failed.html
                 }

               $this->srv        = explode("\x3a", $this->spracuj(2,0,0,0,$this->fread));
               $this->bos_server = $this->srv[0];
               $this->bos_port   = $this->srv[1];
               $this->cookie     = $this->spracuj(3,0,0,0,$this->fread);
                  
               $this->bos_soket = fsockopen($this->bos_server, $this->bos_port); // zacina spojenie s BOS serverom

               fread($this->bos_soket, 2048); // cita sa uvitacia sprava

               $this->input = $this->spracuj(4,0,0,0,0,$this->cookie);
		 
               fwrite($this->bos_soket, $this->input);
		   
               fread($this->bos_soket, 2048); // server vracia http://iserverd1.khstu.ru/oscar/snac_01_03.html
           
               $this->input = $this->spracuj(5);
		   
               fwrite($this->bos_soket, $this->input);
		   
               fread($this->bos_soket, 2048); // server vracia http://iserverd1.khstu.ru/oscar/snac_01_18.html
		   
               $this->input = $this->spracuj(6);
		   
               fwrite($this->bos_soket, $this->input);
		   
               fread($this->bos_soket, 2048); // server vracia http://iserverd1.khstu.ru/oscar/snac_01_07.html
		   
               $this->input = $this->spracuj(7);
		   
               fwrite($this->bos_soket, $this->input);
		   
               fread($this->bos_soket, 2048);
		   
               $this->input = $this->spracuj(8);
		   
               fwrite($this->bos_soket, $this->input);
		   
               fread($this->bos_soket, 2048);
		   
               $this->input = $this->spracuj(9);
		   
               fwrite($this->bos_soket, $this->input); // po tomto je icq on-line a moze sa poslat sprava
               }
      function sprava($pre,$sprava)
               {
               $this->input = $this->spracuj(10,0,0,0,0,0,$pre,$sprava);
               @fwrite($this->bos_soket, $this->input); // poslatie spravy
               }
      function odpoj()
               {
               @fclose($this->bos_soket); // konci spojenie s BOS serverom
               }
      }
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

$icq = new icq;

$icq->pripoj('icq','heslo');

$icq->sprava('komu','sprava');
$icq->sprava('komu','dalsia sprava');

$icq->odpoj();
?>
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

Príspevok od používateľa Nosferatu »

Kvalitna prácička, díki moc.. Kde si si preštudoval ICQ protokol plz? :!:
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

nice work veru
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

Príspevok od používateľa final »

thx 8) ... nosferatu, prečítaj si moju správu ešte raz ;) je tam link
Nosferatu
Medium Expert
Medium Expert
Príspevky: 127
Registrovaný: 24 máj 2005, 8:50

Príspevok od používateľa Nosferatu »

sry :D , diki moc, mrknem, len kto má ľúštiť tu anglinu :P .. a čo také skype, sice to funguje trochu inak :?
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

Nosferatu napísal:sry :D , diki moc, mrknem, len kto má ľúštiť tu anglinu :P .. a čo také skype, sice to funguje trochu inak :?
ak sa nemylim tak skype pouziva uzavrety protokol. takze tam toho vela nenastudujes...
hojko
Site Admin
Site Admin
Používateľov profilový obrázok
Príspevky: 38514
Registrovaný: 24 apr 2004, 18:29
Bydlisko: Európa
Kontaktovať používateľa:

Príspevok od používateľa hojko »

Tento script by sa dal dobre pouzit aj na spammovanie icq, ci je to osetrene protokolom tak, ze sa zablokuje icq cislo???
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

Príspevok od používateľa final »

mastermind, uzavretý protokol? ehm.. vysvetlíš pls?
každopádne si sosni nejaký soft, prezeraj si pakety ktoré skype posiela, domýšľaj si čo je čo, ako to robili tí odkiaľ som študoval icq protokol.. (aspoň tak tipujem, že robili).. daj to sem a môžem sa pokúsiť o niečo..

hojko, no dá sa.. medzi každú deviatu správu treba dať sleep(1), na jednu sekundu to počká a posiela ďalej.. bo icq server ťa odpojí ak posieláš za sebou veľa správ.. + je to spravené tak, že to zaradenie flap formátu je od 44 do 256, takže max. pošleš cca 210 správ.. mohol by som to prerobiť, aby to bralo do 256^2, (menil by som aj prvú hodnotu zaradenia - \x13).. ak by ste chceli, ale až zajtra bo idem preč teraz..
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

Finalway napísal:mastermind, uzavretý protokol? ehm.. vysvetlíš pls?
uzavrety sa mysli ze ho nikto okrem vyvojarov skype nepozna ....

icq je myslim otvoreny protocol ... keby bol uzavrety asi by nebolo tolko icq klientov (miranda, trilian, licq, gaim atd....)
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

presne ako napisal gwixt k icq protokolu existuje urcite nejaka dokumentacia. pri skype nie... a keby to mali robit len na zaklade odsnifovanych paketov tak este dodnes nevedia ako to funguje :)
trizzo
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2927
Registrovaný: 26 sep 2004, 14:39

Príspevok od používateľa trizzo »

hojko napísal:Tento script by sa dal dobre pouzit aj na spammovanie icq, ci je to osetrene protokolom tak, ze sa zablokuje icq cislo???
ano, da sa to tak vyuzit...ci to zablokuju to neviem :)
maskov1
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 94
Registrovaný: 10 feb 2006, 14:55
Bydlisko: Slovakia

Príspevok od používateľa maskov1 »

hm mam maly problem... ked to chcem dat na moju stranku tak to dam ako "icq.php" a ked to potom chcem spustit tak mi vypise toto:

Kód: Vybrať všetko

Warning: fsockopen() has been disabled for security reasons in /home/free/ic.cz/a/allmobile/root/www/ICQ.php on line 102

Warning: fread(): supplied argument is not a valid stream resource in /home/free/ic.cz/a/allmobile/root/www/ICQ.php on line 104

Warning: fwrite(): supplied argument is not a valid stream resource in /home/free/ic.cz/a/allmobile/root/www/ICQ.php on line 107

Warning: fread(): supplied argument is not a valid stream resource in /home/free/ic.cz/a/allmobile/root/www/ICQ.php on line 109


poradtemi o mam spravit
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

spustit to inde.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

mastermind napísal:spustit to inde.
rozsirena verzia: na tvojom hostingu je z "bezpecnostnych" dovodov zakazana funkcia fsockopen ... preto ti to tam nepojde ....
//mastermind: dakujem. setrim si prstiky :)
maskov1
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 94
Registrovaný: 10 feb 2006, 14:55
Bydlisko: Slovakia

Príspevok od používateľa maskov1 »

Prosim Vas dal som to aj na szm.sk a aj na webzdarma a vsade napisalo nejaku chybu.
PLS napiste mi na akom servery to ide... vopred diki
Napísať odpoveď