Cerber

Programmation d'applications complexes
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Cerber

Message par Zorro »

Cerber est un prg de base pour montrer comment on peut filtrer
et choisir les prg qui peuvent etre ouvert sur votre Ordi

le prg commence par demander un mot de pass , pour eviter que n'importe qui puisse changer les regles
entrez "zorro"

ensuite l'interface s'affiche , vous aurez alors la liste des fenetres actuellement ouvertes sur votre Ordi
dans une ListIconGadget muni de cases a cocher

il suffit de cocher une ou plusieurs case des prg (ou fenetres) que vous ne voulez pas qu'ils soient en marche (ça va les arreter ..) ou ouverte (pour les fenetres)
bref, on creer les regles !

une fois la case "Activ" coché , le timer vérifiera toutes les 10 secondes si l'une des fenetres dont la case est cochée , est ouverte, si c'est le cas, Cerber, va la refermer

il peut s'agir d'une fenetre de navigateur, ou d'une fenetre pointant sur l'un de vos dossiers ...

si on reduit cerber , le fait de vouloir le reafficher, redemande le mot de pass


en l'etat, je ne sauve rien, donc si on quitte cerber, il faudrai bien sur re-cocher les fenetres qu'on ne veux pas voir actives
il suffirai de sauver les regles pour ensuite les retrouver au prochain lancement de cerber

de plus, je n'actualise pas la liste de applications ouvertes APRES le lancement de Cerber


c'est une base pour faire un programme qui pourrai empêcher un membre de la famille d'utiliser un jeux, ou une adresse internet précise
voir carrement une application

bref un Cerber de votre ordinateur

il demande a etre paufiné , je pense toutefois, que c'est une bonne base pour commencer

je n'ai pas ajouté de test pour relancer Cerber si celui-ci etait viré de la ram par un Ctrl+Alt+Del
mais ce serai relativement simple a ajouter :)

Image
le code :

Code : Tout sélectionner

;***********************************************
;Titre  :*Cerber
;Auteur  : ZORRO
;Date  :16/03/2017
;Heure  :16:21:04
;Version Purebasic :  PureBasic 5.50 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************

;{- Enumerations / DataSections
;{ Windows
Enumeration
		#Win
EndEnumeration
;}
;{ Gadgets
Enumeration
		#ListView_0
		#Text_1
		#Text_2
		#Text_3
		#Button_Ajout_Prg
		#Button_supr_prg
		#CheckBox_activ
		#Timer
EndEnumeration
;}
;{ Fonts
Enumeration
		#Font_Text_2
EndEnumeration
;}
Define.l Event
Global Activ,pass.s,Flag_reduc.i
;}

Declare openwindow_win()
Declare liste_window(liste_id)



; Verifie si on lance 2 fois Cerber , si c'est le cas, demande a nouveau le mot de passe
; et ne lance pas 2 fois Cerbert mais réactualise Cerber
#MUTEX_ALL_ACCESS = $1F0001
Application.s= "Cerber"

