Entrée automatique du login et du pass sur les systèmes nt

Soyez le premier à donner votre avis sur cette source.

Vue 11 239 fois - Téléchargée 959 fois

Description

Le titre n'est pas très clair mais j'ai pas trouvé mieux !
Le but de ce programme est de pouvoir entrez un login et un password dans la boite d'identification au démarrage de windows (XP ou 2000 peut-être NT mais pas sur...).
Ainsi on peut concevoir toute sorte de méthode d'identification pour remplacer celle du mot de passe (Carte à puce etc...)
L'avantage de ma méthode est d'utiliser les identifiants des Dialogues ce qui permet d'être compatible avec n'importe quelle langue... S'il on avait utiliser l'API FindWindow() en ayant entré le titre de la fenêtre cela aurait marché seulement pour l'OS français... !
Avec ma méthode tous les Windows sont compatible (basé sur NT seulement)
Pour que cela fonctionne il faut que le programme soit exécuter en même temps que l'affichage de la boîte de Login.. C'est ici le plus gros problème...
Pour contourner le problème j'ai fait une petite DLL GINA qui exécute le programme au démarrage..
Je posterais cette DLL ce soir sur cppfrance car la j'ai pas le temps..

Malgré ces belles choses :) il y a un quand même un bug:
Lors du vérouillage de l'ordinateur, la fonction n'arrive pas à détecter si l'identification à réussie ou pas..A corriger donc... si quelqu'un arrive n'hésiter pas ;)

J'attend vos commentaires (et vos questions car c'est dur d'être clair sur cette source mais en testant vous comprendrez !!!)

MISE A JOUR DU 22.01.2004
---------------------------------

J'ai mis dans le zip la dll pour éexcuter son programme au démarrage de windows... et aussi un programme pour installer tout ça.. voir mon dernier commentaire... !

Laissez vos commentaires & remarques

Source / Exemple :


Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" ( _
                 ByVal hwnd As Long, _
                 ByVal lpClassName As String, _
                 ByVal nMaxCount As Long) As Long
Public Declare Function GetWindow Lib "user32" ( _
                 ByVal hwnd As Long, _
                 ByVal uCmd As Long) As Long

Public Const WM_SETTEXT  As Long = 12
Public Const BM_CLICK = &HF5
'Fonction réalisée par Cyberdevil - Copyright  2003 Xwave Network
'Elle ne peut en aucun cas être appropriée à un autre nom que celui d'Xwave Network
'http://www.xwaves.net - http://jetforce.xwaves.net
'--------------------------------------------------
Public Function Loginner(ByVal login As String, ByVal password As String, Optional locked As Boolean = False) As Boolean
    Dim hWNDuser As Long, hWNDpass As Long, hWNDok As Long, hWNDgina As Long, ret As Long, ret2 As Long, ret3 As Long
    Dim hWNDlogon As Long, hWNDErreur As Long
    Dim error As Boolean
    hWNDgina = FindWindow("#32770", vbNullString)    'recherche du handle de la fenêtre de login
    If locked = False Then    'si pas vérouillé
        hWNDuser = GetDlgItem(ByVal hWNDgina, 1502)    'recherche du handle du textbox Login de la fenêtre de login
        hWNDpass = GetDlgItem(ByVal hWNDgina, 1503)    'idem que ci-dessus sauf qu'ici, c'est pour le password
        hWNDok = GetDlgItem(ByVal hWNDgina, 1)    'idem que ci-dessus sauf qu'ici, c'est pour le bouton OK
    Else    'si vérouillé
        hWNDuser = GetDlgItem(ByVal hWNDgina, 1953)    'recherche du handle du textbox Login de la fenêtre de login
        hWNDpass = GetDlgItem(ByVal hWNDgina, 1954)    'idem que ci-dessus sauf qu'ici, c'est pour le password
        hWNDok = GetDlgItem(ByVal hWNDgina, 1)    'idem que ci-dessus sauf qu'ici, c'est pour le bouton OK

    End If

    ret = SendMessage(ByVal hWNDuser, WM_SETTEXT, 0, ByVal login)    'on envoie le login

    ret2 = SendMessage(ByVal hWNDpass, WM_SETTEXT, 0, ByVal password)    'on envoie le password

    ret3 = SendMessage(ByVal hWNDok, BM_CLICK, 0, 0)    'on valide le toute
    
    
    hWNDgina = FindWindow("#32770", vbNullString)    'recherche du handle de la fenêtre de login
    hWNDlogon = 0
    If locked = False Then
    hWNDlogon = GetDlgItem(ByVal hWNDgina, 1502)
    Else
    hWNDlogon = GetDlgItem(ByVal hWNDgina, 1953)
    End If
    While hWNDlogon <> 0

    If locked = False Then
    hWNDlogon = GetDlgItem(ByVal hWNDgina, 1502)
    Else
    hWNDlogon = GetDlgItem(ByVal hWNDgina, 1953)
    End If
        If isLoginError() = True Then
        error = True
        GoTo apr:
        End If
        xWait 100
        DoEvents
    Wend
