xosski

~/Maildir url scanner

Aug 12th, 2025
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. MAILDIR="$HOME/Maildir"
  4. JSON_OUTPUT="$HOME/URL4RM.json"
  5. CSV_OUTPUT="$HOME/URL4RM.csv"
  6. TMP_FILE="$(mktemp)"
  7.  
  8. # Patterns to match (customize as needed)
  9. PATTERNS=("escapechan" "tor2web" "i2p" "onion" "darkweb" "dread")
  10.  
  11. # Ensure tmp is empty
  12. > "$TMP_FILE"
  13.  
  14. # Check dependencies
  15. if ! command -v urlscan &>/dev/null; then
  16. echo "Error: urlscan not found. Please install it."
  17. exit 1
  18. fi
  19.  
  20. # Escape JSON special chars
  21. escape_json() {
  22. echo "$1" | sed 's/\\/\\\\/g; s/"/\\"/g'
  23. }
  24.  
  25. # Process all mail files
  26. find "$MAILDIR" -type f | while read -r email_file; do
  27. timestamp=$(stat -c %y "$email_file" | cut -d'.' -f1)
  28. urlscan -n < "$email_file" 2>/dev/null | while read -r url; do
  29. clean_url=$(echo "$url" | sed 's/["><=]*$//')
  30.  
  31. # Skip anything that looks like an email address
  32. if [[ "$clean_url" =~ [[:alnum:]\._%+-]+@[[:alnum:]\.-]+\.[[:alpha:]]{2,} ]]; then
  33. continue
  34. fi
  35.  
  36. # Match against patterns
  37. for pattern in "${PATTERNS[@]}"; do
  38. if [[ "$clean_url" == *"$pattern"* ]]; then
  39. echo -e "$timestamp\t$email_file\t$clean_url\t$pattern" >> "$TMP_FILE"
  40. break
  41. fi
  42. done
  43. done
  44. done
  45.  
  46. # Deduplicate based on URL
  47. awk -F'\t' '!seen[$3]++' "$TMP_FILE" > "${TMP_FILE}_dedup"
  48.  
  49. # CSV output
  50. echo "timestamp,email_file,url,pattern" > "$CSV_OUTPUT"
  51. awk -F'\t' '{print "\"" $1 "\",\"" $2 "\",\"" $3 "\",\"" $4 "\""}' "${TMP_FILE}_dedup" >> "$CSV_OUTPUT"
  52.  
  53. # JSON output
  54. echo "[" > "$JSON_OUTPUT"
  55. awk -F'\t' '
  56. BEGIN { first = 1 }
  57. {
  58. if (!first) { print "," } else { first = 0 }
  59. printf " {\n"
  60. printf " \"timestamp\": \"%s\",\n", $1
  61. printf " \"email_file\": \"%s\",\n", $2
  62. printf " \"url\": \"%s\",\n", $3
  63. printf " \"pattern\": \"%s\"\n", $4
  64. printf " }"
  65. }
  66. END { print "\n]" }
  67. ' "${TMP_FILE}_dedup" >> "$JSON_OUTPUT"
  68.  
  69. rm "$TMP_FILE" "${TMP_FILE}_dedup"
  70.  
  71. echo "✅ CSV written to: $CSV_OUTPUT"
  72. echo "✅ JSON written to: $JSON_OUTPUT"
Add Comment
Please, Sign In to add comment