Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Free Pascal Compiler - Stream read error

Mitglied: AnkhMorpork

AnkhMorpork (Level 2) - Jetzt verbinden

06.12.2018 um 07:29 Uhr, 834 Aufrufe, 11 Kommentare, 1 Danke

Hallo Alle und Moinsen

System:
Windows 7, x64
Free Pascal Compiler 3.0.4
Lazarus IDE 1.8.4



In der Hoffnung, hier noch einen weisen Pascal-Coder zu finden:

Ich habe ein kleines Konsolen-Programm geschrieben, das kurze Texte entgegen nimmt, verschlüsselt (BlowFish) und in eine Datei schreibt. Zudem kann der Datei-Inhalt zurückgelesen, entschlüsselt und in der Konsole angezeigt werden.
Zum Speichern/Laden nutze ich Streams (TStringStream).

Die Verschlüsselung funktioniert perfekt.
Die Entschlüsselung aber nur, wenn der String exakt 4 Zeichen lang ist. Sonst schmeißt es folgenden Fehler:
Mein erster Gedanke war ein Zeichensatz-Problem beim Übergang Console/Stream. Aber dann sollten mMn auch die 4-Zeichen-Strings denselben Fehler schmeißen - tun sie aber nicht. Ich habe eine Reihe von 4-Zeichen-Kombinationen durchgespielt - werden korrekt ver-/entschlüsselt.

Habe mittlerweile dutzende von Artikeln gelesen, Foren durchstöbert und Zeichensatz-Umwandlungen probiert, aber keine Erleuchtung zu vermelden.

Am BlowFish-Algorithmus liegt es auch nicht, der funktioniert perfekt (habe ich mit einer kleinen Test-Routine nachvollziehen können). Das explizite Setzen der CodePage in der Console bringt ebenfalls nix. Ich bin schlussendlich auf die Schnappsidee gekommen, die ASCII/ANSI-Codes der Chiffre in die Datei zu schreiben - ooch nöscht.

Mein Schädel stößt bereits kleine Rauchwolken aus ... ich hoffe, die Krankenkasse übernimmt das (btw: bitte keine anzüglichen Wortspiele mit dem Crypto-Algorithmus!).

Kennt einer von euch da draußen an den Geräten dieses Phänomen? Kann es mir jemand erklären? Hat jemand eine Lösung / einen Lösungsansatz?


Gruß und schöne Adzwenzzeit euch allen

Ankh


Hier noch der Quelltext:
Mitglied: 137846
06.12.2018, aktualisiert um 10:12 Uhr
Moin.
Wo liegt die zu lesende Datei? Auf einem Netzlaufwerk?

Gruß A.
Bitte warten ..
Mitglied: AnkhMorpork
06.12.2018 um 10:26 Uhr
@137846
Nein, lokale Festplatte
Bitte warten ..
Mitglied: 137846
06.12.2018, aktualisiert um 12:22 Uhr
OK, ich bau die Build-Umgebung nachher mal in einer VM nach und gebe Rückmeldung was dein Code dort meldet.
Bitte warten ..
Mitglied: Friemler
06.12.2018, aktualisiert um 21:56 Uhr
'n Abend Ankh,

ich bin Delphi-Entwickler und kenne deshalb die Details der FPC RTL nicht. Die Doku von ReadAnsiString sagt jedoch:

The Ansistring should be stored as 4 bytes (a DWord) representing the length of the string, and then the string value itself. The WriteAnsiString function writes an ansistring in such a format.

Das mit den 4 Bytes kommt mir schonmal verdächtig vor. Was passiert, wenn Du die Prozedur Decrypt folgendermaßen umschreibst:
Grüße
Friemler
Bitte warten ..
Mitglied: AnkhMorpork
07.12.2018 um 07:26 Uhr
Moin Friemler,

schön von dir zu "hören".

Es schmeißt wieder Fehler. Diesmal:
errmsg - Klicke auf das Bild, um es zu vergrößern

In der FPC-Version 3.0+ sollte eigentlich alles UTF8 kodiert sein. Ist aber auch nur graue Theorie.