apr:
    If error = False Then
        Loginner = True
    Else
debutfaux:
    hWNDgina = FindWindow("#32770", vbNullString)
         hWNDok = GetDlgItem(ByVal hWNDgina, 2)
         ret3 = SendMessage(ByVal hWNDok, BM_CLICK, 0, 0)    'on valide le toute
         DoEvents
         If isLoginError = True Then GoTo debutfaux:
        Loginner = False
    End If
End Function
'********************************************************************************************
' Name     : xWait
' Purpose  : Wait for the time requested without
'        stopping the execution of other functionsfuck
' Syntax   : xWait(MilsecToWait)
' Parameters : MilsecToWait : Time to wait in millisecond
' Return   : /
'********************************************************************************************
Public Sub xWait(ByVal MilsecToWait As Long)
    Dim lngEndingTime As Long

    lngEndingTime = GetTickCount() + (MilsecToWait)
    Do While GetTickCount() < lngEndingTime
        DoEvents
    Loop
End Sub

Private Function isLoginError() As Boolean
    Dim hWNDgina As Long
    Dim ret As String
    hWNDgina = FindWindow("#32770", vbNullString)    'recherche du handle de la fenêtre de login
    ret = GetDlgItem(hWNDgina, CLng("65535"))
    If ret <> "0" Then
    isLoginError = True
    Else
    isLoginError = False
    End If
End Function

Conclusion :


Je mettrai une mise à jour ce soir en ajoutant un utilitaire permettant d'installer le programme à l'exécution.. Promis pour ce soir !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

waganono
Messages postés
7
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
15 septembre 2006
-
J'ai essayé ce programme à ma sauce mais un truc me chiffonne:
Je suis sous Win 2000 et impossible de capter le HANDLE de la fenêtre
à partir de la fonction FindWindow, est ce une protection de Windows?
Ca marchait bien sous Win 95,98,... mais là mystère

Si quelqu un avait des infos sur cette authentification?
cs_popo66
Messages postés
4
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
9 janvier 2006
-
super interessant, je suis admiratif.
Ridjidji
Messages postés
1
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
10 juin 2006
-
J'ai plusieurs questions :

1) Quand j'essaie de compiler moi-même le la dll sous VC 6, la compilation se passe avec 3 warnings (je crois qu'il n'y en a qu'un ds le log de compilation que tu as mis ds le zip) et la dll ne marche pas.
2) Qu'est-ce qui se passe pour le prog au moment où l'utilisateur se connecte (il est fermé, ou qq chose comme ça ?)
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
salut, sur mon xp cela ne fonctionne pas. alors du coup je me demandai s'il existerai une api qui permettrai de dévérouiller windows, un autologin ? biensur en renseignant l'api avec le nom d'utilisateur et le mot de passe. à votre avis ?
TroXsA
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
-
Bonjour a tous

Philippe734 as tu trouvé des sources interessante sur ce que tu recherche a faire ? (car je recherche a faire la meme chose)

sinon Cyberdevil as tu fait d'autre exemple avec ce type de DLL (gina) ?

Cordialement,
www.troxsa.info
Commenter la réponse de jon256

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.