Deutsch
Forum

String in Binärdatei lokalisieren

 

H.Brill
Hallo, liebe Mitleser
Ich habe eine binäre Datei (von einem elektronischen Akkordeon ROLAND FRX8), in der überwiegend Steuerbefehle für das Akkordeon drin stehen. Irgendwo, in dieser Datei (angeblich an Offset $39B) soll ein 20 Bytes langer gepackter 7 Bit ASCII- String stehen, der den Musiktitel einer solchen Registrierung enthält, den ich auslesen möchte. Leider finde ich nichts an besagter Position (Offset). Kann auch sein, daß der Offset nur für das kleinere Akkordeon gilt und dieser String auch an anderer Stelle steht.

Wie könnte man einen solchen ASCII - String lokalisieren ? Die besagte Datei habe ich in einen Bereich# geladen. Leider haben meine Versuche mit Char$(..),
OemToAnsi$() keinen Erfolg gebracht.

Ich habe mal 2 Dateien unten angehängt.
Vielleicht hat ja jemand eine Idee ?

Achja, so hat es mal jemand in einem Elektronikforum beschrieben :


Diese Dateien sind ein Bitstream, in dem die ASCII Zeichen für den Namen
aber nur 7 Bits belegen.

Man muss halt an der passenden Stelle im Bitstream nach den 7-Bit ASCII
Zeichen suchen.

Beispiel Datei "kneipe_2.UPG" von weiter oben ab Offset 0x39B:

0000039B 65 CE 8B 26 ¦ 84 54 08 10 ¦ 20 40 81 02 ¦ 04 08 10 20
000003AB 40 82 01 80 ¦ AD 52 BA 04 ¦ 08 10 20 40 ¦ 81 02 00 00

65 CE 8B 26 84 54 08

01100101 11001110 10001011 00100110 10000100 01010100 00001000

01 1001011 1001110 1000101 1001001 1010000 1000101 0100000

01001011 01001110 01000101 01001001 01010000 01000101 00100000

0x4B 0x4E 0x45 0x49 0x50 0x45 0x20
K N E I P E <SPACE>

26 kB
Hochgeladen:02.09.2025
Ladeanzahl12
Herunterladen
26 kB
Hochgeladen:02.09.2025
Ladeanzahl14
Herunterladen
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
02.09.2025  
 




Georg
Teles
Hi,

hast Du eine Datei, bei der der Titel bekannt ist ?
dann könnte man zumindest über den Hex Editor diesen suchen.

Meta Daten sollten normalerweise am Dateianfang stehen, ich habe zu UPG Dateityp kein Datenblatt gefunden, dürfte ein Programmeigenes Format sein, da kann der Titel natürlich überall stehen.

H.Brill (02.09.2025)
Diese Dateien sind ein Bitstream, in dem die ASCII Zeichen für den Namen aber nur 7 Bits belegen.


H.Brill (02.09.2025)
Man muss halt an der passenden Stelle im Bitstream nach den 7-Bit ASCII Zeichen suchen.


Da war sicherlich 7 Byte gemint 1 Byte = 8 Bit = 1 Zeichen, Bit hat mich jetzt verwirrt, warum sollte man Zeichen nur in 7 Bit speichern, da fällt ja was weg ...

Grüße
Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 19 Tagen  
 




H.Brill
Hallo, mittlerweile habe ich von dem Freund ein Kommandozeilen-Tool (DOS)
geschickt bekommen. Also bräuchte ich das Rad ja nicht mehr neu zu erfinden,
indem ich dieses Tool dann nutze bzw. aufrufe.

Die Dateien stammen aus einer .upa Datei von einem elektronischen
Arkordeon (ROLAND FRX8) . Aus einer .upa Datei werden da 1400 Registrierungen (Einzeldateien .upg) gemacht. Die .upa Datei teilt sich folgendermaßen auf. Es gibt für das FRX8 100 Bänke mit je 14 Registrierungen.
Die Registrierungen enthalten u. a. die Musiktitel. Hintergrund ist der, daß ich
für jemanden ein kleines Programm machen will, das halt das Kommandozeilentool aufruft. Da die Zerteilung ohne Ausgabe auf der Kommandozeile erfolgt, möchte ich das mit einer Progressbar etwas verschönern. Der Feund soll dann diese Registrierungen selber schön
in meinem Programm verwalten können. Die Musiktitel sollen da auch später
(mit Option -l) dazu kommen.Da kann er bequem einzelne Stücke
(Titel) zusammenstellen und wieder die .upg Dateien über USB zurückspielen
oder auch wieder Freunden zur Verfügung stellen. Das Problem ist, daß man
den per Kommandozeile übergebenen Ordner (in den das Tool die zerstückelten
Dateien hineinschreibt) überwachen muß, um halt die Progressbar entsprechend zu steuern Es dauert schon ein paar Minuten, bis alle Dateien vom Tool geschrieben worden sind.

Ich wollte zuerst die .upa Datei selber zerstückeln, habe es aber nicht geschafft,
da ich den Offset nicht genau weiß und ein XML-Vorspann vorhanden ist. Deshalb hatte ich unten angehängtes Konsolenprogramm (von jemandem in C geschrieben) benutzt.

Das mit dem 7Bit ASCII ist wahrscheinlich noch ein Relikt aus den DOS-
Zeiten. Die Beschreibung findet man auch im Netz.

