[MSDG] Logiciel de sondage tierce-partite pour le forum

Logiciel de sondage tierce-partite pour le forum [MSDG] - Divers - Programmation

Marsh Posté le 20-09-2008 à 15:31:37    

Mots clés du topic : hash MD5, algorithmes de Cryptage
 
J'ouvre ce topic pour exposer techniquement un projet sondagier  puisque c'est ici que sauf erreur je devrais obtenir des infos précises sur les questions pointues en terme informatique. Je ne vois quand même pas trop comment éviter une introduction un peu générale avant de descendre à ce qu'il y a de plus précis et technique, alors allons-y.
 
Quel est donc le problème des sondages HFR ?
Eh bien, la forme en est limitative, à la base on pose une question qui peut donner lieu à 10 réponses tout au plus. En poussant le système dans des limites qui n'atteignent pas complètement l'absurde on peut quand même faire en sorte de poser jusqu'à 3 questions à la fois, avec disons avec 3 à 4 choix chacune, mais au prix de reporter certaines questions dans les lignes réservées aux choix, et en donnant à l'utilisateur la possibilité de faire plusieurs réponses tout en sachant que rien ne le contraindra à ne cocher que le nombre de fois demandé pour une question (Exemple sur le trombi, très bon topic du reste). Donc avec 3 questions Q1, Q2, et Q3, à 3 choix chacune, on laissera la possibilité de faire en tout 3 choix à répartir en théorie entre Q1, Q2, et Q3. Mais rien empêche la fâcheuse probabilité de concentrer tous les clics sur les réponses de Q1. Si Q1 propose les réponses Oui, Non, Je ne sais pas, ça pourra donner 3 fois /u]O[/u]ui, ou même une croix par réponses, ce qui est bel bien une frein à la qualité du sondage.
Bref, sur HFR on ne peut guère (jusqu'à aujourd'hui) poser convenablement un autre genre de sondage que la classique question à 10 points.  
Il faut quand même admettre que c'est déjà bien, mais je pense qu'on peut faire mieux. Et l'idée ici est celle d'offrir une possibilité de gros multisondages simultanés, à voir comme une réelle extension des possibilités du forum, à l'aide d'une petite suite logiciel tierce-partie.  
 
Un petit tour historique s'impose :) Pour l'instant j'ai mis sur pieds une solution mais elle est uniquement adaptée à l'exemple ci-après :[/u]
 
Assez récemment dans la rubrique discussion, j'ai proposé un sondage assez naturel (Lien) qui doit amalgamer 3 sous-sondages, dont les 2 premiers sont des classements de 10 personnalités politiques, P, puis 10 autres médiatiques, M.  De la sorte on peut établir les couples de personnalités politico-médiatiques et analyser quelles sont les caractéristiques qui font leur succès relatif dans les médias. On regroupe ces 2 sondages sous le nom de sondage PM.  
Une séquence miniature du couplage PM, avec 1 semaine par sondage P et M, a été réalisée et a donné un couple PM gagnant et tout un classement pour les autres. De fait on a eu Le Pen / Wilson gagnants. Ce résultat a été discuté et a montré que la question était de savoir en détail quels « Traits de Caractères politico-médiatiques » entraient en jeu comme préalable à une interprétation raffinée.  
Bref, il fallait donc rechercher les traits de caractères, TdC, de chaque  personnalité exposée au sondage PM. Et quoi de plus neutre qu'un sondage pour ça?  
Malheureusement on fait sauter la turbine car j'ai estimé qu'ayant 4 grands TdC à déterminer, et, en se conformant au format 10 points d'HFR, qu'on peut les décliner en 10 éventualités au maximum, ce qui donne... à tel TdC, de 1 à 4, la question serait de demander de le déterminer parmi 10 choix, et ce pour chacune des 20 personnalités... En bref ça fait beaucoup! L'équivalent de plus d'1 an de sondage même en y passant moins d'une semaine par sondage.
 
