aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Viruses
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-06-29 13:33:17 -0400
committerMichael <[email protected]>2017-06-29 13:33:17 -0400
commitc6b5db16c0edc23296ad41810d4a9fff8e8664b0 (patch)
treeaa5a9f80d93e5422a57599970d98cb71215a3d6a /ShiftOS.WinForms/Viruses
parent07b2e388817ae50731808c1870bf74ccbda855ba (diff)
downloadshiftos_thereturn-c6b5db16c0edc23296ad41810d4a9fff8e8664b0.tar.gz
shiftos_thereturn-c6b5db16c0edc23296ad41810d4a9fff8e8664b0.tar.bz2
shiftos_thereturn-c6b5db16c0edc23296ad41810d4a9fff8e8664b0.zip
console garbler virus
Diffstat (limited to 'ShiftOS.WinForms/Viruses')
-rw-r--r--ShiftOS.WinForms/Viruses/ConsoleGarble.cs50
1 files changed, 50 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/Viruses/ConsoleGarble.cs b/ShiftOS.WinForms/Viruses/ConsoleGarble.cs
new file mode 100644
index 0000000..2b83846
--- /dev/null
+++ b/ShiftOS.WinForms/Viruses/ConsoleGarble.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ShiftOS.Engine;
+using System.Windows.Forms;
+
+namespace ShiftOS.WinForms.Viruses
+{
+ [Virus("console_garble", "Console Garbler", "Sends random characters to stdout which can muck up your Terminal. The threatlevel determines the rate at which characters are sent.")]
+ public class ConsoleGarble : IVirus
+ {
+ Timer timer = null;
+ Random rnd = null;
+
+ public void Disinfect()
+ {
+ timer.Stop();
+ timer = null;
+ rnd = null;
+ }
+
+ public void Infect(int threatlevel)
+ {
+ rnd = new Random();
+ timer = new Timer();
+ timer.Interval = 6000 / threatlevel;
+ timer.Tick += (o, a) =>
+ {
+ var oldFG = ConsoleEx.ForegroundColor;
+ var oldBG = ConsoleEx.BackgroundColor;
+ var character = (char)rnd.Next(255);
+ while (!char.IsLetterOrDigit(character))
+ character = (char)rnd.Next(255);
+ var ccolormax = Enum.GetValues(typeof(ConsoleColor)).Cast<int>().Max();
+
+ ConsoleEx.BackgroundColor = (ConsoleColor)rnd.Next(ccolormax);
+ ConsoleEx.ForegroundColor = (ConsoleColor)rnd.Next(ccolormax);
+
+ Console.Write(character);
+ ConsoleEx.OnFlush?.Invoke();
+
+ ConsoleEx.BackgroundColor = oldBG;
+ ConsoleEx.ForegroundColor = oldFG;
+ };
+ timer.Start();
+ }
+ }
+}