[R] Exécution d'un code externe à un script compilé

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

[R] Exécution d'un code externe à un script compilé

#1

Message par jguinch »

Bonjour. Je vais essayer d'être assez clair (pas toujours facile...)

L'énoncé : j'ai un script autoit compilé qui effectue sous condition des actions. (normal quoi :wink: )
Les actions et conditions sont décrites dans un fichier ini.

Exemple :

Code : Tout sélectionner

[Firefox]
name=Firefox
file=setupFirefox.exe
params=-ms
checksum= eb574b236133e60c989c6f472f07827b
condition=NOT FileExists(@ProgramFilesDir & "\*firefox*")
L'exécutable compilé va tester si la condition définie dans le fichier INI est remplie, en utilisant Eval(). Si la condition est remplie, le programme défini dans la clé file s'exécutera.

Problème : j'aimerais pouvoir mettre plus de code dans la condition, par exemple :
► Afficher le texte
Est-ce envisageable de faire un genre de Eval() sur une expression à plusieurs lignes, ? (je suis prêt à abandonner les fichiers INI mais je n'ai pas envie d'embarquer AutoIt3.exe)
Cela m'éviterait de faire évoluer l'exécutable...

Pour info : l'exécutable tourne sur environ 3000 postes et peut se mettre à jour de lui-même. Seulement, j'aimerais limiter ses mises à jour aux maj importantes (d'où l'externalisation de code).

Merci pour votre aide ou vos idées.
Modifié en dernier par jguinch le ven. 01 févr. 2013 20:04, modifié 1 fois.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [...] Exécution d'un code externe à un script compilé

#2

Message par sksbir »

Bonjour

Ta solution est un vrai trou de sécurité, surtout si le programme d'installation de firefox tourne sous le controle de l'administrateur du poste de travail, et que les utilisateurs ne sont pas admin de leur poste : un petit malin viendra bricoler le fichier INI pour se lancer un explorateur par exemple...

Comme il n'y a pas 36 façon de savoir si un programme est installé ou pas, et puisque tu travailles sur fichier INI, tu devrais coder des mots clés comme par exemple ceci :

FICEXIST= ( le fichier qui montre que le programme est installé )
REGEXIST= ( la clé de registre qui montre que le programme est installé.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [...] Exécution d'un code externe à un script compilé

#3

Message par jguinch »

Merci pour ta réponse.
Ta suggestion est très bonne, j'en prends note.
Cependant :
- le fichier INI n'est présent que pendant le temps de lire son contenu (quelques ms) et ensuite il est supprimé
- le programme comme le fichier INI ne sont pas accessibles depuis les comptes utilisateurs de base (ils sont stockés dans le profil administrateur)
- le fichier est téléchargé par l'exécutable toutes les X minutes, donc même si on arrive à le créer manuellement il sera écrasé par le prochain téléchargement

Mais il n'y a pas de sécurité parfaite...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [...] Exécution d'un code externe à un script compilé

#4

Message par jchd »

Tu peux faire exécuter un script sous forme source par n'importe quel script compilé.
Voir l'aide (en v.o., je n'ai pas l'installation francisée) : Using AutoIt > Running scipts > AutoIt specific command Line Switches > Form 3

C:\Mon Répertoire> monscript.exe [/ErrorStdOut] /AutoIt3ExecuteScript UnAutreScript.au3 [params ...]
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Exécution d'un code externe à un script compilé

#5

Message par Tlem »

Pour compléter ce que Jean-Christophe vous à dit, je rajouterais ceci :

Pour exécuter un script au3 ou un script a3x, vous pouvez utiliser la méthode expliquée par jchd (En VF ici : http://www.autoitscript.fr/autoit3/docs ... unning.htm), par contre, vous n'aurez pas d'interaction au niveau des variables et comme l'à signalé sksbir, vous aurez donc un sacré trou de sécurité puisque le fichier de code externe pourrait être modifié !

Maintenant, si ce comportement ne gêne pas, alors pourquoi compiler votre script. Il vous suffit de le déployer et de prévoir l'include d'un fichier externe que vous mettrez à jour (bien que le script en lui même ne sera certainement pas très lourd et pourra être distribué après modifications).
Si vous avez peur que le code soit vu en clair alors un petit coup d'obfuscateur et le tour est joué ...

Autres possibilités pour du code externe :
- L'utilisation d'Execute comme si dessus, mais pour une seule ligne de commande.
- La création et l'utilisation d'une dll externe que vous compileriez en C. Mais pour cela il faut connaitre le C/C++ afin de faire des fonctions qui vous conviendront.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Exécution d'un code externe à un script compilé

#6

Message par jguinch »

Merci à tous pour vos réponse.
J'utiliserai donc monprogramme.exe /AutoIt3ExecuteScript script.au3.

Effectivement pour la sécurité c'est pas le top, je vais travailler sur cet aspect de toute façon.
Je pensais également à l'utilisation d'une DLL mais là c'est plus compliqué (mais très intéressant ...).

Merci encore (il est vraiment bien ce forum quand même ! :wink: )
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre