asdasdasdasdl;kkaspjoyui8d67hbgasd8us7aidsa
This commit is contained in:
commit
f6defc402e
2 changed files with 98 additions and 0 deletions
2
Makefile
Normal file
2
Makefile
Normal file
|
@ -0,0 +1,2 @@
|
|||
all:
|
||||
gcc -g -o main main.c
|
96
main.c
Normal file
96
main.c
Normal file
|
@ -0,0 +1,96 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <strings.h>
|
||||
#include <unistd.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#define ANSI_COLOR_RED "\x1b[31m"
|
||||
#define ANSI_COLOR_GREEN "\x1b[32m"
|
||||
#define ANSI_COLOR_YELLOW "\x1b[33m"
|
||||
#define ANSI_COLOR_BLUE "\x1b[34m"
|
||||
#define ANSI_COLOR_MAGENTA "\x1b[35m"
|
||||
#define ANSI_COLOR_CYAN "\x1b[36m"
|
||||
#define ANSI_COLOR_RESET "\x1b[0m"
|
||||
|
||||
void read_file(FILE *file) {
|
||||
int count = 0;
|
||||
unsigned char buffer[1000000];
|
||||
size_t bytesRead;
|
||||
while ((bytesRead = fread(buffer, 1, sizeof(buffer), file)) > 0) {
|
||||
for (size_t i = 0; i < bytesRead; i++) {
|
||||
printf("%02x ", buffer[i]);
|
||||
if(++count % 16 == 0) {
|
||||
puts("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void get_size(FILE *file, int argc, char *argv[]) {
|
||||
fseek(file, 0L, SEEK_END);
|
||||
long bytes = ftell(file);
|
||||
fseek(file, 0L, SEEK_SET);
|
||||
if (bytes == 1024) {
|
||||
printf("Bytes of %s: %ld\n", argv[argc-1], bytes);
|
||||
puts("This looks like a Mifare Classic 1K dump file");
|
||||
} else if (bytes == 4096) {
|
||||
printf("Bytes of %s: %ld\n", argv[argc-1], bytes);
|
||||
puts("This lokks like a Mifare Classic 4K dump file");
|
||||
} else {
|
||||
printf("Bytes of %s: %ld\n", argv[argc-1], bytes);
|
||||
printf(ANSI_COLOR_RED "This doesn't look like a Mifare Classic 1K or 4K at all\n" ANSI_COLOR_RESET);
|
||||
}
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[]) {
|
||||
if (argc <= 1)
|
||||
{
|
||||
printf("Usage:\n %s [OPTION]... [FILE]\n\n", argv[0]);
|
||||
puts("Tool to modify Mifare Classic dump files");
|
||||
puts("\nOptions:");
|
||||
puts("\t-s display the size of the file in bytes\n");
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
struct option longopts[] = {
|
||||
{"size", no_argument, NULL, 's'},
|
||||
{"help", no_argument, NULL, 'h'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
{NULL, no_argument, NULL, 0}
|
||||
};
|
||||
|
||||
FILE *file;
|
||||
unsigned char ch;
|
||||
char *binfile = malloc(64 * sizeof(char));
|
||||
if ( binfile == NULL ) {
|
||||
puts("Failed to allocate memory");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
file = fopen(argv[argc-1], "rb");
|
||||
if( file == NULL )
|
||||
{
|
||||
perror("Error while opening the file");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
int args;
|
||||
while ((args = getopt_long(argc, argv, "s", longopts, NULL)) != -1) {
|
||||
switch (args) {
|
||||
case 's':
|
||||
{
|
||||
get_size(file, argc, argv);
|
||||
}
|
||||
default:
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
read_file(file);
|
||||
|
||||
fclose(file);
|
||||
free(binfile);
|
||||
exit(EXIT_SUCCESS);
|
||||
|
||||
}
|
Reference in a new issue