blob: c31a6dc2f03f95a73b8e41cf23ccf897a76064c3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ShiftOS
{
public partial class ShiftnetDecryptor : Form
{
public ShiftnetDecryptor()
{
InitializeComponent();
}
int i = 0;
string currentaddress = null;
string encrypted_contents = null;
public void WriteLine(string line)
{
if(txtstatus.Text == "")
{
txtstatus.Text = line;
}
else
{
txtstatus.Text += Environment.NewLine + line;
}
}
private void RecursiveControlSetup(Control ctrl)
{
ctrl.Font = new Font(OSInfo.GetMonospaceFont(), ctrl.Font.Size);
try
{
var pnl = (Panel)ctrl;
foreach (Control c in pnl.Controls)
{
RecursiveControlSetup(c);
}
}
catch (Exception ex)
{
}
}
private void tmrdecrypt_Tick(object sender, EventArgs e)
{
switch (i)
{
case 0:
currentaddress = txtaddress.Text;
WriteLine("Checking URL...");
if(!currentaddress.StartsWith("shiftnet://"))
{
WriteLine(" *** ERROR: Invalid URL.");
tmrdecrypt.Stop();
btnstart.Enabled = true;
txtaddress.Enabled = true;
}
break;
case 5:
WriteLine("Making connection to Shiftnet...");
currentaddress = currentaddress.Replace("shiftnet://", "http://playshiftos.ml/shiftnet/www/");
break;
case 25:
WriteLine("Checking file...");
if(!currentaddress.EndsWith(".enc"))
{
WriteLine(" *** ERROR: File not valid, must be of type .enc (encrypted file)");
tmrdecrypt.Stop();
btnstart.Enabled = true;
txtaddress.Enabled = true;
}
break;
case 27:
WriteLine("Downloading file contents...");
try
{
encrypted_contents = new WebClient().DownloadString(currentaddress);
}
catch(Exception ex)
{
WriteLine(" *** ERROR: Remote file could not be accessed.");
tmrdecrypt.Stop();
btnstart.Enabled = true;
txtaddress.Enabled = true;
}
break;
case 30:
WriteLine("Download successful. Determining encryption algorithm. This may take a bit...");
break;
case 75:
int r = new Random().Next(0, 100);
if(r >= 25 && r <= 75)
{
WriteLine("Encryption algorithm determined, beginning decryption.");
}
else
{
WriteLine("Decryption failed.");
tmrdecrypt.Stop();
btnstart.Enabled = true;
txtaddress.Enabled = true;
}
break;
case 95:
string decrypted = API.Encryption.Decrypt(encrypted_contents);
int lastslash = currentaddress.LastIndexOf("/");
int len = currentaddress.Length - lastslash;
string fname = currentaddress.Substring(lastslash, len).Replace(".enc", ".lua");
WriteLine("Decryption successful. Saving to /Home/Decryptions/" + fname + "...");
if(!Directory.Exists(Paths.Home + "Decryptions"))
{
Directory.CreateDirectory(Paths.Home + "Decryptions");
}
File.WriteAllText(Paths.Home + $"Decryptions{OSInfo.DirectorySeparator}{fname}", decrypted);
break;
case 100:
WriteLine("Decryption successful.");
tmrdecrypt.Stop();
currentaddress = null;
i = 0;
encrypted_contents = null;
btnstart.Enabled = true;
txtaddress.Enabled = true;
break;
}
i += 1;
pgstatus.Value = i;
}
private void btnstart_Click(object sender, EventArgs e)
{
i = 0;
tmrdecrypt.Start();
btnstart.Enabled = false;
txtaddress.Enabled = false;
}
private void ShiftnetDecryptor_Load(object sender, EventArgs e)
{
RecursiveControlSetup(panel1);
}
}
}
|