Auteur Sujet: Qu'est-ce qu'un programme libre?  (Lu 3042 fois)

0 Membres et 1 Invité sur ce sujet

corrector

  • Invité
Qu'est-ce qu'un programme libre?
« le: 01 juin 2011 à 04:14:06 »
Soit un logiciel
  • placé sous une licence libre/open source donnée (p.ex. BSD, GPL, MPL...)
  • distribué sous la forme d'un code à compiler ou directement interprétable (p.ex. shell, perl, PHP...)
  • dont le code distribué contient quelque chose de ce genre :
if (md5(password) == 0xb5aaf328c86cac18f11592b17357d4d8)
    priv = ADMIN_PRIV; // privilèges d'administration

Est-ce que ce logiciel serait considéré comme libre?

vivien

  • Administrateur
  • *
  • Messages: 47 211
    • Twitter LaFibre.info
Qu'est-ce qu'un programme libre?
« Réponse #1 le: 01 juin 2011 à 07:22:55 »
Ca viens de quel logiciel ?

Il suffit de modifier le code source et re-compiler si il est open source...

corrector

  • Invité
Qu'est-ce qu'un programme libre?
« Réponse #2 le: 01 juin 2011 à 08:44:28 »
Mettons plutôt :
if (md5(username) == 0xb5aaf328c86cac18f11592b17357d4d8) {
    error = user_banned; // ce nom d'utilisateur est banni
    goto end;
}
est-ce du libre?

Après, tu peux remplacer username par une clé de chiffrement...

Ca viens de quel logiciel ?
Disons que c'est vaguement inspiré de Firefox.

Il suffit de modifier le code source et re-compiler si il est open source...
Avant de modifier un programme, j'aimerais comprendre ce qu'il fait précisèment, pour éviter de supprimer une sécurité importante. J'aimerais au moins savoir ce que l'auteur du code essayait de faire.

ruchard5

  • Expert
  • Abonné Free adsl
  • *
  • Messages: 116
    • Le blog du Ruchard
Qu'est-ce qu'un programme libre?
« Réponse #3 le: 01 juin 2011 à 12:28:27 »
Le logiciel est sous license libre et le reste.

Donc tu peux re-compiler le programme comme tu veux, en supprimant ou pas des fonctions de sécurité, en rajoutant du code etc.

Cependant tu es obligé de fournir le logiciel sous la même licence (généralement, une licence libre empêche quiconque d'utiliser le code sans en partager les sources et reconduire la licence open).

Quand au code
if (md5(password) == 0xb5aaf328c86cac18f11592b17357d4d8)
    priv = ADMIN_PRIV; // privilèges d'administration

Il ne fait que vérifier si le mot de passe correspond a un mot de passe deja connu (dont le hash MD5 est 0xb5aa...) avant de définir les privilèges de l'utilisateur  comme Administrateur.

Quand au code transformer:
if (md5(username) == 0xb5aaf328c86cac18f11592b17357d4d8) {
    error = user_banned; // ce nom d'utilisateur est banni
    goto end;
}

 cela reste du libre si le reste du code est libre.

Si la question est: puis-je utiliser des fonctionnalités inspire de logiciel libre dans du logiciel prive, je dirais la réponse est oui, tant que tu ne fait que t'inspirer du code, et que tu ne copie pas de large portions ou fonction etc.

corrector

  • Invité
Qu'est-ce que le code source?
« Réponse #4 le: 02 juin 2011 à 10:36:47 »
Ce qu'en dit GNU : Définition d'un logiciel libre
Citer
La liberté d'étudier le fonctionnement du programme, et de l'adapter à vos besoins (liberté 1). Pour ceci l'accès au code source est une condition requise.
Tu peux essayer de comprendre :
if (md5(username) == 0xb5aaf328c86cac18f11592b17357d4d8) {
    error = user_banned; // ce nom d'utilisateur est banni
    goto end;
}
mais tu te heurtes au fait que tu ne sais pas quel nom d'utilisateur est banni et pourquoi : est-ce parce que c'est un mot vulgaire?

Pour savoir si je veux garder ce test, j'ai besoin de savoir ce que fait réellement ce code. Quelle est la raison d'être de ce test?

Pour la définition de "code source", la GPL :
Citation de: GNU
The “source code” for a work means the preferred form of the work for making modifications to it.
Il semble évident que le programmeur n'a pas sorti "0xb5aaf328c86cac18f11592b17357d4d8" de son chapeau!

Peut-être même a t-il un "template" pour faire cela. Peut-être a t-il écrit ce script "make_c_source":
#!/bin/bash
banned_user=$1
cat >toto.c <<EOT
if (md5(username) == 0x$( md5sum <<<${banned_user} ) ) {
    error = user_banned; // ce nom d'utilisateur est banni
    goto end;
}
EOT
Pour modifier le programme, il est préférable d'avoir ce script. Ce script fait donc parti du "code source".

Pour recréer le code objet, il te faut le script de compilation qui passe le bon argument au script make_c_source (censuré, je ne vous dirais pas quel est le nom de l'utilisateur banni!) :
toto.c:
./make_c_source ICI_LE_NOM_DE_L_UTILISATEUR_BANNI

donc le makefile non-censuré fait parti du "corresponding source" :
Citation de: GNU
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.
Bon, tout ça reste très hypothétique. (En fait, "l'auteur du code" (moi) n'a pas utilisé un script pour pondre son exemple hypothétique, mais j'avais envie de poster ici un script à la noix.)

En tout cas, tu ignores une information que l'auteur du code (moi) possède : le nom de l'utilisateur banni. Selon moi, c'est un obstacle à ta liberté.