14 | @Html.LabelFor(model => model.FirstBuild)
15 | @Html.TextBoxFor(model => model.FirstBuild, new
16 | {
17 | htmlAttributes = new
18 | {
19 | type = "number"
20 | }
21 | })
22 | @Html.ValidationMessageFor(model => model.FirstBuild, "", new
23 | {
24 | @class = "text-danger"
25 | })
26 |
27 |
28 |
29 | @Html.LabelFor(model => model.KeyBase64)
30 | @Html.TextAreaFor(model => model.KeyBase64)
31 | @Html.ValidationMessageFor(model => model.KeyBase64, "", new
32 | {
33 | @class = "text-danger"
34 | })
35 |
36 |
37 |
4 |
5 | @{
6 | ViewBag.Title = "Windows 10 | ESD Decryption";
7 | }
8 |
9 |
10 | @if (User.Identity.IsAuthenticated)
11 | {
12 | Add a key
13 | }
14 | XML Feed
15 |
16 | ESD Decryption Keys
17 |
18 |
19 |
20 |
21 | @Html.DisplayNameFor(model => model.FirstBuild)
22 |
23 |
24 | @Html.DisplayNameFor(model => model.KeyBase64)
25 |
26 |
27 | @Html.DisplayNameFor(model => model.KeyExchangeAlgorithm)
28 |
29 |
30 | @Html.DisplayNameFor(model => model.KeySize)
31 |
32 | @if (User.Identity.IsAuthenticated)
33 | {
34 |
35 | }
36 |
37 |
38 |
39 | @foreach (CryptoKey item in Model)
40 | {
41 |
42 |
43 | @Html.DisplayFor(modelItem => item.FirstBuild)
44 |
45 |
46 |
47 | @Html.DisplayFor(modelItem => item.KeyBase64)
48 |
49 |
50 |
51 | @Html.DisplayFor(modelItem => item.KeyExchangeAlgorithm)
52 |
53 |
54 | @Html.DisplayFor(modelItem => item.KeySize)
55 |
56 | @if (User.Identity.IsAuthenticated)
57 | {
58 |
59 |
63 |
64 |
65 |
66 | }
67 |
68 | }
69 |
70 |
71 |
72 | Frequently asked questions
73 |
74 | What is an ESD?
75 | An ESD is a partially-encrypted Windows Installation image. Microsoft use these images to distribute a complete Windows setup over Windows Update.
76 |
77 |
78 | How do you decrypt an ESD?
79 | You can use the DecryptESD program, which uses the XML feed provided by this site to update its local store of crypto keys.
80 |
81 |
82 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Views/Web/Login.cshtml:
--------------------------------------------------------------------------------
1 | @model CryptoKeySite.Models.LoginViewModel
2 |
3 | @{
4 | ViewBag.Title = "Login";
5 | }
6 |
7 | @using (Html.BeginForm())
8 | {
9 | @Html.AntiForgeryToken()
10 |
11 |
12 | @Html.LabelFor(model => model.Username)
13 | @Html.EditorFor(model => model.Username)
14 | @Html.ValidationMessageFor(model => model.Username, "", new
15 | {
16 | @class = "text-error"
17 | })
18 |
19 |
20 |
21 | @Html.LabelFor(model => model.Password)
22 | @Html.EditorFor(model => model.Password)
23 | @Html.ValidationMessageFor(model => model.Password, "", new
24 | {
25 | @class = "text-error"
26 | })
27 |
28 |
29 |
30 | @Html.EditorFor(model => model.RememberMe)
31 | @Html.LabelFor(model => model.RememberMe)
32 | @Html.ValidationMessageFor(model => model.RememberMe, "", new
33 | {
34 | @class = "text-error"
35 | })
36 |
37 |
38 |
39 | }
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Views/Web/Register.cshtml:
--------------------------------------------------------------------------------
1 | @model CryptoKeySite.Models.RegisterViewModel
2 |
3 | @{
4 | ViewBag.Title = "Login";
5 | }
6 |
7 | @using (Html.BeginForm())
8 | {
9 | @Html.AntiForgeryToken()
10 |
11 |
12 | @Html.LabelFor(model => model.Username)
13 | @Html.EditorFor(model => model.Username)
14 | @Html.ValidationMessageFor(model => model.Username, "", new
15 | {
16 | @class = "text-error"
17 | })
18 |
19 |
20 |
21 | @Html.LabelFor(model => model.Password)
22 | @Html.EditorFor(model => model.Password)
23 | @Html.ValidationMessageFor(model => model.Password, "", new
24 | {
25 | @class = "text-error"
26 | })
27 |
28 |
29 |
30 | @Html.LabelFor(model => model.ConfirmPassword)
31 | @Html.EditorFor(model => model.ConfirmPassword)
32 | @Html.ValidationMessageFor(model => model.ConfirmPassword, "", new
33 | {
34 | @class = "text-error"
35 | })
36 |
37 |
38 |
39 | }
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/_Layout.cshtml";
3 | }
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Views/web.config:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Web.Release.config:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/Web.config:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/bundleconfig.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "outputFileName": "res/ts/default.min.js",
4 | "inputFiles": [
5 | "res/ts/default.js"
6 | ]
7 | },
8 | {
9 | "outputFileName": "res/scss/default.min.css",
10 | "inputFiles": [
11 | "res/scss/default.css"
12 | ]
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/compilerconfig.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "outputFile": "res/scss/default.css",
4 | "inputFile": "res/scss/default.scss"
5 | }
6 | ]
--------------------------------------------------------------------------------
/Website/CryptoKeySite/compilerconfig.json.defaults:
--------------------------------------------------------------------------------
1 | {
2 | "compilers": {
3 | "less": {
4 | "autoPrefix": "",
5 | "cssComb": "none",
6 | "ieCompat": true,
7 | "strictMath": false,
8 | "strictUnits": false,
9 | "relativeUrls": true,
10 | "rootPath": "",
11 | "sourceMapRoot": "",
12 | "sourceMapBasePath": "",
13 | "sourceMap": false
14 | },
15 | "sass": {
16 | "includePath": "",
17 | "indentType": "space",
18 | "indentWidth": 2,
19 | "outputStyle": "nested",
20 | "Precision": 5,
21 | "relativeUrls": true,
22 | "sourceMapRoot": "",
23 | "sourceMap": false
24 | },
25 | "stylus": {
26 | "sourceMap": false
27 | },
28 | "babel": {
29 | "sourceMap": false
30 | },
31 | "coffeescript": {
32 | "bare": false,
33 | "runtimeMode": "node",
34 | "sourceMap": false
35 | }
36 | },
37 | "minifiers": {
38 | "css": {
39 | "enabled": true,
40 | "termSemicolons": true,
41 | "gzip": false
42 | },
43 | "javascript": {
44 | "enabled": true,
45 | "termSemicolons": true,
46 | "gzip": false
47 | }
48 | }
49 | }
--------------------------------------------------------------------------------
/Website/CryptoKeySite/gulpfile.js:
--------------------------------------------------------------------------------
1 | ///
2 | var gulp = require('gulp');
3 | var sass = require('gulp-sass');
4 |
5 | gulp.task('sass-compile',
6 | function() {
7 | gulp.src('./res/scss/default.scss')
8 | .pipe(sass())
9 | .pipe(gulp.dest('./res/scss/'));
10 | });
11 |
12 | gulp.task('watch-sass',
13 | function() {
14 | gulp.watch('./res/scss/*.scss', ['sass-compile']);
15 | });
--------------------------------------------------------------------------------
/Website/CryptoKeySite/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "crypto-key-site",
3 | "version": "1.0.0",
4 | "description": "A website that tracks known Crypto Keys",
5 |
6 | "devDependencies": {
7 | "gulp": "3.9.1",
8 | "gulp-sass": "2.3.2"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/scss/default.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
3 | font-size: 10pt;
4 | margin: 0;
5 | background: #eee;
6 | color: #333; }
7 |
8 | * {
9 | -moz-box-sizing: border-box;
10 | -webkit-box-sizing: border-box;
11 | box-sizing: border-box; }
12 |
13 | header > h1 > a {
14 | color: #333;
15 | text-decoration: none; }
16 |
17 | .container {
18 | margin: 0 auto;
19 | width: 960px;
20 | max-width: 85%; }
21 | .container > footer {
22 | font-size: 0.8em; }
23 |
24 | .btn-add,
25 | .btn-info {
26 | display: inline-block;
27 | color: #fff;
28 | text-decoration: none;
29 | line-height: 1em;
30 | padding: 6px 10px;
31 | -moz-border-radius: 4px;
32 | -webkit-border-radius: 4px;
33 | border-radius: 4px; }
34 |
35 | .btn-add {
36 | background: #080;
37 | border: 1px solid #0c0; }
38 |
39 | .btn-info {
40 | background: #008;
41 | border: 1px solid #00c; }
42 |
43 | .table-listing {
44 | width: 100%;
45 | line-height: 1.5em;
46 | border-collapse: collapse;
47 | table-layout: fixed; }
48 | .table-listing th,
49 | .table-listing td {
50 | border: 1px solid #ccc;
51 | padding: 6px 11px;
52 | vertical-align: top;
53 | text-align: center; }
54 | .table-listing th > .break,
55 | .table-listing td > .break {
56 | -ms-word-wrap: break-word;
57 | word-wrap: break-word;
58 | height: 1.5em;
59 | overflow: hidden;
60 | -ms-text-overflow: ellipsis;
61 | -o-text-overflow: ellipsis;
62 | text-overflow: ellipsis;
63 | white-space: nowrap; }
64 | .table-listing th:nth-child(1),
65 | .table-listing td:nth-child(1) {
66 | width: 7em; }
67 | .table-listing th:nth-child(2),
68 | .table-listing td:nth-child(2) {
69 | text-align: left; }
70 | .table-listing th:nth-child(3),
71 | .table-listing td:nth-child(3) {
72 | width: 12em; }
73 | .table-listing th:nth-child(4),
74 | .table-listing td:nth-child(4) {
75 | width: 6em; }
76 | .table-listing th:nth-child(5),
77 | .table-listing td:nth-child(5) {
78 | width: 4em; }
79 | .table-listing a.table-listing-delete {
80 | color: #fff;
81 | background: #800;
82 | display: inline-block;
83 | line-height: 1em;
84 | padding: 2px 5px 4px;
85 | -moz-border-radius: 4px;
86 | -webkit-border-radius: 4px;
87 | border-radius: 4px;
88 | border: 1px solid #c00; }
89 |
90 | .form-group {
91 | margin-bottom: 1em; }
92 | .form-group input, .form-group textarea {
93 | display: block; }
94 | .form-group label, .form-group input[type=checkbox] {
95 | display: inline-block;
96 | margin-bottom: 4px;
97 | vertical-align: middle; }
98 |
99 | input[type=text], input[type=email], input[type=password], textarea {
100 | width: 100%;
101 | max-width: 400px;
102 | -moz-box-sizing: border-box;
103 | -webkit-box-sizing: border-box;
104 | box-sizing: border-box;
105 | border: 1px solid;
106 | padding: 0.33333em 0.5em;
107 | -moz-border-radius: 2px;
108 | -webkit-border-radius: 2px;
109 | border-radius: 2px;
110 | line-height: 1em; }
111 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/scss/default.min.css:
--------------------------------------------------------------------------------
1 | body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;font-size:10pt;margin:0;background:#eee;color:#333}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}header>h1>a{color:#333;text-decoration:none}.container{margin:0 auto;width:960px;max-width:85%}.container>footer{font-size:.8em}.btn-add,.btn-info{display:inline-block;color:#fff;text-decoration:none;line-height:1em;padding:6px 10px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.btn-add{background:#080;border:1px solid #0c0}.btn-info{background:#008;border:1px solid #00c}.table-listing{width:100%;line-height:1.5em;border-collapse:collapse;table-layout:fixed}.table-listing th,.table-listing td{border:1px solid #ccc;padding:6px 11px;vertical-align:top;text-align:center}.table-listing th>.break,.table-listing td>.break{-ms-word-wrap:break-word;word-wrap:break-word;height:1.5em;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.table-listing th:nth-child(1),.table-listing td:nth-child(1){width:7em}.table-listing th:nth-child(2),.table-listing td:nth-child(2){text-align:left}.table-listing th:nth-child(3),.table-listing td:nth-child(3){width:12em}.table-listing th:nth-child(4),.table-listing td:nth-child(4){width:6em}.table-listing th:nth-child(5),.table-listing td:nth-child(5){width:4em}.table-listing a.table-listing-delete{color:#fff;background:#800;display:inline-block;line-height:1em;padding:2px 5px 4px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border:1px solid #c00}.form-group{margin-bottom:1em}.form-group input,.form-group textarea{display:block}.form-group label,.form-group input[type=checkbox]{display:inline-block;margin-bottom:4px;vertical-align:middle}input[type=text],input[type=email],input[type=password],textarea{width:100%;max-width:400px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid;padding:.33333em .5em;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;line-height:1em}
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/scss/default.scss:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
3 | font-size: 10pt;
4 | margin: 0;
5 | background: #eee;
6 | color: #333;
7 | }
8 |
9 | * {
10 | -moz-box-sizing: border-box;
11 | -webkit-box-sizing: border-box;
12 | box-sizing: border-box;
13 | }
14 |
15 | header > h1 > a {
16 | color: #333;
17 | text-decoration: none;
18 | }
19 |
20 | .container {
21 | margin: 0 auto;
22 | width: 960px;
23 | max-width: 85%;
24 |
25 | > footer {
26 | font-size: 0.8em;
27 | }
28 | }
29 |
30 | .btn-add,
31 | .btn-info {
32 | display: inline-block;
33 | color: #fff;
34 | text-decoration: none;
35 | line-height: 1em;
36 | padding: 6px 10px;
37 | -moz-border-radius: 4px;
38 | -webkit-border-radius: 4px;
39 | border-radius: 4px;
40 | }
41 |
42 | .btn-add {
43 | background: #080;
44 | border: 1px solid #0c0;
45 | }
46 |
47 | .btn-info {
48 | background: #008;
49 | border: 1px solid #00c;
50 | }
51 |
52 | .table-listing {
53 | width: 100%;
54 | line-height: 1.5em;
55 | border-collapse: collapse;
56 | table-layout: fixed;
57 |
58 | th,
59 | td {
60 | border: 1px solid #ccc;
61 | padding: 6px 11px;
62 | vertical-align: top;
63 | text-align: center;
64 |
65 | > .break {
66 | -ms-word-wrap: break-word;
67 | word-wrap: break-word;
68 | height: 1.5em;
69 | overflow: hidden;
70 | -ms-text-overflow: ellipsis;
71 | -o-text-overflow: ellipsis;
72 | text-overflow: ellipsis;
73 | white-space: nowrap;
74 | }
75 | }
76 |
77 | th:nth-child(1),
78 | td:nth-child(1) {
79 | width: 7em;
80 | }
81 |
82 | th:nth-child(2),
83 | td:nth-child(2) {
84 | text-align: left;
85 | }
86 |
87 | th:nth-child(3),
88 | td:nth-child(3) {
89 | width: 12em;
90 | }
91 |
92 | th:nth-child(4),
93 | td:nth-child(4) {
94 | width: 6em;
95 | }
96 |
97 | th:nth-child(5),
98 | td:nth-child(5) {
99 | width: 4em;
100 | }
101 |
102 | a.table-listing-delete {
103 | color: #fff;
104 | background: #800;
105 | display: inline-block;
106 | line-height: 1em;
107 | padding: 2px 5px 4px;
108 | -moz-border-radius: 4px;
109 | -webkit-border-radius: 4px;
110 | border-radius: 4px;
111 | border: 1px solid #c00;
112 | }
113 | }
114 |
115 | .form-group {
116 | margin-bottom: 1em;
117 |
118 | input, textarea {
119 | display: block;
120 | }
121 |
122 | label, input[type=checkbox] {
123 | display: inline-block;
124 | margin-bottom: 4px;
125 | vertical-align: middle;
126 | }
127 | }
128 |
129 | input[type=text], input[type=email], input[type=password], textarea {
130 | width: 100%;
131 | max-width: 400px;
132 | -moz-box-sizing: border-box;
133 | -webkit-box-sizing: border-box;
134 | box-sizing: border-box;
135 | border: 1px solid;
136 | padding: 0.33333em 0.5em;
137 | -moz-border-radius: 2px;
138 | -webkit-border-radius: 2px;
139 | border-radius: 2px;
140 | line-height: 1em;
141 | }
142 |
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/ts/default.js:
--------------------------------------------------------------------------------
1 | var KeySite;
2 | (function (KeySite) {
3 | function copyKey(mev) {
4 | var key = this;
5 | var range = document.createRange();
6 | range.selectNode(key);
7 | var selection = window.getSelection();
8 | selection.removeAllRanges();
9 | selection.addRange(range);
10 | document.execCommand("copy");
11 | }
12 | KeySite.copyKey = copyKey;
13 | })(KeySite || (KeySite = {}));
14 | var keys = document.getElementsByClassName("break");
15 | for (var i = 0; i < keys.length; i++) {
16 | keys[i].addEventListener("click", KeySite.copyKey);
17 | }
18 | ;
19 | //# sourceMappingURL=default.js.map
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/ts/default.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"default.js","sourceRoot":"","sources":["default.ts"],"names":[],"mappings":"AAAA,IAAO,OAAO,CAcb;AAdD,WAAO,OAAO;IAEV,iBAAwB,GAAe;QAEnC,IAAM,GAAG,GAAG,IAAsB,CAAC;QAEnC,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtB,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1B,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAXe,eAAO,UAWtB,CAAA;AACL,CAAC,EAdM,OAAO,KAAP,OAAO,QAcb;AAED,IAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACtD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EACpC,CAAC;IACG,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAAA,CAAC"}
--------------------------------------------------------------------------------
/Website/CryptoKeySite/res/ts/default.min.js:
--------------------------------------------------------------------------------
1 | var KeySite,Keys,i;for(function(n){function t(){var i=this,t=document.createRange(),n;t.selectNode(i);n=window.getSelection();n.removeAllRanges();n.addRange(t);document.execCommand("copy")}n.CopyKey=t}(KeySite||(KeySite={})),Keys=document.getElementsByClassName("break"),i=0;i