[..] Grandes données TCP

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Grandes données TCP

#21

Message par jchd »

Quite à choisir un caractère marqueur, autant en prendre un parmi les plus adequats : U+FFFE est garanti invalide en UCS-2 (encodage employé par AutoIt, sous-ensemble de UTF-16).
On est donc raisonnablement sûrs de ne pas avoir de collision.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Grandes données TCP

#22

Message par matwachich »

Très intéressant!
J'aurai cependant 2 questions:
- Comment j'écris ce caractère dans une chaine???
- N'y en aurait-il pas un autre, unique comme celui la???

Edit: Je crois que j'ai trouvé!
Je pense qu'il faut faire Chr(65534)??? N'est pas?

Edit2: Et non! ça marche pas!!! Help
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Grandes données TCP

#23

Message par jchd »

ChrW(0xFFFE) tout simplement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Grandes données TCP

#24

Message par Iste »

@Tetdoss : Pour les questions portant sur des UDF, posez la sur les topic de ceux ci affin de garder ce thread propre. Idem, si vous avez plusieurs questions, ouvrez plusieurs topic.
Pensez que nous somme sur un forum, et qu'il faut au mieux encadrer les infos pour les recherche future d'autre personne ayant le probleme.
Signez ici
Avatar du membre
Tetdoss
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 15 nov. 2011 23:23
Localisation : France 76
Status : Hors ligne

Re: [..] Grandes données TCP

#25

Message par Tetdoss »

Désolé Iste, je me suis laissé emporté...

Juste une chose si je peux, pour répondre à jchd, bien sa méthode avec ChrW(0xFFFE) n'a pas l'air de fonctionner (mais ça fonctionne avec "|", ce que ne se gère pas si l'utilisateur rentre ça).

Voilà mon send :

Code : Tout sélectionner

_TCPServer_Send($CONNECTED_CLIENT, "msgbox" & ChrW(0xFFFE) & sheet_msg_get_flag(GUICtrlRead($COMBO_1), GUICtrlRead($COMBO_2)) & ChrW(0xFFFE) & GUICtrlRead($INPUT_4) & ChrW(0xFFFE) & GUICtrlRead($EDIT_1))
et mon recv :

Code : Tout sélectionner

Func client_recv($id, $data)

    $array = StringSplit($data, ChrW(0xFFFE))
    
    MsgBox(0, "", $array[1])

EndFunc
Ca m'affiche des "?" dans le MsgBox...

PS : @matwachich, le "$id" de client_recv c'est quoi ? Moi je gère seulement un client et un serveur donc ça à pas l'air de me servir, mais juste par curiosité, ça retourne l'id du client qui a envoyé la donnée, mais si c'est le serveur qui envoie cette donnée, l'idée vaut 1 c'est bien ça ?
Tetdoss
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Grandes données TCP

#26

Message par jchd »

Attention, je n'ai pas vérifié la fonction pour voir si on transmet de l'ANSI, de l'UTF-8, du binaire, ou s'il y a un autre problème sous-jacent.

Je dis seulement que si on doit choisir un séparateur dans une chaîne AutoIt (donc encodage UCS-2) autant choisir ce caractère réservé dont on est certain qu'il ne risque pas de se retrouver dans une chaîne Unicode _valide_.

Mantenant, tout pinpin peut s'arroger le droit d'inclure ça dans une chaîne à ses risques et périls. Après je ne vois pas à priori ce qui émasule ce joli 0xFFFE durant le transit. Si celui-ci ne passe pas, il y a un [gros] problème quelque part.

On ne me ferait pas sauvagement un $chaine_a_transmettre = Binary($chaine), juste par hasard ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tetdoss
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 15 nov. 2011 23:23
Localisation : France 76
Status : Hors ligne

Re: [..] Grandes données TCP

#27

Message par Tetdoss »

On va dire que j'ai résolu mon problème, j'ai pris ce caractère : "‚" une virgule "spéciale", et je fais des StringReplace("string", "‚", "") avant le Send, en espérant que personne n'aura besoin de ce caractère :) . Mais même si un "pinpin" l'utilise, il sera ignoré donc ça me va :)

Et jchd, dans l'UDF de mat, les données sont cryptées avant d'être envoyées.
Tetdoss
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Grandes données TCP

#28

Message par jchd »

A ta place, ça ne m'irait pas, mais pas du tout.

Le diagnostic de ton problème (enfin celui de Mat) est là :

Code : Tout sélectionner

#include <Crypt.au3>

_Crypt_Startup()
Local $hKey = _Crypt_DeriveKey("SomePassword", $CALG_RC4)
Local $sPlainText = "Вы должны мне € 123"
Local $bCypherText = _Crypt_EncryptData($sPlainText, $hKey, $CALG_USERKEY)
Local $sRecoveredText1 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 1)
Local $sRecoveredText4 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 4)
MsgBox(0, "Crypto Hachoir", "Le texte d'origine <" & $sPlainText      & '>' & @LF & _
                            "est devenu soit ça <" & $sRecoveredText1 & '>' & @LF & _
                            "ou bien ça         <" & $sRecoveredText4 & '>')

$bCypherText = _Crypt_EncryptData(StringToBinary($sPlainText, 4), $hKey, $CALG_USERKEY)
$sRecoveredText4 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 4)
MsgBox(0, "Crypto Correct", "Le texte d'origine <" & $sPlainText      & '>' & @LF & _
                            "est bien reçu en   <" & $sRecoveredText4 & '>')
 
Le texte signifie : "Tu me dois 123 €" en russe. On n'a pas le droit de transmettre un truc comme ça, c'est censuré par le KGB ou le GRU ?

Je vous laisse à vos devoirs de vacances :lol:
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Grandes données TCP

#29

Message par matwachich »

Pour l'id, il faut lire la documentation, bon certes c'est en anglais, alors je vais expliquer:
- Dans le script contenant le serveur:
Les callbacks recoivent en premier paramètre $iSocket, il correspond au client qui a envoyer le message, ou qui s'est déconnecté... bref, comme dit la doc

Code : Tout sélectionner

[color=#BFBFFF]$iSocket[/color] The socket ID of the client that is concerned by the event
- Dans le Script contenant le/les clients
Les callbacks reçoivent en premier parametre le handle de client (retourné par _TCPClient_Create) concerné par l’évènement, c'est pratique quand on a plusieurs client par script, et que ils on tous les même fonctions callback.

J’espère que c'est claire!!!

C'est vrai que j'aurai aimé que cette discussions se passe dans le thread de l'UDF!

Merci beaucoup pour le petit exemple jchd!!! Très constructif!!!
Une mise à jour de l'UDF ne va tarder à pointer le bout de son nez avec ça... :D

Le problème d'envoi du caractère séparateur vient surement de là, mais au fait, avez vous regarder mon cadeau??? (les fonctions helpers) vous n'aurai pas à vous casser la tête avec!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Répondre