Pi3rrot 9 yıl önce
ebeveyn
işleme
c00086e273
1 değiştirilmiş dosya ile 63 ekleme ve 20 silme
  1. 63 20
      poolset.c

+ 63 - 20
poolset.c

@@ -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]);
+
 }