On en arrive naturellement au programme MSDG (MultiSonDaGe).
http://i33.tinypic.com/2czpqia.gif
J'admets que le logo peut bénéficier de quelques améliorations :)
 
 Avec MSDG, au lieu de poser chaque sondage à la suite sur HFR, ce qui est d'une lourdeur accablante, on télécharge un petit applicatif qui pose toutes les questions à la suite, et génère une suite de nombres correspondant à la suite des réponses de l'utilisateur final : son bilan. Il lui suffit alors de déposer son bilan sur le topic. Celui-ci doit ensuite être récupéré et traité. Mais la récupération, et surtout le traitement, peuvent être semi-automatisés puisque ce n'est jamais que des nombres et déboucher sur un histogramme ou tout traitement statistique qu'on jugera utile. Il n'y a plus qu'à  poster le résultat global du traitement en tête de topic comme la tradition le veut et à le mettre à jour avec l'arrivée de données. Je dois beaucoup au topic trombi pour cette démarche.
http://i37.tinypic.com/2ngak2w.png
http://i35.tinypic.com/2qjks9y.gif
 
Actuellement il y a 2 programmes , MSDG et Reversi, version 1 tous deux et en test.  
On a dit ce que faisait MSDG, poser des tas de questions d'un coup, mais que fait Reversi?[/u]  
Reversi est le programme de récupération et traitement des bilans. Pour le moment il fonctionne en collant un bilan dans une fenêtre et en récupérant un tableau dans une autre. Mais je n'ai pas parlé du chiffrement des bilans. Voilà où commence les aspects pointus et les plus passionnant en terme informatique.
http://i35.tinypic.com/1418jl2.gif
MSDG fournit un bilan privé que l'utilisateur peut garder et relire facilement, c'est un tableau de nombre qui n'a rien de mystérieux et qui résume ses réponses. Mais ce n'est pas ça qu'il poste sur HFR ! Même si on peut philosopher longtemps sur l'anonymat sur le net, une chose est claire, lors d'un sondage HFR classique, un utilisateur ne peut pas voir ce qu'à voté un autre utilisateur. Pour conserver le même niveau d'anonymat, 2 possibilités sont donc offertes :
1 – envoyer le bilan par MP (message privé) ,
2 – ou/et coder le bilan privé de façon à le rendre indéchiffrable lors de sa diffusion en public.
 
MSDG permet ce codage. Et pour le moment, Reversi réalise 2 taches. D'abord, récupérer un bloc de chiffres même légèrement souillé avec du texte alphabétique parasite comme lors d'un copier/coller rapide d'un post de forum. Puis surtout décoder la suite de chiffre pour retrouver le bilan d'origine.  
 
Bon voilà le topo, personnellement je n'ai utilisé qu'un algorithme maison de transformation de Boulanger. Le principe est simple la transformation est issue d'une clé privée aléatoire. Tout cela c'est le travail de MSDG. Lors de la diffusion du bilan, la clé privée est incluse, Reversi la récupère et inverse la transformation.  
Vue la puissance du matériel de tout un chacun, je recherche un algorithme de cryptage connu, mais complexe, et surtout robuste. Je n'en ai trouvé aucun. De plus je ne sais pas trop comment inclure les hash de type MD5 lors de ces étapes. Bien que je crois en comprendre l'intérêt en guise de contrôle d'intégrité supplémentaire.  
 
Enfin, dernier problème pour la version de MSDG qui est diffusée. Où trouver un petit algorithme pour que l'exécutable vérifie sa propre intégrité ?  sécurité basique disons. Qu'on ne puisse pas le modifier sans que le programme le sache.
 
