コード例 #1
0
        public static AddressableRegion ReadAddressableRegion(IReadOnlyList <string> lines, int?driveId)
        {
            var kvp  = ReadKvp(lines[0]);
            var size = kvp.Key
                       .Split(new[] { 'x' })
                       .Select(x => Convert.ToInt32(x))
                       .ToList();

            var region = new AddressableRegion(size[0], size[1], driveId);


            var multiline = string.IsNullOrWhiteSpace(kvp.Value);

            if (!multiline)
            {
                var chunks     = Split(kvp.Value, 4);
                var writeCoord = region.AllCoordinates.First();

                foreach (var chunk in chunks)
                {
                    region.SetDefault(writeCoord, chunk);
                    writeCoord = region.NextAddress(writeCoord);
                }
            }
            else
            {
                var writeCoord = region.AllCoordinates.First();

                var remainingLines = lines.Skip(1).Take(region.SizeRows);
                foreach (var remainingLine in remainingLines)
                {
                    var chunks = remainingLine.Split(new[] { ',' }, StringSplitOptions.None);

                    foreach (var chunk in chunks)
                    {
                        var    encrypted = chunk.Length > 0 && chunk[0] == '#';
                        string text      = encrypted ? chunk.Substring(1) : chunk;

                        region.SetDefault(writeCoord, text);
                        region.EncryptionState[writeCoord] = encrypted;
                        writeCoord = region.NextAddress(writeCoord);
                    }
                }
            }

            return(region);
        }
コード例 #2
0
        public async Task Initialize()
        {
            //await base.Initialize();

            var Memory = new AddressableRegion
            {
                SizeRows    = 3,
                SizeColumns = 4,
            };

            Memory.InitializeEmptyMemorySpace();



            #region disk
            var disk0 = new AddressableRegion();
            disk0.VolumeName  = "Keystore";
            disk0.ReadOnly    = true;
            disk0.DriveId     = 0;
            disk0.SizeRows    = 4;
            disk0.SizeColumns = 4;
            disk0.InitializeEmptyMemorySpace();
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 0
            }, "~451");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 2, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 3, Y = 0, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 0
            }, "~451");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 1, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 1, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 2, Y = 1, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 3, Y = 1, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 0
            }, "~451");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 2, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 2, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 2, Y = 2, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 3, Y = 2, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 3
            }, "/*YOU");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 3
            }, "R KE");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 3
            }, "Y HE");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 3, Y = 3
            }, "RE*/");

            disk0.SetMemoryToDefault();
            Disks.Add(disk0);
            #endregion


            Memory.SetMemoryToDefault();

            var ManualProgram = new CpuProgram();
            ManualProgram.AllCommands = new List <CpuCommand>();

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KBD M:0A"));
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:0A @SEARCH_TEXT"));
            ManualProgram.AllCommands.Add(QueryCpuCommand.FromText("QUERY 0:3* FOR @SEARCH_TEXT"));

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT @Index M:0B"));
            ManualProgram.AllCommands.Add(new AssertCpuCommand("M:0A", "XM:0B"));


            AddProcess("Login.exe", new Process
            {
                Memory      = Memory,
                Source      = ManualProgram,
                Prompt      = "Please enter your password",
                Instruction = "^ Can't remember your password? Try 'Password'."
            });

            this.Hints.Add(new Hint
            {
                Title = "What am I looking at?",
                Body  = "In this scenario, some memory addresses are prefixed with X. This indicates that the value in memory at that location should be treated as a MEMORY ADDRESS to go fetch the value from."
            });

            this.Hints.Add(new Hint
            {
                Title = "The security is too tight! There's no way for me to get in and break this thing.",
                Body  = "Yea, it'd be better if you just had the password."
            });

            this.Hints.Add(new Hint
            {
                Title = "The password's in encrypted memory, I can't see it.",
                Body  = "Find a way to get the password OUT of encrypted memory."
            });
        }
