mirror of
				https://github.com/RfidResearchGroup/proxmark3.git
				synced 2025-10-26 14:06:11 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include "proxusb.h"
 | |
| #include "flash.h"
 | |
| 
 | |
| unsigned int current_command = CMD_UNKNOWN;
 | |
| 
 | |
| extern struct partition partitions[];
 | |
| 
 | |
| static void usage(char **argv)
 | |
| {
 | |
|   fprintf(stderr, "Usage:   %s areas image [image [image]]\n", argv[0]);
 | |
|   fprintf(stderr, "         areas is a comma-separated list of areas to flash, with no spaces\n");
 | |
|   fprintf(stderr, "               Known areas are:");
 | |
| 
 | |
|   for (int i = 0; partitions[i].name != NULL; ++i) {
 | |
|     fprintf(stderr, " %s", partitions[i].name);
 | |
|   }
 | |
| 
 | |
|   fprintf(stderr, "\n");
 | |
|   fprintf(stderr, "         image is the path to the corresponding image\n\n");
 | |
|   fprintf(stderr, "Example: %s os,fpga path/to/osimage.elf path/to/fpgaimage.elf\n", argv[0]);
 | |
| }
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
|   if (argc < 2) {
 | |
|     usage(argv);
 | |
|     exit(-1);
 | |
|   }
 | |
| 
 | |
|   /* Count area arguments */
 | |
|   int areas = 0, offset=-1, length=0;
 | |
|   while (find_next_area(argv[1], &offset, &length)) areas++;
 | |
| 
 | |
|   if (areas != argc - 2) {
 | |
|     usage(argv);
 | |
|     exit(-1);
 | |
|   }
 | |
| 
 | |
|   usb_init();
 | |
| 
 | |
|   fprintf(stderr,"Waiting for Proxmark to appear on USB... ");
 | |
|   while (!OpenProxmark(0)) { sleep(1); }
 | |
|   fprintf(stderr,"Found.\n");
 | |
| 
 | |
|   do_flash(argv);
 | |
| 
 | |
|   UsbCommand c = {CMD_HARDWARE_RESET};
 | |
|   SendCommand(&c);
 | |
| 
 | |
|   CloseProxmark();
 | |
| 
 | |
|   fprintf(stderr,"Have a nice day!\n");
 | |
| 
 | |
|   return 0;
 | |
| }
 |