Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

02.07.2013, 14:23

KInspect

KInspect ist ein Tool, welches den Verkehr zwischen dem Knuddels-Server und einem Clienten anzeigen kann.

Guten Tag,

KInspect ist ein Tool, welches den Verkehr zwischen dem Knuddels-Server und einem Clienten anzeigen kann und somit eine Hilfe zur Implementierung verschiedener Funktionen für den eigenen Emulator darstellt.
Es ist in Java geschrieben und bietet neben einer Knuddels-Bridge auch eine HTTP-Bridge, um auch den HTTP-Verkehr beobachten zu können (z.B. Grafiken, Applets, Skripte etc.).

Erste Schritte
Das Programm kann wahlweise per Doppelklick bei richtig konfigurierter JRE oder per Konsole/Batch-File gestartet werden. Dazu sollte folgendes Kommando verwendet werden:

Quellcode

1
java -jar kinspect.jar

Nach dem Start öffnet sich das Hauptfenster, auf welchem sich ein Button mit der Aufschrift "Open Login" befindet. Dieser öffnet das Webinterface von kinspect, auf dem sich immer das aktuellste Applet befindet.
Sobald die Seite (standardmäßig http://localhost:8080/) geöffnet wurde, startet das Logging im Hauptfenster.

Logging
Über den Menüpunkt "Log Config" kann ab sofort das Logging einzelner Pakete eingestellt werden.
Es ist möglich, Pakete zu identifizieren und gezielt in eine Datei zu schreiben.
Beispiele:
  • Module: true, Regex: true, Enabled: true, Search Term: .
    Module: false, Regex: true, Enabled: true, Search Term: .
    (Diese Kombination loggt ausnahmslos alle Pakete in eine separate Datei für jede Verbindung)
  • Module: true, Regex: false, Enabled: true, Search Term: PREFETCH_MODULE
    (Diese Zeile speichert alle PREFETCH_MODULE-Pakete)
  • Module: true, Regex: true, Enabled: true, Search Term: ^BINGO_
    (Speichert alle BINGO_-Modul-Pakete in die Log-Datei)
Mit diesem neuen Feature können somit bestimmte Pakete gefiltert werden und in eine Logdatei geschrieben werden (im Ordner data/logs).
Das Format sieht dabei folgendermaßen aus:

Quellcode

1
2
3
4
5
[20:39:07 Message; Opcode: :; Name: PREFETCH_MODULE; Direction: TOCLIENT]
Hexdump:
3A 00 00 55 19 73 6D 69 6C 65 79 62 6F 78 2E 53 6D 69 6C 65 79 42 6F 78 4D 6F 64 75 6C 65 00 00 00 00 
String:
:\0\0Usmileybox.SmileyBoxModule\0\0\0\0


GameServer-Logging
Seit Version 0.204 ist es möglich, den Verkehr zwischen dem Clienten und den Gameservern zu loggen. Dazu muss die kinspect.cfg eventuell verändert werden (siehe Abschnitt Konfiguration).
Für jede Verbindung wird ein neuer Tab geöffnet, welcher den Namen des Servers als Suffix trägt (siehe Screenshot). Zu beachten ist, dass es keine Opcodes wie bei normalen Verbindungen gibt und nur Module eingesetzt werden können.
Im ModuleTreeView ist ein zweiter Tab vorhanden, der den Tree für die Gameserver darstellen kann.

Packet-Builder
Der Packet-Builder ist ein neues Tool, mit welchem Pakete zum Server oder zum Clienten gesendet werden können. Es ist sowohl möglich, Module-Pakete als auch normale Messages zu erstellen.
Nachdem ein Paket erstellt wurde, kann man dieses an eine Partie senden, als String ausgeben lassen oder einen Java-Code-Ausschnitt erstellen lassen.
Beispiel Code-Ausschnitt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	private static String createSHOW_BUTTONS(ModuleFactory factory) {
		Module SHOW_BUTTONS = factory.createInstance((short) 92);
		SHOW_BUTTONS.add("CHANNEL_NAME", "/test");
		SHOW_BUTTONS.add("BUTTON", new ArrayList<Object>());
		// #0
		Module BUTTON = factory.createInstance((short) 90);
		SHOW_BUTTONS.addToArray("BUTTON", BUTTON);
		BUTTON.add("TEXT", "test");
		BUTTON.add("IMAGE", "");
		BUTTON.add("BUTTON_ALIGN", (Integer) 0);
		BUTTON.add("CHAT_FUNCTION", "/a h3h3j0");
		
		SHOW_BUTTONS.add("ANALOG_BUTTON", new ArrayList<Object>());
		return SHOW_BUTTONS.toString();
	}

Ich werde in den nächsten Tagen meine Module-Klasse veröffentlichen, womit dieser Code verwendet werden kann. (Ich hoffe diese neue Funktion vereinfacht viele Dinge, die mit dem "neuen" Protokoll zu tun haben)

Konfiguration
KInspect kann über zwei Dateien konfiguriert werden:
kinspect.cfg
  • location: Die Seite, die dem Server als Referer angezeigt werden soll. (%s wird durch die Version ersetzt)
  • moduleSetup: Der ModuleTree, der zum Startzeitpunkt verwendet werden soll. (Sollte nicht verändert werden, da es programmseitig aktualisiert wird)
  • cgModuleSetup: Der ModuleTree für die Cardgames. (Sollte nicht verändert werden, s.o.)
  • kndsLoc: Knuddels-Homepage, von der die aktuelle Version bezogen wird. (Sollte nicht verändert werden)
  • autoLoad: Wird durch das Subprogramm "Log Config" gesetzt.
  • destHost: Der Knuddels-Host.
  • destPort: Der Knuddels-Port.
  • proxyPort: Der Port, auf dem der Kinspect-knds-Server läuft.
  • httpPort: Der HTTP-Port. (Standardmäßig 8080, da 80 häufig belegt ist)
  • gameServer: Eine Liste der unterstützten GameServer, kann beliebig im Format Name/Port erweitert werden.
token.cfg
Diese Datei beinhaltet die Namen der einzelnen Pakete. Der Aufbau sieht wie folgt aus:

Quellcode

1
<Direction> <Opcode> <Name>

Wobei Direction durch o (Output) oder i (Input) abgekürzt wird.

Fehlerbehandlung
Sollte ein Fehler auftreten, startet das Programm bitte via "java -jar kinspect.jar" und schreibt den Output in den Thread oder benutzt den Button "Log" im Hauptfenster (sofern möglich), ansonsten ist Support nicht möglich.

Screenshots




Vorschläge sind selbstverständlich gern gesehen, ebenso wie Spenden ;)

