mirror of
https://github.com/wh201906/Proxmark3GUI.git
synced 2025-02-16 22:21:30 +08:00
Support chk(), nested() in latest Iceman repo
This commit is contained in:
parent
6e5f654cc5
commit
6baa09221e
@ -37,8 +37,11 @@ void PM3Process::connectPM3(const QString& path, const QString& port, const QStr
|
|||||||
clientType = Util::CLIENTTYPE_ICEMAN;
|
clientType = Util::CLIENTTYPE_ICEMAN;
|
||||||
setRequiringOutput(true);
|
setRequiringOutput(true);
|
||||||
write("hw version\r\n");
|
write("hw version\r\n");
|
||||||
waitForReadyRead(1000);
|
for(int i = 0; i < 10; i++)
|
||||||
result = *requiredOutput;
|
{
|
||||||
|
waitForReadyRead(200);
|
||||||
|
result += *requiredOutput;
|
||||||
|
}
|
||||||
setRequiringOutput(false);
|
setRequiringOutput(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -6,7 +6,8 @@ const Mifare::CardType Mifare::card_mini =
|
|||||||
5,
|
5,
|
||||||
20,
|
20,
|
||||||
{4, 4, 4, 4, 4},
|
{4, 4, 4, 4, 4},
|
||||||
{0, 4, 8, 12, 16}
|
{0, 4, 8, 12, 16},
|
||||||
|
"mini"
|
||||||
};
|
};
|
||||||
const Mifare::CardType Mifare::card_1k =
|
const Mifare::CardType Mifare::card_1k =
|
||||||
{
|
{
|
||||||
@ -14,7 +15,8 @@ const Mifare::CardType Mifare::card_1k =
|
|||||||
16,
|
16,
|
||||||
64,
|
64,
|
||||||
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||||
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60}
|
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60},
|
||||||
|
"1k"
|
||||||
};
|
};
|
||||||
const Mifare::CardType Mifare::card_2k =
|
const Mifare::CardType Mifare::card_2k =
|
||||||
{
|
{
|
||||||
@ -22,7 +24,8 @@ const Mifare::CardType Mifare::card_2k =
|
|||||||
32,
|
32,
|
||||||
128,
|
128,
|
||||||
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
||||||
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124}
|
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124},
|
||||||
|
"2k"
|
||||||
};
|
};
|
||||||
const Mifare::CardType Mifare::card_4k =
|
const Mifare::CardType Mifare::card_4k =
|
||||||
{
|
{
|
||||||
@ -30,7 +33,8 @@ const Mifare::CardType Mifare::card_4k =
|
|||||||
40,
|
40,
|
||||||
256,
|
256,
|
||||||
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, 16, 16, 16, 16, 16, 16, 16},
|
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, 16, 16, 16, 16, 16, 16, 16},
|
||||||
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 144, 160, 176, 192, 208, 224, 240}
|
{0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 144, 160, 176, 192, 208, 224, 240},
|
||||||
|
"4k"
|
||||||
};
|
};
|
||||||
|
|
||||||
const Mifare::AccessType Mifare::dataCondition[8][4] =
|
const Mifare::AccessType Mifare::dataCondition[8][4] =
|
||||||
@ -79,8 +83,8 @@ Mifare::Mifare(Ui::MainWindow *ui, Util *addr, QWidget *parent): QObject(parent)
|
|||||||
data_clearKey(); // fill with blank QString
|
data_clearKey(); // fill with blank QString
|
||||||
data_clearData(); // fill with blank QString
|
data_clearData(); // fill with blank QString
|
||||||
dataPattern = new QRegularExpression("([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}");
|
dataPattern = new QRegularExpression("([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}");
|
||||||
keyPattern_res = new QRegularExpression("\\|\\d{3}\\|.+?\\|.+?\\|.+?\\|.+?\\|");
|
keyPattern_res = new QRegularExpression("\\|\\s+\\d{3}\\s+\\|\\s+.+?\\s+\\|\\s+.+?\\s+\\|\\s+.+?\\s+\\|\\s+.+?\\s+\\|");
|
||||||
keyPattern = new QRegularExpression("\\|\\d{3}\\|.+?\\|.+?\\|");
|
keyPattern = new QRegularExpression("\\|\\s+\\d{3}\\s+\\|\\s+.+?\\s+\\|\\s+.+?\\s+\\|");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Mifare::info(bool isRequiringOutput)
|
QString Mifare::info(bool isRequiringOutput)
|
||||||
@ -148,10 +152,10 @@ void Mifare::chk()
|
|||||||
else if(util->getClientType() == Util::CLIENTTYPE_ICEMAN)
|
else if(util->getClientType() == Util::CLIENTTYPE_ICEMAN)
|
||||||
{
|
{
|
||||||
result = util->execCMDWithOutput(
|
result = util->execCMDWithOutput(
|
||||||
"hf mf chk *"
|
"hf mf chk --"
|
||||||
+ QString::number(cardType.type)
|
+ cardType.typeText,
|
||||||
+ " ?",
|
Util::ReturnTrigger(1000 + cardType.sector_size * 200, {"No valid", keyPattern_res->pattern()}));
|
||||||
Util::ReturnTrigger(1000 + cardType.sector_size * 200, {"No valid", "\\|---\\|----------------\\|---\\|----------------\\|"}));
|
qDebug() << "mf_chk_iceman_result" << result;
|
||||||
for(int i = 0; i < cardType.sector_size; i++)
|
for(int i = 0; i < cardType.sector_size; i++)
|
||||||
{
|
{
|
||||||
reMatch = keyPattern_res->match(result, offset);
|
reMatch = keyPattern_res->match(result, offset);
|
||||||
@ -188,7 +192,7 @@ void Mifare::nested()
|
|||||||
"hf mf nested "
|
"hf mf nested "
|
||||||
+ QString::number(cardType.type)
|
+ QString::number(cardType.type)
|
||||||
+ " *",
|
+ " *",
|
||||||
Util::ReturnTrigger(10000, {"Can't found", "\\|000\\|"}));
|
Util::ReturnTrigger(15000, {"Can't found", "\\|000\\|"}));
|
||||||
}
|
}
|
||||||
else if(util->getClientType() == Util::CLIENTTYPE_ICEMAN)
|
else if(util->getClientType() == Util::CLIENTTYPE_ICEMAN)
|
||||||
{
|
{
|
||||||
@ -197,7 +201,7 @@ void Mifare::nested()
|
|||||||
{
|
{
|
||||||
if(data_isKeyValid(keyAList->at(i)))
|
if(data_isKeyValid(keyAList->at(i)))
|
||||||
{
|
{
|
||||||
knownKeyInfo = " " + QString::number(i * 4) + " A " + keyAList->at(i);
|
knownKeyInfo = " --blk " + QString::number(i * 4) + " -a -k " + keyAList->at(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,7 +211,7 @@ void Mifare::nested()
|
|||||||
{
|
{
|
||||||
if(data_isKeyValid(keyBList->at(i)))
|
if(data_isKeyValid(keyBList->at(i)))
|
||||||
{
|
{
|
||||||
knownKeyInfo = " " + QString::number(i * 4) + " B " + keyBList->at(i);
|
knownKeyInfo = " --blk " + QString::number(i * 4) + " -b -k " + keyBList->at(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,10 +219,10 @@ void Mifare::nested()
|
|||||||
if(knownKeyInfo != "")
|
if(knownKeyInfo != "")
|
||||||
{
|
{
|
||||||
result = util->execCMDWithOutput(
|
result = util->execCMDWithOutput(
|
||||||
"hf mf nested "
|
"hf mf nested --"
|
||||||
+ QString::number(cardType.type)
|
+ cardType.typeText
|
||||||
+ knownKeyInfo,
|
+ knownKeyInfo,
|
||||||
Util::ReturnTrigger(10000, {"key is wrong", "\\|000\\|"}));
|
Util::ReturnTrigger(15000, {"Can't authenticate", keyPattern_res->pattern()}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,7 @@ public:
|
|||||||
quint16 block_size;
|
quint16 block_size;
|
||||||
quint8 blk[40];
|
quint8 blk[40];
|
||||||
quint8 blks[40];
|
quint8 blks[40];
|
||||||
|
QString typeText;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AccessType
|
enum AccessType
|
||||||
|
25
testlog.md
25
testlog.md
@ -1,25 +0,0 @@
|
|||||||
# Some Test Log
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
# Version:0.1.3
|
|
||||||
## Mifare
|
|
||||||
### Card Info
|
|
||||||
+ Official, Mifare card: Passed
|
|
||||||
+ Iceman, Mifare card: Passed
|
|
||||||
+ Official, no card: Passed
|
|
||||||
+ Iceman, no card: Passed
|
|
||||||
|
|
||||||
### Check default Password
|
|
||||||
+ Official, all FFFFFFFFFFFF: Passed
|
|
||||||
+ Iceman, all FFFFFFFFFFFF: Passed
|
|
||||||
+ Official, no card: Passed
|
|
||||||
+ Iceman, no card: Stuck to searching card, then failed to communicate with PM3
|
|
||||||
+ Official, all unknown: Passed
|
|
||||||
+ Iceman, all unknown: Passed
|
|
||||||
+ Official, partially unknown: Passed
|
|
||||||
+ Iceman, partially unknown: Passed
|
|
||||||
|
|
||||||
### Darkside Attack
|
|
||||||
+ Official: Passed
|
|
||||||
+ Iceman: Passed
|
|
Loading…
x
Reference in New Issue
Block a user