Hmutex = OpenMutex_( #MUTEX_ALL_ACCESS , #False ,Application)

If Hmutex=0
		;Si le mutex existe alors l'application est déjà lancée.
		;sinon on le crée
		Hmutex = CreateMutex_( #Null , #True , Application)
		If Hmutex=0
				;Fin du programme mutex non créer
				CloseHandle_(Hmutex)
				End
		EndIf
Else
		;On recherche l'application
		;pour la mettre au premier plan.
		pass.s=InputRequester( "info","Entrez le password","")
		if pass.s="zorro"
				Handle= FindWindow_( #Null , Application)
				ShowWindow_(Handle, #SW_HIDE )
				ShowWindow_(Handle, #SW_MINIMIZE )
				ShowWindow_(Handle, #SW_RESTORE )
		Endif
		End
EndIf






pass.s=InputRequester( "info","Entrez le password","")

OpenWindow_Win()
;;ListeProcessCourt(#ListView_0)
Liste_Window(#ListView_0)

;{- Event loop
Repeat

; on teste si on cherche  a activer la fenetre de Cerber
		if  GetWindowState(#win)=#PB_Window_Minimize
				Flag_reduc=#true
		Endif
		if GetWindowState(#win)=#PB_Window_Normal and Flag_reduc=#true				 ; on cherche a ouvrir la fenetre de Cerber	
				SetWindowState(#win,#PB_Window_Minimize)  ; on force a etre minimisé par defaut
				
				Flag_reduc=#False
				pass.s=InputRequester( "info","Entrez le password","") ; test le password
				if pass.s="zorro"
				SetWindowState(#win,#PB_Window_Normal) ; c'est le bon password, on active la fenetre pour pouvoir utiliser Cerber modifier ses parametres
				Endif
				
		Endif
		Event = WaitWindowEvent(12)
		Select Event
				; ///////////////////
		Case #PB_Event_Timer  ; chaque seconde		
				If EventTimer() = #Timer ; ok Timer On
						;Liste_Window(#ListView_0) ; on remplis la liste avec le nom des fenetres ouvertes
						Activ= GetGadgetState(#CheckBox_activ) ; on verifie si on a activé
						If Activ=#true ; si actif
								For i=0 to CountGadgetItems(#ListView_0) ; pour chaque ligne de la liste
										if GetGadgetItemState(#ListView_0,i)=#PB_ListIcon_Checked   ; le prg est coché !!
												
												Nom_appli.s=trim(GetGadgetItemText(#ListView_0, i) ); on recupere le nom de l'appli a bloquer
												hWinCalc = FindWindow_(#Null,Nom_appli.s) ; on regarde si le prg est present
												if hWinCalc ; Present ??
														SendMessage_(hWinCalc,#WM_SYSCOMMAND,#SC_CLOSE,0) ; ben on  le ferme 
												Endif
										Endif
								Next i								
						Endif
				Endif
		Case #PB_Event_Gadget
				Select EventGadget()
				Case #ListView_0
				Case #Text_1
				Case #Text_2
				Case #Text_3
				Case #CheckBox_activ 
				EndSelect
				; ////////////////////////
		Case #PB_Event_CloseWindow
				Select EventWindow()
				Case #Win
						CloseWindow(#Win)
						Break
				EndSelect
		EndSelect
Forever
Procedure OpenWindow_Win()
		If OpenWindow(#Win, 536, 143, 362, 494, "Cerber", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
				if pass.s="zorro"
						;ListViewGadget(#ListView_0, 35, 70, 290, 355, #PB_ListView_ClickSelect)
						ListIconGadget(#ListView_0, 35, 70, 290, 355, "Process", 355,#PB_ListIcon_CheckBoxes         )
						TextGadget(#Text_1, 40, 45, 155, 20, "Liste des Applis a bloquer")
						TextGadget(#Text_2, 120, 5, 110, 35, "Cerber")
						TextGadget(#Text_3, 240, 25, 80, 20, "V1.00  By Zorro")					
						CheckBoxGadget(#CheckBox_activ, 255, 45, 60, 20, "Active")
						; Gadget Fonts
						SetGadgetFont(#Text_2, LoadFont(#Font_Text_2, "Microsoft Sans Serif", 24, #PB_Font_Bold|#PB_Font_HighQuality))
						; Timer
						AddWindowTimer(#Win, #Timer, 10000) ; chaque seconde
				Endif
		EndIf
EndProcedure

;-*********************************



Procedure Liste_Window(liste_ID)
		ClearGadgetItems(liste_ID)
		hwnd.l = 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
						txt.s = Space (256)
						GetWindowText_ (hwnd, txt, 256)
						If txt <> ""
								;   Debug txt
								AddGadgetItem(liste_ID, -1, txt)
						EndIf
						; EndIf
				EndIf
				hwnd = GetWindow_ (hwnd, #GW_HWNDNEXT )
		Wend
EndProcedure


;Epb
;}




Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Cerber

Message par Micoute »

Merveilleux, merci pour le partage
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cerber

Message par Ar-S »

J'avais utilisé ça pour une protection d'un logiciel de slideshow spécifique que j'avais fait pour un client.
Il s'occupait de fermer le taskmanager des que l'utilisateur l'appelait, et de bloquer les captures d'ecran.
Le tiens est un bon début pour de programme en tout cas. Merci pour le partage.

Note : Il faut que tu vires cerber de la liste sinon la protection va vite être outrepassée :D
~~~~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
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Cerber

Message par Zorro »

Ar-S a écrit :Note : Il faut que tu vires cerber de la liste sinon la protection va vite être outrepassée :D
ben en principe seul l'administrateur du prg a acces aux autorisations
si le mec est assez con pour interdire le programme d'interdiction
là, je peux plus rien pour lui :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Cerber

Message par JohnJohnsonSHERMAN »

Exellent :)

Ca me rapelle un utilitaire que j'avait fait, qui listait et loggait toutes les fenêtres ouvertes, avec possibilité de killer le processus associé ;) Je dois l'avoir encore quelquepart sur un vieux disque
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cerber

Message par Ar-S »

Petit correctif de ton post
un Endif² => Endif ;)
~~~~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
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Cerber

Message par Zorro »

toujours le meme probleme de mon Starter :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

Re: Cerber

Message par ChaudEf »

Très intéressant, merci pour le partage :D

Que veut tu dire par

Code : Tout sélectionner

ou une adresse internet précise
Windows 10 x64 -- Purebasic 5.70 LTS x86
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Cerber

Message par Zorro »

ben avant de lancer Cerber

ouvre une adresse url precise avec ton navigateur exemple: http://www.meteofrance.com/previsions-meteo-montagne/
la partie "Montagne" de meteo France ...
si c'est bien l'onglet Actif dans ton navigateur ,
en lançant cerber , tu aura la fenetre affichée dans la liste sous la forme :
Image

donc tu pourra faire fermer le navigateur seulement si cette adresse est affichée dedans et l'onglet actif

on peux tout aussi bien ajouter 2 boutons dans Cerber pour ajouter dans la liste a la main un lien vers
une adresse ou un prg local ...

je le ferai tres bientot... (pour le moment je suis sur autre chose ) qui n'a rien a voir (je telecharge des tuilles satellites
pour le decors de mon simulateur de Vol X-plane :) )

ps: en meme temps je me rends compte que mon systeme de fermeture d'applications est trop propre
pour le navigateur mozilla par exemple, avant de fermer un onglet, ça demande si on veux bien le faire ....

il faudrai passer par une autre façon de tuer le Process , qui ferme RADICALEMENT le prg ans avoir a passer
par une autorisation .... :)
enfin ici le but etait surtout de montrer qu'on peut detecter une application, pour éventuellement la fermer
(voir simplement la deplacer....en dehors de l'ecran , ça peut se faire aussi :) )
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cerber

Message par Ar-S »

L'idée serait de faire un second timer listant les process ouvert (ou fenêtres) et d'ajouter les éléments non présents dans la liste.
Je suis en train de faire ma version de cerber avec ton squelette ;), je l’appellerai Argus Protector :D
~~~~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
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Cerber

Message par Zorro »

Ar-S a écrit :L'idée serait de faire un second timer listant les process ouvert (ou fenêtres) et d'ajouter les éléments non présents dans la liste.
Je suis en train de faire ma version de cerber avec ton squelette ;), je l’appellerai Argus Protector :D
oui c'etait bien l'idée de base (l'utilisation d'un autre timer pour la mise a jour :) )
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cerber

Message par Ar-S »

Pour Argus je prends un autre chemin, je m'oriente vers le nom de l'exe et non de la fenêtre. Je me suis rendu compte que je cherchais firefox mais que la fenêtre indiquait le nom de l'onglet en cours.. Ce qui n'est pas des plus intéressant pour bloquer l'appli.
Je pense aussi arrêter le Scan auto des process. L'utilisateur choisira ses exe via un explorateur. (ou permettre les 2 je me tâte encore).
~~~~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
Répondre