Lanceur sournois [fermé]

11

Votre objectif est d'écrire un programme super secret qui lance un autre programme (indépendant). Vous n'avez pas à fournir la charge utile dans votre réponse, il peut s'agir de n'importe quel nom de programme que votre programme lancera.

Cependant, le défi est de garder ce comportement secret. Après une inspection occasionnelle du code, il devrait être impossible ou très difficile de remarquer que votre programme exécute réellement un programme étranger. Bonus si cette "fonctionnalité cachée", une fois découverte, peut raisonnablement être expliquée comme un bug involontaire. C'est pourquoi le code doit être aussi clair que possible, et tout devrait avoir un alibi pour être là, sinon quelqu'un inspectant votre code pourrait devenir suspect.

Rappelez-vous, ce n'est pas un code-golf, mais un concours sournois .

  • Votre code doit être clair et lisible.
  • Les causes du changement doivent être cachées. Même s'ils sont découverts, ils devraient ressembler davantage à des insectes qu'à de la malveillance.

Vous devez fournir une explication, mieux en spoiler.

comme ça

Le gagnant sera sélectionné comme la réponse la plus votée au plus tard 10 jours après la première réponse valide. Oui, je sais que c'est subjectif, mais c'est le seul critère adéquat pour les concours sournois.

Les électeurs devraient apprécier les qualités «sournoises» standard, comme la clarté du code et la dissimulation de la raison.

J'ai fait ce concours pour les langues compilées, mais vous pouvez également utiliser des langues interprétées si vous en trouvez deux interprètes notables différents.

vsz
la source
Habituellement, les concours sournois spécifient la tâche "légitime" que le programme doit effectuer. Cela aide à concentrer les efforts.
ugoren
3
Je vote pour fermer cette question comme hors sujet car les défis sournois ne sont plus sur le sujet sur ce site. meta.codegolf.stackexchange.com/a/8326/20469
cat

Réponses:

5

Tcl

Facile.

proc main {} {
    set fd [open filenames.txt]
    while {[gets $fd line] ne ""} {
        set other [open $line w]
        puts $other [clock format [clock seconds]]
    }
}
main

Ilmari Karonen a raison:
si vous fournissez un nom de fichier avec un |premier caractère, il traitera le reste comme une commande. IIRC pour Perl ça doit être à la fin.

Johannes Kuhn
la source
2
+1. Ps. La même astuce fonctionne également en Perl, et dans toute autre langue qui a une fonction "d'ouverture magique" appropriée.
Ilmari Karonen
2
«L'IIRC pour Perl doit être à la fin.» - En fait, il doit être placé selon la direction prévue du transfert de données. pastebin.com/ZnTr7ezg
manatwork
Intéressant. J'ai beaucoup utilisé cette "fonctionnalité" avec les commandes personnalisées de webmin. Besoin d'une liste de tous les domaines dans une liste déroulante? Utilisez cette fonction.
Johannes Kuhn
5

Javascript

if(document.location.href = 'http://www.example.com') foo();

"document.loaction.href = 'http; // www.example.com'" définit l'emplacement de la page sur "http; // www.example.com" au lieu de tester l'emplacement de la page sur "http; // www .example.com ".

C'est une langue interprétée, alors voici deux interprètes: SpiderMonkey et Google Chrome.

Mouton bleu
la source
2
C'est en fait assez évident. Il est connu comme "le dernier bug du monde", en raison d'une vieille blague selon laquelle la troisième guerre mondiale commencerait en raison d'un code C sous la formeIf (AlertValue = RED) LaunchNukes();
Mason Wheeler