Ungewöhnliches Hilfeersuchen im Rahmen einer pdf Konvertierung

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Der_Dirk
User
Beiträge: 1
Registriert: Montag 28. Dezember 2020, 12:55

Guten Tag,

bitte entschuldigen Sie den ungewöhnlichen post meinerseits in diesem Forum.
Allerdings habe ich die Hoffnung, genau hier das richtige know-how zu finden.
Grundsätzlich dreht sich mein Problem um einen Geocache (GPS Schatzsuche), für dessen Lösung man
Grundkenntnisse in Python benötigt. Die Geschichte lautet so, dass ein Brief in pdf konvertiert werden sollte und
als Ergebnis eine png Datei herauskam. Diese ist nicht lesbar und hier verlinkt: https://tinyurl.com/ybjrepbl
Mir muss es also gelingen eine lesbare Datei zu erstellen.
Mein Idee war es aus der png eine pdf zu machen, allerdings bleibt das sichtbare Ergebnis gleich und nicht lesbar.

Wurde bei der initialen Konvertierung ein falscher Code verwendet?
Ich hoffe hier Interessierte zu finden, die mir helfen können. Gerne zeige ich mich auch erkenntlich in Form einer Pizza
vom örtlichen Lieferdienst oder ähnliches :wink:

Über Rückmeldungen freue ich mich und beste Grüße
Dirk
Benutzeravatar
snafu
User
Beiträge: 6732
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Tatsächlich ein ungewöhnlicher Post und dazu gleich beim ersten Beitrag mit einem unkenntlich gemachten Link zu einer für die Problemlösung eigentlich irrelevanten angeblichen PNG Datei zu kommen, macht es für mich nicht wirklich seriöser. Täusche mich da gerne, aber zumindest ich werde nicht drauf klicken.
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Der_Dirk: Bei der initialen Konvertierung wurde kein ”falscher” Code verwendet. Das ist ja Absicht, dass da ein Rätsel draus wird. Gab es noch weitere Hinweise?

Ich vermute einfach mal, dass in den Pixeldaten irgendwie ein PDF kodiert ist. Es ist ein RGB-Bild in dem aber nur genau 16 Farben verwendet werden. Das Histogram ist relativ gleichmässig, was man erwarten würde wenn die Pixel ein komprimierte Datei beschreiben:

Code: Alles auswählen

In [453]: img = Image.open("Downloads/Verschluesselt.png")                       

In [454]: img.getbands()                                                        
Out[454]: ('R', 'G', 'B')

In [455]: img.getcolors()                                                       
Out[455]: 
[(60566, (255, 255, 255)),
 (60345, (128, 128, 0)),
 (58220, (0, 255, 255)),
 (58645, (255, 0, 255)),
 (54620, (128, 0, 0)),
 (58126, (192, 192, 192)),
 (56283, (0, 0, 255)),
 (55475, (128, 0, 128)),
 (53791, (128, 128, 128)),
 (58324, (0, 128, 128)),
 (56296, (0, 255, 0)),
 (56745, (255, 0, 0)),
 (55200, (0, 0, 128)),
 (57579, (255, 255, 0)),
 (51946, (0, 0, 0)),
 (54143, (0, 128, 0))]

In [456]: len(img.getcolors())                                                  
Out[456]: 16
Die Pixeldaten liessen sich also auch mit nur vier Bit pro Pixel kodieren. Zwei Pixel liessen sich dann zu einem Byte zusammenfassen. Ich würde also als erstes versuchen herauszufinden ob man die Palette so anordnen kann, das unter diesen Bedingungen die ersten Pixel den Anfang einer PDF-Datei ergeben würden.

Edit: Die ersten Pixel mal manuell angeschaut und das sieht vielversprechend aus:

Code: Alles auswählen

In [463]: data[0,0]                                                             
Out[463]: (0, 128, 0)

In [464]: data[1,0]                                                             
Out[464]: (128, 0, 128)

In [465]: data[2,0]                                                             
Out[465]: (128, 0, 128)

In [466]: data[3,0]                                                             
Out[466]: (0, 0, 0)

In [467]: data[4,0]                                                             
Out[467]: (0, 0, 128)

In [468]: data[5,0]                                                             
Out[468]: (0, 0, 128)

In [469]: data[6,0]                                                             
Out[469]: (0, 0, 128)
Man vergleiche das mit den Nibbles des Anfangs einer PDF-Datei, wo am Anfang immer eine Kennung für das PDF-Format steht:

Code: Alles auswählen

$ head -c 4 test.pdf | hd
00000000  25 50 44 46                                       |%PDF|
00000004
Koordinaten von 0 an zählend müssen Pixel 1 und 2 gleich sein. Pixel 3 ist 0 was auf (0, 0, 0) abgebildet wird, Und die Pixel 4, 5, und 6 müssen gleich sein. Passt prima zu den Daten.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Grundsätzlich dreht sich mein Problem um einen Geocache (GPS Schatzsuche), für dessen Lösung man Grundkenntnisse in Python benötigt
Poste doch mal den Link zum Geocaching-Listing - sofern es kein PM Cache ist - dann haben wir auch alle Infos.

Das man genau Python für den Geocache benötigt wäre ungewöhnlich, weil man das, was man in Python machen kann, auch in deren Programmiersprachen machen könnte.

Gruß, noisefloor
Der_Tiger
User
Beiträge: 2
Registriert: Donnerstag 31. Dezember 2020, 18:01

Ich steig mal mit ein und hier der Link zum Listing:

https://coord.info/GC8WBHD
Der_Tiger
User
Beiträge: 2
Registriert: Donnerstag 31. Dezember 2020, 18:01

Mit den Infos von __blackjack__ konnte ich die PDF erstellen und lesen. Danke
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich kenne mich mit den Gepflogenheiten beim Geocaching nicht aus und begehe hier ziemlich sicher einen „faux pas“ in dem ich die Lösung einfach mal in ein neues Rätsel verpacke:

Ich konnte das PDF aus dem Bild holen und wollte das ganze ausdrucken. Bei der ersten Seite (siehe Bild) gab es aber einen Papierstau.

Bild

Bild- und PDF-Datei hatte ich gleich nach dem senden des Druckauftrags gelöscht. Also blieben als einzige Daten folgende Datei die ich aus dem Spoolerverzeichnis/Cache des Druckdienstes gefischt habe: decoded.prn. So bin ich dann doch an die Informationen gekommen, ohne die Bilddatei noch einmal herunterladen und das PDF daraus extrahieren zu müssen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten