Luigi Auriemma

aluigi.org (ARCHIVE-ONLY FORUM!)
It is currently 19 Jul 2012 14:31

All times are UTC [ DST ]





Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 41 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: guid ut2004
PostPosted: 05 Sep 2008 10:49 

Joined: 29 Aug 2008 15:19
Posts: 20
Ciao Luigi :)
piacere di conoscerti, mi chiamo anche io Luigi :)
Ho visto che sei parecchio in gamba, complimenti davvero :)

Volevo capire come il client di ut2004 invia la guid al gameserver.
Ho dato un'occhiata ai pacchetti udp "sniffati" ma ci capisco ben poco :(
Per favore, mi sai dare un aiutino al riguardo? :)

A presto,
Luigi.


Top
 Profile  
 
 
 Post subject: Re: guid ut2004
PostPosted: 05 Sep 2008 12:27 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
uhmmm, no al momento non ricordo se ho fatto ricerche riguardo la guid di ut2004... potrebbe essere l'hash md5 della cdkey ma al momento sono un po' arrugginito a riguardo.
comunque nel pomeriggio rilasciero' un plugin per sudppipe che mostra tutti i dati in chiaro nei pacchetti dei giochi basati sul motore di unreal (versione 2 e 3)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 05 Sep 2008 16:12 

Joined: 29 Aug 2008 15:19
Posts: 20
Analizzando la connessione tcp con il master server, praticamente il server ut2004 si comporta come hai descritto in ut2003heartbeat. Purtroppo nella connessione del client con il server ut2004 non sono riuscito a tirare fuori l'hash md5 :(
Magari aspetto il tuo plug-in che potrebbe aiutarmi notevolmente :)
Grazie della risposta :)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 05 Sep 2008 16:26 

Joined: 29 Aug 2008 15:19
Posts: 20
ehm ho provato a caricare il plugin ma mi crasha dopo questo:

>sudppipe -l unreal_sudp.dll 192.168.0.123 7777 20000

Simple UDP proxy/pipe 0.3a
by Luigi Auriemma
e-mail: aluigi@autistici.org
web: aluigi.org

- server: 192.168.0.123 : 7777
- bind UDP port 20000
- load library unreal_sudp.dll
- PLUGIN: Unreal engine packets plugin for sudppipe 0.1


Ho provato con altri plugin e non crashano. :(


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 05 Sep 2008 16:43 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
miii che erroraccio da pirla che ho fatto... risolto nella 0.1a appena rilasciata 8-)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 06 Sep 2008 10:37 

Joined: 29 Aug 2008 15:19
Posts: 20
Grande! Ora va una meraviglia :) Ottimo lavoro.
Vedo l'hash md5 della guid in chiaro :)))
Non ho ancora capito come viene trasformato l'hash nei pacchetti, ma tenter?? di studiare il tuo plug-in.
Domanda da nubbio :P Ma secondo te, si potrebbe "iniettare" nel pacchetto udp un hash(conosciuto) di un altra cdkey(sconosciuta)?
Ho incontrato un tedesco che si dice abbia un generatore di cdkey, infatti nonostante viene bannato, si ripresenta con una nuova guid. Questo tipo di solito viene bannato perch?? si diverte a far crashare i server ut2004 con il null pointer.
Riguardo al generatore di cdkey, io invece pensavo che lui usasse un inject di hash via udp.
Ma da quanto ho potuto vedere non ?? una cosa semplice...
magari questo tedesco ha solo parecchie cdkey


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 06 Sep 2008 11:56 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
certamente che si puo' fare, infatti ieri mentre stavo scrivendo il plugin avevo in mente anche di aggiungere qualche funzione di modifica in tempo reale dei dati.
magari rilascio la nuova versione oggi pomeriggio stesso, devo solo pensare a qualche modo di permettere all'utente di specificare questi comandi tramite -L

quella cosa del tedesco mi convince solo parzialmente in quanto il server verifica la guid che riceve contattando il server centralizzato per vedere se e' una cdkey valida online, quindi generare guid casuali non e' un problema, il problema sta nel generarle valide per il gioco online 8-)

provai questa cosa parecchi anni fa' con ut2003: creai una patch per l'eseguibile del gioco che appunto permetteva di usare una cdkey fissa e naturalmente non funzionava online per quel motivo.


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 06 Sep 2008 14:28 