Changelog
Version 0.201 (03. Juli 2013)
  • [BUGFIX] Direkter Start der JAR funktioniert jetzt
  • [NEW] Logging für einzelne Pakete hinzugefügt
  • [NEW] Log (Programmoutput) hinzugefügt
  • [NEW] Neue Ordnerstruktur (data, data/config, data/logs)
Version 0.202 (05. Juli 2013)
  • [BUGFIX] Nur noch lconf-Dateien werden im LogSettingsView angezeigt
  • [BUGFIX] Alte kinspect.properties-Datei wird nicht mehr geladen
  • [BUGFIX] Doppelte Slashes im HTTP-View werden nicht mehr angezeigt
  • [NEW] Vorhandene Logs können zum erneuten Ansehen geladen werden
  • [NEW] Automatisches Laden von Log-Config-Dateien nun möglich
  • [NEW] Leerzeichen im HexView zwischen zwei Bytes
Version 0.203 (17. Juli 2013)
  • [BUGFIX] ModuleEntry ohne Wert kann nun angezeigt werden
  • [NEW] PacketBuilder/Sender hinzugefügt
  • [NEW] Scrolling kann für den TrafficLog deaktiviert werden
  • [NEW] Neuer Button, um den Login zu öffnen
Version 0.204 (21. Juli 2013)
  • [NEW] GameServer sind nun verfügbar (plus ModuleTree)
  • [NEW] Tabs können geschlossen werden
  • [NEW] Alle Nodes im ModuleView sind standardmäßig geöffnet
  • [NEW] Vereinfachte Menüführung
  • [NEW] Navigation durch Tastatur jetzt im ModuleView möglich

KrT.

kinspect0204.tar.gz (371,48 kB, 168 Downloads)
application/gzip

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »KrT« (17.07.2013, 23:09)


