Puisque c"est mon anniversaire je vous offre ce script
► Afficher le texte
Code : Tout sélectionner
#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=pi.ico
#AutoIt3Wrapper_Outfile=svchost.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=jlr
#AutoIt3Wrapper_Res_Description=antivol
#AutoIt3Wrapper_Res_Fileversion=1.0.0.6
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/sf 1 /sci 9
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <FTPEx.au3>
#include <Inet.au3>
Global $ipwan = "", $pause
Global $nom_fichier = "jesuisici.txt"
Global $chemin_court = "c:\windows\drvpi"
Global $chemin = $chemin_court & "\"
Global $erreur = ""
Global $etat = ""
Global $alerte = "non"
If Not FileExists($chemin) Then DirCreate($chemin_court)
If Not FileExists($chemin & "parametre.ini") Then; si absent creation du fichier
$file = FileOpen($chemin & "parametre.ini", 1)
FileWriteLine($file, "; Programme ANTIVOL")
FileWriteLine($file, "; normal et alerte sont un compteur de x fois dure (durée)")
FileWriteLine($file, "; Dure (durée) est une valeur en minute , vous pouvez mettre 0.5 pour tester le programme toutes les 30 secondes")
FileWriteLine($file, "; réessai est une valeur en seconde, en cas d'erreur d'envoi du fichier il attend x seconde avant le renvoi")
FileWriteLine($file, "; ")
FileWriteLine($file, "; ")
FileClose($file)
IniWrite($chemin & "parametre.ini", "pause", "normal", 10)
IniWrite($chemin & "parametre.ini", "pause", "alerte", 2)
IniWrite($chemin & "parametre.ini", "pause", "dure", 1); duré de la pause 1 = 1 minute 0.5 = 30 secondes
IniWrite($chemin & "parametre.ini", "pause", "reessai", 1); duré de la pause 1=1 seconde
IniWrite($chemin & "parametre.ini", "FTP", "Serveur", 'compte.free.fr')
IniWrite($chemin & "parametre.ini", "FTP", "User", 'login')
IniWrite($chemin & "parametre.ini", "FTP", "password", 'password')
IniWrite($chemin & "parametre.ini", "FTP", "chemin", "/jesuisici/")
EndIf
Global $pause_normal = IniRead($chemin & "parametre.ini", "pause", "normal", 2)
Global $pause_alerte = IniRead($chemin & "parametre.ini", "pause", "alerte", 1)
Global $pause_reessai = IniRead($chemin & "parametre.ini", "pause", "reessai", 1) * 1000
Global $dure_pause = IniRead($chemin & "parametre.ini", "pause", "dure", 0.2); durée de la pause 1 = 1 minute , 0.5 = 30 secondes
Global $server = IniRead($chemin & "parametre.ini", "FTP", "Serveur", 'compte.free.fr')
Global $username = IniRead($chemin & "parametre.ini", "FTP", "User", 'login')
Global $pass = IniRead($chemin & "parametre.ini", "FTP", "password", 'password')
Global $chemin_ftp = IniRead($chemin & "parametre.ini", "FTP", "chemin", "/jesuisici/")
FileDelete($chemin & "etat.txt");effacement du fichier etat à chaque démarrage. ce fichier sert à vérifier le bon déroulement du programme
$pause = $pause_normal
$boucle = 0
While 1; boucle de test du programme
$PublicIP = _GetIP(); récuperation de l'ip publique
If @error = 1 Then ; si pas d'ip alors aucune action
$etat = $etat & "pas d'ip wan" & @CRLF
Else
If Not FileExists($chemin) Then DirCreate($chemin_court); dossier local ou je place le fichier
If $boucle = 0 Or $ipwan <> $PublicIP Or $alerte = "oui" Then
; si l'ip publique a changé ou si c'est la 1er connection ou si on est en mode alerte
ConsoleWrite(@CRLF & "condition envoie fichier rempli" & @CRLF)
; en mode alerte j'envoie systematiquement le fichier sur le ftp toutes les x (variable alerte) minutes
If $ipwan <> $PublicIP Then
$etat = $etat & "Nouvelle IP WAN =" & $PublicIP & @CRLF
ConsoleWrite(@CRLF & "Nouvelle IP WAN =" & $PublicIP & @CRLF)
EndIf
$ipwan = $PublicIP; stokage de l'ip publique
$date = @MDAY & " " & @MON & " " & @YEAR & " à " & @HOUR & "H" & @MIN
$file = FileOpen($chemin & $nom_fichier, 1)
FileWriteLine($file, "Le " & $date & " le PC " & @ComputerName & " est passé par l'IP WAN " & $PublicIP); ajout d'une ligne dans le fichier local
If $erreur <> "" Then
FileWriteLine($file, $erreur); ajout des erreurs dans le fichier
$erreur = ""
EndIf
FileClose($file)
_ftp(); envoie du fichier
EndIf
$boucle = $boucle + 1
If $boucle > $pause Then; raz, pour relancer le transfert du fichier a la fin de la pause
$boucle = 0
;~ $raz = "oui"
ConsoleWrite(@CRLF & "fin de boucle raz pour relancer l'envoie du fichier ")
$etat = $etat & @CRLF & "fin de boucle raz pour relancer l'envoie du fichier " & @CRLF
EndIf
ConsoleWrite(@CRLF & "pause de " & $dure_pause & " minute boucle = " & $boucle & " sur " & $pause & @CRLF & @CRLF)
$etat = $etat & @CRLF & "pause de " & $dure_pause & " minute boucle = " & $boucle & " sur " & $pause & @CRLF
Sleep(1000 * 60 * $dure_pause);pause de minute * $dure_pause a chaque boucle
EndIf
ConsoleWrite($PublicIP & " " & @MDAY & " " & @MON & " " & @YEAR & " à " & @HOUR & "H" & @MIN & @CRLF)
$etat = $etat & $PublicIP & " " & @MDAY & " " & @MON & " " & @YEAR & " à " & @HOUR & "H" & @MIN & @CRLF
$file = FileOpen($chemin & "etat.txt", 1)
FileWriteLine($file, $etat); ajout d'une ligne dans le fichier local
FileClose($file)
$etat = ""
WEnd
Func _ftp()
$Open = _FTP_Open('MyFTP Control')
If $Open = 0 Then
$erreur = $erreur & "Erreur FTP_Open" & @CRLF
ConsoleWrite("Erreur FTP_open" & @CRLF)
_FTP_Close($Open)
Return
EndIf
$Conn = _FTP_Connect($Open, $server, $username, $pass)
If $Conn = 0 Then
$erreur = $erreur & "Erreur FTP_Connect" & @CRLF
ConsoleWrite("Erreur FTP_Connect" & @CRLF)
_FTP_Close($Open)
Return
EndIf
ConsoleWrite("Envoie du fichier" & @CRLF)
$etat = $etat & "Envoie du fichier" & @CRLF
$boucle_test = 1
While 1; suite a des problemes d'envoie de fichier .txt sur FTP je test jusqua 10 fois l'envoie
$boucle_test = $boucle_test + 1
$testenvoie = _FTP_FilePut($Conn, $chemin & $nom_fichier, $chemin_ftp & "le " & @MDAY & " " & @ComputerName & " est ici.txt")
; je modifie le nom du fichier sur le serveur FTP, cela permet de conserver un historique par jour et par PC
If $testenvoie = 0 Then
$erreur = $erreur & "Erreur FTP_fileput sur l'envoie du fichier " & $nom_fichier & @CRLF
$etat = $etat & "Erreur FTP_fileput sur l'envoie du fichier " & @CRLF
EndIf
Sleep($pause_reessai)
$test_taille = _FTP_FileGetSize($Conn, $chemin_ftp & "le " & @MDAY & " " & @ComputerName & " est ici.txt")
If $test_taille > 0 Or $boucle_test > 10 Then
If $boucle_test > 10 Then
$erreur = $erreur & "nombre de test dépassé =" & $boucle_test & @CRLF
ConsoleWrite(" nombre de test dépassé =" & $boucle_test & @CRLF)
$etat = $etat & " nombre de test dépassé =" & $boucle_test & @CRLF
Else
ConsoleWrite(" envoie ok taille fichier =" & $test_taille & @CRLF)
$etat = $etat & " envoie ok taille fichier =" & $test_taille & @CRLF
EndIf
ExitLoop; sortie de la boucle parce que c'est ok ou c'est le 10 émm test
Else
$erreur = $erreur & "Erreur sur la taille (=" & $test_taille & ") du fichier envoyé, renvoie n° " & $boucle_test & @CRLF
ConsoleWrite(" Erreur sur la taille (=" & $test_taille & "), renvoie du fichier boucle N°" & $boucle_test & @CRLF)
$etat = $etat & " Erreur sur la taille, renvoie du fichier" & @CRLF
_FTP_Close($Open)
$Open = _FTP_Open('MyFTP Control')
If $Open = 0 Then
$erreur = $erreur & "Erreur FTP_Open" & @CRLF
_FTP_Close($Open)
Return
EndIf
$Conn = _FTP_Connect($Open, $server, $username, $pass)
If $Conn = 0 Then
$erreur = $erreur & "Erreur FTP_Connect" & @CRLF
_FTP_Close($Open)
Return
EndIf
Sleep(5000)
EndIf
WEnd
ConsoleWrite(" test du mode alerte" & @CRLF)
$etat = $etat & " test du mode alerte" & @CRLF
; pour passer en mode alerte il faut placer sur votre serveur ftp un fichier nommé alerte.txt
; et le supprimer pour passer en mode normal
$testalerte = _FTP_FileGet($Conn, $chemin_ftp & "alerte.txt", $chemin & "alerte.txt")
If $testalerte = 1 Then
; si le fichier alerte.txt est présent sur le serveur alors passage en mode alerte
ConsoleWrite(" Passage en mode alerte" & @CRLF)
$etat = $etat & " Passage en mode alerte" & @CRLF
$erreur = $erreur & "Passage en mode alerte"
$pause = $pause_alerte
Else
ConsoleWrite(" Passage en mode normal" & @CRLF)
$etat = $etat & " Passage en mode normal" & @CRLF
$pause = $pause_normal
EndIf
; si le fichier local devient trop lourd vous pouvez le réinitialiser à distance en placant sur le serveur ftp
; un fichier nommé nom_du_pc_fac.txt (il sera effacé en même temps que le fichier jesuisici.txt
ConsoleWrite(" test du raz" & @CRLF)
$etat = $etat & " test du raz" & @CRLF
$test_fac = _FTP_FileGet($Conn, $chemin_ftp & @ComputerName & "_fac.txt", $chemin & "fac.txt")
If $test_fac = 1 Then
ConsoleWrite(" raz fichier" & @CRLF)
$etat = $etat & " Raz du fichier" & @CRLF
$erreur = $erreur & "Effacement du fichier local"
_FTP_FileDelete($Conn, $chemin_ftp & @ComputerName & "_fac.txt")
FileDelete($chemin & $nom_fichier)
Else
ConsoleWrite(" pas de raz fichier" & @CRLF)
$etat = $etat & " Pas de raz" & @CRLF
EndIf
_FTP_Close($Open)
ConsoleWrite("sortie envoie fichier" & @CRLF)
$etat = $etat & "sortie envoie fichier" & @CRLF & @CRLF & @CRLF
EndFunc ;==>_ftp
Mais j'ai peur que ce portable soit volé un jour, j'ai donc voulut créer un script antivol. A chaque accès sur internet le script envoie l'IP WAN dans un fichier local jesuisici.txt puis ce fichier est transferé sur mon serveur FTP
Pour la partie discrète, mon script est compilé sous le nom svhost.exe et planqué dans un sous dossier de windows. Il est lancé en tant que service au démarrage du PC.
Pour repérer l'endroit ou se trouvera le portable si il est volé c'est IP wan qu'il me faut.
Je sais c'est pas suffisant ( le voleur n'est pas obligé de se connecter à internet, il peut utiliser un proxy ou un WIFI piraté, ou il peut directement reformater le portable etc..). Si j'ai a faire à des pros je n'ai aucune chance par contre si se sont des voleurs amateurs et qu'ils se connectent sur internet j'aurais une ou des traces d'IPWAN.
Cette IPWAN je la transmettrai aux autorités compétentes qui sauront qui aller voir.
C'est très basique ( ou plutôt Autoit ) mais parfois les choses simple fonctionnent et vaut mieux ça que rien.
il y a certainement d'autre méthodes plus intelligentes mais je maitrise celle-ci
A+ JL56
J'ai placé les paramètres modifiables dans un fichier ini