Joined: 29 Aug 2008 15:19
Posts: 20
cio?? un comando con cui dire al programma di sostituire una determinata stringa con un'altra prima di inviare il paccheto?
Sarebbe fantastico ^^


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 06 Sep 2008 18:01 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
esattamente.
al momento la nuova versione che sto' facendo funziona perfettamente ma devo assolutamente risolvere un problema che "pare" (dubbio che prolunghera' un po' le cose) sia nella funzione di scrittura dei bits che e' un SPAM assurdo


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 03:06 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
ho appena rilasciato la nuova versione 0.2
inoltre ora il parsing dei pacchetti dovrebbe essere perfetto, ho fatto una prova con diverse sessioni di ut2004 con il rebuilding ed il confronto di migliaia di pacchetti quindi ne sono abbastanza sicuro


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 15:59 

Joined: 29 Aug 2008 15:19
Posts: 20
Mitico ^^ funziona perfettamente :D Grazie :)
Ho provato a sostituire l'hash inviato ma l'anti-cheat si accorge che non ?? quello vero.
Senza l'anti-cheat invece il server vede la guid modificata col programma.
Non ho idea di come l'anti-cheat va a leggere la guid originale(che ?? quello di una key generata con k3yg3n) :(
Guardando un po il log, ho visto che oltre a l'HASH viene inviato anche un altro hash che si chiama GM
Per caso sai cos'?? qusto GM?
Grazie ancora, sei proprio bravo :)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 17:11 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
GM e' l'hash codificato di qualcosa che ora vedo di controllare.
nel frattempo puoi divertirti a decodificarlo con il tool allegato che converte l'hash di 132 bytes nel classico da 32.

la cosa interessante che ho visto e' che non ci sono controlli sui valori passati dal client, quindi se l'ultimo valore dell'hash GM e' superiore a 0x42 vengono presi i bytes della memoria del server che sono dopo l'hash salvato in memoria... fortunatamente cio' non crea problemi


Attachments:
File comment: Unreal engine GM hash decoder
gmhash.zip [2.5 KiB]
Downloaded 224 times
Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 21:04 

Joined: 29 Aug 2008 15:19
Posts: 20
ho visto che dai vari hash GM esce sempre la stessa cosa, cio?? "0014e800000000000000000000000000"
che ?? lo stesso hash che viene inviato al master server(dal server ut2004) insieme all'hash della cdkey per validare la key. Faccio un esempio:
"!ac1eac7d109ac59df59aed4d8753769f.!0014e800000000000000000000000000
Infatti il master server valida tranquillamente la key cambiata attraverso il programma(cio?? sostituendo l'hash attraverso il programa).
Non so cosa sia quell'hash, ma credo che non venga usato dall'antitcc o safegame per ricoscere la vera cdkey del client.

E' possibile che l'antitcc(o safegame) faccia un'altra richiesta al client per richiedere l'hash della cdkey?


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 21:35 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
riguardo l'antitcc non ne ho proprio idea in quanto non ne so' nulla a riguardo


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 21:57 

Joined: 29 Aug 2008 15:19
Posts: 20
le anti-cheat sono scaricate in locale e il check viene fatto da loro.
Probabilmente c'?? qualche funzione che chiede al client di nuovo la guid e poi confrontata con quella del server. Sicuramente c'?? qualche altro pacchetto udp che scambia questa informazione :)
Magari, grazie al tuo grandioso lavoro, controllo tutte le informazioni inviate nei pacchetti udp.

Ehm se non chiedo troppo, per favore potresti creare un programma come gmhash che mi mette in chiaro(decodificandoli dal motore unreal) una serie di caratteri esadecimali passati come parametro?
Cio?? la stessa operazione che fa sudppipe+unreal_sudp ma invece che usare i pacchetti udp catturati, glieli passo io direttamente via comandline?


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 22:08 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
ho dato un'occhiata a cosa fosse anti-tcc ed ho visto che e' un mutator quindi di regola dovrebbe comunicare con il server attraverso i pacchetti in-game.
se non vedi altri dati tramite unreal_sudp significa che la comunicazione e' fatta con pacchetti non di tipo/canale 1 (quindi non supportati dal tool)

oppure potrebbe essere che non c'e' alcuna comunicazione aggiuntiva con il server ma un check in locale usando altri parametri inviati dal server... comunque l'anti cheating non e' un campo che mi piace quindi anche volendo non ti posso aiutare di piu' a riguardo.

