/*************************************************************************** * * * FILEENCRYPT * * * * Encrypts & Decrypts any file, you like to hide from curiosity... * * * * Public Domain, by Lorenz Wiest during 30th Jul - 7th Aug '90 * * * ***************************************************************************/ #define TOPY 11 #define WIDTH 272 #define HEIGHT 155 #define ENCRYPT 0 #define DECRYPT 1 #include "exec/types.h" #include "exec/memory.h" #include "intuition/intuition.h" #include "graphics/gfx.h" #include "graphics/gfxmacros.h" #include "libraries/dos.h" struct IntuitionBase *IntuitionBase = NULL; struct GfxBase *GfxBase = NULL; struct IntuiMessage *Nachricht = NULL; struct Window *Window = NULL; struct Remember *MyRememberKey = NULL; struct RastPort *WRast = NULL; struct NewWindow NewWindow = { 130,30,WIDTH,HEIGHT,0,1,CLOSEWINDOW|GADGETUP, WINDOWDEPTH|WINDOWDRAG|WINDOWCLOSE|ACTIVATE, 0,0," FileEncrypt ",0,0,0,0,0,0,WBENCHSCREEN }; ULONG Copy2Chip(); #define INTRO 1 #define MODUS 2 #define READ 3 #define WRITE 4 #define KEYWD 5 #define ERROR 6 char ReadFile[50]="DF1:\0"; char WriteFile[50]="DF1:\0"; char KeyWord[40]="\0"; char UndoString[40]; int CurrentMode = ENCRYPT; int Frame=INTRO; int NextFrame; struct Gadget *Adr; struct Gadget *FirstGad = NULL; int GadgetNumber= 0; UWORD SleepD[] = { 0x0000,0x0000,0x0600,0x0600,0x0f40,0x0f40,0x3fe0,0x3fe0, 0x7fe0,0x7fe0,0x61f0,0x7ff0,0x7bf8,0x7ff8,0xf7f8,0xfff8, 0x61fc,0x7ffc,0x7f0c,0x7ffc,0x3fde,0x3ffe,0x7fbc,0x7ffc, 0x3f0c,0x3ffc,0x1ff8,0x1ff8,0x07f0,0x07f0,0x01c0,0x01c0, 0x0700,0x0700,0x0fc0,0x0fc0,0x0680,0x0680,0x0000,0x0000, 0x00c0,0x00c0,0x00e0,0x00e0,0x0040,0x0040,0x0000,0x0000 }; UWORD Icon1D[] = { 0xE310,0x0001,0x0000,0x0000,0x0000,0x0000,0x003D,0x0017, 0x0005,0x0003,0x0001,0x00C0,0xBFC0,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0400,0x00C4,0x5DC6,0x0001,0x8C88,0x8000,0x0000,0x8000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x003D,0x0017,0x0002,0x0001,0x68E8,0x0300,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0007,0xFFFF,0xF980, 0x0000,0x0007,0xFFFF,0xF9E0,0x0000,0x0000,0x07FF,0xF9F8, 0x0000,0x003F,0xF07F,0xF9FE,0x0000,0x01D5,0x5E3F,0xF800, 0x0000,0x06BF,0xEB81,0xFFFF,0x8000,0x0FFF,0xFDDC,0x0000, 0x0000,0x181F,0xFEFF,0xFFFF,0xFF80,0x300F,0xFF60,0x0000, 0x03E0,0x300F,0xFF7F,0xFFFF,0xFFC0,0x300F,0xFF7F,0xFFFF, 0xFE00,0x181F,0xFEFF,0xCE47,0x3000,0x0FFF,0xFDDC,0x0000, 0x0000,0x06BF,0xEB81,0xFFFF,0x8000,0x01D5,0x5E3F,0xFFFF, 0x8000,0x003F,0xF0FF,0xC00F,0x8000,0x0000,0x07FF,0xFFFF, 0x8000,0x0007,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x001F,0xFFFF,0xFF80, 0x0000,0x0018,0x0000,0x0660,0x0000,0x0018,0x0000,0x0618, 0x0000,0x003F,0xF800,0x0606,0x0000,0x03FF,0xFF80,0x0601, 0x8000,0x0FFF,0xFFC0,0x07FF,0xE000,0x1FFF,0xFFFE,0x0000, 0x6000,0x3FFF,0xFFFF,0xFFFF,0xFFC0,0x7FFF,0xFFFF,0xFFFF, 0xFFF0,0xFF7F,0xFFFF,0xFFFF,0xFFF8,0xFE3F,0xFFFF,0xFFFF, 0xFFF0,0xFF7F,0xFFFF,0xFFFF,0xFFE0,0x7FFF,0xFFFF,0xFFFF, 0xFF00,0x3FFF,0xFFFF,0xFFFF,0xF800,0x1FFF,0xFFFE,0x0000, 0x6000,0x0FFF,0xFFC0,0x0000,0x6000,0x03FF,0xFF00,0x3FF0, 0x6000,0x007F,0xF800,0x0000,0x6000,0x0018,0x0000,0x0000, 0x6000,0x001F,0xFFFF,0xFFFF,0xE000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0001,0x0000,0x0000,0x0800,0x0000,0x0100 }; UWORD Icon2D[] = { 0xE310,0x0001,0x0000,0x0000,0x0000,0x0000,0x0028,0x0016, 0x0005,0x0003,0x0001,0x00C0,0xD5B8,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0400,0x00C8,0x7B4E,0x0001,0x7D40,0x8000,0x0000,0x8000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0028,0x0016,0x0002,0x0001,0x6A58,0x0300,0x0000, 0x0000,0x0000,0x0000,0x0000,0x3FFF,0xFFCC,0x0000,0x3FFF, 0xFFCF,0x0000,0x3FFF,0xFFCF,0xC000,0x3803,0xFFCF,0xF000, 0x3FFF,0xFFC0,0x0000,0x3803,0xFFFF,0xFC00,0x3FFF,0xFFFF, 0xFC00,0x3FFF,0xFFFF,0xFC00,0x3F84,0x00C0,0x7C00,0x3FFF, 0xFFFF,0xFC00,0x3900,0x8000,0x7C00,0x3FFF,0xFFFF,0xFC00, 0x3800,0x0040,0x7C00,0x3FFF,0xFFFF,0xFC00,0x3FFF,0xFFFF, 0xFC00,0x3FFF,0xFE00,0x7C00,0x3FFF,0xFFFF,0xFC00,0x3FFF, 0xFFFF,0xFC00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0xFFFF,0xFFFC,0x0000,0xC000,0x0033, 0x0000,0xC000,0x0030,0xC000,0xC000,0x0030,0x3000,0xC7FC, 0x0030,0x0C00,0xC000,0x003F,0xFF00,0xC7FC,0x0000,0x0300, 0xC000,0x0000,0x0300,0xC000,0x0000,0x0300,0xC07B,0xFF3F, 0x8300,0xC000,0x0000,0x0300,0xC6FF,0x7FFF,0x8300,0xC000, 0x0000,0x0300,0xC7FF,0xFFBF,0x8300,0xC000,0x0000,0x0300, 0xC000,0x0000,0x0300,0xC000,0x01FF,0x8300,0xC000,0x0000, 0x0300,0xC000,0x0000,0x0300,0xFFFF,0xFFFF,0xFF00,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000, 0x0000,0x0800,0x0000,0x0100 }; UWORD CheckOnD[2][12][2] = { { 0xffff,0x0fff,0xf80c,0xf3ff,0xc3e3,0xe2ff,0x9dcf,0x057f, 0x1ebc,0x2aff,0x2f72,0x55ff,0x37ee,0x2fff,0x9bdc,0x57ff, 0xc1a0,0xafff,0xf805,0x5fff,0xfeaa,0xbfff,0xffd5,0xffff }, { 0x0000,0xf000,0x07f3,0xfc00,0x3c1f,0xfd00,0x7e3f,0xfa80, 0xff7f,0xd500,0xdffd,0xaa00,0xcff1,0xd000,0x67e3,0xa800, 0x3fdf,0x5000,0x07fa,0xa000,0x0155,0x4000,0x002a,0x0000 }, }; UWORD CheckOffD[2][12][2] = { { 0xffff,0xffff,0xf80f,0xffff,0xc3e1,0xffff,0x9ffc,0xffff, 0x3ffe,0x3fff,0x3ffe,0x5fff,0x3ffe,0x2fff,0x9ffc,0x57ff, 0xc3e0,0xafff,0xf805,0x5fff,0xfeaa,0xbfff,0xffd5,0xffff }, { 0x0000,0x0000,0x07f0,0x0000,0x3c1e,0x0000,0x6003,0x0000, 0xc001,0xc000,0xc001,0xa000,0xc001,0xd000,0x6003,0xa800, 0x3c1f,0x5000,0x07fa,0xa000,0x0155,0x4000,0x002a,0x0000 }, }; UWORD KeyDottedD[2][17][5] = { { 0xaabf,0xffaa,0xaaaa,0xaaaa,0x8000,0x55f0,0x01f5,0x5555, 0x5555,0x0000,0xaf0f,0xfc3a,0xaaaa,0xaaaa,0x8000,0x5c75, 0x578f,0xd555,0x5555,0x0000,0xb9af,0xfae0,0x7fff,0xfffa, 0x8000,0x73ff,0xff77,0x0000,0x000f,0x0000,0xe607,0xffbf, 0xffff,0xffe3,0x8000,0xcc73,0xffd8,0x0000,0x00f9,0x8000, 0xccfb,0xffdf,0xffff,0xfff3,0x8000,0xcc73,0xffdf,0xffff, 0xff87,0x0000,0xe607,0xffbf,0xf391,0xcc3e,0x8000,0x73ff, 0xff77,0x0000,0x01f5,0x0000,0xb9af,0xfae0,0x7fff,0xffaa, 0x8000,0x5c75,0x578f,0xd555,0x5555,0x0000,0xaf0f,0xfc3a, 0xaaaa,0xaaaa,0x8000,0x55e0,0x01f5,0x5555,0x5555,0x0000, 0xaabf,0xffaa,0xaaaa,0xaaaa,0x8000 }, { 0x5540,0x0055,0x5555,0x5555,0x0000,0xaa0f,0xfe0a,0xaaaa, 0xaaaa,0x8000,0x50ff,0xffc5,0x5555,0x5555,0x0000,0xa3ff, 0xfff0,0x2aaa,0xaaaa,0x8000,0x47ff,0xffff,0x8000,0x0005, 0x0000,0x8fff,0xffff,0xffff,0xfff0,0x8000,0x1fff,0xffff, 0xffff,0xfffc,0x0000,0x3f8f,0xffff,0xffff,0xfffe,0x0000, 0x3f07,0xffff,0xffff,0xfffc,0x0000,0x3f8f,0xffff,0xffff, 0xfff8,0x8000,0x1fff,0xffff,0xffff,0xffc1,0x0000,0x8fff, 0xffff,0xffff,0xfe0a,0x8000,0x47ff,0xffff,0x8000,0x0055, 0x0000,0xa3ff,0xfff0,0x2aaa,0xaaaa,0x8000,0x50ff,0xffc5, 0x5555,0x5555,0x0000,0xaa1f,0xfe0a,0xaaaa,0xaaaa,0x8000, 0x5540,0x0055,0x5555,0x5555,0x0000 }, }; UWORD NoKeyDottedD[2][29][4] = { { 0x5555,0x557f,0xff55,0x5555,0xaaaa,0xafc0,0x01fa,0xaaaa, 0x5555,0x783f,0xfe0f,0x5555,0xaaab,0xc7ff,0xfff1,0xeaaa, 0x5557,0x3fff,0xfffe,0x7555,0xaaac,0xffff,0xffff,0x9eaa, 0x555b,0xfff8,0x03ff,0xe755,0xabf0,0x0ffd,0xfc3f,0xfbaa, 0x570f,0xfffe,0xffc7,0xfdd5,0xac75,0x57ff,0x7ff9,0xfeea, 0x59af,0xffff,0xbffe,0xff3d,0xb3ff,0xffff,0xc000,0x000e, 0x6607,0xffff,0xefff,0xffe3,0xcc73,0xffff,0xf000,0x00f9, 0xccfb,0xffff,0xfbff,0xfff3,0xcc73,0xffdf,0xfdff,0xff86, 0x6607,0xffbf,0xfe11,0xcc3d,0xb3ff,0xff7d,0xff00,0x016a, 0x59af,0xfae0,0xffbe,0xff75,0xac75,0x578f,0x7fd9,0xfeea, 0x570f,0xfc3f,0xbfe7,0xfdd5,0xabe0,0x001f,0xdfff,0xfbaa, 0x557b,0xffe0,0x07ff,0xe755,0xaaac,0xffff,0xffff,0x9eaa, 0x5557,0x3fff,0xfffe,0x7555,0xaaab,0xc7ff,0xfff1,0xeaaa, 0x5555,0x783f,0xfe0f,0x5555,0xaaaa,0xafc0,0x01fa,0xaaaa, 0x5555,0x557f,0xff55,0x5555 }, { 0xaaaa,0xaa80,0x00aa,0xaaaa,0x5555,0x503f,0xfe05,0x5555, 0xaaaa,0x87ff,0xfff0,0xaaaa,0x5554,0x3fff,0xfffe,0x1555, 0xaaa8,0xffff,0xffff,0x8aaa,0x5553,0xffff,0xffff,0xe155, 0xaaa7,0xffff,0xffff,0xf8aa,0x540f,0xf7fe,0x03ff,0xfc55, 0xa8f0,0x03ff,0x003f,0xfe2a,0x538a,0xa9ff,0x8007,0xff15, 0xa650,0x00ff,0xc001,0xffc2,0x4c00,0x007f,0xffff,0xfff1, 0x99f8,0x003f,0xf000,0x001c,0x33fc,0x001f,0xffff,0xff06, 0x33fc,0x000f,0xfc00,0x000c,0x33fc,0x0027,0xfe00,0x0079, 0x99f8,0x0043,0xffee,0x33c2,0x4c00,0x0083,0xffff,0xff95, 0xa650,0x051f,0xffc1,0xff8a,0x538a,0xa870,0xffe7,0xff15, 0xa8f0,0x03c0,0x7fff,0xfe2a,0x541f,0xffe0,0x3fff,0xfc55, 0xaa87,0xffff,0xffff,0xf8aa,0x5553,0xffff,0xffff,0xe155, 0xaaa8,0xffff,0xffff,0x8aaa,0x5554,0x3fff,0xfffe,0x1555, 0xaaaa,0x87ff,0xfff0,0xaaaa,0x5555,0x503f,0xfe05,0x5555, 0xaaaa,0xaa80,0x00aa,0xaaaa }, }; UWORD KeyBlankD[2][15][4] = { { 0xffc0,0x07ff,0xffff,0xfff8,0xfc3f,0xf0ff,0xffff,0xfff8, 0xf1d5,0x5e3f,0xffff,0xfff8,0xe6bf,0xeb81,0xffff,0xfff8, 0xcfff,0xfddc,0x0000,0x0038,0x981f,0xfeff,0xffff,0xff88, 0x31cf,0xff60,0x0000,0x03e0,0x33ef,0xff7f,0xffff,0xffc8, 0x31cf,0xff7f,0xffff,0xfe18,0x981f,0xfeff,0xce47,0x30f8, 0xcfff,0xfddc,0x0000,0x07f8,0xe6bf,0xeb81,0xffff,0xfff8, 0xf1d5,0x5e3f,0xffff,0xfff8,0xfc3f,0xf0ff,0xffff,0xfff8, 0xff80,0x07ff,0xffff,0xfff8 }, { 0x003f,0xf800,0x0000,0x0000,0x03ff,0xff00,0x0000,0x0000, 0x0fff,0xffc0,0x0000,0x0000,0x1fff,0xfffe,0x0000,0x0000, 0x3fff,0xffff,0xffff,0xffc0,0x7fff,0xffff,0xffff,0xfff0, 0xfe3f,0xffff,0xffff,0xfff8,0xfc1f,0xffff,0xffff,0xfff0, 0xfe3f,0xffff,0xffff,0xffe0,0x7fff,0xffff,0xffff,0xff00, 0x3fff,0xffff,0xffff,0xf800,0x1fff,0xfffe,0x0000,0x0000, 0x0fff,0xffc0,0x0000,0x0000,0x03ff,0xff00,0x0000,0x0000, 0x007f,0xf800,0x0000,0x0000 }, }; UWORD NoKeyBlankD[2][27][4] = { { 0xffff,0xff00,0x07ff,0xfff8,0xffff,0xe0ff,0xf83f,0xfff8, 0xffff,0x1fff,0xffc7,0xfff8,0xfffc,0xffff,0xfff9,0xfff8, 0xfff3,0xffff,0xfffe,0x7ff8,0xffef,0xffe0,0x0fff,0x9ff8, 0xffc0,0x3ff7,0xf0ff,0xeff8,0xfc3f,0xfffb,0xff1f,0xf7f8, 0xf1d5,0x5ffd,0xffe7,0xfbf8,0xe6bf,0xfffe,0xfffb,0xfcf8, 0xcfff,0xffff,0x0000,0x0038,0x981f,0xffff,0xbfff,0xff88, 0x31cf,0xffff,0xc000,0x03e0,0x33ef,0xffff,0xefff,0xffc8, 0x31cf,0xff7f,0xf7ff,0xfe18,0x981f,0xfeff,0xf847,0x30f8, 0xcfff,0xfdf7,0xfc00,0x05f8,0xe6bf,0xeb83,0xfefb,0xfdf8, 0xf1d5,0x5e3d,0xff67,0xfbf8,0xfc3f,0xf0fe,0xff9f,0xf7f8, 0xff80,0x007f,0x7fff,0xeff8,0xffef,0xff80,0x1fff,0x9ff8, 0xfff3,0xffff,0xfffe,0x7ff8,0xfffc,0xffff,0xfff9,0xfff8, 0xffff,0x1fff,0xffc7,0xfff8,0xffff,0xe0ff,0xf83f,0xfff8, 0xffff,0xff00,0x07ff,0xfff8 }, { 0x0000,0x00ff,0xf800,0x0000,0x0000,0x1fff,0xffc0,0x0000, 0x0000,0xffff,0xfff8,0x0000,0x0003,0xffff,0xfffe,0x0000, 0x000f,0xffff,0xffff,0x8000,0x001f,0xffff,0xffff,0xe000, 0x003f,0xdff8,0x0fff,0xf000,0x03c0,0x0ffc,0x00ff,0xf800, 0x0e2a,0xa7fe,0x001f,0xfc00,0x1940,0x03ff,0x0007,0xff00, 0x3000,0x01ff,0xffff,0xffc0,0x67e0,0x00ff,0xc000,0x0070, 0xcff0,0x007f,0xffff,0xfc18,0xcff0,0x003f,0xf000,0x0030, 0xcff0,0x009f,0xf800,0x01e0,0x67e0,0x010f,0xffb8,0xcf00, 0x3000,0x020f,0xffff,0xfe00,0x1940,0x147f,0xff07,0xfe00, 0x0e2a,0xa1c3,0xff9f,0xfc00,0x03c0,0x0f01,0xffff,0xf800, 0x007f,0xff80,0xffff,0xf000,0x001f,0xffff,0xffff,0xe000, 0x000f,0xffff,0xffff,0x8000,0x0003,0xffff,0xfffe,0x0000, 0x0000,0xffff,0xfff8,0x0000,0x0000,0x1fff,0xffc0,0x0000, 0x0000,0x00ff,0xf800,0x0000 }, }; UWORD ObenRechtsD[2][4][1] = { { 0x2a00,0x0400,0xc200,0xf000 },{ 0xd400,0xfa00,0x3c00,0x0e00 }, }; UWORD ObenLinksD[2][4][1] = { { 0xa800,0x5000,0x8600,0x1e00 },{ 0x5600,0xae00,0x7800,0xe000 }, }; UWORD UntenLinksD[2][4][1] = { { 0x9e00,0x4600,0xa000,0x5400 }, { 0x6000,0xb800,0x5e00,0xaa00 }, }; UWORD UntenRechtsD[2][4][1] = { { 0xf200,0xc400,0x0a00,0x5400 }, { 0x0c00,0x3a00,0xf400,0xaa00 }, }; UWORD SprechZapfenD[2][9][2] = { { 0x0001,0xffc0,0xaaa9,0xffc0,0x5551,0xffc4,0xaaa9,0xff88, 0x5553,0xfe14,0xaa87,0xf828,0x551f,0xc154,0xa878,0x0aa8, 0x0000,0x5554 }, { 0xfffe,0x003c,0x5556,0x003c,0xaaae,0x0038,0x5556,0x0074, 0xaaac,0x01e8,0x5578,0x07d4,0xaae0,0x3ea8,0x5787,0xf554, 0xffff,0xaaa8 }, }; UWORD FileEncryptLabelD[2][15][10] = { { 0x060e,0x1e0f,0xfffc,0x183f,0xffff,0xffff,0xffff,0xffff, 0xffc7,0xc000,0x878e,0x1f0f,0xfffe,0x1e3f,0xffff,0xffff, 0xffff,0xffff,0xff87,0xc000,0x87cf,0xff0f,0xfffe,0x1f3f, 0xffff,0xffff,0xffff,0xffff,0xff87,0xc000,0x87fc,0x1f0f, 0xc61e,0x1ff0,0x61f8,0x6383,0x1c0e,0x060c,0x1e06,0x0000, 0x873e,0x1f0f,0x8f0e,0x1cf8,0x70f0,0xe1c3,0x0e1f,0x0f0f, 0x0f87,0xc000,0x863e,0x1f0f,0x0f0e,0x18f8,0x70e1,0xffc3, 0xfe1f,0x0f0f,0x8787,0xc000,0x863e,0x1f0f,0x0f0e,0x18f8, 0x70e1,0xffc3,0xff0f,0x0f0f,0x8787,0xc000,0x873e,0x1f0f, 0x0e0e,0x1cf8,0x70e1,0xffc3,0xff8f,0x0f0f,0x8787,0xc000, 0x87fe,0x1f0f,0x0ffe,0x1ff8,0x70e1,0xffc3,0xff87,0x1f0f, 0x8787,0xc000,0x87fe,0x1f0f,0x0ffe,0x1f38,0x70e1,0xf1c3, 0xffc3,0x1f0f,0x8787,0xc000,0x87fe,0x1f0f,0x8f0e,0x1e38, 0x70f0,0xe1c3,0xffe6,0x1f0f,0x0f86,0x0000,0x03fc,0x0e07, 0xc61c,0x1830,0x2078,0x6381,0xfffe,0x3f0c,0x1fc6,0x4000, 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xff8c,0x3f0f, 0xffff,0xc000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 0xff80,0x7f0f,0xffff,0xc000,0xffff,0xffff,0xffff,0xffff, 0xffff,0xffff,0xffc0,0xfe03,0xffff,0xc000 }, { 0xf9f1,0xe1f0,0x0003,0xe7c0,0x0000,0x0000,0x0000,0x0000, 0x0038,0x0000,0x7871,0xe0f0,0x0001,0xe1c0,0x0000,0x0000, 0x0000,0x0000,0x0078,0x0000,0x7830,0x00f0,0x0001,0xe0c0, 0x0000,0x0000,0x0000,0x0000,0x0078,0x0000,0x7803,0xe0f0, 0x39e1,0xe00f,0x9e07,0x9c7c,0xe3f1,0xf9f3,0xe1f9,0xc000, 0x78c1,0xe0f0,0x70f1,0xe307,0x8f0f,0x1e3c,0xf1e0,0xf0f0, 0xf078,0x0000,0x79c1,0xe0f0,0xf0f1,0xe707,0x8f1e,0x003c, 0x01e0,0xf0f0,0x7878,0x0000,0x79c1,0xe0f0,0xf0f1,0xe707, 0x8f1e,0x003c,0x00f0,0xf0f0,0x7878,0x0000,0x78c1,0xe0f0, 0xf1f1,0xe307,0x8f1e,0x003c,0x0070,0xf0f0,0x7878,0x0000, 0x7801,0xe0f0,0xf001,0xe007,0x8f1e,0x003c,0x0078,0xe0f0, 0x7878,0x0000,0x7801,0xe0f0,0xf001,0xe0c7,0x8f1e,0x0e3c, 0x003c,0xe0f0,0x7878,0x0000,0x7801,0xe0f0,0x70f1,0xe1c7, 0x8f0f,0x1e3c,0x0019,0xe0f0,0xf079,0xc000,0xfc03,0xf1f8, 0x39e3,0xe7cf,0xdf87,0x9c7e,0x0001,0xc0f3,0xe039,0x8000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0073,0xc0f0, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x007f,0x80f0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x003f,0x01fc,0x0000,0x0000 }, }; struct Image CheckOn ={0,-1,25,12,2,NULL,3,0,NULL}; struct Image CheckOff ={0,-1,25,12,2,NULL,3,0,NULL}; struct Image KeyDotted ={0,0,65,17,2,NULL,3,0,NULL}; struct Image NoKeyDotted ={1,0,64,29,2,NULL,3,0,NULL}; struct Image KeyBlank ={9,10,61,15,2,NULL,3,0,NULL}; struct Image NoKeyBlank ={11,4,61,27,2,NULL,3,0,NULL}; struct Image FileEncryptLabel={0,0,146,15,2,NULL,3,0,NULL}; struct Image SprechZapfen ={ 83,118,30,9,2,NULL,3,0,NULL}; struct Image UntenRechts ={249,115, 7,4,2,NULL,3,0,&SprechZapfen}; struct Image UntenLinks ={ 15,115, 7,4,2,NULL,3,0,&UntenRechts}; struct Image ObenRechts ={249, 19, 7,4,2,NULL,3,0,&UntenLinks}; struct Image ObenLinks ={ 15, 19, 7,4,2,NULL,3,0,&ObenRechts}; UWORD *SleepPointer; OpenImages() { CheckOn.ImageData =Copy2Chip(sizeof(CheckOnD)/2 ,&CheckOnD[0]); CheckOff.ImageData =Copy2Chip(sizeof(CheckOffD)/2 ,&CheckOffD[0]); KeyDotted.ImageData =Copy2Chip(sizeof(KeyDottedD)/2 ,&KeyDottedD[0]); NoKeyDotted.ImageData =Copy2Chip(sizeof(NoKeyDottedD)/2 ,&NoKeyDottedD[0]); KeyBlank.ImageData =Copy2Chip(sizeof(KeyBlankD)/2 ,&KeyBlankD[0]); NoKeyBlank.ImageData =Copy2Chip(sizeof(NoKeyBlankD)/2 ,&NoKeyBlankD[0]); FileEncryptLabel.ImageData=Copy2Chip(sizeof(FileEncryptLabelD)/2,&FileEncryptLabelD[0]); SprechZapfen.ImageData =Copy2Chip(sizeof(SprechZapfenD)/2 ,&SprechZapfenD[0]); UntenRechts.ImageData =Copy2Chip(sizeof(UntenRechtsD)/2 ,&UntenRechtsD[0]); UntenLinks.ImageData =Copy2Chip(sizeof(UntenLinksD)/2 ,&UntenLinksD[0]); ObenLinks.ImageData =Copy2Chip(sizeof(ObenLinksD)/2 ,&ObenLinksD[0]); ObenRechts.ImageData =Copy2Chip(sizeof(ObenRechtsD)/2 ,&ObenRechtsD[0]); SleepPointer =Copy2Chip(sizeof(SleepD)/2 ,&SleepD[0]); } #define CANCELB 0 #define OKB 1 #define ENCRYPTB 2 #define DECRYPTB 3 #define TEXTB 4 #define CREATEB 5 #define ITEXT(x,y,text,n) {2,0,JAM1,(x),(y),NULL,(text),(n)} #define DEFGADGET(x,y,w,h,text,id) {0,(x),(y),(w),(h),GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,0,0,(text),0,0,(id),0} struct IntuiText OKText = ITEXT(21,2,"OK",NULL); struct Gadget OKButton = DEFGADGET(105,100,57,11,&OKText,OKB); struct IntuiText CANCELText = ITEXT(6,2,"Cancel",NULL); struct Gadget CANCELButton = DEFGADGET(173,100,57,11,&CANCELText,CANCELB); struct StringInfo TEXTInfo = {NULL, &UndoString[0], 4, 40,0, 0,0,0,0,0,0,0,0}; struct Gadget TEXTButton = {NULL, 31, 58, 208, 8, GADGHCOMP, GADGIMMEDIATE|RELVERIFY, STRGADGET, NULL, NULL, NULL, 0, &TEXTInfo, TEXTB, NULL}; struct IntuiText ENCRYPTText = ITEXT(11,33,"Encrypt",NULL), DECRYPTText = ITEXT(11,33,"Decrypt",NULL); struct Gadget DECRYPTButton = {0,147,54,79,45,GADGIMAGE|GADGHCOMP,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,&NoKeyBlank,0,&DECRYPTText,0,0,DECRYPTB,0}; struct Gadget ENCRYPTButton = {0, 41,54,79,45,GADGIMAGE|GADGHCOMP,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,&KeyBlank,0,&ENCRYPTText,0,0,ENCRYPTB,0}; struct IntuiText CREATEText = ITEXT(31,1,"Create Icon",NULL); struct Gadget CREATEButton = {NULL, 77, 78, 16, 8, GADGHIMAGE|GADGIMAGE|SELECTED, TOGGLESELECT|GADGIMMEDIATE|RELVERIFY, BOOLGADGET, &CheckOff, &CheckOn, &CREATEText, 0, NULL, CREATEB, NULL}; Encrypt(Buffer, Length) UBYTE *Buffer; ULONG Length; { /*** TOP SECRET ***/ } Decrypt(Buffer, Length) UBYTE *Buffer; ULONG Length; { /*** TOP SECRET ***/ } #define ERROR_MEMORY_IS_LOW 71 #define ERROR_CANT_OPEN_FILE 72 #define ERROR_CANT_CREATE_FILE 73 struct IntuiText TextErr3 = ITEXT(38,71,NULL,NULL); struct IntuiText TextErr2 = ITEXT(37,71,NULL,&TextErr3); struct IntuiText TextErr = ITEXT(37,43,"Sorry, an error happened:",&TextErr2); Error(Number, Frame) int Number, Frame; { static char ErrMemory[] = "Not Enough Memory.\0", ErrNoOpen[] = "Can't Open File.\0", ErrNoCrea[] = "Can't Create File.\0", ErrNotFou[] = "File Not Found.\0"; NextFrame=Frame; switch(Number) { case ERROR_MEMORY_IS_LOW : TextErr2.IText=TextErr3.IText=&ErrMemory[0]; break; case ERROR_CANT_OPEN_FILE : TextErr2.IText=TextErr3.IText=&ErrNoOpen[0]; break; case ERROR_CANT_CREATE_FILE: TextErr2.IText=TextErr3.IText=&ErrNoCrea[0]; break; break; } switch(IoErr()) { case ERROR_OBJECT_NOT_FOUND: TextErr2.IText=TextErr3.IText=&ErrNotFou[0]; break; break; } SwitchToFrame(ERROR); } FileLoadAndSave(Mode) int Mode; { struct FileLock *MyLock; struct FileInfoBlock *MyFIB; struct FileHandle *MyReadHandle; struct FileHandle *MyWriteHandle; char *MyBuffer; char IconFile[45]; register int i; ULONG DataPtr, DataSize; SetPointer(Window, SleepPointer, 22, 15, 0,0); MyLock = Lock(&ReadFile[0], ACCESS_READ); if(MyLock==NULL) { Error(ERROR_OBJECT_NOT_FOUND, READ); goto LeaveIt3; } if((MyFIB=AllocMem(sizeof(struct FileInfoBlock), MEMF_CLEAR))==NULL) { Error(ERROR_MEMORY_IS_LOW, MODUS); goto LeaveIt2; } Examine(MyLock, MyFIB); if((MyReadHandle=Open(&ReadFile[0], MODE_OLDFILE))==NULL) { Error(ERROR_CANT_OPEN_FILE, READ); goto LeaveIt2; } if((MyBuffer=AllocMem(MyFIB->fib_Size, MEMF_CLEAR))==NULL) { Error(ERROR_MEMORY_IS_LOW, MODUS); goto LeaveIt2; } if((Read(MyReadHandle, MyBuffer, MyFIB->fib_Size))==-1) { Close(MyReadHandle); Error(ERROR_CANT_OPEN_FILE, READ); goto LeaveIt; } Close(MyReadHandle); if(Mode==ENCRYPT) Encrypt(MyBuffer, MyFIB->fib_Size); else Decrypt(MyBuffer, MyFIB->fib_Size); if((MyWriteHandle=Open(&WriteFile[0], MODE_NEWFILE))==NULL) { Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; } if((Write(MyWriteHandle, MyBuffer, MyFIB->fib_Size))==-1) { Close(MyWriteHandle); DeleteFile(&WriteFile[0]); Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; } Close(MyWriteHandle); /**** Here we create the Icon - if desired - ****/ if(CREATEButton.Flags & SELECTED) { for(i=0; WriteFile[i]!=0; i++) IconFile[i]=WriteFile[i]; CopyMem(".info\0",&IconFile[i],5); if((MyWriteHandle=Open(&IconFile[0], MODE_NEWFILE))==NULL) { Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; } DataPtr = &Icon1D[0]; DataSize = sizeof(Icon1D); if(Mode==DECRYPT) { DataPtr = &Icon2D[0]; DataSize = sizeof(Icon2D); } if((Write(MyWriteHandle, DataPtr, DataSize))==-1) { Close(MyWriteHandle); DeleteFile(&IconFile[0]); DeleteFile(&WriteFile[0]); Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; } Close(MyWriteHandle); } /**** Finish of Icon section ****/ SwitchToFrame(MODUS); LeaveIt: FreeMem(MyBuffer,MyFIB->fib_Size); LeaveIt2: FreeMem(MyFIB,sizeof(struct FileInfoBlock)); LeaveIt3: UnLock(MyLock); } Do_Gadget(FrameNr, Button) int FrameNr, Button; { static struct IntuiText Text4e={2,1,JAM2,24,35,0," What about your Keyword ? " ,NULL}; register int i; switch(FrameNr) { case INTRO : SwitchToFrame(MODUS); break; case MODUS : CurrentMode=ENCRYPT; if(Button==DECRYPTB) CurrentMode=DECRYPT; SwitchToFrame(READ); break; case READ : if(Button==OKB) { for(i=0; ReadFile[i]!=0; i++) WriteFile[i]=ReadFile[i]; CopyMem(".ENCRYPT\0",&WriteFile[i],9); if(CurrentMode==DECRYPT) CopyMem("DE",&WriteFile[i+1],2); SwitchToFrame(KEYWD); }; if(Button==CANCELB) SwitchToFrame(MODUS); break; case KEYWD : if(Button==OKB) { if(TEXTInfo.NumChars<1) { PrintIText(WRast, &Text4e, 0, 0); ActivateGadget(&TEXTButton, Window, NULL); } else SwitchToFrame(WRITE); }; if(Button==CANCELB) SwitchToFrame(READ); break; case WRITE : if(Button==CANCELB) SwitchToFrame(KEYWD); if(Button==OKB) FileLoadAndSave(CurrentMode); break; case ERROR : if(Button==OKB) SwitchToFrame(NextFrame); break; break; } } LinkGadgets(Nr, Gad1, Gad2, Gad3, Gad4) int Nr; struct Gadget *Gad1, *Gad2, *Gad3, *Gad4; { if(Nr>=1) AddGadget(Window, Gad1, 1); if(Nr>=2) AddGadget(Window, Gad2, 2); if(Nr>=3) AddGadget(Window, Gad3, 3); if(Nr>=4) AddGadget(Window, Gad4, 4); FirstGad=Gad1; GadgetNumber=Nr; } SwitchToFrame(NewFrame) int NewFrame; { static struct IntuiText Text15 = {3,0,JAM1,35,82,0,"Copy me, I want to travel!",NULL}, Text14 = ITEXT(37,82,"Copy me, I want to travel!" ,&Text15), Text13 = ITEXT(77,67,"D-7958 Laupheim" ,&Text14), Text12 = ITEXT(85,57,"R\366ntgenweg 12" ,&Text13), Text11 = ITEXT(87,47,"Lorenz Wiest" ,&Text12), Text22 = {3,0,JAM1,186,36,0,"YOU" ,NULL}, Text21 = ITEXT(44,36,"What can I do for YOU ?" ,&Text22), Text31b = ITEXT(24,35,"Which file shall I decrypt ?" ,0), Text31a = ITEXT(24,35,"Which file shall I encrypt ?" ,0), Text41 = ITEXT(24,35,"Tell me your secret KeyWord." ,0), Text52b = ITEXT(24,40,"the decrypted file ?" ,0), Text52a = ITEXT(24,40,"the encrypted File ?" ,0), Text51 = ITEXT(24,29,"To which fille shall I write" ,0); ClearPointer(Window); Frame=NewFrame; FillBox( 1,22,23,248,114); FillBox(-1,20,120,83,148); if(FirstGad!=NULL) RemoveGList(Window, FirstGad, GadgetNumber); switch(Frame) { case INTRO : DrawImage(WRast,&FileEncryptLabel,59+8,26); PrintIText(WRast,&Text11,0,0); SetUpButton(&OKButton, 1, 3); LinkGadgets(1, &OKButton, 0, 0, 0); break; case MODUS : CurrentMode=ENCRYPT; PrintIText(WRast,&Text21,0,0); SetUpButton(&ENCRYPTButton, 1, 2); SetUpButton(&DECRYPTButton, 1, 2); LinkGadgets(2, &ENCRYPTButton, &DECRYPTButton, 0, 0); break; case READ : if(CurrentMode==ENCRYPT) PrintIText(WRast,&Text31a,0,0); else PrintIText(WRast,&Text31b,0,0); SetUpButton(&TEXTButton, 0, 2); SetUpButton(&OKButton, 1, 3); SetUpButton(&CANCELButton, 1, 2); TEXTInfo.Buffer=&ReadFile[0]; LinkGadgets(3, &TEXTButton, &OKButton, &CANCELButton, 0); break; case KEYWD : PrintIText(WRast,&Text41,0,0); SetUpButton(&TEXTButton, 0, 2); SetUpButton(&OKButton, 1, 3); SetUpButton(&CANCELButton, 1, 2); TEXTInfo.Buffer=&KeyWord[0]; LinkGadgets(3, &TEXTButton, &OKButton, &CANCELButton, 0); break; case WRITE : PrintIText(WRast, &Text51, 0, 0); if(CurrentMode==ENCRYPT) PrintIText(WRast,&Text52a,0,0); else PrintIText(WRast,&Text52b,0,0); SetUpButton(&TEXTButton, 0, 2); SetUpButton(&OKButton, 1, 3); SetUpButton(&CANCELButton, 1, 2); TEXTInfo.Buffer=&WriteFile[0]; LinkGadgets(4, &TEXTButton, &OKButton, &CANCELButton, &CREATEButton); break; case ERROR : PrintIText(WRast,&TextErr,0,0); SetUpButton(&OKButton, 1, 3); LinkGadgets(1, &OKButton, 0, 0, 0); break; break; } /* end of switch */ if(CurrentMode==ENCRYPT) DrawImage(WRast,&KeyDotted,20,126); else DrawImage(WRast,&NoKeyDotted,20,120); RefreshGadgets(FirstGad,Window,NULL); if(FirstGad->GadgetType==STRGADGET) ActivateGadget(FirstGad,Window,NULL); } main() { ULONG NachArt; USHORT Code; if ((IntuitionBase=(struct IntuitionBase *) OpenLibrary("intuition.library",0))==NULL) Schluss(); if ((GfxBase=(struct GfxBase *) OpenLibrary("graphics.library",0))==NULL) Schluss(); if ((Window=(struct Window *)OpenWindow(&NewWindow))==NULL) Schluss(); WRast=Window->RPort; OpenImages(); SketchWindow(); SwitchToFrame(INTRO); for (;;) { WaitPort(Window->UserPort); while(Nachricht=(struct IntuiMessage *)GetMsg(Window->UserPort)) { NachArt=Nachricht->Class; Code =Nachricht->Code; Adr =Nachricht->IAddress; ReplyMsg(Nachricht); switch(NachArt) { case CLOSEWINDOW : Schluss(); break; case GADGETUP : Do_Gadget(Frame,Adr->GadgetID); } /* end of switch */ } /* end of if */ } /* end of for */ } /* end of main */ SketchWindow() { FillBox( 1, 0, TOPY, WIDTH, HEIGHT-1); FillBox( 2, 2, TOPY+1, WIDTH-3, HEIGHT-2); FillBox(-1, 4, TOPY+2, WIDTH-5, HEIGHT-3); FillBox( 2,15, 19, 256-1,118); FillBox( 1,17, 20, 256-1-2,118-1); DrawImage(WRast,&ObenLinks,0,0); } SetUpButton(Gadget, AreaCol, BorderCol) struct Gadget *Gadget; int BorderCol, AreaCol; { register int X1, Y1, X2, Y2; X1 = Gadget->LeftEdge; Y1 = Gadget->TopEdge; X2 = Gadget->LeftEdge+Gadget->Width-1; Y2 = Gadget->TopEdge+Gadget->Height-1; if(Gadget->GadgetType==STRGADGET) {X1-=2; Y1-=1; X2+=2; Y2+=1; }; FillBox(-1, X1+4-2, Y1+2-1, X2+4+2, Y2+2+1); /* RasterFill as Shadow */ FillBox(AreaCol, X1, Y1, X2, Y2); /* FrontArea is cleared */ SetAPen(WRast, BorderCol); Move(WRast, X1+1-2, Y1-1); /* Draw a Button Border */ Draw(WRast, X2-1+2, Y1-1); Draw(WRast, X2-1+2, Y2+1); Draw(WRast, X1+1-2, Y2+1); Draw(WRast, X1+1-2, Y1-1); Move(WRast, X1-2, Y1+1-1); Draw(WRast, X1-2, Y2-1+1); Move(WRast, X2+2, Y1+1-1); Draw(WRast, X2+2, Y2-1+1); } FillBox(Color, X1, Y1, X2, Y2) int Color, X1, Y1, X2, Y2; { static UWORD Pattern[]={0xaaaa,0x5555,0x5555,0xaaaa}; if(Color>=0) { SetAPen(WRast, Color); SetBPen(WRast, Color); SetAfPt(WRast, NULL, 0); } else { SetAPen(WRast, 3); SetBPen(WRast, 0); SetAfPt(WRast, &Pattern, -1); } RectFill(WRast, X1, Y1, X2, Y2); } ULONG Copy2Chip(WordCount, ArrayPnt) int WordCount; UWORD *ArrayPnt; { UWORD *Zeiger; Zeiger=AllocRemember(&MyRememberKey,WordCount<<1,MEMF_CHIP|MEMF_CLEAR); CopyMem(ArrayPnt,Zeiger,WordCount<<1); return(Zeiger); } Schluss() { FreeRemember(&MyRememberKey, TRUE); if(Window!=NULL) CloseWindow(Window); if(GfxBase!=NULL) CloseLibrary(GfxBase); if(IntuitionBase!=NULL) CloseLibrary(IntuitionBase); exit(0); }