validation.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. shopt -s globstar
  3. REQUIRED_PATTERNS=(
  4. "Filetype: Flipper NFC device"
  5. "Version: 4"
  6. "Device type: SLIX"
  7. "UID:( [A-F0-9]{2}){8}"
  8. "DSFID: 00"
  9. "AFI: 00"
  10. "IC Reference: 03"
  11. "Lock DSFID: false"
  12. "Lock AFI: false"
  13. "Block Count: 8"
  14. "Block Size: 04"
  15. "Data Content:( [A-F0-9]{2}){32}"
  16. "Security Status: 00 00 00 00 00 00 00 00"
  17. "Capabilities: Default"
  18. "Password Privacy: 7F FD 6E 5B"
  19. "Password Destroy: 0F 0F 0F 0F"
  20. "Password EAS: 00 00 00 00"
  21. "Privacy Mode: false"
  22. "Lock EAS: false"
  23. )
  24. for filename in **/*.nfc; do
  25. for pattern in "${REQUIRED_PATTERNS[@]}"; do
  26. if [ -z "$(grep -P "$pattern" "$filename")" ]; then
  27. echo $filename
  28. echo " Missing: $pattern"
  29. fi
  30. done
  31. # The likelihood of two blocks of 00 in data content is almost impossible,
  32. # so use that as a check for when the full data is not read
  33. if [ ! -z "$(grep -P "Data Content:( [A-F0-9]{2})* 00 00( [A-F0-9]{2})*" "$filename")" ]; then
  34. echo $filename
  35. echo " Full data not read"
  36. fi
  37. if [ ! -z "$(grep -P "\r" "$filename")" ]; then
  38. echo $filename
  39. echo " Has carriage return characters"
  40. fi
  41. done