![]() |
Brainstorming: Datei mit definierter Entropie erzeugen
Hallo und schönen Tag!
Das soll keine Frage um Hilfe oder eine Projektvorstellung werden, sondern eine dynamische Brainstorming Ideen-Sammlung, an der sich möglichst viele User beteiligen. Ich weiß nicht, ob es so was schon gibt: Dateien für Testzwecke mit definierter Entropie erzeugen. Wenn man den möglichen Umfang der Entropie einer Datei willkürlich mit dem Wert 100 definiert, dann hätte eine Datei, die nur aus identischen Zeichen besteht (z.B. "eeeeeeee") den Entropiewert 100. Und eine Datei, die nur aus unterschiedlichen Zeichen besteht (z.B. "abcdefgh") den Entropiewert 0. Wie müsste dann aber eine Datei aussehen, die den Entropiewert 50 (oder 67) aufweist? Wie könnte man die Erzeugung einer Zeichenmenge mit definiertem Entropiewert algorithmisieren? Lasset das Brainstorming beginnen! |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Dann zeige doch mal in Form von Code wie Du Entropy berechnest und nicht mit Worten erklären, so hat man eine Grundlage.
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Für die konkrete Entropie-Messung einer Datei habe ich zwar Code, den ich aber aus Copyright-Gründen nicht weitergeben darf.
Aber hier sind einige Ansätze zu finden: ![]() Aber es geht ja um die ERZEUGUNG und nicht um die Messung. |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Ist die Ziel-Größe der Datei vorgegeben?
Welche Zeichen sind möglich? Ist egal, welches Zeichen wie oft wiederholt wird? Ist die Zielentropie exakt vorgegeben oder reicht eine Näherung? Wenn die Ziel-Größe und Ziel-Entropie exakt erreicht werden muss, ist das sicherlich am schwierigsten zu erreichen. Einfachster Ansatz: - "a" hinzufügen - wenn aktuelle Entropie < Ziel dann wieder "a" - sonst nächstes freies Zeichen - wenn ZielGröße und/oder ZielEntropie erreicht ist, abbrechen Noch eine Frage zum Verständnis: Wofür brauchst Du das? |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Danke für deinen Beitrag. Das wäre sozusagen der "Brutalo"-Ansatz. ;-)
Wofür ich das brauche? Rein theoretisches Interesse. Aber im Hinterkopf geistert eine Idee herum, mal einen Generator für Testdateien zu schreiben. Eine weitere Idee wäre die Möglichkeit Funksprüche aus dem All zu analysieren: Wenn mehrere Funksprüche den gleichen oder einen ähnlichen Entropiewert aufweisen, so könnte das ein Hinweis dafür sein, dass diese Funksprüche von außerirdischen Wesen stammen. Eine weitere Möglichkeit könnte sich aus der VERMUTUNG ergeben, dass Textdateien verschiedener Sprachen unterschiedliche Entropie-Muster (also der Vergleich der Entropiewerte verschiedener Dateiteile oder Wörter oder Sätze) ergeben und man so auf die jeweilige Sprache schließen könnte. |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Ist ja hier Brainstorming, also schreibe ich mal einfach drauflos: - Gegeben sind N verschiedene Zustände und eine Menge von ebenfalls N dieser Zustände, die nicht zwingend unterschiedlich sein müssen. - Die Entropie der Menge ist 0, wenn alle Zustände unterschiedlich sind und 1 (= 100%), wenn alle Zustände gleich sind. - Daraus folgt, daß N > 1 sein muss. - Die Anordnung der Zustände in der Menge ist irrelevant für die Berechnung der Entropie. - Sei X die Anzahl der unterschiedlichen Elemente in der Menge, dann errechnet sich die Entropie aus E = (N-X)/(N-1). |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Ich habe jetzt die Entropiewerte von 2 Textdateien verglichen:
Textdatei 1: Zitat:
Zitat:
Damit hat sich die Hypothese von Uwe als richtig erwiesen! |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Demgegenüber ergab diese Textdatei:
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
![]() H(X) = 3.59448
Code:
CDU
CSU FDP SPD Grüne |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Wie ermittelst du denn die Entropie?
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Wenn ich aber diese Textdatei verwende:
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Zur Ermittlung zweckentfremde :oops: ich die Klasse ![]()
Delphi-Quellcode:
uses
MiTeC_PE; var PE: TPEReader; procedure TForm3.FormCreate(Sender: TObject); begin PE := TPEReader.Create; try PE.FileName := 'R:\test.txt'; CodeSite.Send('TForm3.FormCreate: ', PE.Entropy.ToString); finally PE.Free; end; end; |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Die Entropie hängt doch sicher auch vom Zeichensatz ab, ob english, kyrilliusch, chinesisch, ANSI, UTF16, ...
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
In Bezug zu PE Dateien vermute ich stellt die Entropy dar, ob Datei gepackt wurde. 8 sollte maximum Darstellen, also stark gepackt und 1 wäre zu 100% ungepackt. Kann ich gerade nicht nachvollziehen da mir diese Unit/Klasse fehlt, zum nachschauen kaufe ich das nicht.
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Erstell mal bitte Dateien mit folgenden Inhalt und sage Entropy dazu.
Code:
1234567890
Code:
hier ist hinten noch ein leerzeichen!
1111222333
Code:
hier ist vorne noch ein leerzeichen!
1 2 3 4 5
Code:
Danke.
1 2 3 4 5
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Ich vermute z.B., dass die Mondlandung gefaked war wie vieles andere - und dafür gibt es gute Gründe ... |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Das wäre in Bezug auf PE Sinnvoll, das ist der Grund, ob mit oder ohne Mondlandung. Es gibt mehrere PE Tools die eine Analyse durchführen wo dort eine Entropy als "Packer Verdacht" gewertet wird. Grund genug?
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Ein hoher Entropie-WERT bei einer PE-Analyse weist tatsächlich auf einen Packer hin. Das ist eine bewiesene Tatsache, die von allen Fachleuten geteilt wird. Oder möchtest du das in Abrede stellen? |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Ich wiederhole nochmal, man bemerke das was nun fett geschrieben ist. Zitat:
Ich halte mich hier mal raus, Du wirst schon Recht haben und mit Deiner auf PE Dateien basierte Entropy Berechnung auch anderswo Sinnvolle Einsatzmöglichkeiten finden. |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Hier ist eine sehr gute Erklärung (mit Beispielen) der Berechnung des Entropie-Wertes:
![]() Ist leicht zu verstehen. Nach dem Lesen sollten keine Fragen mehr offen sein |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Wenn nicht: Lade dir einfach mal die ![]() |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Aber ich kann dich schon verstehen: Nach deinen Postings zu schließen, halte ich dich für einen fleißigen und ehrlichen Programmierer, der eben eine Aversion gegen "versteckten Code" hat. An und für sich eine gesunde Einstellung. "Aber da kommt so ein undurchsichtiger Typ daher (PeterPanino), der ein Beispiel für die Anwendung von GEKAUFTEM (huch!) Code bringt. Da muss doch was faul sein! Aber die Trial herunterzuladen und selbst zu testen und aus den Testergebnissen meine Schlüsse zu ziehen, dafür ist keine Zeit."
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Bevor ihr euch noch die Köpfe einschlagt, nehmt das hier als Diskussionsgrundlage
Delphi-Quellcode:
Das liefert dann mit
unit Unit1;
interface uses System.Generics.Defaults, System.Generics.Collections, System.SysUtils, System.Math; type TShannonEntropy = class public class function Calculate<T > ( const Source: array of T ): Double; overload; class function Calculate<T > ( const Source: array of T; const Comparer: IEqualityComparer<T> ): Double; overload; end; implementation { TShannonEntropy } class function TShannonEntropy.Calculate<T>( const Source: array of T; const Comparer: IEqualityComparer<T> ): Double; var d: TDictionary<T, Integer>; i: Integer; p,r: Double; begin d := TDictionary<T, Integer>.Create( Comparer ); try for i := Low( Source ) to High( Source ) do begin if d.ContainsKey( Source[i] ) then d[Source[i]] := d[Source[i]] + 1 else d.Add(Source[i],1); end; Result := 0; for i in d.Values do begin p := i / Length( Source ); r := p * Log2( p ); Result := Result + r; end; Result := -Result; finally FreeAndNil( d ); end; end; class function TShannonEntropy.Calculate<T>( const Source: array of T ): Double; begin Result := Calculate<T > ( Source, TEqualityComparer<T>.Default ); end; end.
Delphi-Quellcode:
auch die
program Project1;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, Unit1 in 'Unit1.pas'; procedure Test; var str: string; e: Double; begin str := 'Grüne'#13#10'SPD'#13#10'FDP'#13#10'CSU'#13#10'CDU'; e := TShannonEntropy.Calculate<Char > ( str.ToCharArray( ) ); WriteLn( e ); end; begin try Test; except on E: Exception do Writeln( E.ClassName, ': ', E.Message ); end; ReadLn; end.
Code:
Grundlage dafür ist
3.49366068968819E+0000
![]() |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
@Schokohase
Faszinierend!! Vielen Dank!! |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Nun ja, es ist lesen, verstehen, tippen. Faszinierendes kann ich da nicht erkennen.
Wenn man sich noch fragt, wie denn ein Kollege hier mit gleichen Werten einen anderen Wert bekommen hat, der ändert einfach mal eine Zeile ab
Delphi-Quellcode:
und erhält wie durch ein Wunder
// e := TShannonEntropy.Calculate<Char> ( str.ToCharArray() );
e := TShannonEntropy.Calculate<Byte> ( TEncoding.UTF8.GetBytes(str) );
Code:
3.59448250651942E+0000
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Ich war gerade fasziniert von dem genialen Video und wie gut das in dem Video erklärt wird und von den anderen Videos in diesem Channel. (Ein Lehrer mit pädagogischem Eifer ist von sowas halt fasziniert).
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Liste der Anhänge anzeigen (Anzahl: 2)
*entfernt um Platz zu sparen*
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
Außerdem: Hast du noch immer nicht verstanden, dass das nichts mit PE-Dateien zu tun hat? |
AW: Brainstorming: Datei mit definierter Entropie erzeugen
*entfernt um Platz zu sparen*
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
Zitat:
|
AW: Brainstorming: Datei mit definierter Entropie erzeugen
*entfernt um Platz zu sparen*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz