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:

Binäre Datei zerlegen usw.

 
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
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 27.06.2018, 08:06    Titel: Binäre Datei zerlegen usw. Antworten mit Zitat

Hallo!

Ich würde einerseits einen "Ersttipp" benötigen, wie ich den unten angeführten Code (dzt. nur ein einfacher Launcher) mit der darin noch nicht enthaltenen zweiten Funktion erweitern könnte (siehe weiter unten), andererseits suche ich aber eigentlich jemanden, der das für mich implementieren könnte (siehe auch weiter unten).

Code:
' Launcher
'
' "Launcher.exe" "/run:My Exe.exe" "Par 1" "Par 2" [...]

#Define UNICODE
#Include "windows.bi"
#Include "win\shellapi.bi"

' Must allow for unicode, therefore use WSTRING

' Read the incoming command line parameters and launch the specified file.

dim wszProgName as wstring * 250
dim wszArguments as wstring * 10000
dim DQ as wstring * 4 = wchr(34)   ' double quotes

' FB's COMMAND() statement is not unicode aware. Use Win32api instead.

dim szArglist as wstring ptr ptr
dim nArgs as Long
dim i as long

szArglist = Cast(wstring ptr ptr, CommandLineToArgvW(GetCommandLineW(), @nArgs))
if szArglist then
   for i as long = 1 to nArgs - 1
     
    if left(*szArglist[i], 5) = "/run:" then
       wszProgName = DQ & mid(*szArglist[i], 6) & DQ
    else
       ' Wrap the argument in double quotes to handle embedded spaces in argument
       wszArguments = wszArguments & " " & DQ & *szArglist[i] & DQ
    END IF
   
   NEXT

end if
LocalFree CAST(HLOCAL, szArglist)
 
' Transfer control over to an external program. When the program
' exits, execution will return to the system.
Dim ShExecInfo As SHELLEXECUTEINFOW

' Run the EXE
With ShExecInfo
   .cbSize       = Len(SHELLEXECUTEINFOW)
   .fMask        = SEE_MASK_DEFAULT
   .HWnd         = 0
   .lpVerb       = Null
   .lpFile       = @wszProgName
   .lpParameters = @wszArguments   
   .lpDirectory  = 0
   .nShow        = SW_SHOW
   .hInstApp     = 0
End With
ShellExecuteEx(@ShExecInfo)


Was dazu kommen soll: Eine binäre Datei (auch als Parameter angegeben) soll in Teile mit spezifizierter Größe zerlegt werden, diese Teile sollen als Dateien in einem Ordner abgespeichert werden und anschließend soll eine der Dateien gestartet werden (mit Startparametern, Unicode muss unterstützt werden).

Als freebasic-Einsteiger würde ich aber ewig brauchen, um das selber zu schaffen, daher suche ich eigentlich jemanden, der das gleich "professionell" für mich macht: https://forum.qbasic.at/viewtopic.php?t=8895.

Z.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 860
Wohnort: Ruhrpott

BeitragVerfasst am: 28.06.2018, 00:00    Titel: Antworten mit Zitat

Hallo und willkommen im Forum!

Schön, daß du dich hier etwas weniger zugeknöpft zeigst als bei deiner Anfrage im englischen Forum (ich müsste mich doch sehr täuschen, wenn das hier nicht von dir ist). lächeln

Der gepostete Codeschnipsel ist, soweit ich das auf die Schnelle beurteilen kann, eine Unicode - fähige Implementierung des SHELL - Befehls.

Mal sehen, ob ich dich richtig verstanden habe: Du möchtest eine große Datei in eine Anzahl kleiner Dateien mit (für jede Datei einzeln) vorgegebener Größe aufteilen. Anschließend soll eine dieser Dateien (automatisch?) gestartet werden.

Hört sich nach einem Installer an.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 28.06.2018, 00:11    Titel: Antworten mit Zitat

Danke, grindstone!

grindstone hat Folgendes geschrieben:
Hört sich nach einem Installer an.


