فهرست منبع

Minor validation pattern updates

Nick Ortakales 10 ماه پیش
والد
کامیت
984785ed45
1فایلهای تغییر یافته به همراه36 افزوده شده و 34 حذف شده
  1. 36 34
      validation.sh

+ 36 - 34
validation.sh

@@ -1,43 +1,51 @@
 #!/usr/bin/env bash
 
-ERR_FOUND=0
+ERROR_FOUND=0
 
 REQUIRED_PATTERNS=(
-  "Filetype: Flipper NFC device"
-  "Version: 4"
-  "Device type: SLIX"
-  "UID:( [A-F0-9]{2}){8}"
-  "DSFID: 00"
-  "AFI: 00"
-  "IC Reference: 03"
-  "Lock DSFID: false"
-  "Lock AFI: false"
-  "Block Count: 8"
-  "Block Size: 04"
-  "Data Content:( [A-F0-9]{2}){32}"
-  "Security Status: 00 00 00 00 00 00 00 00"
-  "Capabilities: Default"
-  "Password Privacy: 7F FD 6E 5B"
-  "Password Destroy: 0F 0F 0F 0F"
-  "Password EAS: 00 00 00 00"
-  "Privacy Mode: false"
-  "Lock EAS: false"
+  "^Filetype: Flipper NFC device$"
+  "^Version: 4$"
+  "^Device type: SLIX$"
+  "^UID:( [A-F0-9]{2}){8}$"
+  "^DSFID: 00$"
+  "^AFI: 00$"
+  "^IC Reference: 03$"
+  "^Lock DSFID: false$"
+  "^Lock AFI: false$"
+  "^Block Count: 8$"
+  "^Block Size: 04$"
+  "^Data Content:( [A-F0-9]{2}){32}$"
+  "^Security Status: 00 00 00 00 00 00 00 00$"
+  "^Capabilities: Default$"
+  "^Password Privacy: 7F FD 6E 5B$"
+  "^Password Destroy: 0F 0F 0F 0F$"
+  "^Password EAS: 00 00 00 00$"
+  "^Privacy Mode: false$"
+  "^Lock EAS: false$"
 )
 
 FORBIDDEN_PATTERNS=(
+  # This showed up in Unleashed firmware, see https://github.com/nortakales/flipper-zero-tonies/pull/82
   "Subtype: ([0-9]){2}"
-  # Add more forbidden patterns here
 )
 
-# Use process substitution so that ERR_FOUND is updated in the main shell.
+# Use process substitution so that ERROR_FOUND is updated in the main shell.
 while read -r filename; do
   content=$(cat "$filename")
 
   for pattern in "${REQUIRED_PATTERNS[@]}"; do
     if ! echo "$content" | awk "/$pattern/ { found=1 } END { exit !found }"; then
       echo "$filename"
-      echo "    Missing: $pattern"
-      ERR_FOUND=1
+      echo "    Missing pattern: $pattern"
+      ERROR_FOUND=1
+    fi
+  done
+
+  for pattern in "${FORBIDDEN_PATTERNS[@]}"; do
+    if echo "$content" | awk "/$pattern/ { found=1 } END { exit !found }"; then
+      echo "$filename"
+      echo "    Forbidden pattern found: $pattern"
+      ERROR_FOUND=1
     fi
   done
 
@@ -46,23 +54,17 @@ while read -r filename; do
   if echo "$content" | awk '/Data Content:( [A-F0-9]{2})* 00 00( [A-F0-9]{2})*/ { found=1 } END { exit !found }'; then
     echo "$filename"
     echo "    Full data not read"
-    ERR_FOUND=1
+    ERROR_FOUND=1
   fi
 
+  # Not necessarily going to cause issues, but keep line endings the same for consistency
   if echo "$content" | awk '/\r/ { found=1 } END { exit !found }'; then
     echo "$filename"
     echo "    Has carriage return characters"
-    ERR_FOUND=1
+    ERROR_FOUND=1
   fi
 
-  for pattern in "${FORBIDDEN_PATTERNS[@]}"; do
-    if echo "$content" | awk "/$pattern/ { found=1 } END { exit !found }"; then
-      echo "$filename"
-      echo "    Forbidden pattern found: $pattern"
-      ERR_FOUND=1
-    fi
-  done
 
 done < <(find . -type f -name "*.nfc")
 
-exit $ERR_FOUND
+exit $ERROR_FOUND