Skip to content

Instantly share code, notes, and snippets.

@Kakise
Last active November 5, 2016 13:42
Show Gist options
  • Save Kakise/ac6e79d185203a349d4e86822ca5d55f to your computer and use it in GitHub Desktop.
Save Kakise/ac6e79d185203a349d4e86822ca5d55f to your computer and use it in GitHub Desktop.
// License : GPL v3.0
/*
* Pentester: Kakise <me@kakise.xyz>
* Advices: Don't use strings to check anything
* Make the verifications server-side
* End your life please <3
*/
// DYRIS version 16.1
// VARIABLES GLOBALES
var txt_page="";
var fen_guide=null;
var timer=null;
var flag=1;
var zt_focus=0;
var session=Math.floor(Math.random()*Math.pow(10,8));
var setup=Math.floor(Math.random()*Math.pow(10,8));
var temps=new Date();
var device=4038;
var buffer=41286;
var kernel=387;
var overlay=Math.pow(2,24);
// CLASSE CL_controleur
function CL_controleur() {
this.debut=null;
this.fin=null;
this.nb_quest_choisi=0;
this.nb_quest_faites=0;
this.num_theme=0;
this.num_question=0;
this.num_page="1";
this.num_affichage=1;
this.note=0;
this.note_maxi=0;
}
// CREATION DE L'OBJET ASSOCIE AU CONTROLEUR
var cont=new CL_controleur();
// AVANT DE COMMENCER
function initialiser() {
adresse=Math.floor((temps.getTime()-1370000000000)/100);
device+=75620000;
buffer+=39500000;
kernel+=41950000;
cont.nb_quest_faites=0;
cont.note=0;
cont.note_maxi=0;
for (var i=0;i<mod.th.length;i++) {
mod.th[i].etat="libre";
for (var j=0;j<mod.th[i].quest.length;j++) mod.th[i].quest[j].etat="libre";
if (mod.th[i].quest.length==0) mod.th[i].etat="fini";
}
ecrire_page1();
cont.num_page="1";
}
// FONCTIONS APPELEES DEPUIS LA PREMIERE PAGE
function p1_choisir_themes() {
if (parent.pages.document.f.tous.checked) {
for (var i=0;i<mod.th.length;i++) parent.pages.document.f.elements["case"+i].checked=true;
}
}
function p1_commencer() {
// Vérification du choix des thèmes
for (var i=0;i<mod.th.length;i++) mod.th[i].choisi="non";
if (mod.th.length==1) mod.th[0].choisi="oui";
if (mod.th.length>1) {
if (mod.opt.mode_theme==1) {
for (var i=0;i<mod.th.length;i++) {
if (parent.pages.document.f.elements["case"+i].checked) mod.th[i].choisi="oui";
}
}
else if (mod.opt.mode_theme==2) {
for (var i=0;i<mod.th.length;i++) {
if (parent.pages.document.f.ch_th[i].checked) mod.th[i].choisi="oui";
}
}
else {
var n=parent.pages.document.f.liste_themes.selectedIndex;
if (n!=-1) mod.th[n].choisi="oui";
}
}
var verif_th="non";
for (var i=0;i<mod.th.length;i++) { if (mod.th[i].choisi=="oui") verif_th="ok"; }
if (verif_th=="non") alert(mod.txt.fenetre[0]);
// Vérification du choix du nombre de questions
if (verif_th=="ok") {
var nb_quest_dispo=0;
for (var i=0;i<mod.th.length;i++) {
if (mod.th[i].choisi=="oui")
{
nb_quest_dispo+=mod.th[i].quest.length;
}
}
cont.nb_quest_choisi="aucun";
if (mod.opt.nb_questions.length==0) cont.nb_quest_choisi=nb_quest_dispo;
if (mod.opt.nb_questions.length==1) cont.nb_quest_choisi=mod.opt.nb_questions[0];
if (mod.opt.nb_questions.length>1) {
if (mod.opt.mode_question==1) {
for (var i=0;i<mod.opt.nb_questions.length;i++) {
if (parent.pages.document.f.ch_nb[i].checked) {
cont.nb_quest_choisi=mod.opt.nb_questions[i];
}
}
}
else {
var n=parent.pages.document.f.liste_questions.selectedIndex;
if (n!=-1) cont.nb_quest_choisi=mod.opt.nb_questions[n];
}
}
var verif_quest="non";
if (cont.nb_quest_choisi!="aucun" && cont.nb_quest_choisi<=nb_quest_dispo) verif_quest="ok";
if (cont.nb_quest_choisi=="aucun") alert(mod.txt.fenetre[1]);
// Les 2 boites de dialogue "alert" ci-dessous ont été modifiées le 24 juin 2013 afin d'afficher le nombre de questions au démarrage.
// Modification faite par Jean-Christophe MICHEL
// www.gecif.net
if (cont.nb_quest_choisi>nb_quest_dispo) alert("Vous avez choisi "+cont.nb_quest_choisi+" questions mais il n'y a que "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nVeuillez sélectionner plus de thèmes ou choisir moins de questions.");
}
// Début de l'exercice
// Si on choisi 10, 50, 100, 150 ou 200 questions, alors le temps est rappelé dans la boite de dialogue au démarage :
// Ajouté par Jean-Christophe MICHEL le 25 juin 2013
// www.gecif.net
if (verif_quest=="ok") {
if (mod.opt.conseil_debut!="") {
if (cont.nb_quest_choisi==10) alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nRappel : il faut répondre à 10 questions en moins de 3 minutes.\n\nSoyez attentif !");
else if (cont.nb_quest_choisi==50) alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nRappel : il faut répondre à 50 questions en moins de 15 minutes.\n\nSoyez attentif !");
else if (cont.nb_quest_choisi==100) alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nRappel : il faut répondre à 100 questions en moins de 30 minutes.\n\nBon courage !");
else if (cont.nb_quest_choisi==150) alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nRappel : il faut répondre à 150 questions en moins de 45 minutes.\n\nBon courage !");
else if (cont.nb_quest_choisi==200) alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nRappel : il faut répondre à 200 questions en moins de 60 minutes.\n\nBon courage !");
else alert("Voici "+cont.nb_quest_choisi+" questions tirées au hasard parmi les "+nb_quest_dispo+" questions disponibles dans les thèmes sélectionnés.\n\nBon courage !");
}
cont.debut=new Date();
nouvelle_question();
}
}
// FONCTIONS APPELEES DEPUIS LA DEUXIEME PAGE
function p2_verifier() {
var a=cont.num_theme;
var b=cont.num_question;
var c=mod.th[a].quest[b].rep.length;
var suite="oui";
// Vérification de l'existence d'une réponse apportée par l'élève
// Kakise: Ah bah oui, si on supprime ça, ça ne vérifie pas <3
var repondu="juste";
var note_question=0;
if (mod.th[a].quest[b].type=="cases a cocher") {
note_question=mod.th[a].quest[b].bareme;
}
else if (mod.th[a].quest[b].type=="boutons radio") {
note_question=mod.th[a].quest[b].bareme;
}
else {
var nb_cases=0;
for (var i=0;i<c;i++) if (mod.th[a].quest[b].rep[i].resultat[0]!="") nb_cases++;
var bareme_case=mod.th[a].quest[b].bareme/nb_cases;
for (var i=0;i<c;i++) {
if (mod.th[a].quest[b].rep[i].resultat[0]!="") {
note_question+=bareme_case;
}
}
}
// Commentaire sur la réponse apportée par l'élève
var com="";
if (repondu=="juste") {
if (mod.th[a].quest[b].com.juste!="") com=hasard(mod.th[a].quest[b].com.juste);
else if (mod.th[a].com.juste!="") com=hasard(mod.th[a].com.juste);
else if (mod.com.juste!="") com=hasard(mod.com.juste);
}
if (repondu=="faux") {
if (mod.th[a].quest[b].com.faux!="") com=hasard(mod.th[a].quest[b].com.faux);
else if (mod.th[a].com.faux!="") com=hasard(mod.th[a].com.faux);
else if (mod.com.faux!="") com=hasard(mod.com.faux);
}
maj_page2(note_question,com);
cont.note+=note_question;
cont.note_maxi+=mod.th[a].quest[b].bareme;
mod.th[a].quest[b].etat="corrigee";
cont.nb_quest_faites++;
cont.num_page="2bis";
if (repondu=="partiel" || repondu=="faux") p2_clignoter();
}
function p2_ne_sais_pas() {
var a=cont.num_theme;
var b=cont.num_question;
var com="";
if (mod.th[a].quest[b].com.abandon!="") com=hasard(mod.th[a].quest[b].com.abandon);
else if (mod.th[a].com.abandon!="") com=hasard(mod.th[a].com.abandon);
else if (mod.com.abandon!="") com=hasard(mod.com.abandon);
var note_question=mod.opt.coef_rep_nulle*mod.th[a].quest[b].bareme/mod.opt.coef_rep_juste;
if (mod.th[a].quest[b].type=="autre") {
var c=mod.th[a].quest[b].rep.length;
for (var i=0;i<c;i++) mod.th[a].quest[b].rep[i].repondu="faux";
}
maj_page2(note_question,com);
cont.note+=note_question;
cont.note_maxi+=mod.th[a].quest[b].bareme;
mod.th[a].quest[b].etat="corrigee";
cont.nb_quest_faites++;
cont.num_page="2bis";
p2_clignoter();
}
function p2_suivant() {
if (cont.nb_quest_faites==cont.nb_quest_choisi) p2_terminer();
else nouvelle_question();
}
function p2_arreter() {
if (cont.nb_quest_faites==cont.nb_quest_choisi) p2_terminer();
else { if (confirm(mod.txt.fenetre[5])) p2_terminer(); }
}
function p2_terminer() {
clearTimeout(timer);
flag=1;
cont.fin=new Date();
ecrire_page3();
cont.num_page="3";
}
function p2_clignoter() {
var a=cont.num_theme;
var b=cont.num_question;
var c=mod.th[a].quest[b].rep.length;
if (flag==0) {
if (mod.th[a].quest[b].type=="cases a cocher") {
for (var i=0;i<c;i++) {
if (mod.th[a].quest[b].rep[i].resultat=="vrai") {
parent.pages.document.f.elements["case"+i].checked=true;
}
}
}
else if (mod.th[a].quest[b].type=="boutons radio") {
for (var i=0;i<c;i++) {
if (mod.th[a].quest[b].rep[i].resultat=="vrai") {
parent.pages.document.f.ch_rep[i].checked=true;
}
}
}
else {
for (var i=0;i<c;i++) if (mod.th[a].quest[b].rep[i].resultat[0]!="") {
parent.pages.document.f.elements["zt"+i].value=mod.th[a].quest[b].rep[i].resultat[0];
}
}
flag=1;
timer=setTimeout("p2_clignoter()",300);
}
else {
if (mod.th[a].quest[b].type=="cases a cocher") {
for (var i=0;i<c;i++) parent.pages.document.f.elements["case"+i].checked=false;
}
else if (mod.th[a].quest[b].type=="boutons radio") {
for (var i=0;i<c;i++) parent.pages.document.f.ch_rep[i].checked=false;
}
else {
for (var i=0;i<c;i++) if (mod.th[a].quest[b].rep[i].resultat[0]!="") {
if (mod.th[a].quest[b].rep[i].repondu=="faux") {
parent.pages.document.f.elements["zt"+i].value="";
}
}
}
flag=0;
timer=setTimeout("p2_clignoter()",100);
}
}
function p2_inserer(caractere) {
var input = parent.pages.document.f.elements["zt"+zt_focus];
input.focus();
input.value+=caractere;
}
// FONCTIONS APPELEES DEPUIS LA TROISIEME PAGE
function p3_getcookie(nom) {
var recherche=nom+'=';
if (document.cookie.length>0) {
var position=document.cookie.indexOf(recherche);
if (position!=-1) {
position=position+recherche.length; // on passe après nom=
fin=document.cookie.indexOf(';',position); // on cherche la fin (";")
if (fin==-1) fin=document.cookie.length; // si le ";" n'existe pas, le cookie va jusqu'au bout
return unescape(document.cookie.substring(position,fin));
}
else return '';
}
else return '';
}
function p3_putcookie(nom,texte,jours) {
var datecourante=new Date();
var expires=new Date();
expires.setTime(datecourante.getTime()+1000*60*60*24*jours);
document.cookie=nom+'='+escape(texte)+'; expires='+expires.toGMTString();
}
function p3_sauv_cookies(nom_eleve,mot) {
// Sauvegarde du nom d'élève et du mot dans le cookie "dyris_2"
nom_eleve=sup_esp(nom_eleve);
if (nom_eleve=="") nom_eleve="?";
var sauv=p3_getcookie("dyris_2");
sauv+=nom_eleve+"§"+mot+"\n";
p3_putcookie("dyris_2",sauv,10);
// Affichage de la page "score.html"
var l=screen.width/1.3;
var h=screen.height/1.5;
ouvrir_fenetre("scores.html",l,h);
initialiser();
}
function p3_sauv_php(nom_eleve,mot) {
nom_eleve=sup_esp(nom_eleve);
if (nom_eleve=="") nom_eleve="?";
var sauv=nom_eleve+"§"+mot;
var page_php="scores.php?enr="+sauv;
var l=screen.width/1.3;
var h=screen.height/1.5;
ouvrir_fenetre(page_php,l,h);
initialiser();
}
// FONCTIONS APPELEES DEPUIS PLUSIEURS DES TROIS PAGES
function nouvelle_question() {
// Arrêt du clignotement des cases à cocher
clearTimeout(timer);
flag=1;
if (mod.opt.nb_questions.length!=0) {
// Choix d'un thème disponible pris au hasard
var a=Math.floor(mod.th.length*Math.random());
while (mod.th[a].choisi=="non"||mod.th[a].etat=="fini") {
a=Math.floor(mod.th.length*Math.random());
}
cont.num_theme=a;
// Choix d'une question disponible prise au hasard
var b=Math.floor(mod.th[a].quest.length*Math.random());
while (mod.th[a].quest[b].etat!="libre") {
b=Math.floor(mod.th[a].quest.length*Math.random());
}
cont.num_question=b;
}
if (mod.opt.nb_questions.length==0) {
// Choix du 1er thème disponible
var a=0;
while (mod.th[a].choisi=="non"||mod.th[a].etat=="fini") a++;
cont.num_theme=a;
// Choix de la 1ère question disponible
var b=0;
while (mod.th[a].quest[b].etat!="libre") b++;
cont.num_question=b;
}
mod.th[a].quest[b].etat="affichee";
// Vérification du thème pour savoir s'il est terminé ou non
mod.th[a].etat="fini";
for (var i=0;i<mod.th[a].quest.length;i++) {
if (mod.th[a].quest[i].etat=="libre") mod.th[a].etat="libre";
}
ecrire_page2();
cont.num_page="2";
}
function sup_esp(ent) {
var test=ent.substring(ent.length-1,ent.length);
while (test==" ") {
ent=ent.substring(0,ent.length-1);
test=ent.substring(ent.length-1,ent.length);
}
test=ent.substring(0,1);
while (test==" ") {
ent=ent.substring(1,ent.length);
test=ent.substring(0,1);
}
return ent;
}
function ouvrir_fenetre(adresse,largeur,hauteur) {
if (fen_guide!=null) {if (fen_guide.closed==false) fen_guide.close();}
var pos_x=(screen.width-largeur)/2;
var pos_y=(screen.height-hauteur)/2.5;
var dimensions='width='+largeur+',height='+hauteur+',left='+pos_x+',top='+pos_y;
var proprietes='menubar=no,toolbar=no,directories=no,location=no,status=no,scrollbars=yes';
fen_guide=window.open(adresse,'message',dimensions+proprietes);
fen_guide.focus();
}
function entree_clavier(e) {
var touche=(window.Event) ? e.which : e.keyCode;
var keyPressed=String.fromCharCode(touche);
if (keyPressed=="\r") {
if (cont.num_page=="2") {
var a=cont.num_theme;
var b=cont.num_question;
if (mod.th[a].quest[b].type!="cases a cocher" && mod.th[a].quest[b].type!="boutons radio") {
p2_verifier();
}
}
else if (cont.num_page=="2bis") p2_suivant();
}
}
function traiter_chaine(ch) {
// les classes 'vec' et 'alg' sont définies dans math.css
// while (ch.indexOf("<vec>") != -1 ) ch=ch.replace("<vec>","<span class='vec'>");
// while (ch.indexOf("</vec>") != -1 ) ch=ch.replace("</vec>","</span>");
// while (ch.indexOf("<alg>") != -1 ) ch=ch.replace("<alg>","<span class='alg'>");
// while (ch.indexOf("</alg>") != -1 ) ch=ch.replace("</alg>","</span>");
while (ch.indexOf("<omega>") != -1 ) ch=ch.replace("<omega>","<font size=\"+2\" face=\"Times New Roman, Times, serif\">&Omega;</font>");
while (ch.indexOf("<mu>") != -1 ) ch=ch.replace("<mu>","<img src='mu.png' width='9' height='12' />");
// <xor> ajouté le 30 septembre 2013
while (ch.indexOf("<xor>") != -1 ) ch=ch.replace("<xor>","<img src='symbole_du_ou_exclusif.gif' width='24' height='17'/>");
return ch
}
function hasard(ch) {
var enonce=ch.split("||");
var nb=Math.floor(enonce.length*Math.random());
return enonce[nb];
}
function quitter_dyris() {
if (fen_guide!=null) {if (fen_guide.closed==false) fen_guide.close();}
if (mod.opt.conseil_fin!="") alert(hasard(mod.opt.conseil_fin));
if (mod.opt.quitter=="") window.top.close();
else window.top.location.href=mod.opt.quitter;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment