X-Git-Url: https://iam.tj/gitweb/gitweb.cgi?p=cfe_generate_password.git;a=blobdiff_plain;f=cfe_generate_password.c;h=904e04bf35f9be0e8ebac0a109fc75344c65aedd;hp=dd5beb431412cbde69ab4922a647da2f4705ec1b;hb=bf4b2881e744cd4c7a0cbce412456eeea83c5887;hpb=b5e245436c5277ec0ac03df8523145c8dfec6008 diff --git a/cfe_generate_password.c b/cfe_generate_password.c index dd5beb4..904e04b 100644 --- a/cfe_generate_password.c +++ b/cfe_generate_password.c @@ -1,79 +1,66 @@ -/* - Generate Broadcom CFE seeds and passwords for many popular modem/router devices - - Copyright 2015 TJ - Licenced on the terms of the GNU General Public Licence version 3 - - To build: - - gcc -o cfe_gen_pass cfe_generate_password.c - - Or: - - make +static const char *title = \ +"Generate Broadcom CFE seeds and passwords for many popular modem/router devices\n" +; +static const float VERSION = 1.3f; - To use: +static const char *copyright = \ +"Copyright 2015 TJ \n" +"Licenced on the terms of the GNU General Public Licence version 3\n" +; - ./cfe_gen_pass [options] +static const char *help = \ +"This tool can generate passwords for use with many devices that contain Broadcom Common Firmware Environment (CFE) bootbase which has a debug mode that is enabled using the 'ATEN 1 XXXXXXXX' command, where XXXXXXXX is an eight digit hexadecimal 'password'.\n\n" - This tool can generate passwords for use with many devices that contain - Broadcom Common Firmware Environment (CFE) bootbase which has a debug mode - that is enabled using the "ATEN 1 XXXXXXXX" command, where XXXXXXXX is an - eight digit hexadecimal 'password'. +"It is NOT necessary to have the device generate a 'seed' using 'ATSE [MODEL-ID]' because this tool can generate the seed from the device's first (base) MAC address.\n\n" - It is NOT necessary to have the device generate a 'seed' using "ATSE [MODEL-ID]" - because this tool can generate the seed from the device's first (base) MAC address. +"When the device generates a seed it combines the number of seconds since 1970-01-01 00:00:00 with the router MAC address. Both are encoded in a single 6-byte hexadecimal number\n\n" - When the device generates a seed it combines the number of seconds since 1970-01-01 00:00:00 - with the router MAC address. Both are encoded in a single 6-byte hexadecimal +"Each value is truncated to its 3 least significant bytes so, for example:\n\n" - Each value is truncated to its 3 least significant bytes so, for example: +" $ date +%F.%T; echo \"obase=16;$(date +%s)\" | bc\n" +" 2016-03-26.23:06:32\n" +" 56F715F8\n\n" - $ date +%F.%T; echo "obase=16;$(date +%s)" | bc - 2016-03-26.23:06:32 - 56F715F8 - # MAC Address: EC:43:F6:46:C0:80 +"and MAC Address: EC:43:F6:46:C0:80\n\n" - becomes F715F8 concatenated with 46C080 +"becomes F715F8 concatenated with 46C080\n\n" - CFE> ATSE DSL-2492GNAU-B1BC - F715F846C080 <<<< last 3 bytes of MAC address - ^^^^^^ - seconds since 1970-01-01 00:00:00 (2016-03-26 23:06:32) +" CFE> ATSE DSL-2492GNAU-B1BC\n" +" F715F846C080 <<<< last 3 bytes of MAC address\n" +" ^^^^^^\n" +" seconds since 1970-01-01 00:00:00 (2016-03-26 23:06:32)\n\n" - *NOTE: the default seed after power-up is 000000 so no time value needs to be specifed - if "ATSE " has not been executed on the device. +"*NOTE: the default seed after power-up is 000000 so no time value needs to be specifed if 'ATSE ' has not been executed on the device.\n\n" - Access to the device's console via a serial UART port, or a network telnet/ssh session, - is required to enter the password. +"Access to the device's console via a serial UART port, or a network telnet/ssh session, is required to enter the password.\n\n" - So, for a device with base MAC address (reported by the CFE during boot) E.g: +"So, for a device with base MAC address (reported by the CFE during boot) E.g:\n\n" - CFE version 1.0.38-112.118 for BCM963268 (32bit,SP,BE) - ... - Base MAC Address : ec:43:f6:46:c0:80 - ... - *** Press any key to stop auto run (1 seconds) *** - CFE> +" CFE version 1.0.38-112.118 for BCM963268 (32bit,SP,BE)\n" +" ...\n" +" Base MAC Address : ec:43:f6:46:c0:80\n" +" ...\n" +" *** Press any key to stop auto run (1 seconds) ***\n" +" CFE>\n\n" - Using this tool do: +"Using this tool do:\n\n" - ./cfe_gen_pass -s ec:43:f6:46:c0:80 -p +" ./cfe_gen_pass -s ec:43:f6:46:c0:80 -p\n\n" - MAC address: ec:43:f6:46:c0:80 Timestamp: 000000 Seed: 00000046c080 Password: 10f0a563 +" MAC address: ec:43:f6:46:c0:80 Timestamp: 000000 Seed: 00000046c080 Password: 10f0a563\n\n" - And on the device do: +"And on the device do:\n\n" - CFE> ATEN 1 10f0a563 - OK - *** command status = 0 +" CFE> ATEN 1 10f0a563\n" +" OK\n" +" *** command status = 0\n\n" - The tool can accept a timestamp as 8 hexadecimal characters (useful for testing the algorithm): +"The tool can accept a timestamp as 8 hexadecimal characters (useful for testing the algorithm):\n\n" - ./cfe_gen_pass -t 0FF020 -s ec:43:f6:46:c0:80 -p +" ./cfe_gen_pass -t 0FF020 -s ec:43:f6:46:c0:80 -p\n\n" - MAC address: ec:43:f6:46:c0:80 Timestamp: 0FF020 Seed: 0FF02046c080 Password: 110f65a3 - */ +"MAC address: ec:43:f6:46:c0:80 Timestamp: 0FF020 Seed: 0FF02046c080 Password: 110f65a3\n\n" +; #include #include @@ -81,7 +68,6 @@ #include #include -static const float VERSION = 1.3f; static const size_t TIMESTAMP_SIZE = 8; static const size_t SEED_SIZE = 12; static const size_t PASSWORD_SIZE = 8;