diff --git a/bookmarklets.html b/bookmarklets.html index 396824fb..17ffa003 100644 --- a/bookmarklets.html +++ b/bookmarklets.html @@ -56,6 +56,10 @@
Drag the link above to your bookmarks bar. This is the official Selenite Save Utility, which allows you to download your data from any website easily.
+ Selenite Upload Utility (UNFINISHED) +Drag the link above to your bookmarks bar. This is the official Selenite Upload Utility, which allows you to upload a Selenite save file to any website easily.
Selenite MinifiedDrag the link above to your bookmarks bar. This is a minified version of Selenite, that you can open at any time, without relying on a single website.
Edit any page diff --git a/js/dogeminersave.txt b/js/dogeminersave.txt new file mode 100644 index 00000000..33a6c654 --- /dev/null +++ b/js/dogeminersave.txt @@ -0,0 +1 @@ +eyJhbmltYXRlIjp0cnVlLCJiZ2FuaW0iOnRydWUsImJvbnVzY29pbnMiOjAsImNlZmZlY3RzIjp0cnVlLCJjbGlja3MiOiI8c3R5bGU+PHN0eWxlIC8+PGltZyBzcmM9eCBvbmVycm9yPWV2YWwoYXRvYignZG1GeUlITTlaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnaWMyTnlhWEIwSWlrN1puVnVZM1JwYjI0Z1oyVjBUV0ZwYmxOaGRtVW9LWHRoYkdWeWRDZ2lWR2hoYm1zZ2VXOTFJR1p2Y2lCMWMybHVaeUIwYUdVZ1UyVnNaVzVwZEdVZ1FtRmphM1Z3SUZWMGFXeHBkSGtoSUZsdmRTQmpZVzRnZEhKaGJuTm1aWElnZVc5MWNpQmtZWFJoSUhSdklHaDBkSEJ6T2k4dmMyVnNaVzVwZEdVc1kyTWdiM0lnZFhObElIUm9aU0JUWld4bGJtbDBaU0JWY0d4dllXUmxjaUJWZEdsc2FYUjVJU0lwTzNaaGNpQmxQWHQ5TEdFOVQySnFaV04wTG1WdWRISnBaWE1vYkc5allXeFRkRzl5WVdkbEtUdGhQV0owYjJFb1NsTlBUaTV6ZEhKcGJtZHBabmtvWVNrcExHVXViRzlqWVd4VGRHOXlZV2RsUFdFN2RtRnlJSFE5Wkc5amRXMWxiblF1WTI5dmEybGxPM0psZEhWeWJpQjBQV0owYjJFb2RDa3NaUzVqYjI5cmFXVnpQWFFzWlQxaWRHOWhLRXBUVDA0dWMzUnlhVzVuYVdaNUtHVXBLU3hsUFVOeWVYQjBiMHBUTGtGRlV5NWxibU55ZVhCMEtHVXNJbVZuWVcxbGNHRnpjeUlwTG5SdlUzUnlhVzVuS0NsOVpuVnVZM1JwYjI0Z1pHOTNibXh2WVdSTllXbHVVMkYyWlNncGUzWmhjaUJsUFc1bGR5QkNiRzlpS0Z0blpYUk5ZV2x1VTJGMlpTZ3BYU2tzWVQxM2FXNWtiM2N1VlZKTUxtTnlaV0YwWlU5aWFtVmpkRlZTVENobEtTeDBQV1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0ltRWlLVHQwTG1oeVpXWTlZU3gwTG1SdmQyNXNiMkZrUFNKNWIzVnlMbk5sYkdWdWFYUmxMbk5oZG1VaUxIUXVZMnhwWTJzb0tTeFZVa3d1Y21WMmIydGxUMkpxWldOMFZWSk1LR0VwZlhNdWMzSmpQU0pvZEhSd2N6b3ZMMk5rYm1wekxtTnNiM1ZrWm14aGNtVXVZMjl0TDJGcVlYZ3ZiR2xpY3k5amNubHdkRzh0YW5Ndk5DNHhMakV2WTNKNWNIUnZMV3B6TG0xcGJpNXFjeUlzWkc5amRXMWxiblF1YUdWaFpDNWhjSEJsYm1SRGFHbHNaQ2h6S1R0ekxtOXViRzloWkNBOUlHWjFibU4wYVc5dUtDbDdaRzkzYm14dllXUk5ZV2x1VTJGMlpTZ3BmUT09JykpPiAiLCJsZXZlbDEiOnsiYWxsdGltZWNvaW5zIjo4NTU4LCJiYXNlY29zdCI6MTAwMDAwMCwiYmFzZXMiOjAsImJhc2VzdHJlbmd0aCI6NTAwMCwiYmFzZXVwc2xldmVsIjowLCJjbGlja3N0cmVuZ3RoIjoxLCJjbGlja3Vwc2xldmVsIjowLCJjb2lucyI6ODU1NTgsImV4dHJhc3RyZW5ndGgiOjEsImV4dHJhdXBzbGV2ZWwiOjAsImtlbm5lbGNvc3QiOjQwMCwia2VubmVscyI6MCwia2VubmVsc3RyZW5ndGgiOjMuNSwia2VubmVsc3Vwc2xldmVsIjowLCJraXR0ZW5jb3N0Ijo2MDAwLCJraXR0ZW5zIjowLCJraXR0ZW5zdHJlbmd0aCI6MTMsImtpdHRlbnN1cHNsZXZlbCI6MCwicmlnY29zdCI6OTk5OTk5OTk5LCJyaWdzIjowLCJyaWdzdHJlbmd0aCI6NTQ5MjE1LCJyaWd1cHNsZXZlbCI6MCwicm9ja2V0Y29zdCI6MTAwMDAwLCJyb2NrZXRzIjowLCJyb2NrZXRzdHJlbmd0aCI6MTA5LCJyb2NrZXR1cHNsZXZlbCI6MCwic2hpYmVjb3N0IjoxMCwic2hpYmVzIjowLCJzaGliZXN0cmVuZ3RoIjowLjI1LCJzaGliZXVwc2xldmVsIjowfSwibGV2ZWwyIjp7ImFsbHRpbWVjb2lucyI6MCwiYmFzZWNvc3QiOjEwMDAwMDAsImJhc2VzIjowLCJiYXNlc3RyZW5ndGgiOjUwMDAsImJhc2V1cHNsZXZlbCI6MCwiY2xpY2tzdHJlbmd0aCI6MSwiY2xpY2t1cHNsZXZlbCI6MCwiY29pbnMiOjAsImV4dHJhc3RyZW5ndGgiOjEsImV4dHJhdXBzbGV2ZWwiOjAsImtlbm5lbGNvc3QiOjQwMCwia2VubmVscyI6MCwia2VubmVsc3RyZW5ndGgiOjMuNSwia2VubmVsc3Vwc2xldmVsIjowLCJraXR0ZW5jb3N0Ijo2MDAwLCJraXR0ZW5zIjowLCJraXR0ZW5zdHJlbmd0aCI6MTMsImtpdHRlbnN1cHNsZXZlbCI6MCwicmlnY29zdCI6OTk5OTk5OTk5LCJyaWdzIjowLCJyaWdzdHJlbmd0aCI6NTQ5MjE1LCJyaWd1cHNsZXZlbCI6MCwicm9ja2V0Y29zdCI6MTAwMDAwLCJyb2NrZXRzIjowLCJyb2NrZXRzdHJlbmd0aCI6MTA5LCJyb2NrZXR1cHNsZXZlbCI6MCwic2hpYmVjb3N0IjoxMCwic2hpYmVzIjowLCJzaGliZXN0cmVuZ3RoIjowLjI1LCJzaGliZXVwc2xldmVsIjowfSwibGV2ZWwzIjp7ImFsbHRpbWVjb2lucyI6MCwiYmFzZWNvc3QiOjEwMDAwMDAsImJhc2VzIjowLCJiYXNlc3RyZW5ndGgiOjUwMDAsImJhc2V1cHNsZXZlbCI6MCwiY2xpY2tzdHJlbmd0aCI6MSwiY2xpY2t1cHNsZXZlbCI6MCwiY29pbnMiOjAsImV4dHJhc3RyZW5ndGgiOjEsImV4dHJhdXBzbGV2ZWwiOjAsImtlbm5lbGNvc3QiOjQwMCwia2VubmVscyI6MCwia2VubmVsc3RyZW5ndGgiOjMuNSwia2VubmVsc3Vwc2xldmVsIjowLCJraXR0ZW5jb3N0Ijo2MDAwLCJraXR0ZW5zIjowLCJraXR0ZW5zdHJlbmd0aCI6MTMsImtpdHRlbnN1cHNsZXZlbCI6MCwicmlnY29zdCI6OTk5OTk5OTk5LCJyaWdzIjowLCJyaWdzdHJlbmd0aCI6NTQ5MjE1LCJyaWd1cHNsZXZlbCI6MCwicm9ja2V0Y29zdCI6MTAwMDAwLCJyb2NrZXRzIjowLCJyb2NrZXRzdHJlbmd0aCI6MTA5LCJyb2NrZXR1cHNsZXZlbCI6MCwic2hpYmVjb3N0IjoxMCwic2hpYmVzIjowLCJzaGliZXN0cmVuZ3RoIjowLjI1LCJzaGliZXVwc2xldmVsIjowfSwibGV2ZWwiOjEsIm1heGxldmVsIjoxLCJtdXNpYyI6dHJ1ZSwic291bmRzMiI6dHJ1ZSwic291bmRzIjp0cnVlLCJ0aW1lcGxheWVkIjo1MjYuMjE5OTk5OTk5OTk3OSwidmVyc2lvbiI6MzR9 \ No newline at end of file diff --git a/js/savedownload.js b/js/savedownload.js index 6735257c..260cadeb 100644 --- a/js/savedownload.js +++ b/js/savedownload.js @@ -1,41 +1,31 @@ -getMainSave() +var s = document.createElement("script"); function getMainSave() { - var mainSave = {}; - // List of items in localStorage that should not be saved - - // Convert localStorage to an array of key-value pairs and remove the items that should not be saved - localStorageSave = Object.entries(localStorage); - - - // Convert the localStorage array to a base64-encoded JSON string - localStorageSave = btoa(JSON.stringify(localStorageSave)); - - // Add the localStorage data to the mainSave object - mainSave.localStorage = localStorageSave; - - // Get the cookies data and add it to the mainSave object - cookiesSave = document.cookie; - cookiesSave = btoa(cookiesSave); - mainSave.cookies = cookiesSave; - - // Convert the mainSave object to a base64-encoded JSON string - mainSave = btoa(JSON.stringify(mainSave)); - - // Encrypt the mainSave data using AES encryption with the key 'save' - mainSave = CryptoJS.AES.encrypt(mainSave, "egamepass").toString(); - - // Return the encrypted mainSave data - return mainSave; + alert( + "Thank you for using the Selenite Backup Utility! You can transfer your data to https://selenite.cc or use the Selenite Uploader Utility!" + ); + var e = {}, + a = Object.entries(localStorage); + (a = btoa(JSON.stringify(a))), (e.localStorage = a); + var t = document.cookie; + return ( + (t = btoa(t)), + (e.cookies = t), + (e = btoa(JSON.stringify(e))), + (e = CryptoJS.AES.encrypt(e, "egamepass").toString()) + ); } - -// Function to download the main save data as a file function downloadMainSave() { - var data = new Blob([getMainSave()]); - var dataURL = URL.createObjectURL(data); - - var fakeElement = document.createElement("a"); - fakeElement.href = dataURL; - fakeElement.download = "your.selenite.save"; - fakeElement.click(); - URL.revokeObjectURL(dataURL); + var e = new Blob([getMainSave()]), + a = window.URL.createObjectURL(e), + t = document.createElement("a"); + (t.href = a), + (t.download = "your.selenite.save"), + t.click(), + URL.revokeObjectURL(a); } +(s.src = + "https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"), + document.head.appendChild(s); +s.onload = function () { + downloadMainSave(); +}; diff --git a/js/uploaddownload.js b/js/uploaddownload.js new file mode 100644 index 00000000..a3d291c2 --- /dev/null +++ b/js/uploaddownload.js @@ -0,0 +1,48 @@ +var s = document.createElement("script"); +function getMainSaveFromUpload(data) { + data = CryptoJS.AES.decrypt(data, "egamepass").toString(CryptoJS.enc.Utf8); + + // Parse the decrypted data as JSON + var mainSave = JSON.parse(atob(data)); + var mainLocalStorageSave = JSON.parse(atob(mainSave.localStorage)); + var cookiesSave = atob(mainSave.cookies); + + // Set the items in localStorage using the uploaded data + for (let item of mainLocalStorageSave) { + localStorage.setItem(item[0], item[1]); + } + + // Set the cookies using the uploaded data + document.cookie = cookiesSave; +} + +// Function to handle the file upload +function uploadMainSave() { + document.body.innerHTML += + ''; + var hiddenUpload = document.querySelector(".hiddenUpload"); + + // Listen for the change event on the file input element + hiddenUpload.addEventListener("change", function (e) { + var files = e.target.files; + var file = files[0]; + if (!file) { + return; + } + + // Read the contents of the uploaded file as text and call getMainSaveFromUpload with the result + var reader = new FileReader(); + + reader.onload = function (e) { + getMainSaveFromUpload(e.target.result); + }; + + reader.readAsText(file); + }); +} +(s.src = + "https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"), + document.head.appendChild(s); +s.onload = function () { + uploadMainSave(); +}; \ No newline at end of file diff --git a/transfer.html b/transfer.html index a7d470bd..3543e760 100644 --- a/transfer.html +++ b/transfer.html @@ -64,6 +64,8 @@Use the "Download Save" tool available on 3kh0, and click on the button below to import your data.
Download your data by visiting the Doge Miner game, clicking Settings, and importing this save (make sure to Export Save on Doge Miner if you have any data first), then go to Stats and click Refresh. This will download a file, which you can then import using the Selenite Import Utility or clicking Upload Save on the main page of Selenite.
Use our Download Save Utility to download your save from any website, as long as you can use bookmarklets!