コード例 #3
0
        public async Task Initialize()
        {
            //await base.Initialize();

            NextScenario = "Scenario4";

            var process = new Process
            {
                Prompt      = "Please enter your 4 character pin number to manage the camera feed.",
                Instruction = "^ Note: pin number 'HOTDOG' has been disabled due to it not being 4 characters, or a number."
            };

            var Memory = new AddressableRegion
            {
                SizeRows    = 3,
                SizeColumns = 4,
            };

            Memory.InitializeEmptyMemorySpace();

            #region disk
            var disk0 = new AddressableRegion();
            disk0.VolumeName  = "Keystore";
            disk0.DriveId     = 0;
            disk0.SizeRows    = 1;
            disk0.SizeColumns = 4;
            disk0.InitializeEmptyMemorySpace();
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 0
            }, "0x1x");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 2, Y = 0, DriveId = 0
                                  }] = true;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 3, Y = 0, DriveId = 0
                                  }] = true;
            disk0.SetMemoryToDefault();
            Disks.Add(disk0);
            #endregion

            //Memory.SetDefault(new MemoryCoordinate { X = 0, Y = 0}, "VALI");
            //Memory.SetDefault(new MemoryCoordinate { X = 1, Y = 0 }, "DATI");
            //Memory.SetDefault(new MemoryCoordinate { X = 2, Y = 0 }, "NG  ");

            //Memory.SetDefault(new MemoryCoordinate { X = 0, Y = 1 }, "PASS");
            //Memory.SetDefault(new MemoryCoordinate { X = 1, Y = 1 }, "WORD");
            //Memory.SetDefault(new MemoryCoordinate { X = 2, Y = 1 }, "|");

            //Memory.SetDefault(new MemoryCoordinate { X = 3, Y = 2 }, "0x51");
            //Memory.EncryptionState[new MemoryCoordinate { X = 3, Y = 2 }] = true;

            Memory.SetMemoryToDefault();
            process.Memory = Memory;


            //var ManualProgram = new CpuProgram();
            //ManualProgram.AllCommands = new List<CpuCommand>();

            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:0A PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:1A PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:2A PRINT"));

            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:0B PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:1B PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:2B PRINT"));

            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KB M:0C"));



            //ManualProgram.AllCommands.Add(new AssertCpuCommand("M:0C", "0:0,0"));

            //process.Source = ManualProgram;
            this.AddProcess("Login.exe", process);
        }