Ach ja, das Tool wird folgendermaßen aufgerufen :
zum Extrahieren der 1400 upg-Dateien :

wobei ordner halt der Ordner ist, in den die ganzen .upg-Dateien geschrieben werden.
zum Auflisten der Titel:

wobei man ja mit einer Umleitung z.b. >Test.txt hinten dran die Titel auch
in eine Datei schreiben lassen kann.
Auch bei der ersten Option mit -d schreibt das Tool eine .csv Datei. Insofern
ist dieses Tool ja ganz interessant, um halt ein Windowprogramm drum herum
zu schreiben.

Ist halt nur die Frage, wie lange MS noch die Ausführung solcher Kommandozeilen-Programme unterstützt.

Und was mein Fragesteller noch sagte:
Sicherlich kann das Arkordeon das Zusammenstellen über Knöpfe auch.
Aber es ist eine riesige Qual, mit den einzelnen Knöpfen zu hantieren.
Deshalb wäre eine Verarbeitung (Extrahieren und neu zusammenstellen) über PC wesentlich einfacher.

29 kB
Hochgeladen: vor 19 Tagen
Ladeanzahl8
Herunterladen
35.728 kB
Hochgeladen: vor 19 Tagen
Ladeanzahl8
Herunterladen
4 kB
Hochgeladen: vor 19 Tagen
Ladeanzahl6
Herunterladen
17 kB
Hochgeladen: vor 19 Tagen
Ladeanzahl6
Herunterladen
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 19 Tagen  
 




H.Brill
Hallo Georg,
vielleicht noch eine Beschreibung der .upa Dateien aus dem Mikrocontroller - Forum :


Die richtigen Angaben zu den Datenstrukturen holt man sich am besten
direkt aus den UPA Dateien und nicht aus der Skript Datei.

Der Aufbau einer UPA Datei ist relativ einfach:

EF BB BF : Magic
4 Bytes : Länge des XML Header (Big-Endian)
XML Header : XML mit weiteren Angaben zu den Daten
die einzelnen Sets : Anzahl und Größe entsprechend dem XML Header
"UPLIST" : Bedeutung unklar, für die Sets wohl nicht relevant

Die einzelnen Sets fangen also ab Offset "7 + Länge des XML Header" an,
die Anzahl und Größe ergibt sich aus dem XML Header.

Zum XML Header, der ist eigentlich selbsterklärend, es wird der Aufbau
der Daten beschrieben, die relevanten Teile:

für den Fr: <SET size="26038" number="98" offset="0">
-> 98 Sets mit je 26038 Bytes
für den Fr-8x: <SET size="25752" number="1400" offset="0">
-> 1400 Sets mit je 25752 Bytes

Der Unterschied in der Setgröße zwischen Fr und Fr-8x ergibt sich aus
dem fehlenden "SC2" Eintrag beim Fr-8x.

Der Aufbau eines Sets wird ebenfalls im XML Header beschrieben, hier für
den Fr:

<SC size="128" number="1" offset="0"/>
<O_R size="86" number="26" offset="128"/>
<OB_R size="66" number="7" offset="2364"/>
<OBC_R size="72" number="8" offset="2826"/>
<OFB_R size="72" number="8" offset="3402"/>
<TR size="304" number="16" offset="3978"/>
<BR size="84" number="16" offset="8842"/>
<BCR size="96" number="16" offset="10186"/>
<ORR size="64" number="26" offset="11722"/>
<OBR size="42" number="7" offset="13386"/>
<OBCR size="124" number="8" offset="13680"/>
<OFBR size="118" number="8" offset="14672"/>
<ORCH1 size="210" number="28" offset="15616"/>
<ORCH2 size="152" number="28" offset="21496"/>
<SC2 size="286" number="1" offset="25752"/>

Der Offset ergibt sich aus der Länge der davor liegenden Daten, der
Aufbau des Sets ist aber wohl für das Zerlegen der UPA Dateien nicht
relevant.

Inwieweit der fehlende "SC2" Eintrag beim Fr-8x wichtig ist und
eventuell beim Zerlegen neu erzeugt werden muss ist unklar.

Und dann gibt es am Ende der UPA Dateien noch die "UPLIST", die steht
auch im XML Header, hier wieder für den Fr:

<UPLIST size="131072" number="1" offset="2551724"/>

Der Offset ergibt sich aus den davor liegenden Sets.

In der Beispiel Datei "UPG_ALL.UPA" steht dort nichts, in der Datei
"vom_8_UPG_ALL.UPA" für den Fr-8x steht dort etwas, die Bedeutung ist
unklar.


Hilft evtl. noch etwas zum Verstehen der Dateien.
Da habe ich auch schon mit BlockRead() und BlockWrite versucht, die .upg
Dateien selber zu extrahieren. Bisher aber ohne Erfolg. Die erzeugten Dateien
sahen am Anfang immer anders aus, als die von dem Konsolenprogramm erzeugten.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 17 Tagen  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

246 Betrachtungen

Unbenanntvor 0 min.
Walter vor 3 Tagen
RudiB. vor 8 Tagen
Peter Max Müller vor 9 Tagen
Georg Teles vor 12 Tagen
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

H.Brill (3x)
Georg Teles (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie