Español
Foro

MapFileAndCheckSum

 

Georg
Teles
¡Hola Allerseits,
tener mich hier seit el Anmeldung desafortunadamente nie geblickt, aber hobbymäßig trotzdem algunos Programas geschrieben (tal vez poste Yo el en Gelegenheit veces), nu tener Yo una Cuestión
Weiß alguien como Función MapFileAndCheckSum genau funktioniert ?
KompilierenMarcaSeparación
DEF MapFileAndCheckSum(3) ! "Imagehlp","MapFileAndCheckSumA"
>

... por Probieren Yo una Code geschrieben, pero en gewissen Größen rechnet él me el "Checksumme" falso en: (en Byte) 8, 12, 16, 20, 28, 32, ... 722 más tener Yo no ausprobiert ...

a dahin tener Yo con Textdateien probiert, aber auch con otro Dateitypen, EXE JPG y esta ha él auch en algunos Archivos correcto, en otro falso gerechnet ...

... el Grund wozu ch el brauche es, dass Yo anstatt cada vez el Expediente a escribir en esta con el oben genannten Función abzurufen, esta Función mittels Zona intern berechnen dejar möchte.

hier natürlich el todo Code inklusive Ventana Drag & Drop y alles Schnickschnack, el Función, el "MapFileAndChecksum" sustituir se, heisst "CR2", el Werte voluntad en el Liste bajo "meine CRC" aufgelistet, el con "MapFileCheckSum" bajo "CheckSum" natürlich
KompilierenMarcaSeparación
 $H windows.ph
'Set("ErrorLevel", 0)
Def DragAcceptFiles(2) !"SHELL32","DragAcceptFiles"
Def DragFinish(1) !"SHELL32","DragFinish"
Def DragQueryFile(4) !"SHELL32","DragQueryFileA"
DEF MapFileAndCheckSum(3) ! "Imagehlp","MapFileAndCheckSumA"
Declare HeadSum&,CheckSum&
Declare E%, PFn#, anz&, zah&, B01%, lstB&, winico&, lst$
WinMain(510,260)
Cls ~Getsyscolor(15)
Objects()
Activities()

Proc WinMain

    Parameters x&,y&
    Windowtitle "Checksum - Drag & Drop"
    Windowstyle 8+16+512
    Window ((%MaxX/2)-(x&/2)),((%MaxY/2)-(y&/2))-x&,y&
    winico& = Create("hIcon",Par$(0),0)
    SendMessage(%hwnd,$80,1,winico&)
    ~SetWindowLong(%hwnd,-16,$92CA0000)
    PopUp "&Datei"
    AppendMenu 100,"Öffne Liste"
    AppendMenu 101,"Speichere Liste"
    Separator
    AppendMenu 102,"Beenden"
    PopUp "&Liste"
    AppendMenu 200,"Auswahl löschen"
    AppendMenu 201,"Löschen"

Endproc

Proc Objects

    lstB& = Create("GridBox",%HWnd,"Datei;0;115;Größe in Byte;1;100;CheckSum;1;80;meine CRC;1;80;Vergleich;1;75",2,5,5,493,200)
    DragAcceptFiles(%HWnd,1)

EndProc

Proc Activities

    Usermessages 563
    CheckList
    Clear E%

    WhileNot E%

        Waitinput

        If %Message = 563

            Drag()

        ElseIf %Key = 2

            Inc E%

        ElseIf MenuItem(100)

            lst$ = LoadFile$("Öffne Datei:","Alle Dateien |*.*")

            If %Button = 1

                op_(lst$)

            EndIf

        ElseIf MenuItem(101)

            sa_()

        ElseIf MenuItem(102)

            Inc E%

        ElseIf MenuItem(200)

            del_(GetCount(lstB&),1)

        ElseIf MenuItem(201)

            del_(GetCount(lstB&))

        EndIf

        CheckList()

    Endwhile

    DragAcceptFiles(%HWnd,0)

EndProc