コード例 #4
0
        public async Task Initialize()
        {
            //await  base.Initialize();

            var Memory = new AddressableRegion
            {
                SizeRows    = 3,
                SizeColumns = 4,
            };

            Memory.InitializeEmptyMemorySpace();

            #region disk
            var disk0 = new AddressableRegion();
            disk0.VolumeName  = "SWAP_DRIVE";
            disk0.ReadOnly    = false;
            disk0.DriveId     = 0;
            disk0.SizeRows    = 1;
            disk0.SizeColumns = 4;
            disk0.InitializeEmptyMemorySpace();
            disk0.SetMemoryToDefault();
            Disks.Add(disk0);
            #endregion disk

            #region disk
            var disk1 = new AddressableRegion();
            disk1.VolumeName  = "Keystore";
            disk1.ReadOnly    = true;
            disk1.DriveId     = 1;
            disk1.SizeRows    = 1;
            disk1.SizeColumns = 4;
            disk1.InitializeEmptyMemorySpace();
            disk1.SetDefault(new MemoryCoordinate {
                DriveId = 1, X = 0, Y = 0
            }, "0451");
            disk1.SetDefault(new MemoryCoordinate {
                DriveId = 1, X = 1, Y = 0
            }, "0451");
            disk1.SetDefault(new MemoryCoordinate {
                DriveId = 1, X = 2, Y = 0
            }, "PASS");
            disk1.SetDefault(new MemoryCoordinate {
                DriveId = 1, X = 3, Y = 0
            }, "0451");

            disk1.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 0, DriveId = 1
                                  }] = true;
            disk1.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 0, DriveId = 1
                                  }] = true;
            disk1.EncryptionState[new MemoryCoordinate {
                                      X = 2, Y = 0, DriveId = 1
                                  }] = false;
            disk1.EncryptionState[new MemoryCoordinate {
                                      X = 3, Y = 0, DriveId = 1
                                  }] = true;
            disk1.SetMemoryToDefault();
            Disks.Add(disk1);
            #endregion

            #region disk

            //var disk1 = new AddressableRegion
            //{
            //    VolumeName = "SWAP_DRIVE",
            //    ReadOnly = true,
            //    DriveId = 1,
            //    SizeRows = 1,
            //    SizeColumns = 4,
            //    IsExternalDrive = true,
            //    IsMounted = false
            //};
            //disk1.InitializeEmptyMemorySpace();
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 0, Y = 0 }, "YOUR");
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 1, Y = 0 }, "DATA");
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 2, Y = 0 }, "HERE");
            //disk1.SetMemoryToDefault();
            //Disks.Add(disk1);

            #endregion

            Memory.SetMemoryToDefault();

            //
            //


            var ManualProgram = new CpuProgram();
            ManualProgram.AllCommands = new List <CpuCommand>();
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KBD 0:0A"));
            ManualProgram.AllCommands.Add(QueryCpuCommand.FromText("QUERY *:** FOR `PASS"));
            ManualProgram.AllCommands.Add(new SeekCpuCommand {
                Target = new VariableTarget {
                    Number = "Index"
                }, Amount = new LiteralTarget {
                    Value = "1"
                }
            });

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT @Index M:0B"));
            ManualProgram.AllCommands.Add(new AssertCpuCommand("0:0A", "XM:0B"));

            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KB M:2C"));

            //ManualProgram.AllCommands.Add(new AssertCpuCommand
            //{
            //    CompareLeft = MediaTarget.FromText("M:2C"),
            //    CompareRight = MediaTarget.FromText("0:0,0")
            //});

            AddProcess("Login.exe", new Process
            {
                Memory      = Memory,
                Source      = ManualProgram,
                Prompt      = "Please enter your password",
                Instruction = "^ Can't remember your password? Try 'Password'."
            });

            this.Hints.Add(new Hint
            {
                Title = "What am I looking at?",
                Body  = "In this scenario, some memory addresses are prefixed with X. This indicates that the value in memory at that location should be treated as a MEMORY ADDRESS to go fetch the value from."
            });

            this.Hints.Add(new Hint
            {
                Title = "The security is too tight! There's no way for me to get in and break this thing.",
                Body  = "Yea, it'd be better if you just had the password."
            });

            this.Hints.Add(new Hint
            {
                Title = "The password's in encrypted memory, I can't see it.",
                Body  = "Find a way to get the password OUT of encrypted memory."
            });
        }
        public async Task Initialize()
        {
            //await base.Initialize();

            var Memory = new AddressableRegion
            {
                SizeRows    = 2,
                SizeColumns = 4,
            };

            Memory.InitializeEmptyMemorySpace();



            #region disk
            var disk0 = new AddressableRegion();
            disk0.VolumeName  = "Keystore";
            disk0.ReadOnly    = true;
            disk0.DriveId     = 0;
            disk0.SizeRows    = 5;
            disk0.SizeColumns = 3;
            disk0.InitializeEmptyMemorySpace();

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 0
            }, "USR1");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 0
            }, "0451");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 0
            }, "HIGH");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 0, DriveId = 0
                                  }] = false;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 0, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 1
            }, "USR2");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 1
            }, "0451");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 1
            }, "HIGH");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 1, DriveId = 0
                                  }] = false;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 1, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 2
            }, "USR3");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 2
            }, "0451");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 2
            }, "LOW ");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 2, DriveId = 0
                                  }] = false;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 2, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 3
            }, "USR4");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 3
            }, "0451");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 3
            }, "LOW ");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 3, DriveId = 0
                                  }] = false;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 3, DriveId = 0
                                  }] = true;

            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 0, Y = 4
            }, "USR5");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 1, Y = 4
            }, "0451");
            disk0.SetDefault(new MemoryCoordinate {
                DriveId = 0, X = 2, Y = 4
            }, "LOW ");
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 0, Y = 4, DriveId = 0
                                  }] = false;
            disk0.EncryptionState[new MemoryCoordinate {
                                      X = 1, Y = 4, DriveId = 0
                                  }] = true;

            disk0.SetMemoryToDefault();
            Disks.Add(disk0);
            #endregion


            var disk1 = new AddressableRegion
            {
                VolumeName  = "SWAP_DRIVE",
                ReadOnly    = false,
                DriveId     = 1,
                SizeRows    = 2,
                SizeColumns = 4
            };
            disk1.InitializeEmptyMemorySpace();
            disk1.SetDefault(MemoryCoordinate.FromText("1:0A"), "ACCE");
            disk1.SetDefault(MemoryCoordinate.FromText("1:1A"), "SS G");
            disk1.SetDefault(MemoryCoordinate.FromText("1:2A"), "RANT");
            disk1.SetDefault(MemoryCoordinate.FromText("1:3A"), "ED  ");
            disk1.SetDefault(MemoryCoordinate.FromText("1:0B"), "----");
            disk1.SetDefault(MemoryCoordinate.FromText("1:1B"), "    ");
            disk1.SetDefault(MemoryCoordinate.FromText("1:2B"), "SEC:");
            disk1.SetDefault(MemoryCoordinate.FromText("1:3B"), "----");

            disk1.SetMemoryToDefault();
            Disks.Add(disk1);


            var disk2 = new AddressableRegion
            {
                VolumeName  = "QUERY_BUILDER",
                ReadOnly    = false,
                DriveId     = 2,
                SizeRows    = 2,
                SizeColumns = 4
            };
            disk2.InitializeEmptyMemorySpace();
            disk2.SetDefault(MemoryCoordinate.FromText("2:0A"), "QUER");
            disk2.SetDefault(MemoryCoordinate.FromText("2:1A"), "Y ");
            disk2.SetDefault(MemoryCoordinate.FromText("2:2A"), "0:**");
            disk2.SetDefault(MemoryCoordinate.FromText("2:3A"), " FOR");
            disk2.SetDefault(MemoryCoordinate.FromText("2:0B"), " @USR");
            disk2.SetDefault(MemoryCoordinate.FromText("2:1B"), "/@PWD");

            disk2.SetMemoryToDefault();
            Disks.Add(disk2);

            Memory.SetMemoryToDefault();

            var ManualProgram = new CpuProgram();
            ManualProgram.AllCommands = new List <CpuCommand>();

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KBD M:0A"));
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:0A @USR"));
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT M:1A @PWD"));

            ManualProgram.AllCommands.Add(ExecCpuCommand.FromText("EXEC 2:**"));
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT @Index 1:0B"));
            ManualProgram.AllCommands.Add(new SeekCpuCommand()
            {
                Amount = new LiteralTarget {
                    Value = "2"
                },
                Target = new VariableTarget {
                    Number = "Index"
                }
            });

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT @Index 1:3B"));

            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT X1:0B 1:0B"));
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT X1:3B 1:3B"));
            ManualProgram.AllCommands.Add(new DumpCommand()
            {
                From = new SearchConstraints
                {
                    DriveConstraint = 1
                },
                Target = new PrinterTarget()
            });
            ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT `| PRINT"));


            AddProcess("Login.exe", new Process
            {
                Memory      = Memory,
                Source      = ManualProgram,
                Prompt      = "Please enter your password",
                Instruction = "^ Can't remember your password? Try 'Password'."
            });
        }
コード例 #6
0
        public async Task Initialize()
        {
            var Memory = new AddressableRegion
            {
                SizeRows    = 3,
                SizeColumns = 4,
            };

            Memory.InitializeEmptyMemorySpace();

            //#region disk
            //var disk0 = new AddressableRegion();
            //disk0.VolumeName = "Keystore";
            //disk0.ReadOnly = true;
            //disk0.DriveId = 0;
            //disk0.SizeRows = 1;
            //disk0.SizeColumns = 4;
            //disk0.InitializeEmptyMemorySpace();
            //disk0.SetDefault(new MemoryCoordinate{DriveId = 0,X=0,Y=0},"0451");
            //disk0.EncryptionState[new MemoryCoordinate { X = 0, Y = 0,DriveId = 0}] = true;
            //disk0.EncryptionState[new MemoryCoordinate { X = 1, Y = 0, DriveId = 0 }] = true;
            //disk0.EncryptionState[new MemoryCoordinate { X = 2, Y = 0, DriveId = 0 }] = true;
            //disk0.EncryptionState[new MemoryCoordinate { X = 3, Y = 0, DriveId = 0 }] = true;
            //disk0.SetMemoryToDefault();
            //Disks.Add(disk0);
            //#endregion

            //#region disk
            //var disk1 = new AddressableRegion();
            //disk1.VolumeName = "Messages";
            //disk1.ReadOnly = true;
            //disk1.DriveId = 1;
            //disk1.SizeRows = 1;
            //disk1.SizeColumns = 4;
            //disk1.InitializeEmptyMemorySpace();
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 0, Y = 0 }, "PLEA");
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 1, Y = 0 }, "SE W");
            //disk1.SetDefault(new MemoryCoordinate { DriveId = 1, X = 2, Y = 0 }, "AIT|");
            //disk1.SetMemoryToDefault();
            //Disks.Add(disk1);

            //var disk2 = new AddressableRegion();
            //disk2.VolumeName = "Messages";
            //disk2.DriveId = 1;
            //disk2.SizeRows = 1;
            //disk2.SizeColumns = 4;
            //disk2.IsExternalDrive = true;
            //disk2.InitializeEmptyMemorySpace();
            //disk2.SetDefault(new MemoryCoordinate { DriveId = 1, X = 0, Y = 0 }, "PLEA");
            //disk2.SetDefault(new MemoryCoordinate { DriveId = 1, X = 1, Y = 0 }, "SE W");
            //disk2.SetDefault(new MemoryCoordinate { DriveId = 1, X = 2, Y = 0 }, "AIT|");
            //disk2.SetMemoryToDefault();
            //Disks.Add(disk2);
            //#endregion


            //Memory.SetDefault(new MemoryCoordinate { X = 0, Y = 0 }, "MSG");
            //Memory.SetDefault(new MemoryCoordinate { X = 1, Y = 0 }, "1:0A");
            //Memory.SetDefault(new MemoryCoordinate { X = 2, Y = 0 }, "1:1A");
            //Memory.SetDefault(new MemoryCoordinate { X = 3, Y = 0 }, "1:2A");

            //Memory.SetDefault(new MemoryCoordinate { X = 0, Y = 1 }, "NOTH");
            //Memory.SetDefault(new MemoryCoordinate { X = 1, Y = 1 }, "ING ");
            //Memory.SetDefault(new MemoryCoordinate { X = 2, Y = 1 }, "TO  ");

            //Memory.SetDefault(new MemoryCoordinate { X = 0, Y = 2 }, "SEE ");
            //Memory.SetDefault(new MemoryCoordinate { X = 1, Y = 2 }, "HERE");


            ////Memory.SetDefault(new MemoryCoordinate { X = 3, Y = 2 }, "0x51");
            ////Memory.EncryptionState[new MemoryCoordinate { X = 3, Y = 2 }] = true;

            Memory.SetMemoryToDefault();



            //var ManualProgram = new CpuProgram();
            //ManualProgram.AllCommands = new List<CpuCommand>();
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT XM:1A PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT XM:2A PRINT"));
            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT XM:3A PRINT"));

            //ManualProgram.AllCommands.Add(ReadCpuCommand.FromText("PUT KB M:2C"));

            //ManualProgram.AllCommands.Add(new AssertCpuCommand("M:2C", "0:0,0"));

            //AddProcess("Login.exe", new Process
            //{
            //    Memory = Memory,
            //    Source = ManualProgram,
            //    Prompt = "Please enter your password",
            //    Instruction = "^ Can't remember your password? Try 'Password'."

            //});
        }