invece per quella cosa dei caratteri esadecimali non ho capito molto bene a cosa ti riferisci.
se parli di un tool per convertire ad esempio 61 61 61 in aaa puoi usare hex2byte o byte2hex per fare il contrario.

a meno che tu non ti riferisca al passare un pacchetto (magari un file contentente l'intero pacchetto ricevuto) al tool che poi sputa fuori i dati di tipo 1 in chiaro


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 07 Sep 2008 22:14 

Joined: 29 Aug 2008 15:19
Posts: 20
aluigi wrote:
a meno che tu non ti riferisca al passare un pacchetto (magari un file contentente l'intero pacchetto ricevuto) al tool che poi sputa fuori i dati di tipo 1 in chiaro

S?? :) intendo quello :)
Magari con un'opzione che faccia anche la cosa inversa, cio?? gli do i dati un chiaro e lui li codifica.


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 08 Sep 2008 00:19 

Joined: 29 Aug 2008 15:19
Posts: 20
scusami ma tutti i dati che non sono di tipo 1, non si conosce ancora come sono codificati?


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 08 Sep 2008 01:00 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
per il parsing di un pacchetto contenuto in un file ho rilasciato la versione 0.2.1, l'opzione e' -f nome_file

la cosa che dici tu di codificare un dato in chiaro non la puoi fare perche' tutti i pacchetti sono numerati, se vuoi inviare comandi di tipo 1 al server puoi usare unrealfp -c o -C