Grüße zurück

Ankh
Bitte warten ..
Mitglied: Friemler
07.12.2018 um 09:04 Uhr
Moin Ankh,

die Länge des BlowFish-Streams wird intern anscheinend durch eine Suchoperation bestimmt. Kann die Längenangabe (Parameter 2) der CopyFrom-Methode wie in Delphi auf 0 gesetzt werden, um den gesamten Stream zu kopieren?

Muss der String, damit er entschlüsselt werden kann, eigentlich genau 4 Bytes lang sein oder muss er mindestens 4 Byte lang sein? Hintergrund: Du schreibst das "eigentlich alles UTF8 kodiert sein" soll. Die Byte Order Mark (BOM) von UTF-8 ist 3 Bytes lang.

Grüße
Friemler
Bitte warten ..
Mitglied: AnkhMorpork
07.12.2018 um 09:31 Uhr
@Friemler

Die Längenangabe der CopyFrom-Methode kann auf 0 gesetzt werden, aber dann kommt Murks raus:

bild1 - Klicke auf das Bild, um es zu vergrößern

bild2 - Klicke auf das Bild, um es zu vergrößern

Der String muss exakt 4 Byte lang sein. Alle anderen Längen schmeißen den String read error.

Notepad++ sagt übrigens, dass die Datei Ansi-kodiert ist ... ?

Ich habe das Ganze auch mal unter Linux (openSUSE Leap 42.3) compiliert - selbes Fehlerbild. Das war sicher auch zu erwarten, aber ich nehme mitlerweile jeden Strohhalm mit, der nicht bei 3 auf'm Baum ist.


Danke für deine Unterstützung!

Ich wäre ja gern bei Delphi geblieben, aber die Preispolitik hat mich rausgeschmissen. Und die Zeit meiner wirklich großen Projekte ist auch vorbei. Die meisten Sachen funktionieren ja primelich, aber der Teufel steckt bekanntlich im Detail (und das habe ich hier wohl erwischt).

Glück auf

Ankh
Bitte warten ..
Mitglied: Friemler
07.12.2018 um 10:00 Uhr
Hallo Ankh

Notepad++ sagt übrigens, dass die Datei Ansi-kodiert ist ... ?

Solange keine UTF-8 Byte Order Mark und auch keine Zeichen mit einem Code größer 127 in der Datei enthalten sind, lassen sich ANSI und UTF-8 Dateien nicht unterscheiden.

Ich schätze, da musst Du mal in die RTL von FPC rein debuggen und herausfinden, durch welche Umstände der Fehler entsteht. Evtl. hast Du da einen noch nicht entdeckten Bug gefunden.

Danke für deine Unterstützung!

Gerne wieder!

Ich wäre ja gern bei Delphi geblieben, aber die Preispolitik hat mich rausgeschmissen.

Bei mir zahlt der Cheffe.


Grüße
Friemler
Bitte warten ..
Mitglied: AnkhMorpork
07.12.2018 um 10:29 Uhr
Ay Friemler,

dann werde ich mich mal auf den Weg machen und die Tiefen der RTL erkunden. Könnte ganz interesant werden.

War mal wieder angenehm, mit dir zu "arbeiten".

Alles Gute weiterhin und bleib munter.


P.S.: Frag doch bitte Cheffe, ob er mich vielleicht sponsoren möchte.
Bitte warten ..
Mitglied: Friemler
07.12.2018 um 11:02 Uhr
Hey Ankh,

Frag doch bitte Cheffe, ob er mich vielleicht sponsoren möchte.

Von der neuesten Delphi-Version 10.3 Rio gibt es eine Community Edition für umme. Damit kann man sogar kommerzielle Software entwickeln, wenn die Firma höchstens 5 Entwickler beschäftigt und höchstens $5000 Umsatz pro Jahr macht (wie davon 5 Entwickler oder auch nur einer leben sollen verraten sie nicht).

Mehr Infos und Links zum Download hier: https://www.embarcadero.com/products/delphi/starter

