caratére underscore dans maxima

Accueil Forums Programmation WIMS Programmation d’exercices OEF caratére underscore dans maxima

Étiqueté : ,

Vous lisez 4 fils de discussion
  • Auteur
    Messages
    • #1812
      Dominique SOUDIERE
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      je n’arrive pas à faire passer la fonction power_mod de maxima dans Wims. Le caratére underscore semble ne pas être reconnu. Quelqu’un sait il comment contourner. Précision: j’ai besoin de cette fonction pour du cryptage RSA sur des grands nombres où mod ne passe pas.
      Par exemple y-a-t-il un équivalent dans une autre langage comme Pari?
      Y-a-t-il un moyen de remplacer le _ dans la commande sous Wims?
      Dominique

    • #1813
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Je ne sais pas répondre à ta question sur mzxima. Mais es-tu sûr que tu ne peux pas travailler avec pari ? dans pari, Mod(a,M).
      ( bien sûr, ne pas faire Mod(a^N,M) mais Mod(a,M)^N ensuite)
      Bernadette

    • #2218
      boud
      Participant
      Up
      0
      Down
      ::

      Cette substitution d’un underscore par un « K » est toujours présent
      dans la version actuelle de https://subversion.renater.fr/wimsdev/trunk/wims/src/Interfaces/maxima.c:

      * check for security violations in command string */
      void check_parm(char *pm)
      {
          char *s, *pp;
          int l;
      /* Underscore replacement */
          for(pp=strchr(pm,'_'); pp!=NULL; pp=strchr(pp+1,'_')) *pp='K';
      /* '?' escapes to Lisp commands. */
          if(strchr(pm,'?')!=NULL) {
              fprintf(stderr,"Illegal under WIMS.\n"); exit(1);
          }
          for(s=pm;*s;s++) *s=tolower(*s);
          strip_trailing_spaces(pm); l=strlen(pm);
          if(l>0 && pm[l-1]!=';') strcat(pm,";");
          find_illegal(pm);
      }

      Elle me gêne aussi (je souhaiterais utiliser quad_gaqs dans
      maxima). Je ne connais pas suffisamment maxima pour savoir si l’underscore
      est réellement une source d’exploits de sécurité.

      J’ai essayé (sans succès) le hack suivant. J’ai créé le fichier
      ~<wimsuser>/.maxima/maxima-init.mac
      avec le contenu
      powerkmod(a,n,m):=power_mod(a,n,m);
      <wimsuser> est l’utilisateur wims, par ex. wims.

      Pour un utilisateur ordinaire avec un fichier identique ~/.maxima/maxima-init.mac,
      l’on pourrait ainsi utiliser la fonction powerkmod comme alias de power_mod.

      Mais l’appel de wims à maxima ne semble pas lire le fichier ~/.maxima/maxima-init.mac.

      Deux questions, donc :

      L’underscore est-il un danger pour faire un exploit dans maxima ? (Il est évident
      qu’il ouvre accès à un plus grand nombre de fonctions dans maxima.)

      Y a-t-il un workaround temporaire pour ceux qui veulent utiliser les fonctions avec un underscore dans
      maxima appelé par wims, tout en acceptant ce risque (inconnu) ?

      • Cette réponse a été modifiée le il y a 10 années et 7 mois par boud. Raison: anchor
      • Cette réponse a été modifiée le il y a 10 années et 7 mois par boud. Raison: peut-etre les urls sont desactives ? c'est pas grave
      • Cette réponse a été modifiée le il y a 10 années et 7 mois par boud. Raison: plus elegant
      • Cette réponse a été modifiée le il y a 10 années et 7 mois par boud. Raison: ou
    • #2226
      jm.evers
      Participant
      Up
      0
      Down
      ::

      Hi, there are a « few » ways to ‘escape to lisp’ from the maxima commandline.
      the simplest, being to_lisp();

      
      joke@zondag /home/joke : maxima
      Maxima 5.31.3 http://maxima.sourceforge.net
      using Lisp SBCL 1.1.12
      Distributed under the GNU Public License. See the file COPYING.
      Dedicated to the memory of William Schelter.
      The function bug_report() provides bug reporting information.
      (%i1) to_lisp();
      Type (to-maxima) to restart, ($quit) to quit Maxima.
      MAXIMA> (open "/etc/passwd")             
      #<SB-SYS:FD-STREAM for "file /etc/passwd" {1005CFC9D3}>
      MAXIMA> (with-open-file (stream "/etc/passwd")(read-line stream))
      "# $FreeBSD: release/10.0.0/etc/master.passwd 256366 2013-10-12 06:08:18Z rpaulo $"
      NIL
      

      and lisp in turn has full potential of accessing the complete system…

      • Cette réponse a été modifiée le il y a 10 années et 7 mois par jm.evers. Raison: typo
      • Cette réponse a été modifiée le il y a 10 années et 7 mois par jm.evers.
    • #2229
      boud
      Participant
      Up
      0
      Down
      ::

      So blocking underscores is definitely a security feature!
      Just to check,

      \text{escapetolisp = maxima(to_lisp();)}
      
      \statement{Repondre a la question svp.<br />
      escapetolisp = \escapetolisp}

      in an oef source gives

      Repondre a la question svp.
      escapetolisp = toklisp()

      So to_lisp is disabled.

      I suspect that eval_string probably should remain disabled too – as it
      is at the moment with underscores being replaced by « K » (which then becomes
      « k »). The « ? » escape to lisp leads to a rapid exit(1):
      https://subversion.renater.fr/wimsdev/trunk/wims/src/Interfaces/maxima.c

Vous lisez 4 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.