Binärdatei zusammensetzen

  • Hi,

    ich habe zwei Scripte erstellt. Das einen spaltet eine Datei in einzelnen Files auf, das anderes soll diese wieder zusammensetzen. Aber leider ist die Datei nach dem Zusammensetzen nichtmehr lauffähig. Als datei kann man eine beliebige exe die >16KB ist nehmen.

    Datei splitten:

    Spoiler anzeigen
    [autoit]

    $dateiname = "datei.exe"
    $FileOpenBinary = FileOpen($dateiname, 16)
    $FileRead = FileRead($FileOpenBinary)
    $FileSendSizeLeft = BinaryLen($FileRead)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $start = 1
    While 1
    If $FileSendSizeLeft > 16000 Then
    $teilbin = BinaryMid($FileRead, 1, 16000)
    IniWrite($dateiname & ".meta", "Fragmente", $start, 16000)
    $file = FileOpen($start & ".aubin", 18)
    FileWrite($file, $teilbin)
    FileClose($file)

    [/autoit] [autoit][/autoit] [autoit]

    $FileSendSizeLeft = $FileSendSizeLeft - 16000
    $start = $start + 16000
    Else
    $teilbin = BinaryMid($FileRead, $start)
    IniWrite($dateiname & ".meta", "Fragmente", $start, $FileSendSizeLeft)
    $file = FileOpen($start & ".aubin", 18)
    FileWrite($file, $teilbin)
    FileClose($file)
    Exit
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($FileOpenBinary)

    [/autoit]


    Datei zusammensetzen:

    Spoiler anzeigen
    [autoit]

    $dateiname = "datei.exe"
    $var = IniReadSection($dateiname & ".meta", "Fragmente")

    [/autoit] [autoit][/autoit] [autoit]

    $finalfile = FileOpen($dateiname, 17)

    [/autoit] [autoit][/autoit] [autoit]

    For $a = 1 To $var[0][0] Step 1
    $fragment = FileOpen($var[$a][0]&".aubin", 16)
    $FileRead = FileRead($fragment )
    FileClose($fragment)
    FileWrite($finalfile, $FileRead)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FileClose($finalfile)

    [/autoit]

    Weiß jemand was ich falsch mache?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (6. April 2011 um 20:38)

  • Mh? wird doch garkeine 32kb ini datei erstellt. In der ini werden ja nur die namen der .aubin gespeichert mehr nicht.

    Nach dem Zusammensetzen hat die Datei danach auch wieder die richtige größe nur sie geht halt eben nicht. Sprich es kommt die Meldung, dass es keine zulässige Win32-Anwendung ist.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Schnuffel hats gelöst. Hatte in dem ersten "BinaryMid" nicht die $start reingeschrieben gehabt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Sorry, hatte den Code nur überflogen. :whistling:

    Das das Problem gelöst ist, wollte ich nur sagen, dass das Zusammensetzen genau den doppelten Binärstring erzeugt....


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Mh? Also das ist nix doppelt. Datei ist genau so groß wie vorher :).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.