Aktuelle Zeit: 01.04.2020 06:34

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Phasenraumplot
BeitragVerfasst: 07.04.2008 20:58 
Offline
Benutzeravatar

Registriert: 11.11.2004 16:13
Wohnort: Magdeburg
Angeregt durch einen Artikel bei heise Security ("Verschusselt statt verschlüsselt") habe ich zu Testzwecken dieses Progrämmchen geschrieben. Der optische Unterschied zwischen einer "normalen" Exe-Datei und der (mit AES) verschlüsselten Datei ist schon beeindruckend.
Die Test-Datei (für z.B. eigene Verschlüsselungen) sollte schon einige KB groß sein, begrenzt nach oben habe ich es auf 100.000 Bytes.
Code:
;- Phasenraumplot
;- "Helle" Klaus Helbing, 07.04.2008, PB4.10
;- Dieser Phasenraumplot stellt die Bytes z.B. einer Datei 3-dimensional als Raumpunkte dar
;- Die Raum-Koordinaten errechnen sich folgendermaßen:
;- Punkt1=(Byte1-Byte2, Byte2-Byte3, Byte3-Byte4), Punkt2=(Byte2-Byte3, Byte3-Byte4, Byte4-Byte5) usw.
;- Gut verschlüsselte Daten und gute Zufallszahlen ergeben im Phasenraumplot eine gleichmäßig
;- verteilte Punktewolke, ansonsten sieht man Strukturen (z.B. Linien)
;- Z wurde aus Platzgründen um Faktor 2 gestaucht
;- Zur besseren Übersicht wurde der Koordinaten-Ursprung nach oben verschoben

Cos10.f = Cos(10*#PI/180)
Sin10.f = Sin(10*#PI/180)
Cos60.f = 0.5                                    ;Cos(60°)
Sin60.f = Sin(60*#PI/180)

AX.l = 50
AY.l = 548
BX.l = AX + 0.75*510*Sin60                       ;0.75=Verkürzungsfaktor
BY.l = AY - 0.75*510*Cos60
CX.l = BX + 510*Cos10
CY.l = BY + 510*Sin10
DX.l = AX + 510*Cos10
DY.l = AY + 510*Sin10

Buffer = AllocateMemory(100000)                  ;100000 Bytes für die zu testende Datei

If OpenWindow(0, 0, 0, 900, 675, "Phasenraumplot", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(0,200,10,500,20,"Zu testende Datei auswählen :",#PB_Text_Center) 
  ExplorerTreeGadget(1, 10, 30, 880, 620,"",#PB_Explorer_NoDriveRequester)

  Repeat
    Event=WaitWindowEvent()
    If Event=#PB_Event_CloseWindow
      End
    EndIf   
  Until EventType()=#PB_EventType_LeftDoubleClick And GetGadgetState(1)=#PB_Explorer_File
 
  File$=GetGadgetText(1)

  ReadFile(0,File$)                              ;nur zum Lesen öffnen
  FileL=Lof(0)
 
  If FileL > 100000                             
    FileL = 100000                               ;hier auf 100000 Bytes begrenzt
  EndIf 

  ReadData(0, Buffer, FileL)

  If StartDrawing(WindowOutput(0))
    Box(0, 0, 900, 675, RGB(255,255,255))
    ;Z-Bemaßung
    LineXY(AX, AY, AX, 170)
    LineXY(45, 170, 55, 170)                     ;Querstrich +255
    LineXY(45, 298, 55, 298)                     ;Querstrich 0
    LineXY(45, 425, 55, 425)                     ;Querstrich -255
    DrawText(35 ,150, "( Z )")                   ;ist nicht die Achse, sondern die Bemaßung!
    DrawText(5, 165, "+255")
    DrawText(25, 290, "0")
    DrawText(5, 420, "-255")
    DrawText(475, 15, "Z", RGB(0, 0, 255), RGB(255, 255, 255))
    ;Y-Bemaßung
    LineXY(AX, AY, DX, DY)                       ;unten
    LineXY(BX, BY, CX, CY)                       ;oben
    YMXU = AX + (DX-AX)/2
    YMYU = AY + (DY-AY)/2
    YMXO = BX + (CX-BX)/2
    YMYO = BY + (CY-BY)/2
    LineXY(YMXU, YMYU, YMXO, YMYO, RGB(0, 0, 255))    ;blau
    DrawText(DX-40, DY, "( Y )")                 ;ist nicht die Achse, sondern die Bemaßung!
    DrawText(DX-10, DY+10, "+255")
    DrawText(YMXU-8, YMYU+3, "0")
    DrawText(AX-10, AY+5, "-255")
    DrawText(670, 535, "Y", RGB(0, 0, 255), RGB(255, 255, 255))
    ;X-Bemaßung
    LineXY(AX, AY, BX, BY)                       ;links
    LineXY(DX, DY, CX, CY)                       ;rechts
    XMXL = AX + (BX-AX)/2
    XMYL = BY + (AY-BY)/2
    XMXR = DX + (CX-DX)/2
    XMYR = CY + (DY-CY)/2
    LineXY(XMXL, XMYL, XMXR, XMYR, RGB(0, 0, 255))    ;blau
    DrawText(DX+10, DY-5, "( X )")               ;ist nicht die Achse, sondern die Bemaßung!
    DrawText(XMXR+5, XMYR, "0")
    DrawText(CX-10, CY-20, "-255")
    DrawText(335, 575, "X", RGB(0, 0, 255), RGB(255, 255, 255))
    ;"echte" Z-Achse 
    MXZ = YMXU + (YMXO-YMXU)/2 
    MYZ = YMYO + (YMYU-YMYO)/2   
   ;Nullpunkt = (MXZ, MYZ-AY+170+128) 
    MX = MXZ
    MY = MYZ-AY+170+128

;--------------------------------------------------------------------------------------------------
    For R=0 To FileL - 4
      T = PeekL(Buffer + R)

      A.c = T & 255
      B.c = T >> 8
      T>>8
      C.c = T >> 8
      T>>8
      D.c = T >> 8

      PX = A-B
      PY = B-C
      PZ = C-D

      PXX = MX - 0.75*PX*Sin60
      PXY = MY + 0.75*PX*Cos60
     
      PYX = PXX + PY*Cos10
      PYY = PXY + PY*Sin10

      PZY = PYY - PZ/2
     
      Plot(PYX, PZY, RGB(255, 0, 0))             ;roten Punkt zeichnen
    Next

    ;"echte" Z-Achse mit Koordinaten-Ursprung zur Orientierung nachträglich einzeichnen
    LineXY(MXZ, MYZ, MXZ, MYZ-AY+70, RGB(0, 0, 255))  ;blau 
    LineXY(MXZ-5, MYZ-AY+170+128,MXZ+5, MYZ-AY+170+128)
    DrawText(MXZ+5, MYZ-AY+170+128-8, "(0,0,0)") 

    StopDrawing()
  EndIf
  Repeat : Event = WaitWindowEvent() : Until  Event = #PB_Event_CloseWindow
EndIf

Gruß
Helle


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 07.04.2008 21:29 
Offline
Benutzeravatar

Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte
Beeindrucked wie immer! Bild

_________________
Windows 10 Pro, 64-Bit / Outtakes | Derek


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye