 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 24.07.2006, 18:34 Titel: fb_hDecode, fb_hEncode, packen und entpacken mit fbgfxlib |
|
|
Hi,
die fbgfxlib bietet eine pack und entpack-Routine kostenlos als Zugabe
Die Routinen bieten keine besonders hohe Packrate aber einem geschenkten Gaul.....
Hier eine einfache Möglichkeit Dateien zu packen Code: | Option Explicit
'Wichtig:
'um diese Funktionen der gfxlib nutzen zu können muß ein Anweisung, wie unten SCREEN, aus
'der gfxlib im Programm benutzt werden. Damit wird die gfxlib in unser Programm gelinkt.
Declare Function Encode Alias "fb_hEncode" (ByVal lpIn As Any Ptr,_
ByVal asize As Integer,_
ByVal lpOut As Any Ptr,_
ByRef out_size AS Integer ) As Integer
Screen 18
Dim as Integer ff, i
Dim As UInteger Filelaenge, j
Dim as String fName
fName="Encode.bas"
ff = Freefile
Open fName for binary access read as #ff
Filelaenge = Lof(ff)
Dim xbuffer (Filelaenge) As UByte
Dim Buffer (Filelaenge) As UByte
Get #ff,, xbuffer()
Close #ff
j = Filelaenge 'j braucht die Angabe der ursprünlichen Anzahl Byte
?"Filelaenge: " & Filelaenge & " Byte"
'nun können wir sie packen:
'Encode bekommt die Adresse von xbuffer, Anzahl Byte von xbuffer,
' die Adresse des Buffers, Anzahl Byte des Buffers
Encode (@xbuffer(0), Filelaenge, @Buffer(0), j)
'nach dem Aufruf enthält j die neue Anzahl Byte (gepackt)
'Buffer als neue Datei speichern:
'nicht ohne die ursprüngliche Dateigröße mitzuspeichern!
'diese wird beim entpacken benötigt.
?"jetzt: " & j & " Byte"
fName = "gepackt.bin"
ff = FreeFile 'als Datei abspeichern
Open fName for binary Access write as #ff
Put #ff,, Filelaenge
For i = 0 To j-1
Put #ff,, Buffer(i)
Next
Close #ff
?"verdisch..."
Sleep
End | und entpacken Code: | Option Explicit
'Wichtig:
'um diese Funktionen der gfxlib nutzen zu können muß ein Anweisung, wie unten SCREEN, aus
'der gfxlib im Programm benutzt werden. Damit wird die gfxlib in unser Programm gelinkt.
Declare Function Decode Alias "fb_hDecode" (Byval lpIn As Any Ptr,_
Byval asize As Integer,_
Byval lpOut As Any Ptr,_
Byref out_size As Integer ) As Integer
Screen 18
Dim As Integer ff, i
Dim As UInteger Filelaenge, j
Dim As String fName
fName="gepackt.bin"
ff = Freefile
Open fName For Binary Access Read As #ff
Filelaenge = Lof(ff)-4 '-4 Byte, die alte Längenangabe
Dim xbuffer (Filelaenge) As Ubyte
Get #ff,, j ' die ursprüngliche Länge
Dim Buffer (j) As Ubyte
Get #ff,, xbuffer() ' die gepackten Daten
Close #ff
?"gepackt: " & Filelaenge & " Byte"
'nun können wir sie entpacken:
Decode (@xbuffer(0), Filelaenge, @Buffer(0), j)
'Buffer als Text - Datei speichern:
?"entpackt: " & j & " Byte"
fName = "entpackt.txt"
ff = Freefile 'als Datei abspeichern
Open fName For Binary Access Write As #ff
For i = 0 To j-1
Put #ff,, Buffer(i)
Next
Close #ff
?"verdisch..."
Sleep
End |
Gruß Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 24.07.2006, 19:37 Titel: |
|
|
Hi volta,
..ich dachte schon, du schaust in deinem Urlaub nur Speisekarten an
Aber jetzt Pack'mers:
Ich kann also diese Funktion prima zum Verschlüsseln von Daten verwenden..
..oder ist das fbgfxlib-Format für fremde Programme lesbar?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 24.07.2006, 20:58 Titel: |
|
|
Sicher ist das nicht.
Jeder kann es mit FreeBASIC Entpacken... .
Du könntest die Datei natürlich auf .zip umtaufen.
Wer kommt schon auf die Idee, das mit FB zu entpacken . _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 24.07.2006, 22:15 Titel: |
|
|
Selbst wenn, ich könnte die ersten 4 Byte mit 'Xor irgendwas' verändern und beim Einlesen wieder Xor'ren und 'irgenwas' hänge ich als ADS dran..
..aber ADS funktionieren halt nur unter NTFS, aber drüber nachdenken ist schon nicht verkehrt..
[Edit]
Ich sollte erst Nachdenken, dann schreiben:
Es gibt genug Programme, die ADS aufspüren..
Und wenn jemand extra eine FAT32-Partition hat und einmal hin und herkopiert, denn isses weg.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 25.07.2006, 10:05 Titel: |
|
|
Die 4 Byte die du für XOR verwendest, kannst du als Passwort verwenden, das sich der User merken soll .
Sinnvoll wäre vielleicht kompremieren mit der Freebasic Methode und dann noch mal "normall" Verschlüsseln.
z.B. Bit Rotieren, XOR irgendwas, + Irgendwas und so weiter. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.07.2006, 14:53 Titel: |
|
|
Hi, warum wollt ihr immer was verstecken
klingt das nicht paradox, wenn man mit freeBASIC etwas verschlüsselt
Mit Ernst:
einen sehr einfachen Weg Daten zu packen und dann in das eigene Programm zu linken:
Include - Datei mit DATAs bilden Code: | ....(gepackt)
'Buffer als neue Include-Datei speichern:
fName = "gepackt.inc"
ff = FreeFile 'als Datei abspeichern
Open fName for output as #ff
Print #ff,"gepackt: " 'Label
Print #ff,"DATA " + Str(j) + "," + Str(Filelaenge);
For i = 0 To j-1
Print #ff, "," + Str(Buffer(i));
Next
Close #ff
... | Diese Includ-Datei im eigenen Programm einbinden und einlesen:
Code: | ...
#include "gepackt.inc"
Restore gepackt
Read Filelaenge ' die Anzahl gepackter Daten
Read j ' die ursprüngliche Länge
Dim xbuffer (Filelaenge) As Ubyte
Dim Buffer (j) As Ubyte
For i = 0 To Filelaenge-1
Read xbuffer(i)
Next
...(entpacken) | Diese Methode ist nicht gerade Speicherplatz sparend, aber einfach.
Hier mit den Packroutinen von oben als komplette Listings: http://volta.freebasic.de/zip/fb_packen.zip
Gruß Volta
EDIT/
@ytwinky, habe es endlich gefunden:
Zitat: | * lzw.c -- tiny LZW codec
* Based on code by Mark Nelson, Dr. Dobb's Journal October, 1989
*
* chng: mar/2005 written [lillo] |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|