i pacchetti solitamente sono divisi in alcuni canali/tipi di cui il tipo 1 non ha segreti, il tipo 3 e' usato per i download ed e' molto semplice anche lui (con l'opzione -x vedi il contenuto del file che stai scaricando in chiaro) mentre per il tipo 2 e/o 0 la cosa e' piu' complessa


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 09 Sep 2008 18:56 

Joined: 29 Aug 2008 15:19
Posts: 20
grazie per la 0.2.1 ^^

Sai cosa avevo in mente di fare. Un programma tipo stcppipe(che sarebbe un'ottima base da cui partire) e metterlo tra il mio gameserver e il master server in modo da validare gli hash di cdkey generate dai k3yg3n.
Per?? quelle che il programma validerebbe, sono solo quelle presenti in un database.
La cosa ?? piuttosto semplice da fare, praticamente ?? il stcppipe con l'aggiunta di una query al database.
L'unico problema che ho riscontrato ?? che, se metto questo programma tra il gameserver e il master server, il gameserver fa sempre:
Approval APPROVED
Master server requests heartbeat 0 with code 19560
Master server requests heartbeat 1 with code 19560
Master server requests heartbeat 2 with code 19560
Master server requests heartbeat 0 with code 19560
Master server requests heartbeat 1 with code 19560
Master server requests heartbeat 2 with code 19560
.....
Master server requests heartbeat 0 with code 19560
Master server requests heartbeat 1 with code 19560
Master server requests heartbeat 2 with code 19560

Un loop continuo insomma e il gameserver non viene visto nel browser dei server pubblici :(
Non riesco a capirne il motivo :(
Il server dovrebbe fare questo:

Approval APPROVED
Master server requests heartbeat 0 with code 19560
Master server requests heartbeat 1 with code 19560
Master server requests heartbeat 2 with code 19560
Master server assigned our MatchID: 0


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 09 Sep 2008 20:35 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
ma non e' piu' semplice modificare l'eseguibile del server di gioco e bypassare completamente il check delle cdkey degli utenti?


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 09 Sep 2008 21:04 

Joined: 29 Aug 2008 15:19
Posts: 20
il problema principale ?? il cheating :(
Se disattivo completamente il check, si pu?? entrare con qualsiasi cdkey e se ne banno qualcuno per cheating, questo potrebbe rientrare tranquillamente con un'altra cdkey.
Con il programma "ponte", invece io darei una chiave generata a coloro che non hanno un cdkey(che praticamente usano ut2004 patchato come demo) e nel caso cittano, li posso tranquillamente tagliare fuori.
Non so se ho reso l'idea. Praticamente creerei un mio database di cdkey :) oltre a quelle valide al master server.


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 10 Sep 2008 16:52 

Joined: 29 Aug 2008 15:19
Posts: 20
ho risolto :) non avevo tenuto conto che cambiando l'ip al master server,
ci sono anche dei pacchetti udp scambiati. Quindi con il doppio "ponte"(TCP e UDP) funziona perfettamente :) Ora non mi resta che aggiungere una funzione per il database ed ?? fatta.
Scusa se ho approfittato troppo della tua gentilezza ^^


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 10 Sep 2008 20:39 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
ma scherzi? e' sempre utile ritornare su progetti non conclusi od in beta ed in particolare sul motore di Unreal, quindi ben vengano domande e richieste che possano portare ad un miglioramento o a nuove ricerche 8-)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 12 Sep 2008 14:41 

Joined: 29 Aug 2008 15:19
Posts: 20
Pensavo di aver risolto, invece ho incontrato un altro ostacolo :(
Se faccio passare la connessione del master server attraverso il "tunnel", nel serverbrowser il server viene visto con una porta errata(cio?? dovrebbe essere la 7777) e cambia ad oggi riavvio del server(o semplicemente cambiando mappa) :(

EDIT:
Credo di aver capito il problema, ma non ho ancora idea di come risolverlo :(
L'IP e la porta nel serversbrowser vengono assegnati dal masterserver leggendo la porta e l'ip dei pacchetti udp inviati dal server. Se li faccio passare attraverso il "tunnel udp", infatti, il master server legge la porta sorgente del sudppippe.


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 14 Sep 2008 00:28 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
capisco...
beh una soluzione ci potrebbe essere, tipo ad esempio identificare il pacchetto di heartbeat ed inviarlo al vero master server usando la stessa porta del tuo server, se vuoi posso darci un'occhiata nei prossimi giorni


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 14 Sep 2008 12:03 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
nel frattempo visto che hai un server linux dai un'occhiata a questo fix che ho appena fatto per ut2004, dovrebbe funzionare senza problemi anche su linux:

http://aluigi.org/patches/voiceindexfix.lpatch


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 14 Sep 2008 15:30 

Joined: 29 Aug 2008 15:19
Posts: 20
oh grande! hai fatto anche la patch per il null pointer :) Se aspettavamo epic, potevamo anche crepare ^^
In realt?? io avevo risolto con un piccolo stratagemma ^^
Siccome molti lamers si limitavano a crashare i server con il programmino da te compilato. Ho aggiunto una regola nel firewall per bloccare solo quel determinato pacchetto udp ^^
Ma sicuramente la patch ?? pi?? efficace, la provo il prima possibile :)

Riguardo al tunnel che avevo in mente, ero arrivato a due possibili soluzioni.
La pi?? semplice ?? "dirottare" verso il master server i pacchetti udp diretti alla porta 29802 attraverso una regola di NAT. Ma al momento il mio server non ha il modulo nat... ho chiesto all'hosting se me lo installa visto che si deve ricompilare il kernel.
La seconda la pi?? complicata(che non sono in grado di fare) ?? quella di modificare il codice del server in modo che ci siano due differenti indirizzi, uno per i pacchetti tcp e uno per quelli udp.
Cio?? una cosa del genere nel file.ini:
MasterServerListTCP=(Address="INDIRIZZO_PONTE",Port=28902)
MasterServerListUDP=(Address="ut2004master1.epicgames.com",Port=28902)
Ma come ho detto, credo sia irrealizzabile(almeno per me).

Ho anche provato a farmi un proxy UDP da solo per inviare il pacchetto ricevuto con una porte sorgente uguale a quella del server ut2004. Ma la porta non pu?? essere bindata perch?? ?? appunto usata dal server ut2004.


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 14 Sep 2008 16:04 

Joined: 29 Aug 2008 15:19
Posts: 20
mmh ho provato a patchare da windows(lpatch.exe) il file ucc-bin delle versioni 3369, 3369-1, 3369-2,
ma in tutti i casi mi dice che non ci sono byte da patchare. Ho provato anche a cercare nel bin della 3369-2, con un hexeditor, i byte specificati nel voiceindexfix.lpatch, ma non trovo niente :(
Dove ho sbagliato?

EDIT:
La patch funziona con il bin della 3355 :)


Top
 Profile  
 
 Post subject: Re: guid ut2004
PostPosted: 14 Sep 2008 16:48 

Joined: 13 Aug 2007 21:44
Posts: 4068
Location: http://aluigi.org
errore mio, sul sito di quei culi della epic la 3355 era l'ultima... risolvo subito :)
comunque, per il momento, hai provato a far andare il bin patchato della 3355 e lanciare ut2004null contro di lui?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 41 posts ]  Go to page 1, 2  Next

All times are UTC [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for: