Example #1
0
        public void TestGetData()
        {
            Dictionary <string, Variant> args = new Dictionary <string, Variant>();

            args["Command"] = new Variant("CrashingProgram");

            System.Environment.SetEnvironmentVariable("PEACH", "qwertyuiopasdfghjklzxcvbnmqwertyuio");

            CrashWrangler w = new CrashWrangler(null, "name", args);

            w.SessionStarting();
            w.IterationStarting(0, false);
            Thread.Sleep(1000);
            w.IterationFinished();
            Assert.AreEqual(true, w.DetectedFault());
            Fault fault = w.GetMonitorData();

            Assert.NotNull(fault);
            Assert.AreEqual(1, fault.collectedData.Count);
            Assert.True(fault.collectedData.ContainsKey("Log"));
            Assert.Greater(fault.collectedData["Log"].Length, 0);
            Assert.True(fault.description.StartsWith("Exploitable_Crash_0x"));
            w.SessionFinished();
            w.StopMonitor();
        }
Example #2
0
        public void TestExitEarlyFault()
        {
            Dictionary <string, Variant> args = new Dictionary <string, Variant>();

            args["Command"]          = new Variant("echo");
            args["Arguments"]        = new Variant("hello");
            args["FaultOnEarlyExit"] = new Variant("true");

            CrashWrangler w = new CrashWrangler(null, "name", args);

            w.IterationStarting(1, false);

            System.Threading.Thread.Sleep(1000);

            w.IterationFinished();

            Assert.AreEqual(true, w.DetectedFault());
            Fault f = w.GetMonitorData();

            Assert.NotNull(f);
            Assert.AreEqual("ProcessExitedEarly", f.folderName);

            w.SessionFinished();
            w.StopMonitor();
        }
Example #3
0
        public void TestExitEarlyFault2()
        {
            Variant foo = new Variant("foo");

            // FaultOnEarlyExit faults when StartOnCall is used and stop message is not sent

            Dictionary <string, Variant> args = new Dictionary <string, Variant>();

            args["Command"]          = new Variant("echo");
            args["Arguments"]        = new Variant("hello");
            args["StartOnCall"]      = foo;
            args["FaultOnEarlyExit"] = new Variant("true");

            CrashWrangler w = new CrashWrangler(null, "name", args);

            w.SessionStarting();
            w.IterationStarting(1, false);

            w.Message("Action.Call", foo);

            System.Threading.Thread.Sleep(1000);

            w.IterationFinished();

            Assert.AreEqual(true, w.DetectedFault());
            Fault f = w.GetMonitorData();

            Assert.NotNull(f);
            Assert.AreEqual("ProcessExitedEarly", f.folderName);


            w.SessionFinished();
            w.StopMonitor();
        }
Example #4
0
        public void TestExitOnCallFault()
        {
            Variant foo = new Variant("foo");
            Variant bar = new Variant("bar");

            Dictionary <string, Variant> args = new Dictionary <string, Variant>();

            args["Command"]            = new Variant("nc");
            args["Arguments"]          = new Variant("-l 12345");
            args["StartOnCall"]        = foo;
            args["WaitForExitOnCall"]  = bar;
            args["WaitForExitTimeout"] = new Variant("2000");
            args["NoCpuKill"]          = new Variant("true");

            CrashWrangler w = new CrashWrangler(null, "name", args);

            w.Message("Action.Call", foo);
            w.Message("Action.Call", bar);

            w.IterationFinished();

            Assert.AreEqual(true, w.DetectedFault());
            Fault f = w.GetMonitorData();

            Assert.NotNull(f);
            Assert.AreEqual("ProcessFailedToExit", f.folderName);

            w.SessionFinished();
            w.StopMonitor();
        }