Klar. (Aber in meinem Projekt wird es eigentlich nicht als Installer fungieren.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 860
Wohnort: Ruhrpott

BeitragVerfasst am: 28.06.2018, 00:33    Titel: Antworten mit Zitat

Zvonko hat Folgendes geschrieben:
...in meinem Projekt wird es eigentlich nicht als Installer fungieren.)
Ich bin ja sowas von neugierig...! grinsen

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 28.06.2018, 00:37    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Ich bin ja sowas von neugierig...! grinsen


Wenn es gelingt, kommt es ja heraus, wird ja Open Source sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 860
Wohnort: Ruhrpott

BeitragVerfasst am: 28.06.2018, 21:31    Titel: Antworten mit Zitat

Zvonko hat Folgendes geschrieben:
Wenn es gelingt, kommt es ja heraus, wird ja Open Source sein.
Eigentlich ist es umgekehrt. Ein wesentliches Element des "Open Source" - Gedankens ist "Open Purpose": Der Zweck eines Programms muß immer klar zu erkennen sein. Jeder kann den Quelltext einsehen und -entsprechende Kenntnisse vorausgesetzt- analysieren und -im Sinne der Community- Alarm schlagen, wenn er etwas illegales entdeckt wie Backdoors oder Trojaner. Daher kann man bei Open Source - Projekten auch einigermassen sicher sein, daß sie frei von solcher Malware sind. Und wenn jemand die Offenlegung verweigert, ist das verdächtig. Keins der Forumsmitglieder (im deutschen wie im englischen) möchte sich als unfreiwilliger Malwareprogrammierer missbrauchen lassen.

Ich kann nur für mich sprechen, aber ich bin sicher, daß der überwiegende Teil der FB-Community es ähnlich sieht: Vergiss das mit dem Honorar, ich bin aus Spaß an der Freude dabei und ich helfe gerne, wenn ich kann. Ich habe auch -zumindest in einem gewissen Rahmen- kein Problem damit, wenn jemand beispielsweise für Schulprojekte entgegen den Intentionen des Lehrers auf die hiesige Schwarmintelligenz zurückgreift, statt sich selbst den Kopf zu zerbrechen. Auch eine geplante kommerzielle Verwendung wäre kein prinzipieller Hinderungsgrund (zur Klarstellung: aller von mir hier geposteter Code unterliegt der FBPSL-Lizenz).

Als Zeichen des guten Willens hier ein Beispiel für einen Dateisplitter, wie er dir inetwa vorschweben dürfte:
Code:
Dim As Integer x, dateinummer
Dim As Integer dateigroesse(1 To ...) = {583,960,1026,5694,108} 'array mit größen der einzelnen dateien
Dim As String bezeichner, inhalt

'##### QUELLDATEI ERZEUGEN (nur zur demonstration) #####
Open "quelle.bin" For Output As #1
For dateinummer = LBound(dateigroesse) To UBound(dateigroesse)
   bezeichner = "File Nr. " + Str(dateinummer)
   Print #1, bezeichner
   For x = 0 To dateigroesse(dateinummer) - Len(bezeichner) - 3
      Print #1, Chr(x Mod 256);
   Next
Next
Close 1

