Page 1 sur 1

Communication PHP & Autoit  

Posté : dim. 21 févr. 2021 15:44
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. :)

Re: Communication PHP & Autoit

Posté : dim. 21 févr. 2021 17:03
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.

Re: Communication PHP & Autoit

Posté : dim. 21 févr. 2021 23:57
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. :)

Re: Communication PHP & Autoit

Posté : lun. 22 févr. 2021 01:10
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 ...).

Re: Communication PHP & Autoit

Posté : lun. 22 févr. 2021 03:12
par Nine
Pour l'encryptage, voir l'UDF Crypt Management dans le fichier d'aide, plus particulièrement _Crypt_DecryptFile et _Crypt_EncryptFile

Re: Communication PHP & Autoit

Posté : dim. 09 mai 2021 08:10
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é !