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() { "
" "
" "Bruteforce PIN:
" + "Delay between \"keypresses\": ms
" + "Delay between entering complete PINs: ms
" "PIN begins with character(s):
" "PIN start position:
" "PIN end position:
" "PIN ends with character(s):
" - "Delay between \"keypresses\": ms
" + "NOTE: The advanced timing settings listed below override the \"Delay between entering complete PINs\" setting(listed above) when the conditions listed below are met.
" + "Number of failed PIN attempts(X) before a delay:
" + "Delay in seconds(Y) after [X] failed PINs: s
" + "Multiply delay [Y] by after every failed pin attempts
" " 4bit Wiegand PIN Format " " 8bit Wiegand PIN Format
" "

" diff --git a/Source Code/esprfidtool/version.h b/Source Code/esprfidtool/version.h index fb6fcae..a3a3c28 100644 --- a/Source Code/esprfidtool/version.h +++ b/Source Code/esprfidtool/version.h @@ -1 +1 @@ -String version = "1.1.2"; +String version = "1.1.3";