validation.sh 1.1 KB

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