Leser: 1
1 Eintrag, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
use Win32::API;
$|++;
typedef Win32::API::Struct gs_peerchat_ctx => qw{
char gs_peerchat_1;
char gs_peerchat_2;
char gs_peerchat_crypt[256];
};
#typedef struct {
# unsigned char gs_peerchat_1;
# unsigned char gs_peerchat_2;
# unsigned char gs_peerchat_crypt[256];
#} gs_peerchat_ctx;
#gs_peerchat_init
#----------------
#needs 3 arguments:
#- the gs_peerchat_ctx structure
#- the challenge of the host which refers the structure
#- the gamekey of the game
#void gs_peerchat_init(gs_peerchat_ctx *ctx, unsigned char *chall, unsigned char *gamekey)
Win32::API->Import('gs_peerchat', 'gs_peerchat_init(irc_data gs_peerchat_ctx, challenge ^challengepointer, gamekey ^gamekeypointer)');
# ^name = pointer
# irc_data daten die übergeben/gelesen werden (codierte daten in peerchat_ctx, routine callen, klartext in irc_data lesen yadayada)
#gs_peerchat
#-----------
#needs 3 arguments:
#- ctx: the gs_peerchat_ctx structure
#- data: the buffer containing the data to encrypt/decrypt
#- size: the size of the data
#void gs_peerchat(gs_peerchat_ctx *ctx, unsigned char *data, int size)
Win32::API->Import('gs_peerchat', 'gs_peerchat(irc_data gs_peerchat_ctx, irc_buffer ^irc_bufferpointer, size integer)');
#peerchat_ctx = variableninhalt, type gs_peerchat_ctx definiert da oben mit den typedef
#muss vermutlich geändert werden
#1. functionstest, darf das gamekey heissen oder lieber anders weils da oben im import auch genannt ist (nicht das es datacollision gibt)
my $gamekey = "cc3tibwars";
my $challenge_server = "djhQLYRayo;lZ>Y|"; # kann natürlich auch hex sein?
my $challenge_client = "zNwEhedF{qGI^lhs";
# 1 zum decoden, 1 zum entcoden, weiss aber noch nciht welcher was ist, muss also evtl einfach vertauscht werden
my $datenpaket_test1 = "5...-..";#decode
my $datenpaket_test2 = "...V..^.....*.H5!;..P....";#encode
# muss bestimmt alles irgendwie in ein anderes format, pack/unpack hex zeugs
void init(ctx *ctx, unsigned char *chall, unsigned char *key) {
void chat(ctx *ctx, unsigned char *data, int size) {
1 Eintrag, 1 Seite |