- 3 Aprile 2008
- 1.074
- 0
- Miglior risposta
- 0
Guida allo scripting in habbo
Voi tutti usate programmi , ma sapete come funzionano? Secondo me no , perchè continuo a ricevere richieste su creare veri furni , rubare i furni nelle stanze degli altri ecc.
Scrivo questa guida anche per chi ha intenzione di creare un programma script , visto che all'inizio ho avuto una marea di difficolta e nessuno sapeva come aiutarmi , e anche per chi non ha capito nulla di scripting
PARTE TEORICA
PARTE PRATICA
CODARE IN B64 E VL64
Funzionamento dei bot
Voi tutti usate programmi , ma sapete come funzionano? Secondo me no , perchè continuo a ricevere richieste su creare veri furni , rubare i furni nelle stanze degli altri ecc.
Scrivo questa guida anche per chi ha intenzione di creare un programma script , visto che all'inizio ho avuto una marea di difficolta e nessuno sapeva come aiutarmi , e anche per chi non ha capito nulla di scripting
PARTE TEORICA
Gli elementi per connettersi normalmente ad habbo non sono molti :
-DCR
-External text & variables
-Ip e porta a cui ci si deve collegare
-SSO ticket ( stringa con cui il server vi identifica , cambia ad ogni vostro login e logout
Il DCR :
il dcr non è nient'altro che il client .
Una volta caricato , farà connettere un Socket ad "habbohotel.it" attraverso la porta 30001 ( potete farlo anche voi attraverso un client di una chat).
Il server , appena noterà che vi siete connessi vi inviererà una serie di pacchetti , a cui il DCR risponderà automaticamente inviando al server dei dati
SPIEGAZIONE RIGUARDANTE LO SCAMBIO DI CHIAVI
HEADERS & SPIEGAZIONI PACCHETTI
LISTA HEADERS DEL CLIENT e FUNZIONI
HEADER SERVER E LE LORO FUNZIONI
-DCR
-External text & variables
-Ip e porta a cui ci si deve collegare
-SSO ticket ( stringa con cui il server vi identifica , cambia ad ogni vostro login e logout
Il DCR :
il dcr non è nient'altro che il client .
Una volta caricato , farà connettere un Socket ad "habbohotel.it" attraverso la porta 30001 ( potete farlo anche voi attraverso un client di una chat).
Il server , appena noterà che vi siete connessi vi inviererà una serie di pacchetti , a cui il DCR risponderà automaticamente inviando al server dei dati
SPIEGAZIONE RIGUARDANTE LO SCAMBIO DI CHIAVI
Il primo pacchetto/dato ricevuto sarà sempre "@@" e serve al server per capire se vi siete connessi col DCR
Primo dato ricevuto : "@@" , il DCR invierà come risposta "@@BCN"
Naturalmente si può ingannare il server , proprio come fanno i bot , ma ne parleremo dopo
----------------------------
il secondo botta e risposta tra client e server serve per decidere la chiave da usare nella criptazione , attualmente il server utilizza il metodo
quindi potrebbe cambiare metodo
esempio:
RC4 è la classe di criptazione vera e propria , ed è fatta in modo che criptando lo stesso dato più volte il risultato sia sempre diverso , quindi non potete inviare due volte il dato criptato nello stesso modo
RC4 ha alcune varianti , infatti la variante attuale è dinamica , perchè cripta secondo una chiave scelta al momento
mentre qualche mese fa era statica
e qualche mese ancora prima era dinamica
Primo dato ricevuto : "@@" , il DCR invierà come risposta "@@BCN"
Naturalmente si può ingannare il server , proprio come fanno i bot , ma ne parleremo dopo
----------------------------
il secondo botta e risposta tra client e server serve per decidere la chiave da usare nella criptazione , attualmente il server utilizza il metodo
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
quindi potrebbe cambiare metodo
esempio:
il server invia a voi : "DUIH" , questo è il "segnale" per dare inizio allo scambio di chiavi della criptazione
DCR invia secondo lo scambio di dati Diffie-Hellman:
@BD_RB@5AD23D832A1597AB118829BBF314510A01641E8EF2E0CF2978D0242719E7E87DD76B0B017CA9E72A7DB5310229A8B9555B947950CFA284BA70B7760DC2832646
il server vi invia :
@A1ae948d13a05f1e46a6d159e714b9f8fd2e020a7b08e6a81acf225506ad72365c2152f2638b5ff8eab038bcfd019f103a9878d592d35b4ae37889c59049727cc
seguiranno poi varie operazioni per decidere la chiave .
una volta scelta il DCR inizierà a inviare dati criptati in RC4 utilizzando la chiave scelta in precedenza
DCR invia secondo lo scambio di dati Diffie-Hellman:
@BD_RB@5AD23D832A1597AB118829BBF314510A01641E8EF2E0CF2978D0242719E7E87DD76B0B017CA9E72A7DB5310229A8B9555B947950CFA284BA70B7760DC2832646
il server vi invia :
@A1ae948d13a05f1e46a6d159e714b9f8fd2e020a7b08e6a81acf225506ad72365c2152f2638b5ff8eab038bcfd019f103a9878d592d35b4ae37889c59049727cc
seguiranno poi varie operazioni per decidere la chiave .
una volta scelta il DCR inizierà a inviare dati criptati in RC4 utilizzando la chiave scelta in precedenza
RC4 è la classe di criptazione vera e propria , ed è fatta in modo che criptando lo stesso dato più volte il risultato sia sempre diverso , quindi non potete inviare due volte il dato criptato nello stesso modo
RC4 ha alcune varianti , infatti la variante attuale è dinamica , perchè cripta secondo una chiave scelta al momento
mentre qualche mese fa era statica
e qualche mese ancora prima era dinamica
HEADERS & SPIEGAZIONI PACCHETTI
il terzo&quarto&quinto&altri botta e risposta tra voi e il server serviranno per far capire al server alcune cose:
-farà capire quale DCR state usando , se quello vero o uno modificato o di versione precedente
-farà capire chi siete attraverso SSO ticket , una stringa scritta nel loader che il DCR invierà al server per l'identificazione
-farà capire che external text e variables state usando
fatto questo il server vi invierà tutti altri dati normali come quali stanze ci sono in giochi e competizioni o in aree pubbliche e cosi via
Come fa il DCR a capire di quali dati stiamo parlando???
semplice :
ottiene l'header che non è altro che i primi due caratteri della stringa ricevuta
ad esempio se ricevete
@b4 7,4,0.0,2,2/sit 1.0/
stacca i primi due caratteri ovvero "@b" , da questo header , il DCR, capisce che stiamo parlando della posizione di un certo habbo e del suo status
4 7,4,0.0,2,2/sit 1.0/
4= id dell'habbo nella stanza
7,4,0.0,2,2/ = posizione dell'habbo e dati sulla sua altezza
sit 1.0/ = status dell'habbo , in questo caso è seduto
esistono altri status come
-carryd 13
-dance
-wave
-Sleep
-Swim ( solo nelle piscine)
-farà capire quale DCR state usando , se quello vero o uno modificato o di versione precedente
-farà capire chi siete attraverso SSO ticket , una stringa scritta nel loader che il DCR invierà al server per l'identificazione
-farà capire che external text e variables state usando
fatto questo il server vi invierà tutti altri dati normali come quali stanze ci sono in giochi e competizioni o in aree pubbliche e cosi via
Come fa il DCR a capire di quali dati stiamo parlando???
semplice :
ottiene l'header che non è altro che i primi due caratteri della stringa ricevuta
ad esempio se ricevete
@b4 7,4,0.0,2,2/sit 1.0/
stacca i primi due caratteri ovvero "@b" , da questo header , il DCR, capisce che stiamo parlando della posizione di un certo habbo e del suo status
4 7,4,0.0,2,2/sit 1.0/
4= id dell'habbo nella stanza
7,4,0.0,2,2/ = posizione dell'habbo e dati sulla sua altezza
sit 1.0/ = status dell'habbo , in questo caso è seduto
esistono altri status come
-carryd 13
-dance
-wave
-Sleep
-Swim ( solo nelle piscine)
LISTA HEADERS DEL CLIENT e FUNZIONI
come abbiamo detto prima ogni header serve al dcr per far capire di quale tipo di dato stiamo parlando ( posizioni , furni , alert) e di conseguenza cambia il modo in cui viene "letto":
una lista degli header più importanti
Header "@\"
header "@b"
header "@Z"
header "BK"
header "@`"
header "A]"
header "BL"
header "@n"
questi erano header del client
una lista degli header più importanti
Header "@\"
notifica l'entrata di un nuovo user , precisandone nome , id nella stanza , badge , vestiti e altre informazioni
esempio:
@\i:0
a:1799494
n:TheIce2
f:hd-180-2.ch-260-62.lg-270-64.sh-905-84.hr-115-31.ha-1021-62
l:3 5 0.0
c:
s:M
x:162
esempio:
@\i:0
a:1799494
n:TheIce2
f:hd-180-2.ch-260-62.lg-270-64.sh-905-84.hr-115-31.ha-1021-62
l:3 5 0.0
c:
s:M
x:162
header "@b"
definisce la posizione di un user nella stanza e il suo status ( si sta muovendo , è seduto , sta salutando ecc)
esempio
@b4 7,4,0.0,2,2/sit 1.0/
esempio
@b4 7,4,0.0,2,2/sit 1.0/
header "@Z"
indica ke un utente sta urlando una certa cosa esempio:
@ZHciao
@Z = header
H = numero dell'utente codato in VL64 (spiego dopo cos'è)
ciao = frase ke dice
= sta a indicare la fine di una frase
@ZHciao
@Z = header
H = numero dell'utente codato in VL64 (spiego dopo cos'è)
ciao = frase ke dice
= sta a indicare la fine di una frase
header "BK"
indica che avete ricevuto un alert dai mod, esempio:
BKciao
BKciao
header "@`"
indica che state ricevendo informazioni sui furni , sul colore , sulla posizione e sul loro stato ( se il divisore è aperto ecc)
esempio:
@`1345md_limukaappiSAPBIIJ0.0#FFFFFFHTRUE
1345= id del furno
md_limukaappi = sprite del furno , ovvero l'immagine , in questo caso è la coca cola
SAPBIIJO.O = sono le coordinate codate in VL64 ( spiego dopo cos'è)
#FFFFFF = colore ( di solito le coca cole non hanno colore , l'ho aggiunto per fare un esempio)
HTRUE = lo stato in cui si trova , in questo caso stava versando la coca cola
esempio:
@`1345md_limukaappiSAPBIIJ0.0#FFFFFFHTRUE
1345= id del furno
md_limukaappi = sprite del furno , ovvero l'immagine , in questo caso è la coca cola
SAPBIIJO.O = sono le coordinate codate in VL64 ( spiego dopo cos'è)
#FFFFFF = colore ( di solito le coca cole non hanno colore , l'ho aggiunto per fare un esempio)
HTRUE = lo stato in cui si trova , in questo caso stava versando la coca cola
header "A]"
è stato aggiunto un furno , precisa la sprite , coordinate , colore e stato. esempio:
A]1md_limukaappiSAPBIIJ0.0HTRUE
A]1md_limukaappiSAPBIIJ0.0HTRUE
indica che furni avete in mano
header "@n"
colore del pavimento o del muro
esempio:
@nwallpaper/2301
esempio:
@nwallpaper/2301
questi erano header del client
HEADER SERVER E LE LORO FUNZIONI
Per far capire al server che tipo di dati avete inviato .
A parte alcuni casi , le conseguenze dell'invio di dati al server saranno viste da tutti
header "AJ"
header "AP"
header "@A"
header "@w"
non ne ricordo altri
A parte alcuni casi , le conseguenze dell'invio di dati al server saranno viste da tutti
header "AJ"
serve per "signare" un furno , ovvero dargli una proprietà , ad esempio possiamo aprire un frigo/teletrasporto a distanza
esempio
AJ@E23232@DTRUE
AJ = header
@E = "codatura" di 23232 in B64 , che non è VL64 ( spiego dopo cos'è)
23232= id del furno
@D = codatura di TRUE in B64
TRUE = proprietà , in questo caso, se il furno fosse stato un teletrasporto o un frigo , lo avremmo aperto a distanza
esempio
AJ@E23232@DTRUE
AJ = header
@E = "codatura" di 23232 in B64 , che non è VL64 ( spiego dopo cos'è)
23232= id del furno
@D = codatura di TRUE in B64
TRUE = proprietà , in questo caso, se il furno fosse stato un teletrasporto o un frigo , lo avremmo aperto a distanza
header "AP"
uno degli header più conosciuti , serve per far apparire una bibita o macchina fotografica in mano (visibile a tutti)
esempio:
AP20 farà apparire una macchina fotografica
esempio:
AP20 farà apparire una macchina fotografica
serve per muoversi verso una certa casella , non ho esempi
header "@w"
server per urlare un messaggio
esempio
@w@Dciao
@D = codatura di ciao in B64
esempio
@w@Dciao
@D = codatura di ciao in B64
PARTE PRATICA
Ingannare il DCR
Inviare al server senza avere la classe di criptazione (ARTMONEY - RAW DATA)
Inviare al server senza avere la classe di criptazione (COYOTE'S DLL)
mettiamo caso che c'è un teletrasporto in un luogo inaccessibile , come fare ad entrare?
se clicchiamo due volte sul teletrasporto non riusceremo a teletrasportarci perchè il DCR sà che siamo troppo distanti e non invierà il pacchetto per teletrasportarci
quindi come fare??
semplice:
utilizzando l'header "@b" che abbiamo visto prima nella parte teorica , possiamo teletrasportarci in client
basterà inviare al client @b(ID USER) (COORDINATE DEL TELETRASPORTO)
esempio: @b0 9,12,0.0,2,2/
faremo credere al DCR di essere nel teletrasporto e quindi invierà il pacchetto per teletrasportarci
stessa cosa può essere fatta per aprire un frigo a distanza , o nukkare i tele
se clicchiamo due volte sul teletrasporto non riusceremo a teletrasportarci perchè il DCR sà che siamo troppo distanti e non invierà il pacchetto per teletrasportarci
quindi come fare??
semplice:
utilizzando l'header "@b" che abbiamo visto prima nella parte teorica , possiamo teletrasportarci in client
basterà inviare al client @b(ID USER) (COORDINATE DEL TELETRASPORTO)
esempio: @b0 9,12,0.0,2,2/
faremo credere al DCR di essere nel teletrasporto e quindi invierà il pacchetto per teletrasportarci
stessa cosa può essere fatta per aprire un frigo a distanza , o nukkare i tele
Inviare al server senza avere la classe di criptazione (ARTMONEY - RAW DATA)
Come sappiamo , se non si ha la criptazione non c'è modo di inviare direttamente al server
ma esiste un modo per inviare indirettamente, conoscendo solo la sintassi del dato da inviare, utilizzando il raw data
Per farlo bisogna utilizzare artmoney , un programma che cambia i valori della memoria
se ad esempio vogliamo farci comparire una macchina fotografica
basterà cambiare il valore dell'header di "cacciare un utente" (A_) con quello del dato cui vogliamo inviare (AP)
ora basterà creare un mutante di nome "20"
ora scacciate il mutante e il gioco è fatto
perchè succede?
il dcr cercerà di inviare A_20 ( ovvero caccia "20") ma , visto che abbiamo cambiato il valore di A_ in AP, invierà AP20 , proprio il pacchetto che volevamo inviare!
ma esiste un modo per inviare indirettamente, conoscendo solo la sintassi del dato da inviare, utilizzando il raw data
Per farlo bisogna utilizzare artmoney , un programma che cambia i valori della memoria
se ad esempio vogliamo farci comparire una macchina fotografica
basterà cambiare il valore dell'header di "cacciare un utente" (A_) con quello del dato cui vogliamo inviare (AP)
ora basterà creare un mutante di nome "20"
ora scacciate il mutante e il gioco è fatto
perchè succede?
il dcr cercerà di inviare A_20 ( ovvero caccia "20") ma , visto che abbiamo cambiato il valore di A_ in AP, invierà AP20 , proprio il pacchetto che volevamo inviare!
Inviare al server senza avere la classe di criptazione (COYOTE'S DLL)
non sò l'esatto funzionamento della coyote DLL
è una dll che permette di inviare dati al server utilizzando la criptazione che riesce in qualche modo ad avere dallo shockwave 10.3.1.8
però è necessario usare il DCR , quindi non si possono fare bot perchè , anche se 5 o 6, laggherebbe troppo ( caricamento shockwave , caricamento furni ecc)
è una dll che permette di inviare dati al server utilizzando la criptazione che riesce in qualche modo ad avere dallo shockwave 10.3.1.8
però è necessario usare il DCR , quindi non si possono fare bot perchè , anche se 5 o 6, laggherebbe troppo ( caricamento shockwave , caricamento furni ecc)
CODARE IN B64 E VL64
il B64 crea un header in base alla lunghezza ( @A se il messaggio è di una lettera , @B se è di due , @C di 3 e cosi via) che va aggiunto all'inizio del messaggio esistente
il VL64 invece , funzionante solo per i numeri , coda diversamente numero e numero , trasformandolo in lettere ( numero 1 = I , 2 = J , 3 = K, ecc)
B64
VL64
il VL64 invece , funzionante solo per i numeri , coda diversamente numero e numero , trasformandolo in lettere ( numero 1 = I , 2 = J , 3 = K, ecc)
B64
il B64 è usato nei dati da inviare al server , per codare messaggi o status :
esempio:
se devo codare "AP24" ovvero fare apparire una macchina fotografica
devo basarmi sulla lunghezza della parola , AP24 = 4 lettere
4° lettera dell'alfabeto = D
messaggio codato = @DAP20
Facile , ma se il messaggio è di una trentima di caratteri? non lo so , io uso le dll di jeax ke lo fanno in automatico
esempio:
se devo codare "AP24" ovvero fare apparire una macchina fotografica
devo basarmi sulla lunghezza della parola , AP24 = 4 lettere
4° lettera dell'alfabeto = D
messaggio codato = @DAP20
Facile , ma se il messaggio è di una trentima di caratteri? non lo so , io uso le dll di jeax ke lo fanno in automatico
VL64
viene usato per codare i dati che il server invia a te ( client)
non sò come funziona , sò solo che funziona solo per i numeri
per encodare / decodare uso le dll di jeax che sono molto buone
non sò come funziona , sò solo che funziona solo per i numeri
per encodare / decodare uso le dll di jeax che sono molto buone
Funzionamento dei bot
i bot non sono altro che dei socket che fanno finta di essere connessi col DCR .
inquesto modo è possibile comandare un esercito di bot senza avere il minimo lag prodotto invece dal caricamento del dcr , dei furni , delle immagini di habbo ( prova ad aprire 4 habbo col loader insieme )
i bot per funzionare devono utilizzare la classe di criptazione , al contrario dei normali habbi .
di solito il DCR cripta di suo i dati e li invia , ma in mancanza di questo si deve avere la classe di criptazione
inquesto modo è possibile comandare un esercito di bot senza avere il minimo lag prodotto invece dal caricamento del dcr , dei furni , delle immagini di habbo ( prova ad aprire 4 habbo col loader insieme )
i bot per funzionare devono utilizzare la classe di criptazione , al contrario dei normali habbi .
di solito il DCR cripta di suo i dati e li invia , ma in mancanza di questo si deve avere la classe di criptazione
Ultima modifica: