|
@@ -7,18 +7,20 @@
|
|
|
MifareClassicKey SecretKey[] = { 0x00, 0x01, 0x31, 0xB9, 0x3F, 0x28 };
|
|
|
MifareClassicBlock data_read;
|
|
|
|
|
|
-int main(int argc, const char *argv[]) {
|
|
|
+void show_menu(){
|
|
|
+ printf("How it works? So easy !\n");
|
|
|
+ printf(" --read\tRead credits and date\n");
|
|
|
+ printf(" --write\tWrite <credit> <buy_date> <expire_date>\n");
|
|
|
+ printf("\t\tEx: ./poolset --write 10 25/12/16 25/06/16\n\n");
|
|
|
+ exit(0);
|
|
|
+}
|
|
|
|
|
|
+void read_tag(int coins, const char *buy_date, const char *expire_date) {
|
|
|
+
|
|
|
nfc_context *context; //init libnfc
|
|
|
nfc_device *pnd; //trouver un lecteur
|
|
|
MifareTag *tags = NULL; //stockage des tags
|
|
|
- int i, nbsect, coins;
|
|
|
-
|
|
|
- printf("-=- RFID Poolset -=-\n");
|
|
|
- if(argc == 1) {
|
|
|
- printf("No arguments found, read only mode...\n");
|
|
|
- }
|
|
|
- else coins = atoi(argv[1]);
|
|
|
+ int i, nbsect;
|
|
|
|
|
|
nfc_init(&context);
|
|
|
if(context == NULL) {
|
|
@@ -32,7 +34,6 @@ int main(int argc, const char *argv[]) {
|
|
|
exit(EXIT_FAILURE);
|
|
|
}
|
|
|
printf("NFC reader: %s opened\n", nfc_device_get_name(pnd));
|
|
|
-
|
|
|
|
|
|
//tags = freefare_get_tags(pnd);
|
|
|
while(!tags) {
|
|
@@ -42,7 +43,6 @@ int main(int argc, const char *argv[]) {
|
|
|
}
|
|
|
|
|
|
for(i=0; tags[i]; i++) {
|
|
|
-
|
|
|
switch(freefare_get_tag_type(tags[i])) {
|
|
|
case CLASSIC_1K:
|
|
|
printf("=> Tag number %u with UID %s type Mifare 1k (S50) found !\n", i, freefare_get_tag_uid(tags[i]) );
|
|
@@ -58,22 +58,46 @@ int main(int argc, const char *argv[]) {
|
|
|
}
|
|
|
else printf("Non ca chie dans la colle mais grave, check ta clé\n");
|
|
|
|
|
|
- if(mifare_classic_read(tags[i], 5, &data_read) == OPERATION_OK) {
|
|
|
- printf(" => Infos\n");
|
|
|
- printf(" => credits :\t\t%.2d\n", data_read[7]);
|
|
|
- printf(" => buy date :\t\t%.2d/%.2d/%.2d\n", data_read[0], data_read[1], data_read[2]);
|
|
|
- printf(" => expire date :\t%.2d/%.2d/%.2d\n", data_read[3], data_read[4], data_read[5]);
|
|
|
- }
|
|
|
-
|
|
|
- if(argc > 1) {
|
|
|
+ if(coins != NULL && buy_date != NULL && expire_date != NULL) {
|
|
|
+
|
|
|
+ char *token;
|
|
|
+ token = strtok (buy_date,"/");
|
|
|
+ int j=0;
|
|
|
+ while (token != NULL) {
|
|
|
+ printf ("%s ", token);
|
|
|
+ data_read[j] = atoi(token);
|
|
|
+ j++;
|
|
|
+ token = strtok (NULL, "/");
|
|
|
+ }
|
|
|
+
|
|
|
+ token = strtok (expire_date, "/");
|
|
|
+ while (token != NULL) {
|
|
|
+ printf ("%s ", token);
|
|
|
+ data_read[j] = atoi(token);
|
|
|
+ j++;
|
|
|
+ token = strtok (NULL, "/");
|
|
|
+ }
|
|
|
+ data_read[6] = 0;
|
|
|
data_read[7] = coins;
|
|
|
- printf("=> Writing new amount...\n");
|
|
|
- if(mifare_classic_write(tags[i], 5, &data_read) == OPERATION_OK){
|
|
|
+
|
|
|
+ printf("=> Writing new datas...\n");
|
|
|
+
|
|
|
+ if(mifare_classic_write(tags[i], 5, &data_read) == OPERATION_OK) {
|
|
|
if(mifare_classic_read(tags[i], 5, &data_read) == OPERATION_OK) {
|
|
|
printf("=> %.2d credits found now !\n", data_read[7]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ if(mifare_classic_read(tags[i], 5, &data_read) == OPERATION_OK) {
|
|
|
+ printf(" => Infos\n");
|
|
|
+ printf(" => credits :\t\t%.2d\n", data_read[7]);
|
|
|
+ printf(" => buy date :\t\t%.2d/%.2d/%.2d\n", data_read[0], data_read[1], data_read[2]);
|
|
|
+ printf(" => expire date :\t%.2d/%.2d/%.2d\n", data_read[3], data_read[4], data_read[5]);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
mifare_classic_disconnect(tags[i]);
|
|
|
break;
|
|
|
|
|
@@ -86,4 +110,23 @@ int main(int argc, const char *argv[]) {
|
|
|
nfc_close(pnd);
|
|
|
nfc_exit(context);
|
|
|
exit(EXIT_SUCCESS);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int main(int argc, const char **argv) {
|
|
|
+
|
|
|
+ printf("=========================\n");
|
|
|
+ printf("RFID Poolset Read/Write !\n");
|
|
|
+ printf("=========================\n");
|
|
|
+
|
|
|
+ if(argc == 1)
|
|
|
+ show_menu();
|
|
|
+ //else coins = atoi(argv[1]);
|
|
|
+ if (strcmp(argv[1], "--read") == 0)
|
|
|
+ read_tag(NULL, NULL, NULL);
|
|
|
+
|
|
|
+ if (strcmp(argv[1], "--write") == 0)
|
|
|
+ read_tag(atoi(argv[2]), argv[3], argv[4]);
|
|
|
+
|
|
|
}
|