Convertir un code C++ en VB...

Ahweb Messages postés 48 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 15 octobre 2007 - 2 mai 2006 à 00:33
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 2 mai 2006 à 13:43
Salut !

Voilà je dois utiliser le code suivant dans un serveur en VB6 pour décrypter/encrypter :

--------------------------
struct RC4STATE {
unsigned char l1, l2, s[256];
};

//
// Used for v3.3+ clients to initialize RC4
//
const unsigned char rc4_init_v33[16] = {
0x057, 0x04F, 0x049, 0x036, 0x0A, 0x0FE, 0x022, 0x007,
0x0DF, 0x0B3, 0x036, 0x099, 0x097, 0x02B, 0x05A, 0x0E1
};

//
// Used for v3.3+ worlds to initialize RC4
//
const unsigned char rc4_init_world_v33[16] = {
0x058, 0x059, 0x0A1, 0x0F5, 0x06F, 0x0B8, 0x075, 0x0C4,
0x0E0, 0x04E, 0x042, 0x080, 0x020, 0x00C, 0x09E, 0x088
};

//
// Initialize p using init which is init_len bytes long
//
void rc4_init(struct RC4STATE *p, const unsigned char *init, int init_len)
{
unsigned char tmp = 0;
int i, j = 0;

p->l1 = 0;
p->l2 = 0;
for (i = 0; i < 256; i++) {
p->s[i] = i;
}

for (i = 0; i < 256; i++) {
unsigned char tmp2 = p->s[i];
tmp = tmp2 + init[j] + tmp;
p->s[i] = p->s[tmp];
p->s[tmp] = tmp2;
if (++j >= init_len) {
j = 0;
}
}
}

//
// Get next byte in keystream from p
//
unsigned char rc4_get_key(struct RC4STATE *p)
{
unsigned char tmp;
p->l1++;
p->l2 += p->s[p->l1];
tmp = p->s[p->l2];
p->s[p->l2] = p->s[p->l1];
p->s[p->l1] = tmp;
return p->s[(p->s[p->l1] + p->s[p->l2]) & 0x0ff];
}

//
// Skip keys in the keystream from p
//
void rc4_skip_keys(struct RC4STATE *p, unsigned short skip)
{
while (skip-- > 0) {
rc4_get_key(p);
}
}

--------------------------

Si quelqu'un pouvait me le convertir en VB ou le mettre en DLL utilisable sous vB, je le remercierai infiniment !
Si vous voulez plus d'informations sur la méthode utilisée pour crypter, demandez-moi. Le cryptage est celui utilisé par ActiveWorlds :-)

Je vous remercierai en vous offrant une bannière de  1 mois (voir plus) sur mon forum de bientôt 3000 utilisateurs.
A voir également:

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mai 2006 à 11:36
http://bnmvp.free.fr/rc4.zip



Le zip fait 695 octets et la dll 2.5 Ko

rc4_init(), rc4_get_key() et rc4_skip_keys() sont exportées.

Annonce quand tu auras pris le zip, j'enlève au maxi dans 3 jours.

ciao...
BruNews, MVP VC++
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2006 à 11:46
Bonjour

struct RC4STATE {
unsigned char l1, l2, s[256];
};

Type RC4STATE
l1 as byte
l2 as byte
s(0 to 255) as byte
End Type

void rc4_skip_keys(struct RC4STATE *p, unsigned short skip)
{
}

Sub rc4_skip_keys(byref p as RC4STATE, byval skip as integer)
'Code
End Sub

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
Ahweb Messages postés 48 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 15 octobre 2007
2 mai 2006 à 12:25
Merci beaucoup, BruNews, tu me décharges d'un poids important :)

Nhenry, le code n'est aps de moi
0
Ahweb Messages postés 48 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 15 octobre 2007
2 mai 2006 à 12:59
Ok alors voilà j'utilise ceci pour accéder à rc4_init
Public Declare Function rc4_init Lib "C:\Documents and Settings\Aweb\Mes documents\VB\AWserv\rc4.dll" () As String

Puis je fais
MsgBox rc4_init

Et VB plante.

Sauriez-vous m'indiquer les moyens d'utiliser cette DLL ?
Je me sers de ce tutoriel http://edais.mvps.org/Tutorials/CDLL/ mais malheureusement ce n'est pas assez clair pour moi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mai 2006 à 13:43
rc4_init() ne retourne ni String ni quoi que ce soit et de plus elle prend 3 paramètres.

Je sens que là on part de trop loin alors je lache l'affaire.
NHenry t'a préparé plus haut le 'type' VB qui remplace la struct C, vois avec un pro du VB pour la suite.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous