Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

fb_hDecode, fb_hEncode, packen und entpacken mit fbgfxlib

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 24.07.2006, 18:34    Titel: fb_hDecode, fb_hEncode, packen und entpacken mit fbgfxlib Antworten mit Zitat

Hi,
die fbgfxlib bietet eine pack und entpack-Routine kostenlos als Zugabe grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 24.07.2006, 19:37    Titel: Antworten mit Zitat

Hi volta,
..ich dachte schon, du schaust in deinem Urlaub nur Speisekarten an grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 24.07.2006, 20:58    Titel: Antworten mit Zitat

Sicher ist das nicht.
Jeder kann es mit FreeBASIC Entpacken... mit den Augen rollen .
Du könntest die Datei natürlich auf .zip umtaufen.
Wer kommt schon auf die Idee, das mit FB zu entpacken grinsen .
_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 24.07.2006, 22:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 25.07.2006, 10:05    Titel: Antworten mit Zitat

Die 4 Byte die du für XOR verwendest, kannst du als Passwort verwenden, das sich der User merken soll zwinkern .

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.07.2006, 14:53    Titel: Antworten mit Zitat

Hi, warum wollt ihr immer was verstecken durchgeknallt
klingt das nicht paradox, wenn man mit freeBASIC etwas verschlüsselt lachen
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz