Gli ingegneri sono brutte persone
Volendo rilasciare al pubblico l'applicazione, avevo intenzione di creare una piccola pagina web: fornito nome utente e password, attraverso una richiesta HTTP ai server di DN, avrebbe dovuto recuperare le informazioni sui Deck per elaborarle. Ho quindi chiesto sul forum ufficiale di DN se fosse possibile avere accesso alle API del sistema, possibilmente attraverso una richiesta HTTP, ma qualsiasi altro genere di protocollo mi sarebbe stato utile. Quei grandi simpaticoni mi hanno risposto dicendomi che non avevano intenzione di rendere possibile una cosa nel genere, nè progettavano di farlo in futuro, impedendomi di replicare in alcuna maniera. Uscito dal bagno, le idee per una soluzione alternativa che mi erano venute in mente erano tre:
- Tentare un attacco frontale al sistema. Analizzando il sorgente del programma, avrei potuto trovare qualche exploit per connettermi al sistema e prendere i dati di cui avevo bisogno. Questa maniera sarebbe stata la più efficace, ma molto rischiosa legalmente parlando;
- Ricorrere a un software OCR. Gli OCR sono applicativi capaci di riconoscere e associare delle immagini a un certo significato: ad esempio analizzando l'immagine di un testo scritto si può ottenere la sua versione in formato Word. Gli OCR (specie quelli gratuiti) sono purtroppo imprecisi, avrei necessitato di un database completo immagine=>carta;
- Intercettare le informazioni fornite da DN al mio PC. Nessun sistema è totalmente impermeabile: qualsiasi informazione, perchè sia mostrata a me, deve essere da qualche parte, leggibile dal computer. Il problema grosso di questo metodo, è dovuto alla tendenza dei sistemi moderni a impedire a processi diversi di impicciarsi di parti di memoria non assegnate loro. Ogni tentativo sarebbe potuto terminare con un triste errore SEGDEV (Segmentation Fault) a schermo.
Mi sono però reso conto che a intervalli completamente casuali, il file in cui redirezionavo le informazioni filtrate risultava mancante dell'ultimo pacchetto. La decklist, in quel caso, mancava dell'ultima parte dell'Extra Deck. Ho perso una buona mezz'ora a armeggiare con l'espressione regolare del filtro, per poi scoprire che a volte, se il payload dell'ultimo pacchetto non era pieno, veniva concatenato a esso un comando non correlato con le Decklist (ad esempio il controllo dei messaggi). Il buon vecchio PCRE provvedeva quindi a sterminare senza pietà tutto il pacchetto, lasciando la decklist monca. Sistemato il filtro e ottenuta tutta lista, l'ho formattata seguendo il modello della Decklist ufficiale Konami, ottenendo:
Ossia la lista formattata e pronta per essere stampata e consegnata al Judge!
Foglietto illustrativo

Il programma sarà utilizzabile solo e solamente durante i tornei LCS presso la postazione apposita, in quanto il PC della postazione deve essere correttamente configurato per poter sfondare il socket. Per quanto volessi rendere di pubblico utilizzo il tool, lo farò se e solo se avrò il tempo e la voglia di trovare una maniera meno macchinosa e più portabile di eseguire il lavoro.
Posteremo tra qualche tempo una cartina dell'area del prossimo torneo e una legenda della nuova cartellonistica. Non vorrete mica mancare con tutta 'sta carne sul fuoco
Vi aspettiamo!
Francesco Petronella
Ludus Championship Series Organization Team
p.s. vado a rubare il mio 30 a Informatica dopo questo.
p.p.s. se qualcuno vuole provare in anteprima l'accrocchio mi può contattare via pm. Ma vi avviso che dovrete darmi vostro nome utente e password. Saluti ^^
Nessun commento:
Posta un commento