VB/VB.Net ID4.. :s

Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#1
Bonjour

Je suis en train de faire une connexion.
J'envoie le message 4
Le message est parfaitement bien. Exactement comme la trame officiel (header est bon etc..)
le seul truc qui change avec le client officiel c'est le credential
Logique, puisque le salt change à chaque request

Donc je reçois un WRONG_CREDENTIAL
Pourtant le mot de passe est bon
Ma clef RSA est bien chargé
je crypte très bien
Mais je ne sais pas si j'écris bien le credential
Comment il faut l'écrire ? dans le message

Moi je l'écris avec une boucle et je rajoute chaque byte à chaque fois

boucle sur taille de credential
{
message.writeByte(credential.at(i));
}

Et enfin, j'envoie l'id
Il faut faire comme sa ?

Je tiens à préciser que ma fonction RSA fonctionne très bien et ma clef et ces paramètres sont très bien intégrés dedans
Le souci c'est pour écrire le credential, j'imagine. Pourtant je fais comme dans les sources(je crois) :s

merci beaucoup ;)
 
A

Anonymous

Invité
#2
Code:
While (loc_3 < Me.credentials.Count)

                param1.WriteByte(Me.credentials(loc_3))

                loc_3 += 1
            End While
Voila la boucle, pense à bien séparé param1.WriteInt16(Me.serverId) car je suis resté bloqué à cause de ça ^^
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#3
nostrora a dit:
Bonjour
...
Et enfin, j'envoie l'id
Il faut faire comme sa ?
Bonjour , l'id (enfin le header) il faut l'envoyer tout au debut.
[header][message]

meme si je sais que on (beaucoup de nous) le fait a l'envers , on envoit le message en premier a une fonction puis l'id (pour savoir le nombre de bytes a envoyer pour faire le header) mais au final on envoit le header avant

pour etre au top on devrait faire une fonction de ce genre :
Code:
void envoie(uinteger ID,byte() message)
{
    header=calcul du header en fonction de l'id et du nombre de bytes de message;
    sock.send(header+message);
}
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#4
@Sabok: Merci de ta réponse. Mais c'est pourtant déjà ce que je fait :s

@Toons:...
J'ai dit que le header était bon
Ce n'est pas le header le problème. mais le credential
Pourquoi tu focalises sur un problème qui n'en ai pas

je répète, car j'ai l'impression que ta lu que la moitier du message!

MON HEADER EST EXACTEMENT PAREIL QUE CELUI DE DOFUS
AINSI QUE TOUT LE RESTE DU MESSAGE, tout est EXACTEMENT PAREIL !!! (header, version, login, langue) TOUT sauf le credential
Donc il est forcement bien codé !!
Mon problème vient du credential

Quand j'ai dit "j'envoie l'id"
Je voulais dire, j'envoie, le message

Ensuite. Si tu avais un petit peu réfléchi
Je n'arriverais pas a recevoir WRONG_CREDENTIAL. si mon header n'était pas bon
SI mon header n'était pas bon. le serveur ne me répondrait pas

Ce n’est pas méchant hein :)
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#5
je focalise dessus car tu dis ce que j'ai cité : "ET ENFIN , j'envoie l'id" , c'est vrai qu'en y reflechissant ca te couperait meme la connexion.

pour trouver ou ca va pas tu peux toujours sniffer l'id 3 , prendre le salt et l'envoyer en brut (pour les tests sans rien envoyer ni recevoir) a ton soft au lieu de prendre un salt different a chaque fois ce qui brouille les pistes
avec le meme salt ca doit donner le meme id 4 que celui du snif qui a servi a avoir le salt
ce qui te fera editer le 1er post ou tu dis "je crypte tres bien" ou "Le message est parfaitement bien. Exactement comme la trame officiel (header est bon etc..)" car ca vient forcement de l'un ou l'autre et cette fois je reflechis ca vient de "je crypte tres bien" sinon tu recevrais pas le wrong.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#6
Je crypte très bien. Bah oui, ma fonction de cryptage fait ce qu'il faut.
C'est le contenu de qui n'est pas bon
Je sais pas si je dois crypter salt et mot de passe en utf, ou en byte
et si je dois marquer le message en utf ou en byte ou en hex, ou en base64
 
A

Anonymous

Invité
#7
En byte. Tu dois crypter en rsa X509.
Et l'envoyer au serveur caractere par caractere crypté.

Montre nous ton case 3 en entier si tu veux qu'on y voit un peu plus clair.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#8
Je récupère déjà la clef. il nous la donne au format DER.


"caractère par caractère crypter"
c'est donc exemple
ByteArray credential = rsa(salt+mdp)

Donc ensuite je l'injecte de cette manière :
Dans une boucle avec comme index i
message.writeByte(credential);

C'est bien ça ? Car c'est déjà ce que je fais

Je vais vous marquer étape par étape ce que je fais pour le credential
Je répète que le reste du message est bon
SEUL le credential ne va pas ^^

1/ Dans id3 je reçois salt que je stock dans un string et key que je stock dans un byteArray
key qui je le rappelle est une clef publique au format DER
2/ La clef est bonne
ma classe dit que c'est bien une clef DER, qu'elle est très bien chargée. et que je peux crypter avec
Donc j'importe ma clef dans ma classe RSA
3/ Je crypte salt et mdp en faisant
String Strcredential = rsa(salt+mdp)
J'ai donc mon credential qui est un string
Je transforme ce string en base64

Ce qui mefait un tableau de byte de 256 bytes
Et enfin, j'injecte byte par byte dans mon message

J'imagine que le problème vienne des lignes en vert
 
Haut Bas