'##### QUELLDATEI GEMÄSS LÄNGENANGABEN SPLITTEN #####
Open "quelle.bin" For Binary As #1 'quelldatei öffnen
For dateinummer = LBound(dateigroesse) To UBound(dateigroesse) 'alle dateien im array
   inhalt = Input(dateigroesse(dateinummer), #1) 'gesamten inhalt der datei <dateinummer> in einen string einlesen
   Open "Datei" + Str(dateinummer) + ".bin" As #2 'datei <dateinummer> anlegen
   Print #2, inhalt; 'inhalt in datei <dateinummer> schreiben
   Close 2 'datei <dateinummer> schliessen
Next
Close 1 'quelldatei schliessen
Mithilfe der Kommentare und der FB-Befehlreferenz (und evtl. einem Hex-Editor zum Betrachten der Teildateien) dürfte es nicht allzu schwierig sein, die Arbeitsweise zu analysieren und zu verstehen.

Weitere Hilfe wirst du von mir aber nur bekommen, wenn du mich davon überzeugst, daß ich dadurch (siehe oben) nicht zum unfreiwilligen Helfer zur Verbreitung von Malware werde.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 29.06.2018, 00:09    Titel: Antworten mit Zitat

@grindstone
Vielen herzlichen Dank für deinen Democode!!! Sollte ich gezwungen sein, mir das Tool in FB selber zu basteln, wird er mir sicher eine große Einstiegshilfe sein.

PS: Alles andere, was du schreibst, geht mir sowas auf den Keks, und ich werde mich an diesem irrationalen Spiel nicht mehr beteiligen, nur so viel noch ein letztes Mal dazu: SEID IHR VON ALLEN GUTEN GEISTERN VERLASSEN??? Beantworte doch bitte dir und mir eine einzige Frage: Aufgrund der Beschreibung des von mir benötigten Tools hast du doch selber festgestellt, es handle sich um sowas wie einen Installer. Oder könnte irgendwo in der Beschreibung himtückisch, für euch ahnungslose Programmierer unentdeckbar, etwas versteckt sein, was dem Tool noch eine zusätzliche gefährliche Mächtigkeit verleihen würde? Nochmal anders gefragt: Wenn es sich um einen typischen Installer handelt, kann dieser selbstgebastelte Installer mehr als irgendein Installer, den man sich z.B. mit 7zip generiert? Doch wohl eher weniger. WOVON PHANTASIERT IHR ALSO??? Gut, um nicht auf den Pfad der Vernunft zurückzukehren, kann man es natürlich auch etwa so machen, dass man, statt die Frage zu beantworten, gleich zu einer Gegenfrage greift: "Na ja, wenn du sagst, jeder beliebige frei verfügbare Installer könne das auch, was dein Tool können soll, wozu brauchst du dann ein eigenes Tool?" Diese Art der Kommunikation ist unheimlich effektiv und macht bestimmten Leuten viel Spaß.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 860
Wohnort: Ruhrpott

BeitragVerfasst am: 29.06.2018, 08:38    Titel: Antworten mit Zitat

Zvonko hat Folgendes geschrieben:
Alles andere, was du schreibst, geht mir sowas auf den Keks...
Das sind nun mal die Regeln der Open Source - Gemeinschaft, und wenn dir das auf den Keks geht, mußt du dich halt verkrümeln (Entschuldigung, diese Wortspielerei konnte ich mir einfach nicht verkneifen grinsen ).

Aber gut, ich will dich nicht einfach so abbügeln. Also:

Zitat:
SEID IHR VON ALLEN GUTEN GEISTERN VERLASSEN???
Ganz im Gegenteil. Es sind eben diese guten Geister, die uns davor bewahren, eines Tages Post von der Staatsanwaltschaft zu bekommen oder -schlimmer- von einem hereinstürmenden SEK aus dem Schlaf gerissen zu werden.

Zitat:
Oder könnte irgendwo in der Beschreibung himtückisch, für euch ahnungslose Programmierer unentdeckbar, etwas versteckt sein, was dem Tool noch eine zusätzliche gefährliche Mächtigkeit verleihen würde?
In der Beschreibung nicht, aber möglicherweise in der Datei, die du splitten und ausführen möchtest. Und der Installer lässt sich ohne großen Aufwand so programmieren, daß der User vor dem Bildschirm von dessen Tätigkeit überhaupt nichts mitbekommt.

Vielleich solltest du einmal darüber nachdenken, wieso im englischen Forum, in dem Neulinge üblicherweise mit offenen Armen empfangen werden, niemand bereit ist, dir zu helfen.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 29.06.2018, 23:59    Titel: Antworten mit Zitat

PS: Wow, doch noch weiter gelesen, alle Achtung! Hab schon geglaubt, du kannst nur bis Keks zählen. "In der Beschreibung nicht, aber möglicherweise in der Datei, die du splitten und ausführen möchtest." Das war aber ja gerade der Punkt meines Hinweises, und den ignorierst du immer noch (es lebe die Vernunft)! Mein Tool kann Dateien splitten und ausführen; jeder beliebige Installer, der frei und ohne jeglichen Aufwand erhältlich ist, kann Dateien splitten und ausführen (und noch einiges mehr). Wo ist also hier ein Unterschied? Wieso könnte mein Tool gefährlicher sein als all die Installer? (Und was für einen Hirnschaden müsste jemand haben, der unbedingt mühsame Umwege und 150 € investieren möchte, nur damit er etwas Böses anrichten kann, was er auch sofort mit Gratis-Tools anrichten könnte?) Also, again: Seid ihr von allen guten Geistern verlassen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 860
Wohnort: Ruhrpott

BeitragVerfasst am: 30.06.2018, 12:52    Titel: Antworten mit Zitat

Sag mal, willst du, daß ich mir die Augen verderbe mit deiner kleinen Schrift? missbilligen Oder traust du dich nicht, das laut zu sagen (zur Info: kleine Schrift gilt als Flüstern)?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 925
Wohnort: Austria

BeitragVerfasst am: 30.06.2018, 14:18    Titel: Antworten mit Zitat

Erstmal: Eine professionelle Abwicklung wird hierzulande mit deinem Budget vermutlich schwierig, da das bei üblichem Stundensatz in etwa 2 Arbeitsstunden entspricht. Worauf ich hinaus will: des Geldes wegen helfen dir hier vermutlich die wenigsten. Die Mehrheit hilft also auf freiwilliger Basis, doch dafür müssen auch ein paar Anforderungen erfüllt sein. Für mich ist z.B. die Sinnhaftigkeit des Vorhabens recht wichtig. Und wenn sich diese nicht wirklich ergibt hält sich halt die Hilfsbereitschaft eher in Grenzen - offensichtlich nicht nur bei mir. Aja, und eine Spezifikation was dein Tool alles können soll sagt nicht unbedingt etwas über dessen Nutzen oder Anwendung aus. Die Einschätzung als mögliche Malware rührt ja nur daher, dass eben aus der Spezifikation nicht klar ist wofür man es verwenden könnte und du bisher keine sinnvolle Verwendungsmöglichkeit angegeben hast. Ich kann mir nicht wirklich vorstellen, dass man dich generell als Malware Autor einschätzen würde - zumindest ich würde dir das, aus deinen bisherigen Aussagen folgernd, ehrlich gesagt gar nicht zutrauen Zunge rausstrecken

Zurück zum Thema: "grindstone" hat dir ja schon ein grundlegendes Beispiel gegeben, wie du etwa Dateien einliest und schreibst. Dazu ergänzend kann ich eigentlich nur sagen dass ich allgemein im Binärmodus mit Dateien arbeiten würde und entsprechend GET bzw. PUT (anstatt input, print, etc.) verwenden würde. Je nachdem wie groß die Dateien sind musst die Dateien eventuell in Blöcken verarbeiten; bis zu etwa 10MB würde ich aber die Daten als Ganzes einlesen/schreiben.
Ich bin mir jetzt auch nicht sicher ob FreeBasic's OPEN mit Unicode Dateinamen umgehen kann - wenn nicht müsstest du wieder auf die Win32 API (CreateFile) zurückgreifen.

Zum allgemeinen würde ich, wie im engl. Forum schon angemerkt, andenken existierende Lösungen (wie etwa ZIP) anstelle einer eigenen Lösung zu verwenden - da gibt es fertige Bibliotheken, die du mit FreeBasic (oder auch anderen Programmiersprachen) verwenden kannst. Du hast mir bisher noch nicht schlüssig begründen können, wieso das für dich keine Option wäre - außer das du es eben anders haben willst, aber das ist für mich keine Begründung (außer ich werd dafür bezahlt lächeln )
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 30.06.2018, 16:25    Titel: Antworten mit Zitat

Zitat:
Ich bin mir jetzt auch nicht sicher ob FreeBasic's OPEN mit Unicode Dateinamen umgehen kann

FreeBASIC kann das (gerade noch einmal unter Linux getestet), aber ich bin mir ziemlich sicher, dass es auf die Standardkonsole zurückgreift, und da wird es unter Windows vermutlich Probleme geben.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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