import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LogSanitizer {
private static final Pattern USERNAME_PATTERN = Pattern.compile("[^a-zA-Z0-9_\\-]+"); // Remove invalid characters from usernames
private static final Pattern IP_ADDRESS_PATTERN = Pattern.compile("[^0-9\\.]"); // Remove invalid characters from IP addresses
private static final Pattern EMAIL_PATTERN = Pattern.compile("[^a-zA-Z0-9._%+-]"); //Remove invalid characters from email addresses
private static final Pattern SHELL_COMMAND_PATTERN = Pattern.compile("(?i)sudo\\s+.*"); // Remove sudo commands
private static final Pattern PASSWORD_PATTERN = Pattern.compile("(?i)password|pass|pwd"); // Remove password hints
public static void sanitizeLogFile(String logFilePath, String sanitizedLogFilePath) {
try (BufferedReader reader = new BufferedReader(new FileReader(logFilePath));
java.io.BufferedWriter writer = new BufferedWriter(new FileWriter(sanitizedLogFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
line = sanitizeLine(line);
writer.write(line);
writer.newLine();
}
System.out.println("Sanitization complete. Sanitized log written to: " + sanitizedLogFilePath);
} catch (IOException e) {
System.err.println("Error processing log file: " + e.getMessage());
e.printStackTrace(); // Log the full stack trace for debugging
}
}
private static String sanitizeLine(String line) {
//Sanitize username
Matcher usernameMatcher = USERNAME_PATTERN.matcher(line);
line = usernameMatcher.replaceAll("");
//Sanitize IP address
Matcher ipMatcher = IP_ADDRESS_PATTERN.matcher(line);
line = ipMatcher.replaceAll("");
//Sanitize email
Matcher emailMatcher = EMAIL_PATTERN.matcher(line);
line = emailMatcher.replaceAll("");
//Sanitize sudo commands
Matcher sudoMatcher = SHELL_COMMAND_PATTERN.matcher(line);
line = sudoMatcher.replaceAll("");
//Sanitize password hints
Matcher passwordMatcher = PASSWORD_PATTERN.matcher(line);
line = passwordMatcher.replaceAll("");
//Verbose logging
System.out.println("Original line: " + line);
System.out.println("Sanitized line: " + line);
return line.trim(); //Remove leading/trailing whitespace
}
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: java LogSanitizer <input_log_file> <output_log_file>");
return;
}
String inputLogFile = args[0];
String outputLogFile = args[1];
sanitizeLogFile(inputLogFile, outputLogFile);
}
}
Add your comment