Page 1 sur 2

bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 13:52
par david
Bonjour,

Je souhaite empêcher un utilisateur de changer de session ou de quitter la page que j'affiche à l'écran (et qui demande de valider un mot de passe pour quitter)
J'avais vu quelque part sur le forum mais plus moyen de retrouver...
J'ai besoin d'une commande (simple si possible car je suis débutant et je dois l'insérer dans un code) permettant:

de bloquer et pouvoir remettre en fonction la touche si le mot de passe est saisi
genre Alt (164), Windows(91), Esc(27), F4(115) qui permettent trop de choses, dont quitter sans autorisation mon mot de passe personnel

Si quelqu'un a une idée de commande, et éventuellement d'autres touches dangereuses du même style
Merci par avance

Re: bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 19:47
par nico
Il me semble que cela ne soit pas possible d'empêcher l'utilisateur de fermer une session, du moins par ce moyen.

Re: bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 20:04
par falsam
nico a écrit :Il me semble que cela ne soit pas possible d'empêcher l'utilisateur de fermer une session, du moins par ce moyen.
Oui parce que quoi qu'il arrive il n'est pas (en principe) possible d'intercepter le Ctrl + Alt + Del.

Procédure minimaliste qui va bloquer le clavier.

Code : Tout sélectionner

;Bloquer un clavier
Enumeration Windows
  #Mainform
EndEnumeration

Global HandleKeyboardHook

Procedure.l KeyboardHook(code, wParam, lParam)
  ProcedureReturn -1
EndProcedure

OpenWindow(#Mainform, 100, 200, 195, 260, "Bloque souris", #PB_Window_SystemMenu)
SetActiveWindow(#Mainform)
HandleKeyboardHook= SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

UnhookWindowsHookEx_(HandleKeyboardHook)


Il reste la souris pour par exemple ajouter un onglet à l'IDE et tenter de saisir du texte.

Mais comme je viens de le dire, Ctrl + Alt + Del n'est pas intercepté.

Au passage, la même procédure pour bloquer la souris cette fois-çi.

Code : Tout sélectionner

;Bloquer une souris (Alt + F4 pour fermer la fenetre)
Enumeration Windows
  #Mainform
EndEnumeration

Global HandleMouseHook

Procedure.l MouseHook(code, wParam, lParam)
  ProcedureReturn -1
EndProcedure

OpenWindow(#Mainform, 100, 200, 195, 260, "Bloque souris", #PB_Window_SystemMenu)
SetActiveWindow(#Mainform)
HandleMouseHook = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseHook(), GetModuleHandle_(0), 0)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

UnhookWindowsHookEx_(HandleMouseHook)



Re: bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 20:25
par falsam
En jouant un peu on peut obtenir ce résultat (Password : 1234)

Code : Tout sélectionner

EnableExplicit

Enumeration Window
  #MainForm
EndEnumeration

Enumeration
  #Password
EndEnumeration

Global HandleKeyboardHook, HandleMouseHook
Global EndOfCode.b, r.rect

;Blocage de la souris
Procedure.l MouseHook(code, wParam, lParam)
  ProcedureReturn -1
EndProcedure

;Blocage partiel du clavier
Procedure.l KeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
    Debug *p\vkCode
    
    Select *p\vkCode
      Case  65 To 90, 164, 9, 162, 91, 115 ;Interdit les lettres de A à Z, Alt, Tab, Ctrl, Windows, F4
        ProcedureReturn 1        
    EndSelect
  EndIf
  
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure

Procedure OnPassword()
  Protected Password.s = GetGadgetText(#Password)
  If Len(Password) = 4 
    If Password = "1234"
      UnhookWindowsHookEx_(HandleKeyboardHook)
      UnhookWindowsHookEx_(HandleMouseHook)

      EndOfCode= #True
    Else
      MessageRequester("Ooops", "c'est pas le bon mot de passe")
    EndIf
  EndIf
EndProcedure

If OpenWindow(0,0,0,500,250,"Bloquer une ou plusieurs touches et la souris" , #PB_Window_ScreenCentered)  
    
  StringGadget(#Password, 224, 101, 50, 25, "", #PB_String_Password|#PB_String_Numeric)
  SetGadgetAttribute(#Password, #PB_String_MaximumLength, 4)
  SetActiveGadget(#Password)
  
  ;Desactive la barre des taches
  EnableWindow_(FindWindow_("Shell_TrayWnd",0),#False)

  ;Minimize toutes les applications
  SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$1A3,0)
  
  ;Blocage clavier
  HandleKeyboardHook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@KeyboardHook(),GetModuleHandle_(0), 0)
  
  ;Blocage souris 
  HandleMouseHook = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseHook(), GetModuleHandle_(0), 0) 
  
  BindGadgetEvent(#Password, @OnPassWord(), #PB_EventType_Change)
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow Or EndOfCode = #True
  
  ;Active la barre des taches
  EnableWindow_(FindWindow_("Shell_TrayWnd",0), #True)
  
EndIf
Je me demande si on ne peut pas bloquer le Task Manager dans la base de registre

Re: bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 22:28
par Ar-S
Franchement faut arrêter avec ce genre de code.
@david, si tu souhaites qu'un utilisateur n'ai pas la main tu lui fait utiliser une session invité.. Sinon à moins de faire un programme nocif je vois pas l’intérêt d'un tel code. Peut être pourrais tu nous expliquer en quoi consiste ton prog.
Mais comme je viens de le dire, Ctrl + Alt + Del n'est pas intercepté.
C'est claire et heureusement. (Windows + L pour changer de session passe aussi).

Sans passer par la barre de registre, il suffit de surveiller les handles des exe clés et de les fermer s'ils sont ouvert. On a déjà croisé pas mal de codes dans ce genre (suffit de chercher un peu). Perso je cautionne pas.

Re: bloquer geler empecher touche clavier

Publié : ven. 05/déc./2014 22:33
par falsam
Ar-S a écrit :Franchement faut arrêter avec ce genre de code.
Tu as raison et je n'ai même pas été voir plus loin.

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 12:27
par david
"Ar-S"]Franchement faut arrêter avec ce genre de code.
@david, si tu souhaites qu'un utilisateur n'ai pas la main tu lui fait utiliser une session invité.. Sinon à moins de faire un programme nocif je vois pas l’intérêt d'un tel code. Peut être pourrais tu nous expliquer en quoi consiste ton prog.
Pas d'intention de nuire, naturellement!

En fait, je fais tourner un prog en continu sur mon pc pro, avec ma session active.
Je ne veux pas qu'on touche à ma session (je l'ai vérouillée par mot de passe purebasic [page demandant un mot de passe au premier plan, et deplacement de la souris automatisé pour éviter que l'ordinateur ne se vérouille à terme et bloque mon programme)
car j'ai fait de l'automation pour que les logiciels s'ouvrent avec mes identifiants et mots de passe sans resaisir tout ça.
Je ne peux donc pas me permettre que quelqu'un s'assoit devant mon ordi en mon absence (jamais vérouillé), et lance un de ces logiciels sécurisés avec mes identifiants... ou ouvre une autre session qui va geler la mienne et bloquer mon programme..

Le soucis, c'est qu'à chaque fois que je suis en repos, j'ai un collègue qui squat mon bureau. Là est le problème

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 13:28
par TazNormand
david a écrit : En fait, je fais tourner un prog en continu sur mon pc pro, avec ma session active.
Il serait peut-être plus simple de transformer ton programme en service Windows, non ? Au moins, ton programme ne serait pas tributaire d'une ouverture de session, mais tournerait tant que le PC est allumé

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 19:48
par Kwai chang caine
Ars a écrit :Franchement faut arrêter avec ce genre de code.
Y'a à boire et à manger dans ce que tu dis.
Tu as raison dans le sens que à cause de ce genre de code et bien d'autre PB est la cible d'utilisateurs peu scrupuleux du fait de son bas niveau, donc de sa puissance, mais aussi de sa facilité à y accéder, sans parler de la taille des exe, et surtout de leur autonomie.
Du fait, on se retrouve à longueur de journée avec des faux positifs, décelés par des methodes heuristiques tellement performantes, qu'elles auraient pu être développées par moi :wink:

Maintenant, comme bon nombre de choses qui finissent par devenir nocives (pour reprendre tes propres termes), elles peuvent être justifiées et utilisées à des fins honnêtes.
Tout comme une arme peut servir à se nourir, se defendre ou tout autre chose, elle peut aussi mal utilisée devenir un danger.
Les medicaments créés pour soigner sont la cause de nombre de morts, volontaires ou non.
Je pourrais trouver des tonnes d'exemples de produits, ou autres choses qui ont été créés pour le bien pour finir par être usités pour le mal :|

Maintenant, si il faut s'interdire tout ce qui peut être dangereux, on se retrouve à filtrer bon nombres de codes, les hooks (Utiles pour les keyloggers, les prises en main de tel ou tel peripheriques), les captures d’écran (dangereuses, liées à un serveur PB, elles peuvent envoyer des captures n'importe ou), les executions en mémoire, les DLL qui pourraient wrapper les fonctions d'une autre DLL et détourner leur fonction principales, les inclusions d'exe dans les data (Cool pour extraire un virus), mais aussi la possibilité de coller un EXE à la suite d'un autre, etc...

Bref, y'a beaucoup de sujets qu'on devrait eviter car on est des gens biens ...enfin j'espere :oops:
Mais cela nous ferait passer à coté de centaines de supers codes utiles, de mon avis bien sur.

Je suis en train d'essayer de lire les données d'un navigateur, alors il faudrait arreter ce genre de code, car c'est evidement pour la creation d'un BOT :?
Depuis 9 ans que j'ai la chance de connaitre PB et ses utilisateurs, bon nombre de fois, je me suis retrouvé confronté à ce genre de réaction, tout bêtement parce que j'explore un peu tous les chemins pour réaliser une action que j'essaie péniblement de réaliser :cry:
J'apprend que ce que j'essaie de faire est la technique des virus 8O et pourtant...suis-je dangereux..si ce n'est pour vos yeux du fait de mes longues proses :oops:

Moi je pense surtout qu'il est peut être dangereux de les mettre entre toutes les mains, ça c'est sur.
Un forum étant un place publique, ou tout le monde peut y piocher ce que les membres ont eu la gentillesse d'y déposer.
Il me semblerait plus judicieux, de créer un lieu privé, ou seuls les membres reconnus depuis un certain temps pourraient y échanger ce genre de codes, plutôt que de les dénigrer ou les interdire
Un peu un DarkPB à l'image du DarkNet :mrgreen:

Enfin ce n'est que mon opinion, qui ne vaut comme d'habitude que ce qu'elle vaut :wink:

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 21:57
par nico
Kwai chang caine, on est tous d'accord, qui ne s'est jamais intéressé sur comment faire pour cacher un processus, empêcher la possibilité de se faire killer son programme; en tout cas, c'est toujours très instructif de découvrir ces méthodes.

Pour le problème de David, je ne sais pas comment ça se passe dans son entreprise mais chez nous, tu quittes ton poste de travail, automatiquement tu verrouilles ton PC avant de partir, simple application des règlements en terme de sécurité.

Il devrait plutôt se concentrer sur comment arrêter son prog à la fermeture de la session et comment le relancer sur mot de passe seulement et peut être aussi arrêter de prendre un café à n'importe quelle heure de la journée. :lol:

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 21:58
par Ar-S
Je t'entends bien kcc, et david tu as l'air d'avoir un projet non nuisible. La solution de TazNormand parait judicieuse dans ton cas.
Mais vu ce que tu dis, je ne vois pas en quoi fermer TA session et la réouvrir lorsque tu reviens serait gênant. Ton Windows+L te lock la session mais ne ferme pas tes programmes. Tu crées une session invité que ton squatteur pourra utiliser s'il le souhaite sans pouvoir foutre le souk.

--edit-- un peu doublon avec nico qui a écrit juste avant moi :)

Sinon il reste l'option baffe dans le museau du squatteur ^^

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 22:13
par Kwai chang caine
Bon ..si on est tous d'accord :wink: 8) ...qu'est ce que vous en pensez de mon DarkPB ? :mrgreen:
J'arriverait peut être à avoir mon BOT à moi :lol:

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 22:14
par falsam
Personnellement je lock ma session (Touche Windows + L ). ça prends 2 secondes et effectivement tout comme Ar-s le signale, ça ne ferme pas les applications.

Ensuite mon pc est équipé d'un lecteur d'empreinte pour ouvrir la session à nouveau et ça prends là aussi 2 secondes.

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 22:16
par Kwai chang caine
Et ben.... 8O chez nous ils se refilent certains codes...quand ils sont pas étiquetés sur le PC :mrgreen:
On pourrait peut etre breveté ce nouveau mode de mémo code :D

Re: bloquer geler empecher touche clavier

Publié : sam. 06/déc./2014 22:17
par falsam
Kwai chang caine a écrit :Bon ..si on est tous d'accord :wink: 8) ...qu'est ce que vous en pensez de mon DarkPB ? :mrgreen:
Je reste pour :)