Grüße
Friemler
Bitte warten ..
Mitglied: AnkhMorpork
07.12.2018 um 11:34 Uhr
@Friemler

Klasse!

Vielen Dank für den Link. Werde ich gleich mal ausprobieren.

Vergiss das mit Cheffe!


Schönes WE

Ankh
Bitte warten ..
Ähnliche Inhalte
KVM

Proxmox KVM - Disk read error nach verschieben der disk

gelöst Frage von ketanest112KVM6 Kommentare

Hallo zusammen, ich komme grad nicht weiter. Ich habe Proxmox 4.3-7/db02a4de als Virtualisierungshost laufen. Der Exchange ist wohl mit ...

Soziale Netzwerke

Facebook Live Stream - Persistent stream key

Frage von smackeeSoziale Netzwerke4 Kommentare

Liebe Community Ich versuchen schon seit Tagen einen permamenten Stream-Key für den Facebook Live zu erhalten. Diese Option gibt ...

Batch & Shell

SQL Server Powershell read-sqltabledata

gelöst Frage von violakBatch & Shell4 Kommentare

Guten Abend, ich möchte gerne eine Tabelle auf meinem MS SQL 2016 Server auslesen. Dazu führe ich die Powershell ...

Visual Studio

Read all handler, removehandler, addhandler

gelöst Frage von ahstaxVisual Studio3 Kommentare

Hallo, Ich suche einen (universellen) Weg, in vb.net in einer Windows-Form alle Handler von Checkboxen, Textboxen, Comboboxen usw zu ...

Neue Wissensbeiträge
Windows Server

Update KB4541329 (März 2020) und Windows Server 2016 RDS 1609 Probleme

Anleitung von System-Fehler vor 8 StundenWindows Server1 Kommentar

Hallo, hier zur Info und eventuelle Hilfe: Wir hatten folgende Fehler: Windows 2016 Datacenter 1609, hier als RDS Dienste ...

Internet

Aktuelle Netzauslastung in Deutschland durch die Covid-19-Pandemie

Information von Frank vor 1 TagInternet8 Kommentare

Viele Bürger fragen sich, ob die Telekommunikationsnetze während der Covid-19-Pandemie der verstärkten Internetnutzung durch Home Office, eLearning, Videostreaming und ...

iOS

iOS-Bug unterbindet vollständiges VPN-Tunneling

Information von transocean vor 3 TageniOS

Moin, seit dem letzten Update hat iOS für iPhone und iPad ein Problem mit der Verschlüsselung. Lest selbst. Grüße ...

Sicherheit
Corona Malware über manipulierte Router
Information von sabines vor 3 TagenSicherheit

Heise berichtet über Malware, die in Zusammenhang zum Suchethema Corona steht und über DNS Einstellungen bei D-Link und Linksys ...

Heiß diskutierte Inhalte
Router & Routing
VPN Client als Router
gelöst Frage von lowsounderRouter & Routing12 Kommentare

Moin moin, zwecks Homeoffice habe ich einen Laptop zuhause der mittels OpenVPN an das Firmennetz angeschlossen ist. Adminrechte hab ...

Microsoft Office
Excel Problem Verhalten bei einem zusätzlichen angeschlossenem Monitor
Frage von JuniorgongMicrosoft Office12 Kommentare

Hallo Ich habe ein Problem mit einem User der im Home-Office sitzt. Es wurde an einem Notebook ein 2ter ...

TK-Netze & Geräte
Netphone APP nimmt kein Kontakt auf
Frage von Finchen961988TK-Netze & Geräte12 Kommentare

Hallo, ich kämfpe mit einem Problem im Bereich Netphone und der Mobil APP. Bei einem Kunden habe ich eine ...

Netzwerkmanagement
Das angegebene Netzwerkkennwort ist falsch
gelöst Frage von HeimoPonnathNetzwerkmanagement11 Kommentare

Seit einigen Tagen kann ich von meinem Windows 10 Rechner nicht mehr auf Shares auf dem Debian (buster) Rechner ...