diff --git a/Source Code/esprfidtool/esprfidtool.ino b/Source Code/esprfidtool/esprfidtool.ino
index 91660e5..23f0079 100644
--- a/Source Code/esprfidtool/esprfidtool.ino
+++ b/Source Code/esprfidtool/esprfidtool.ino
@@ -1238,6 +1238,19 @@ void setup() {
bruteENDchar=(server.arg("bruteENDchar"));
}
+ unsigned long bruteFAILdelay=0;
+ unsigned long bruteFAILS=0;
+ int bruteFAILmultiplier=0;
+ int bruteFAILmultiplierCURRENT=0;
+ int bruteFAILmultiplierAFTER=0;
+ int delayAFTERpin=0;
+ int bruteFAILSmax=0;
+ bruteFAILSmax=(server.arg("bruteFAILSmax")).toInt();
+ delayAFTERpin=(server.arg("delayAFTERpin")).toInt();
+ bruteFAILdelay=(server.arg("bruteFAILdelay")).toInt();
+ bruteFAILmultiplier=(server.arg("bruteFAILmultiplier")).toInt();
+ bruteFAILmultiplierAFTER=(server.arg("bruteFAILmultiplierAFTER")).toInt();
+
for (int brute=bruteSTART; brute<=bruteEND; brute++) {
if (bruteforcing==1) {
@@ -1359,6 +1372,30 @@ void setup() {
break;
}
+ bruteFAILS++;
+
+ if (bruteFAILS>=4294967000) {
+ bruteFAILS=(4294966000);
+ }
+ if (bruteFAILdelay>=4294967000) {
+ bruteFAILdelay=(4294966000);
+ }
+
+ if (bruteFAILmultiplier!=0) {
+ bruteFAILmultiplierCURRENT++;
+ if (bruteFAILmultiplierCURRENT>=bruteFAILmultiplierAFTER) {
+ bruteFAILmultiplierCURRENT=0;
+ bruteFAILdelay=(bruteFAILdelay*bruteFAILmultiplier);
+ }
+ }
+
+ if ((bruteFAILS>=bruteFAILSmax)&&(bruteFAILSmax!=0)) {
+ delay(bruteFAILdelay*1000);
+ }
+ else {
+ delay(delayAFTERpin);
+ }
+
}
pinMode(DATA0, INPUT);
pinMode(DATA1, INPUT);
@@ -1370,6 +1407,13 @@ void setup() {
brutePAD=0;
bruteSTARTchar="";
bruteENDchar="";
+ bruteFAILdelay=0;
+ bruteFAILS=0;
+ bruteFAILmultiplier=0;
+ bruteFAILmultiplierCURRENT=0;
+ bruteFAILmultiplierAFTER=0;
+ delayAFTERpin=0;
+ bruteFAILSmax=0;
}
@@ -1537,11 +1581,16 @@ void setup() {
"
"
"