(Premetto che non sapevo la sezione adeguata dove pubblicare ciò quindi chiedo scusa in anticipo ai moderatori)
Buona sera scrivo questo post dato che al momento mi trovo in un blocco più totale durante la creazione di questa mia api. Vi spiego un attimo l'api: la mia intenzione era quella di creare una web app per qualsiasi server (al quale non si ha accesso diretto al server/database) che permette di tracciare in tempo reale il respawn di ogni singolo boss/mob/metin2 (tramite ovviamente il suo relativo vnum) compreso di mappa e cordinate x/y tutto tramite la lettura dei relativi pacchetti/byte (0x55) che vengono mandati dal server al client nel loro stream game. Per spiegarmi meglio faccio una scaletta completa di quello che ho ideato:
Api si collega con una connessione TCP per ciascuno dei channel passa al handshake P-256/ECDH che passa allo shared_x che a sua volta va a fare la selezione del cipher sia recv che send e subito dopo fa l'auth quindi il vero e proprio channel login che restituisce 0x44 da qui in poi abbiamo poi il vero e proprio stream game che sarà cifrato e che verrà sempre decriptato che a sua volta verrà spezzato tutto il flusso e diviso in pacchetti (1 byte opcode) per poi riconoscere ciò che a noi interessa (character_add / character_del / move) e inoltre li cataloga per vnum boss/channel/timestamp tutto ovviamente senza la necessità di client veri e propri aperti e collegati in game h24 (è questa la parte al momento nel quale sto avendo problemi). E' ovvio citare che molto di questo lavoro mi è stato agevolato da una vecchia release di @Luscha e che io ad oggi vorrei rivalorizzare. Al momento quello che so è : handshake, identità=kdf sia per channel che per l'auth-send,selettore cipher (ho risolto pure il modo in cui viene scelto perchè inizialmente ho trovato problemi pure qua in quanto venivano presentati in totale 13 indici),son già riuscito a mappare il flusso completo del auth e l'ho già provato live con un offset del login_key rubato e non toccato da una sessione vera. Quindi chi è arrivato fino a qui a leggere si starà domandando cosa esattamente sto chiedendo ... Il problema sta proprio nel ultima parte quindi ho necessità del auth_ticket e quindi a sua volta login_key generato in autonomia ma per far ciò ho avuto un bel po di problemi anche perchè per generarlo gameforge richiede blackbox (anti-bot) + gsid che son legati alla sessione stessa del account (dovrei praticamente reversare l'anticheat/antibot stesso). Quindi prima di passare a delle conclusioni troppo affrettate e iniziare il reversing vengo qui a chiedere magari a qualcuno con più esperienza se esistesse qualcosa di migliore per permettere il login autonomo ad un api o se magari avessero già reversato il blackbox e sia caricato da qualche parte. Grazie per l'attenzione
PS: se qualcuno volesse per fare le proprie prove tutti i file che ho creato per far tutto ciò non esiti a chiedere li passerei volentieri. (son tutti scritti in python)
Buona sera scrivo questo post dato che al momento mi trovo in un blocco più totale durante la creazione di questa mia api. Vi spiego un attimo l'api: la mia intenzione era quella di creare una web app per qualsiasi server (al quale non si ha accesso diretto al server/database) che permette di tracciare in tempo reale il respawn di ogni singolo boss/mob/metin2 (tramite ovviamente il suo relativo vnum) compreso di mappa e cordinate x/y tutto tramite la lettura dei relativi pacchetti/byte (0x55) che vengono mandati dal server al client nel loro stream game. Per spiegarmi meglio faccio una scaletta completa di quello che ho ideato:
Api si collega con una connessione TCP per ciascuno dei channel passa al handshake P-256/ECDH che passa allo shared_x che a sua volta va a fare la selezione del cipher sia recv che send e subito dopo fa l'auth quindi il vero e proprio channel login che restituisce 0x44 da qui in poi abbiamo poi il vero e proprio stream game che sarà cifrato e che verrà sempre decriptato che a sua volta verrà spezzato tutto il flusso e diviso in pacchetti (1 byte opcode) per poi riconoscere ciò che a noi interessa (character_add / character_del / move) e inoltre li cataloga per vnum boss/channel/timestamp tutto ovviamente senza la necessità di client veri e propri aperti e collegati in game h24 (è questa la parte al momento nel quale sto avendo problemi). E' ovvio citare che molto di questo lavoro mi è stato agevolato da una vecchia release di @Luscha e che io ad oggi vorrei rivalorizzare. Al momento quello che so è : handshake, identità=kdf sia per channel che per l'auth-send,selettore cipher (ho risolto pure il modo in cui viene scelto perchè inizialmente ho trovato problemi pure qua in quanto venivano presentati in totale 13 indici),son già riuscito a mappare il flusso completo del auth e l'ho già provato live con un offset del login_key rubato e non toccato da una sessione vera. Quindi chi è arrivato fino a qui a leggere si starà domandando cosa esattamente sto chiedendo ... Il problema sta proprio nel ultima parte quindi ho necessità del auth_ticket e quindi a sua volta login_key generato in autonomia ma per far ciò ho avuto un bel po di problemi anche perchè per generarlo gameforge richiede blackbox (anti-bot) + gsid che son legati alla sessione stessa del account (dovrei praticamente reversare l'anticheat/antibot stesso). Quindi prima di passare a delle conclusioni troppo affrettate e iniziare il reversing vengo qui a chiedere magari a qualcuno con più esperienza se esistesse qualcosa di migliore per permettere il login autonomo ad un api o se magari avessero già reversato il blackbox e sia caricato da qualche parte. Grazie per l'attenzione
PS: se qualcuno volesse per fare le proprie prove tutti i file che ho creato per far tutto ciò non esiti a chiedere li passerei volentieri. (son tutti scritti in python)