########################################################################################## MISC-16: Review Changes to OpenPLC Utils DAK Generation ########################################################################################## Issue Type: Task ----------------------------------------------------------------------------------------- Issue Information ==================== Priority: Major Status: Closed Resolution: Done (2017-07-06 15:55:52) Project: Miscellaneous (MISC) Reported By: btasker Assigned To: btasker Affected Versions: - HomeplugAV Targeted for fix in version: - HomeplugAV Labels: HomePlugAV, Time Estimate: 55 minutes Time Logged: 5 minutes ----------------------------------------------------------------------------------------- Issue Description ================== During an email conversation earlier it was noted that the DAK generation utility within OpenPLC Utils appears to have been updated. By default it now generates a different DAK on every execution. A new option (-m) has been introduced which derives the DAK from the MAC address but still gives a different result to the earlier versions of the utility. Would be interesting to look a little closer at the changes and see what they've done. ----------------------------------------------------------------------------------------- Issue Relations ================ - Infiltrating a Network via HomeplugAV Adapters (https://www.bentasker.co.uk/documentation/security/282-infiltrating-a-network-via-powerline-homeplugav-adapters) - Current version of Mac2PW (Github) (https://github.com/qca/open-plc-utils/blob/b9da4e147a51b268c3d2ba576b0246090eab775b/key/mac2pw.c) - Archive of previous OpenPLC Utils version (bentasker.co.uk) (https://www.bentasker.co.uk/images/stories/OSRQCA-929.zip) ----------------------------------------------------------------------------------------- Activity ========== ----------------------------------------------------------------------------------------- 2016-01-12 00:51:09 ----------------------------------------------------------------------------------------- btasker changed status from 'Open' to 'In Progress' ----------------------------------------------------------------------------------------- 2016-01-12 01:04:37 btasker ----------------------------------------------------------------------------------------- Looks as though the change started here - https://github.com/qca/open-plc-utils/commit/7f002ff621105e585a26f6b621cf609460d9b752 though that's since been updated from "NEWPasswords" to using either MACPasswords or RNDPasswords depending on the options passed on the command line. The changes made to MACPasswords between that and the version I have are below -- BEGIN SNIPPET -- ben@milleniumfalcon:/tmp/compare$ diff -u old MACPasswords.c --- old 2016-01-12 00:54:08.301390618 +0000 +++ MACPasswords.c 2016-01-12 00:53:57.825192931 +0000 @@ -4,69 +4,49 @@ * * All rights reserved. * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted (subject to the limitations - * in the disclaimer below) provided that the following conditions + * Redistribution and use in source and binary forms, with or + * without modification, are permitted (subject to the limitations + * in the disclaimer below) provided that the following conditions * are met: * - * * Redistributions of source code must retain the above copyright + * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials * provided with the distribution. * - * * Neither the name of Qualcomm Atheros nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written + * * Neither the name of Qualcomm Atheros nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written * permission. * - * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE - * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE - * COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE + * COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *--------------------------------------------------------------------*/ /*====================================================================* * - * void MACPasswords (uint32_t vendor, uint32_t device, unsigned number, unsigned count, unsigned group, unsigned space, flag_t flags); + * void MACPasswords (unsigned vendor, unsigned device, unsigned number, unsigned count, unsigned group, char space, flag_t flags); * * keys.h * * print a range of device address/password pairs on stdout; print - * an optional usage flag in the first column for PTS compatability; - * - * vendor is the 24-bit OUI expressed as an integer; device is the - * 24-bit starting unit address expressed as an integer; number is - * the number of address/password pairs to generate; count is the - * number of letters in the password excluding delimiters; - * - * passwords consists of letters arranged in groups separated by - * spaces; count is the number of letters; group is the number of - * letters in each group; space is the character that separates - * each group; - * - * vendor is used to seed the random number generator and create - * a character set having the 256 random upper case letters used - * for all vendor passwords; most letters will appear more than - * once in the character set; - * - * device is used to seed the random number generator and select - * count random letters from the character set until the password - * has been constructed; - * + * an optional usage flag in first column for PTS compatability; * * Contributor(s): * Charles Maier