Proc Drag

    DIM PFn#,261
    anz& = DragQueryFile(&UWParam,$FFFFFFFF,PFn#,261)
    Clear zah&

    While zah&<anz&

        Clear PFn#
        DragQueryFile(&UWParam,zah&,PFn#,261)
        Ad_(String$(PFn#,0))
        Inc zah&

    EndWhile

    Dispose PFn#
    DragFinish(&UWParam)

EndProc

Proc op_

    parameters file$, z$
    Assign #1,file$
    Reset #1

    If %IOResult

        Messagebox("Datei kann nicht gelesen werden!","Fehler",16)

    Else

        WhileNot EOF(#1)

            Input #1, z$
            AddString(lstB&,z$)

        EndWhile

    EndIf

    Close #1

EndProc

Proc sa_

    Parameters file$
    file$ = $progdir+"list_"+Date$(3)+"_"+Left$(Time$(0),2)+"."+Right$(Time$(0),2)+"."+Left$(Time$(1),2)+".txt"
    Assign #1,file$
    OpenRw #1
    Close #1
    Assign #1,file$
    Append #1

    WhileLoop 0,GetCount(lstB&)-1

        Print #1,GetText$(lstB&,&loop,0)+"|"+GetText$(lstB&,&loop,1)+"|"+GetText$(lstB&,&loop,2)+"|"+GetText$(lstB&,&loop,3)+"|"+GetText$(lstB&,&loop,4)

    EndWhile

    Close #1

EndProc

Proc Ad_

    Parameters file$, size&, crc&, cr2&, msg$
    crc& = crc(file$)
    cr2& = cr2(file$)
    size& = FileSize(file$)
    file$ = SubStr$(file$,-1,"\\")

    If crc& = cr2&

        msg$ = "gleich"

    Else

        msg$ = "UNgleich"

    EndIf

    AddString(lstB&,file$+"|"+Str$(size&)+"|"+Str$(crc&)+"|"+Str$(cr2&)+"|"+msg$)

EndProc

Proc crc

    Parameters File$
    Clear Headsum&, Checksum&
    MapFileAndCheckSum(Addr(File$),addr(Headsum&),addr(Checksum&))
    Return Checksum&

EndProc

Proc cr2

    Parameters File$,fs&,fs#,p%
    Clear fs&,p%
    fs& = Filesize(file$)
    Dim fs#, fs&
    Clear fs#
    Assign #2,file$
    Openrw #2
    Blockread(#2,fs#,0,fs&)
    Close #2

    WhileLoop 0,fs&\2

        p% = p%+word(fs#,&loop*2)

        If p% >= 65535

            p% = (p%-65535)

        endif

    EndWhile

    p% = (p%+fs&)
    Dispose fs#
    Return p%

EndProc

proc del_

    Parameters c&, p&

    If p& = 1

        WhileLoop 0,(c&-1)

            If GetState(lstB&,(c&-1)-&loop) >= 2

                DeleteString(lstB&,(c&-1)-&loop)

            EndIf

        EndWHile

    Else

        WhileLoop 0,(c&-1)

            DeleteString(lstB&,(c&-1)-&loop)

        EndWHile

    EndIf

EndProc

Proc CheckList

    If GetCount(lstB&)

        EnableMenu 200,0
        EnableMenu 201,0

    Else

        EnableMenu 200,1
        EnableMenu >201,1

    EndIf

ENDPROC

FIN

El Función scheint no simplemente a ser, aber más que Probieren kann Yo no, en el Netz es auch no mehr darüber.
 
XProfan 10
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

16.03.2013  
 



¡Hola Georg,

Yo lo verstehe es por lo tanto de Exen oder DLL una Signatur a erzeugen,
más no de otro Archivos.
MSDN
This function is used by any application that creates or modifies a executable image. Checksums are required for kernel-mode drivers and some system DLL.


Was genau möchtest Usted letztendlich erzielen?
 
17.03.2013  
 




Georg
Teles
Hi IF,

sí korrekt, lo es son DLL y EXE, el Checksumme se bajo Anderem en el Encabezamiento el DLL / EXE "mitgeschleppt" y antes el Ausführen se el Checksumme gebildet y el verglichen, lo se also geprüft, si el Programa manipuliert wurde o si überhaupt kompatibel es al jeweiligen PC, lo wäre sí unschön si beim Ausführen des Programms para Choque des PC kommen sería neech ...

früher tener Soy un Contribución hier gelesen, lo ging por lo tanto esta Función a nutzen, en propio Programas oder Archivos a schützen, ändert uno wenigstens 1 Byte, así ändert el komplette Summe, y esta "Summe" es el Yo mi, esta Función puede ser scheinbar para cada Dateityp uso, sólo se esta Summe no en el Expediente hinterlegt beispiel TXT, uno kann profano dijo el Summe de beliebigen Archivos forma.

Was Yo erzielen möchte erkläre Yo otra vez kurz: Como el CheckSum Función zwangsläufig una Pfad a Expediente benötigt möchte Yo mittels el eigenen Función el gleiche Ergebnis erziehen, a una Bereichs anstatt el Expediente.

El Función se eben intern en el Programa el Checksumme forma puede sin una Expediente a escribir ... Yo merke gerade, dass lo en größeren Archivos bastante largo dauert a Yo el Summe habe ... naja egal, Yo antes una Archivierer a escribir, y esta Función voluntad Yo para muy kleine Bereiche uso, y zwar para el Contraseña Yo ya 2 Archivierer geschrieben, uno con Passwortschutz aber el speichert él desafortunadamente con, y yo voluntad esta Función irgendwie anstatt des Passwortes nutzen ...

Yo merke sí todavía qué, Yo costumbre el Función así sí garnicht como Checksum, lo funktioniert sí ya Yo lo voluntad, Yo teste veces si él correcto kodiert y dekodiert ...
 
XProfan 10
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.03.2013  
 



Tal vez wäre qué Findus hier Nuevo ha hilfreich(él): [...] 
 
17.03.2013  
 




Georg
Teles
Schöner Code, desafortunadamente arbeite I, con XProfan 10 y "encode64" hay como no
naja el Ejemplo zeigt Textverschlüsselung por Umsortieren, el voluntad Yo sí vermeiden, passt ya, Yo tüftel veces más ...
 
XProfan 10
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.03.2013  
 



Tomar doch FreeProfan: [...] 
 
17.03.2013  
 




Georg
Teles
Gracias IF, 64 Bit hay en efecto Juhuuuu

tener ahora el Solución ...
Mi Función macht genau el, qué MapFileAndCheckSum auch allerdings muy langsam, para 1 MByte braucht el Programa 22,875 Sekunden, aber el es egal, Yo wende el sólo para kleine Bereiche a

Anscheinend rechnet el Función el Rest el Summe uno Expediente WORD para WORD zusammen...
BZW como Yo verstanden habe, sobald el Summe des ersten WORD con el zweiten Max. erreicht oder größer es (65535), se lo abgezogen, danach se el Rest el restos con el nächsten WORD addiert, después de cada Summe se lo otra vez geprüft, si el Summe Max. erreicht oder größer es, en diesem Fall se el Valor otra vez abgezogen usw ...
KompilierenMarcaSeparación
Proc cr2

    Parameters File$,fs&,fs#,p%,s%
    Clear fs&,p%,s%
    fs& = Filesize(file$)
    Dim fs#, fs&
    Clear fs#
    Assign #2,file$
    Openrw #2
    Blockread(#2,fs#,0,fs&)
    Close #2

    If fs& MOD 2 = 0

        s% = (fs&\2)-1

    ElseIf fs& MOD 2 = 1

        s% = (fs&\2)

    EndIf

    WhileLoop 0,s%

        p% = p%+word(fs#,&loop*2)

        If p% > 65534

            p% = (p%-65535)

        endif

    EndWhile

    p% = (p%+fs&)
    Dispose fs#
    Return p%

ENDPROC

 
XProfan 10
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

21.03.2013  
 



Dann sería Yo el Función (el Teil el rechnet) en un nProc packen -

el va entonces más rápido como el Blitz.
 
21.03.2013  
 




Georg
Teles
¡Hola, Voy a veces hier el Thema auffrischen tener veces para media Archivierer una Passwortsystem überlegt, funktioniert en etwa después de diesem Principio...

Wer Lust para Testen ha ^ ^ el Test schreibt sólo el Head meines Archivierers y Contraseña + abierto y Passwortabfrage ... lo se una Expediente creado asd.tew

Descargar

214 kB
Hochgeladen:07.05.2013
Ladeanzahl156
Descargar
 
XProfan 10
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.05.2013  
 



Yo bin no sicher, si el Contraseña sicher hinterlegt se.

Wenn Yo, el Bytewert uno individual Passwortzeichens en 1 erhöhe entonces
debería se en el Expediente no auch simplemente sólo 1 Bytewert en 1 erhöhen. So
debería el Contraseña incluso garnicht en el Expediente posición pero más una
Prüfsumme y sólo si Prüfsummen übereinstimmen entonces stimmen el
Passworte überein.
 
07.05.2013  
 




Georg
Teles
Naja el es sí el Sache, dass el Passowrt garnicht con drin es kannst veces el Expediente con Notepad abierto y después de el Contraseña suchen, como findest du nichts.

habe fast vergessen, una Leerzeichen debería uno no benutzen, el funktioniert entonces meistens no, Yo teste veces más ...

Editar: drin es auch sólo el Prüfsumme, allerdings es ellos con allen Anderen Parametern verknüpft sodass si uno intenta el Encabezamiento a manipulieren, se el Programa darauf auch reagieren, theoretisch tener Yo el ya überlegt
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.05.2013  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

10.771 Views

Untitledvor 0 min.
Georg Teles25.07.2023
Michael W.01.03.2023
RudiB.27.10.2021
Thomas Zielinski23.10.2021
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Georg Teles (6x)
iF (5x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie