Communication PHP & Autoit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Tekky
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 15 juin 2019 15:56
Status : Hors ligne

Communication PHP & Autoit  

#1

Message par Tekky »

Bonjour,

je cherche a faire un système de "clé", en comparant la clé entrer sur le programme et la clé stocker sur mon serveur web, avec une clé correspondante, le programme démarre, sinon, il ne démarre pas. J'ai la logique du programme en tête, que j'ai déjà d'ailleurs fais. Mais je suis bloquer a l'étape la plus "compliquer", celle de la communication php/autoit.

Je souhaite avoir les clés correspondante sur mon serveur web, et donc utiliser un script php, qui permet, de laisser mon programme autoit comparer la clé entrer avec la clé qui est sur mon site, (ce qui permettrait donc par la suite d'empêcher l'utilisation de la même clé en même temps).

Bref, voici mon code actuellement :
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <StringConstants.au3>
#Region ### START Koda GUI section ### Form=E:\Documents\Autoit\autoit 2021\register\i.kxf
$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 72, 80, 121, 21)
$Label1 = GUICtrlCreateLabel("rentre ta clé ci dessous", 72, 48, 113, 17)
$Button1 = GUICtrlCreateButton("Valider", 216, 80, 57, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

func programme ()
   ;le programme principal ici
EndFunc

Func clee ()

   Local $phpclee = "Azerty" ; clé définis manuellement mais par la suite obtenue via serveur php
   $cle = GUICtrlRead($Input1)

   Local $comp = StringCompare($phpclee,$cle) ; je compare la clé sur le serveur php a la clé de l'input1
   if $comp = 0 Then
      programme ()
   Else
      GUICtrlSetData ($Label1, "Mauvaise clé!")
   EndIf

EndFunc

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $Button1
         clee ()
   EndSwitch
WEnd
J'ai définis en local une variable "$phpclee" pour vérifier la fonctionnalité de mon programme. Je souhaite donc maintenant crée une fonction, qui pourrait communiquer avec mon site web et donc mon script php et recevoir la clé correcte a comparer.

Quelqu'un pourrait m'aider? :D

Désoler pour mon explication.. (pas toujours simple d'expliquer ce que l'on a en tête).

Cordialement. :)
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Communication PHP & Autoit

#2

Message par Nine »

Une des façons de faire serait de communiquer via TCP entre AutoIt et PHP. Voici un lien expliquant comment ouvrir un lien TCP à partir de PHP :
https://www.php.net/manual/en/sockets.examples.php

Mais si je voulais faire ce que tu veux faire, je choisirais sans doute de créer un fichier encrypté sur le serveur Web et j'emploierais InetRead pour obtenir le fichier que je décrypterais localement et ainsi facilement, je pourrais comparer les clés. C'est peut-être un peu trop simpliste, mais ça a l'avantage d'être très rapide à implanter.
Tekky
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 15 juin 2019 15:56
Status : Hors ligne

Re: Communication PHP & Autoit

#3

Message par Tekky »

Nine a écrit : dim. 21 févr. 2021 17:03 Une des façons de faire serait de communiquer via TCP entre AutoIt et PHP. Voici un lien expliquant comment ouvrir un lien TCP à partir de PHP :
https://www.php.net/manual/en/sockets.examples.php

Mais si je voulais faire ce que tu veux faire, je choisirais sans doute de créer un fichier encrypté sur le serveur Web et j'emploierais InetRead pour obtenir le fichier que je décrypterais localement et ainsi facilement, je pourrais comparer les clés. C'est peut-être un peu trop simpliste, mais ça a l'avantage d'être très rapide à implanter.
J'ai aussi pensée a vôtre idée "simpliste", mais vite abandonnée, je me suis dis que si quelqu'un avait l'url sous la main, il pourrait l'ouvrir avec un navigateur et donc récupérer la clé très facilement..
Mais j'aimerais bien en savoir plus sur la façon d'encrypté le fichier justement, tout en le gardant accessible a mon programme, si c'est possible !

Merci de votre réponse, plus que rapide, et en vous souhaitant un bon début de semaine. :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Communication PHP & Autoit

#4

Message par Tlem »

Bonsoir.
Pourquoi ne pas passer par un traitement coté serveur ?

Le client envois sa clé sur une page spécialement conçue, le serveur traite l'information en local en lisant le fichier des clés ou une base de données et renvoi au client l'approbation. L'avantage, c'est que même si le fichier est crypté, la clé des autres utilisateurs ne se balade pas sur d'autres machines.

Dans l'éventualité où vous auriez besoin d'informations supplémentaires, il suffit de rajouter celles-ci dans l’envoi du formulaire. Cela permettrait éventuellement d'avoir un suivit du produit (version, OS, Nom de la machine ou identifiant machine, IP client (attention au RGPD), etc ...).
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
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Communication PHP & Autoit

#5

Message par Nine »

Pour l'encryptage, voir l'UDF Crypt Management dans le fichier d'aide, plus particulièrement _Crypt_DecryptFile et _Crypt_EncryptFile
ADomani
Niveau 1
Niveau 1
Messages : 13
Enregistré le : dim. 09 mai 2021 05:57
Status : Hors ligne

Re: Communication PHP & Autoit

#6

Message par ADomani »

Tlem a écrit : lun. 22 févr. 2021 01:10 Bonsoir.
Pourquoi ne pas passer par un traitement coté serveur ?
C'est effectivement le principe de base à faire ou éventuellement sur le principe des Clef Public (coté serveur) et Privée (coté client)
Ca change rien coté application (AutoIt) et reste très basic a faire coté serveur, sans devoir même passer par une BDD.

Les Vérifications et/ou Contrôles ne se font jamais coté client (utilisateur) c'est une règle de base élémentaire de sécurité !
Modifié en dernier par ADomani le dim. 09 mai 2021 08:15, modifié 1 fois.
Répondre