Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Asterischi delle password sotto Windows XP

    Salve, ho bisogno di aiuto. Sto sviluppando un software che, tra le varie funzioni, dovrebbe consentire di decriptare gli asterischi utilizzati per nascondere le password. In particolare, il programma dovrebbe essere in grado di tradurre in caratteri normali gli asterischi di tutte le password visibili sullo schermo.

    Il perché di questa funzione è presto detto: a chi, come il sottoscritto, capita di salvare la password di accesso a Internet per non doverla riscrivere a ogni collegamento viene da chiedersi cosa succederebbe se, a un certo punto, la si dimenticasse. Basterebbe deselezionare la casella "Salva Password" per far sparire definitivamente gli asterischi e perdere la possibilità di collegarsi. Da qui è nata la necessità di sviluppare una funzione che fosse di aiuto in questo senso.

    La funzione di cui sopra si ottiene inserendo il seguente codice in un modulo:

    codice:
    Option Explicit
    
    Public Declare Function EnumChildWindows Lib "User32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Public Declare Function EnumWindows Lib "User32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
    Public Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    
    Public Const EM_GETPASSWORDCHAR = &HD2
    Public Const EM_SETPASSWORDCHAR = &HCC
    Public Const EM_SETMODIFY = &HB9
    Public Const SW_HIDE = 0
    Public Const SW_SHOW = 5
    
    Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
      EnumChildWindows hwnd, AddressOf EnumWindowsProc2, 1
      EnumWindowsProc = True
    End Function
    
    Public Function EnumWindowsProc2(ByVal hwnd As Long, ByVal lParam As Long) As Long
      If SendMessage(hwnd, EM_GETPASSWORDCHAR, 0, 1) Then
       UpdateWindow hwnd
      End If
      EnumWindowsProc2 = True
    End Function
    
    Public Sub UpdateWindow(hwnd As Long)
      SendMessage hwnd, EM_SETPASSWORDCHAR, 0, 1
      SendMessage hwnd, EM_SETMODIFY, True, 1
      ShowWindow hwnd, SW_HIDE
      ShowWindow hwnd, SW_SHOW
    End Sub
    
    Public Function UnmaskPasswords()
      EnumWindows AddressOf EnumWindowsProc, 1
    End Function
    edit by xegallo: usa i tag

    Questa funzione sembra funzionare perfettamente sotto Windows 95, 98 e Millennium. Per "smascherare" tutti gli asterischi presenti sullo schermo (anche appartenenti ad applicativi diversi), è sufficiente richiamare UnmaskPasswords.

    Il problema sorge quando si utilizza il programma sotto Windows XP, dal momento che i caratteri usati per celare le password non sono i classici asterischi bensì i "pallini" tipicamente usati negli elenchi puntati. In tal caso, la funzione descritta non produce alcun risultato.

    Qualcuno sa quali modifiche bisogna apportare al codice di sopra per rendere la function funzionante anche sotto Windows XP?

    Grazie in anticipo.

    Pasquale Esposito
    Perugia

  2. #2
    La tua funzione non funzionerà con WinXp perchè queste api messe insieme riconoscono qual'è il carattere per le password quindi dovrebbe funziare su Xp, ma Xp gestisce le password con maggiore sicurezza.Devi trovare un alro modo!

  3. #3
    Caro aserto1, non credo che il fatto che il codice non funzioni sotto Windows XP dipenda da particolari meccanismi di protezione presenti nel sistema operativo. Se cambi la modalità di visualizzazione dell'interfaccia di Windows XP impostando lo stile di Windows 9x, noterai che anche gli asterischi tornano ad essere veri asterischi. Così facendo, il codice da me fornito funziona senza alcun problema. Provare per credere.

  4. #4
    esposito credo che il problema sia semplicemente le costanti

    Public Const EM_GETPASSWORDCHAR = &HD2
    Public Const EM_SETPASSWORDCHAR = &HCC

    che cambiano valore con la nuova grafica
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    sì ma la funzione dovrebbe capire qual'è il carattere della password ma non lo fa con il pallini. Boh non so che dirti!

  6. #6
    Ci avevo pensato anch'io. Il fatto è che non saprei che valori abbinare alle costanti sotto Windows XP e, inoltre, bisognerebbe considerare entrambe le opzioni (asterischi o pallini).

    Originariamente inviato da xegallo
    esposito credo che il problema sia semplicemente le costanti

    Public Const EM_GETPASSWORDCHAR = &HD2
    Public Const EM_SETPASSWORDCHAR = &HCC

    che cambiano valore con la nuova grafica

  7. #7
    purtroppo non ho a disposizione win xp e non posso provare ma io proverei a fare un hook su una textbok con passwordchar = true e sniffare tutti i mex che l'os passa nel momento del digit
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  8. #8
    Suggerimento interessante. Potresti gentilmente tradurlo in codice? Perdona la mia ignoranza, ma come si fa a "sniffare tutti i mex che l'os passa nel momento del digit"?

    Originariamente inviato da xegallo
    purtroppo non ho a disposizione win xp e non posso provare ma io proverei a fare un hook su una textbok con passwordchar = true e sniffare tutti i mex che l'os passa nel momento del digit

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.