Come identificare le richieste HTTP fatte da un'app java closed-source?

-1

Sono un avido giocatore e gioco sul server Kiseido Go.

Mi piacerebbe scrivere un client open source per questo, ma il protocollo KGS è un segreto ben tenuto. C'è un modo per catturare le richieste http fatte dal file *.jar sul server Go?

So che questo è possibile perché esiste almeno un'altra app client ( CGoban ).

    
posta john mangual 28.01.2015 - 01:46
fonte

1 risposta

3

Hai due approcci di base, uno è guardare il traffico di rete, l'altro è guardare la fonte.

Per vedere la fonte, dovresti fare qualcosa di simile a usare un java decompiler e vedere cosa ti dà. Si noti, tuttavia, che ciò significa che si sta guardando la fonte (o qualcosa di simile ad esso) e qualsiasi lavoro basato su di esso può essere considerato un lavoro derivato (nel qual caso non si può consentire di rilasciarlo con la licenza desiderata - o in tutto).

L'altra opzione sarebbe quella di annusare il traffico in qualche modo. A seconda della familiarità con l'amministrazione della rete, è possibile impostare un proxy di caching Web trasparente che ti consenta di guardare ciò che lo attraversa. O un'applicazione specifica come fiddler per fiutare il traffico.

Non c'è nulla che dice che questo è in esecuzione sulla porta 80. Potrebbe essere in esecuzione sulla porta 1502 con qualcosa di diverso da http. Per quello dovresti cercare di annusare tutti i pacchetti per avere un'idea migliore di cosa sta succedendo. Per questo inizi a guardare strumenti come wireshark o tcpdump . Poi guardi tutti i pacchetti e scopri cosa sta facendo.

Reverse engineering un protocollo che può essere oscurato non è necessariamente banale. Soprattutto se non hai un server tutto tuo su cui puoi fare un test (testerai per vedere se fa la cosa giusta all'altra estremità). Un ritocco al protocollo (osservo che usano java webstart - sarebbe molto semplice) e tutto il tuo lavoro deve ricominciare da capo. Se non si "comportano", potrebbe essere piuttosto banale iniziare a bloccare l'IP dei client che presentano comportamenti anomali.

Questo ci porta a un'altra opzione fornita dal sito. C'è un client GTP anche elencato nella pagina del client. Questo è un livello di traduzione tra Go Text Protocal e KGS. È possibile scrivere un programma che scrive GTP attraverso lo standard in entrata e in uscita e viene convogliato attraverso il client.

In questo modo si utilizza la libreria a distanza di braccia (è possibile passare a un altro server che fornisce banalmente il proprio client GTP) e creare la propria applicazione open source che serve una comunità ancora più ampia. Questo è esattamente ciò che fa GNU Go :

Although ASCII-based, GNU Go supports two protocols — the Go Modem Protocol and the Go Text Protocol — by which GUIs can interface with it to give a graphical display. Several such GUIs exist. GTP also allows it to play online on Go servers (through the use of bridge programs), and copies can be found running on NNGS, KGS, and probably others.

    
risposta data 31.01.2015 - 17:51
fonte

Leggi altre domande sui tag