Voilà, pour ce qui est de l'avenir, j'aimerais avoir des avis sur les améliorations à apporter à la version existante de MSDG, changer l'interface par exemple, ou revoir l'optique du développement. Idem pour Reversi, quoique le problème critique pour Reversi c'est uniquement le décryptage. Pour Reversi la prochaine grande étape serait de lui offrir un module de décryptage personnalisé par une clé privée à envoyer à chaque utilisateur potentiel. L'intérêt étant qu'alors le programme Reversi pourrait être diffusé à son tour librement. Pour l'instant il est forcément réservé au gestionnaire du sondage.  
 
L'idée finale serait de créer un MSDG où les sondages soient personnalisables à loisir. La personne gestionnaire du sondage n'a plus qu'à créer une clé privée unique par utilisateur à retourner fondue dans le bilan pour que Reversi puisse l'interpréter. Quelqu'un aurait-il des liens vers de la doc sur ce genre de problème. J'ai plus ou moins parcouru le net, notamment la MSDN de Microsoft mais je n'ai trouvé que des idées  générales, aucun exemple bien concret.  
http://i33.tinypic.com/303gs3m.png
 
- État du projet
http://i35.tinypic.com/21az4v6.png
http://i35.tinypic.com/2wlro14.png
 
Bon faudra que je fasse un résumé mais voilà, là c'est complet. Enfin j'oublie le plus important  :wahoo: ...
Lien vers MSDG ----> Download MSDG sur Freefactory.com


Message édité par cappa le 20-09-2008 à 15:42:34
Reply

Marsh Posté le 20-09-2008 à 15:31:37   

Reply

Marsh Posté le 20-09-2008 à 17:38:17    

ca serait nettement plus simple de publier le sondage en ligne avec un truc genre ca :
http://vtsurvey.sourceforge.net/ (il doit en exister des 10aines d'autres)  
 
et de mettre le lien en premier message du topic, non ?

Reply

Marsh Posté le 21-09-2008 à 11:40:09    

euh...[:spam] non?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 21-09-2008 à 17:13:16    

lorill a écrit :

ca serait nettement plus simple de publier le sondage en ligne avec un truc genre ca :
http://vtsurvey.sourceforge.net/ (il doit en exister des 10aines d'autres)  
 
et de mettre le lien en premier message du topic, non ?


C'est pas bête en effet, à ceci près que j'ai un doute sur la puissance de vtsurvey vue le zéro screenshots proposés dans la doc, elle-même minimaliste. Si c'était abouti ce serait intéressant. Bon pour ce que je propose, le 2e intérêt c'est de s'intéresser aux questions liées aux sondages et l'anonymat. C'est assez compliqué d'élaborer un sondage fiable sur le net, sachant qu'on ne peut pas savoir si les données sont faussées volontairement ou non à un maillon de la chaîne.  
Bon je vais quand même chercher des survey maintenant que je connais le nom anglais  :jap:

skeye a écrit :

euh...[:spam] non?


Ca a l'air bon, mais non :) no spam here ^^

Message cité 1 fois
Message édité par cappa le 21-09-2008 à 17:14:12

---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 21-09-2008 à 17:18:49    

cappa a écrit :

Ca a l'air bon, mais non :) no spam here ^^


Pour être plus clair, où est-ce que ça parle de programmation, dans ton truc, là? [:opus dei]

 

et question bonus : quel est l'objectif de ce topic?

Message cité 1 fois
Message édité par skeye le 21-09-2008 à 17:19:37

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 21-09-2008 à 17:32:47    

skeye a écrit :


Pour être plus clair, où est-ce que ça parle de programmation, dans ton truc, là? [:opus dei]
 
et question bonus : quel est l'objectif de ce topic?


Ah ok, c'est que tu n'as pas testé le programme. Il est déjà sur pieds, une première version , mais elle a des défauts, il faut que j'ajoute des algorithmes que je ne connais pas en cryptage, MD5 et toussa. J'aimerais avoir des liens là-dessus, et puis des suggestions. C'est surtout un premier pas disons.
Ah bah je viens de trouver des éléments sur wiki, ce que je comprends pas c'est que j'ai déjà cherché et que j'avais raté ça  :D  
Bon je pige pas comment on décode le hash obtenu ci-dessous par contre  :sweat: C'est du MD5.