Es haben sich bereits 16 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Ice.Net, Kokos-Ice, Basti, Salvos, Devon, Lex, KAI, PaT, Pwned, Spectra, Chiller, Plaxo, Brainy, Blacky98, Fif, Dome

2

02.07.2013, 16:55

Echt sehr gut das Tool. Gute Arbeit! Hätte da einen Vorschlag, in dem Connection-Tab, welches den Log anzeigt. Wäre es sehr gut, wenn man alles oder besser bestimmte Teile speichern könnte (evlt via Klick). Da man eigentlich nicht alles aus dem Log braucht. Also ein Button - man klickt drauf und diese Zeile (für mich reicht der HEX und der Name) in einer Text speichern und immer hinzufügen.

Notfalls auch anders :-D
Meine Grafikseite: http://chatsmileys.senzious.de/

3

02.07.2013, 20:00

Also das Problem mit dem direkten Starten habe ich behoben, deinen Vorschlag werde ich morgen umsetzen und dann eine überarbeitete Version veröffentlichen.

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Chiller

4

03.07.2013, 20:54

Update auf v0.201 (Changelog s.o.)

5

05.07.2013, 10:05

Was soll man da sagen....einfach nur grandiose Arbeit. Die Idee mit dem Logger ist ja schon alt, aber wie du das Logging der Knoten hinbekommen hast, einfach nur geil. Das erleichtert das Arbeiten mit dem neuen Protokoll enorm. Dazu hab ich bisher einfach den Debugger von Eclipse genutzt - was total gay und unübersichtlich ist xD

Danke vielmals für diese Arbeit! Ich werde ihn auf jeden Fall in Zukunft nutzen.

:thumbup:

/edit: Zum o.g. Vorschlag würde ich es besser finden, wenn man einfach den ganzen Log speichern könnte. Damit man diesen auch zu einen späteren Zeitpunkt einsehen kann.
Ach, stimmt. bereits möglich. Sehr cool. Danke.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »PaT« (06.07.2013, 09:05)


6

05.07.2013, 14:06

Was soll man da sagen....einfach nur grandiose Arbeit. Die Idee mit dem Logger ist ja schon alt, aber wie du das Logging der Knoten hinbekommen hast, einfach nur geil. Das erleichtert das Arbeiten mit dem neuen Protokoll enorm. Dazu hab ich bisher einfach den Debugger von Eclipse genutzt xD

Danke vielmals für diese Arbeit! Ich werde ihn auf jeden Fall in Zukunft nutzen.

:thumbup:

/edit: Zum o.g. Vorschlag würde ich es besser finden, wenn man einfach den ganzen Log speichern könnte. Damit man diesen auch zu einen späteren Zeitpunkt einsehen kann.


Vielen Dank für das Lob. Ein komplettes Logging ist bereits möglich, wie dem letzten Screen zu entnehmen ist (Einfach für Module und für Standard jeweils ein Regex-Log-Eintrag mit dem Inhalt "." erstellen und alles wird geloggt).
Dabei wird für jede neue Connection eine Datei erstellt (im Ordner data/logs) nach dem Schema: <FortlaufendeNummer>_con<NummerDerConnection>.log
In der nächsten Version werde ich noch einfügen, dass man eine bestimmte config automatisch beim Start laden kann.

Lg.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »KrT« (05.07.2013, 14:22)


7

05.07.2013, 16:06

Ah, sehr cool.

Aber kann man die Logs auch mit KInspect wieder laden?
Besonders bei den Module-Paketen wäre das von Vorteil, weil diese in der Datei sehr unleserlich sind. Es wäre cool wenn man diese später wieder mit KInspect sich ansehen könnte, so wie halt beim Loggen:


8

05.07.2013, 18:38

Update auf v0.202 (Changelog s.o.)

Es haben sich bereits 2 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

PaT, Chiller

9

06.07.2013, 01:59

Ein seeehr seeehr schönes Tool!

Wie wäre es wenn man die erhaltenen Pakete auch via. befehl versenden könnte so eine Art: Paketefaker.
James (privat): Tja, wenn du kein iPhone hast, dann hast du kein iPhone.

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

KrT

10

06.07.2013, 18:02

Ein seeehr seeehr schönes Tool!

Wie wäre es wenn man die erhaltenen Pakete auch via. befehl versenden könnte so eine Art: Paketefaker.

Klingt gut, werde ich einbauen.