1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. public class LogSanitizer {
  7. private static final Pattern USERNAME_PATTERN = Pattern.compile("[^a-zA-Z0-9_\\-]+"); // Remove invalid characters from usernames
  8. private static final Pattern IP_ADDRESS_PATTERN = Pattern.compile("[^0-9\\.]"); // Remove invalid characters from IP addresses
  9. private static final Pattern EMAIL_PATTERN = Pattern.compile("[^a-zA-Z0-9._%+-]"); //Remove invalid characters from email addresses
  10. private static final Pattern SHELL_COMMAND_PATTERN = Pattern.compile("(?i)sudo\\s+.*"); // Remove sudo commands
  11. private static final Pattern PASSWORD_PATTERN = Pattern.compile("(?i)password|pass|pwd"); // Remove password hints
  12. public static void sanitizeLogFile(String logFilePath, String sanitizedLogFilePath) {
  13. try (BufferedReader reader = new BufferedReader(new FileReader(logFilePath));
  14. java.io.BufferedWriter writer = new BufferedWriter(new FileWriter(sanitizedLogFilePath))) {
  15. String line;
  16. while ((line = reader.readLine()) != null) {
  17. line = sanitizeLine(line);
  18. writer.write(line);
  19. writer.newLine();
  20. }
  21. System.out.println("Sanitization complete. Sanitized log written to: " + sanitizedLogFilePath);
  22. } catch (IOException e) {
  23. System.err.println("Error processing log file: " + e.getMessage());
  24. e.printStackTrace(); // Log the full stack trace for debugging
  25. }
  26. }
  27. private static String sanitizeLine(String line) {
  28. //Sanitize username
  29. Matcher usernameMatcher = USERNAME_PATTERN.matcher(line);
  30. line = usernameMatcher.replaceAll("");
  31. //Sanitize IP address
  32. Matcher ipMatcher = IP_ADDRESS_PATTERN.matcher(line);
  33. line = ipMatcher.replaceAll("");
  34. //Sanitize email
  35. Matcher emailMatcher = EMAIL_PATTERN.matcher(line);
  36. line = emailMatcher.replaceAll("");
  37. //Sanitize sudo commands
  38. Matcher sudoMatcher = SHELL_COMMAND_PATTERN.matcher(line);
  39. line = sudoMatcher.replaceAll("");
  40. //Sanitize password hints
  41. Matcher passwordMatcher = PASSWORD_PATTERN.matcher(line);
  42. line = passwordMatcher.replaceAll("");
  43. //Verbose logging
  44. System.out.println("Original line: " + line);
  45. System.out.println("Sanitized line: " + line);
  46. return line.trim(); //Remove leading/trailing whitespace
  47. }
  48. public static void main(String[] args) {
  49. if (args.length != 2) {
  50. System.out.println("Usage: java LogSanitizer <input_log_file> <output_log_file>");
  51. return;
  52. }
  53. String inputLogFile = args[0];
  54. String outputLogFile = args[1];
  55. sanitizeLogFile(inputLogFile, outputLogFile);
  56. }
  57. }

Add your comment