Code :
  1. //Note: Toutes les variables sont sur 32 bits
  2. //Définir r comme suit :  
  3. var int[64] r, k
  4. r[ 0..15] := {7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22}
  5. r[16..31] := {5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20}
  6. r[32..47] := {4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23}
  7. r[48..63] := {6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21}
  8. //MD5 utilise des sinus d'entiers pour ses constantes:
  9. pour i de 0 à 63 faire
  10.     k[i] := floor(abs(sin(i + 1)) × 2^32)
  11. fin pour
  12. //Préparation des variables:
  13. var int h0 := 0x67452301
  14. var int h1 := 0xEFCDAB89
  15. var int h2 := 0x98BADCFE
  16. var int h3 := 0x10325476
  17. //Préparation du message (padding) :
  18. ajouter "1" bit au message
  19. ajouter "0" bits jusqu'à ce que la taille du message en bits soit égale à 448 (mod 512)
  20. ajouter la taille du message codée en 64-bit little-endian au message
  21. //Découpage en blocs de 512 bits:
  22. pour chaque bloc de 512 bits du message
  23.     subdiviser en 16 mots de 32 bits en little-endian w[i], 0 ≤ i ≤ 15
  24.     //initialiser les valeurs de hachage:
  25.     var int a := h0
  26.     var int b := h1
  27.     var int c := h2
  28.     var int d := h3
  29.     //pour principale:
  30.     pour i de 0 à 63 faire
  31.         si 0 ≤ i ≤ 15 alors
  32.             f := (b et c) ou ((non b) et d)
  33.             g := i
  34.         sinon si 16 ≤ i ≤ 31 alors
  35.                   f := (d et b) ou ((non d) et c)
  36.                   g := (5×i + 1) mod 16
  37.               sinon si 32 ≤ i ≤ 47 alors
  38.                         f := b xor c xor d
  39.                         g := (3×i + 5) mod 16
  40.                     sinon si 48 ≤ i ≤ 63 alors
  41.                               f := c xor (b ou (non d))
  42.                               g := (7×i) mod 16
  43.                           fin si
  44.                     fin si
  45.               fin si
  46.         fin si
  47.         var int temp := d
  48.         d := c
  49.         c := b
  50.         b := ((a + f + k[i] + w[g]) leftrotate r[i]) + b
  51.         a := temp
  52.     fin pour
  53.     //ajouter le résultat au bloc précédent:
  54.     h0 := h0 + a
  55.     h1 := h1 + b
  56.     h2 := h2 + c
  57.     h3 := h3 + d
  58. fin pour
  59. var int empreinte := h0 concaténer h1 concaténer h2 concaténer h3 //(en little-endian)


Message édité par cappa le 21-09-2008 à 17:57:16

---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 21-09-2008 à 17:59:55    

Où t'as vu que ça se décodait un hash? C'est justement le principe de base, de pas pouvoir le décoder [:pingouino]

 

Mais t'as pas répondu à la question de skeye.

Message cité 1 fois
Message édité par masklinn le 21-09-2008 à 18:00:23

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 21-09-2008 à 18:10:17    

masklinn a écrit :

Où t'as vu que ça se décodait un hash? C'est justement le principe de base, de pas pouvoir le décoder [:pingouino]
 
Mais t'as pas répondu à la question de skeye.


Ah exact :) désolé mais je suis pas encore au point là-dessus. Si je n'ai pas répondu il me le dira, si tu as une question ben vas-y c'est fait pour.


---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 21-09-2008 à 19:33:35    

tu n'as pas répondu, non.
Je n'ai pas vu de question dans ton message initial, ni quel était l'objectif de ce message ici.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 21-09-2008 à 22:51:40    

Pas de question de programmation, juste une présentation d'un projet quelconque à coup d'images 8 bits et des cliparts --> hors charte.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed