mac2pw(1)

🌸 mac2pw β€” Qualcomm Atheros Ethernet Device Password Generator 🌸

okay bestie, welcome to mac2pw(1), straight outta the Qualcomm Atheros Open Powerline Toolkit πŸ’… this one's a baddie and it has OPINIONS, so buckle up πŸŽ€


✨ SYNOPSIS ✨

mac2pw [options] address [address] [...]

πŸ’– DESCRIPTION πŸ’–

So what this does: it prints a whole range of consecutive Ethernet addresses and passwords to stdout, and every single device gets its own unique password. No twinsies allowed, periodt. ✨

The output is literally built to be fed into the Qualcomm Atheros HomePlug AV Production Test System, or you can use it in your own custom production systems, do your thing 🫢

You give it a starting address and an address range. The passwords it computes are made of upper case letters and digits, with optional group separators if you're feeling fancy. And the output? Address/password pairs, in text format, clean, iconic, no notes. πŸ’…

This program is designed for generating passwords across a large number of consecutive device addresses. It's the sibling of mac2pwd, which handles the non-consecutive device addresses that show up in whatever random order they feel like. iykyk. 🌈

Oh and bestie β€” this program is part of the Qualcomm Atheros Powerline Toolkit. Go read the AMP man page for the overview and installation instructions, it's giving lore. πŸ“–


⚠️ CAVEATS ⚠️

Atheros ships this program as a simple way to generate unique device passwords for a huge volume of Ethernet devices. There are two different password algorithms implemented, and ngl, neither one is required for HomePlug AV compliance. Vendors are totally free to use other methods to generate their own device passwords, and honestly they're encouraged to. Do your own thing, king. πŸ‘‘

🎲 Random Method

Generate passwords based on system entropy. Every single time you run the program, you get a different set of passwords for the same address range. There is no correlation between addresses and passwords. ✨

This method is secure, but it requires care when you're programming and labelling devices at the factory. Like, real care. It may be necessary to maintain a database if you need regular device maintenance and firmware upgrades. So... keep receipts, bestie. πŸ“

🧬 Device Method

Generate passwords based on the device address. Same address range = same set of passwords, every single execution. This method may be appropriate on systems where regular maintenance and firmware updates are required. πŸ”

This method is not secure. 🚨 Device addresses can be determined using a variety of network management programs. Anyone with access to this program, or the algorithm, could compute the device password and gain access to device features reserved for privileged users. That's not a vibe, that's a security hole.

That said, the program does provide features to mitigate the risks of using this method. So it's not fully unhinged, just... risky. πŸ™ˆ


πŸŽ€ OPTIONS πŸŽ€

  • -b bunch β€” The password bunching factor. Passwords consist of count uppercase letters and digits, optionally displayed in groups separated by hyphens. The bunching factor specifies the number of letters and digits in each group. When bunch is 0 or greater than count, bunching is suppressed. Separating hyphens increase overall password length. The minimum is 0 and the maximum is 255. The default is 0, which suppresses bunching. πŸ’…
  • -e β€” Compute passwords based on host system entropy. Passwords consist of uppercase letters [A-Z], optionally grouped using option -b. This method produces a non-repeatable set of unique passwords over a given address range. This method is the default and it is secure. πŸ”βœ¨
  • -l count β€” The number of letters in the password string. Overall password length is the sum of count plus the number of delimiters implied by bunch. The minimum is 12 and the maximum is 64. The default is 16. πŸ“
  • -m β€” Compute passwords based on target device address. Passwords consist of uppercase letters [A-Z]. This method produces a repeatable set of unique passwords over a given address range. This method is not secure. πŸ’€
  • -n number β€” The number of consecutive addresses and passwords to compute and print. The minimum is 0 and the maximum is 1677215 or 0xFFFFFF. The default is 1. Also, number cannot exceed the remaining available addresses in the vendor range. For example, given start address 00:B0:52:FF:FF:00, there are only 255 remaining addresses in the 00:B0:52 vendor range, so it would be an error to request more than that number. Don't push your luck. πŸ™…
  • -q β€” Quiet mode. Exclude the device address on output. This option can be used in scripts to return the password associated with a given device address. 🀫
  • -v β€” Verbose mode. Prefix each line with a '0' column. The Atheros Production Test System (PTS) uses the first column of a password database file to indicate which addresses and passwords have already been used. πŸ‘€
  • -?, --help β€” Print program help information on stdout. This option takes precedence over other options on the command line. πŸ‘‘
  • -!, --version β€” Print program version information on stdout. This option takes precedence over other options on the command line. Use this option when sending screen dumps to Atheros Technical Support so that they know exactly which version of the Linux Toolkit you are using. πŸ“Έ

🫢 ARGUMENTS 🫢

  • address β€” The first Ethernet address, expressed as 12 consecutive hexadecimal digits. Punctuation is not permitted. The final address of the range is computed by adding number to this address. This argument is required. There is no default address. If more than one device address is specified, then an address/password series will be computed for each. 🌟

πŸ”₯ EXAMPLES πŸ”₯

This first one prints the given device address and a random password string on stdout. The default password length is 25 characters long, but the length can be changed using option -l.

# mac2pw 00B052000001
00B052000001 5KAXCQFQNN4PPNC76XN2YUWMS

Repeating the command will generate a new password string. That's the default behaviour, and it's the same as specifying option -e for "entropy". 🎲

# mac2pw 00B052000001
00B052000001 CA35TM5JLG4S6XBKSM3HSU6J4

This example omits the device address. Repeating the command produces a new password string. (Quiet mode said not today to the address. 🀫)

# mac2pw 00B052000001 -q
2LJ6P5JPEHE6V63GZWC337Q8E
# mac2pw 00B052000001 -q
5Z8J7EGGL2HJDKMZ978W8V94W

Next up: how to generate passwords for three different devices with one command. The program generates a password for each device address specified on the command line. Multi-tasking queen. πŸ‘‘

# mac2pw 00B052000001 00B05200BABE 00B05200DEAD
00B052000001 NJHWXEFRPVVW87C9J4BQEHYYE
00B05200BABE 5PT9Z64Z4TVRPEJCK8LR2XFMR
00B05200DEAD 7R2LJYGJB42329AS4NM29H8V4

This one prints 10 consecutive device addresses and random passwords on stdout. You give it the starting device address and option -n says how many addresses to print. Output can be piped to a file or another process, go off. 🌈

# mac2pw 00B052000001 -n 10
00B052000001 LEKWS42VX92YR3LLL6KBD5RCG
00B052000002 BHYKXG3VEVXNZ7CF2UERCU4G6
00B052000003 UBP87NFZMMW5WY8KK5GJFAWS3
00B052000004 CU7Y7JKFNASS6E4GQ3XL3HWGZ
00B052000005 9RN3WTXAQUXV8THZUB898ZGB3
00B052000006 HCXNPW2CM9JVHBJN2TZVRVDU6
00B052000007 DFD5QY5HATC5NFC5SF3AWL2PD
00B052000008 837GAN4HSG9U6TTRCPRXMG84T
00B052000009 HBLZHG32FSZKQ8TANGK5U8DS9
00B05200000A KEY9D3DW66HX68AWZRCD4VPD9

Same 10 consecutive addresses and passwords, but this time there's a 0 at the start of each line to say "hey, this address and password have not been used." The Qualcomm Atheros Production Test System (PTS) will set that 0 to 1 after it programs a device. This format is similar to PTS DBBuilder Utility output. 🧚

# mac2pw 00B052000006 -n 10 -v
0 00B052000006 VZNKWJUHAV2687NV6EJYUVQ4D
0 00B052000007 RENKKWRNFLU4ZNZ3P6K4SZ4PG
0 00B052000008 NEL6LL2V2YZAL2Q27E2DJ25BG
0 00B052000009 MYX2T5HM68T5JCK7YYJNDWH2P
0 00B05200000A 6UY4MPYP43GXSD39VLTNZCJEZ
0 00B05200000B MD47KPFZLSNL9XRLJTN3MKJ5N
0 00B05200000C BKVTVYE47LE4DKMUNQPPXR7HL
0 00B05200000D RBJ8DA5DB48TZUTAQXZ9CPFTM
0 00B05200000E HSK6N9ZGZPGV4T5YXST4DH3W8
0 00B05200000F BLW8QQ4JMEVSQJYHRPBDGG5RS

Now we're switching up password length and character bunching. Option -l says 12 characters and option -b says a bunching factor of three. Look at those lil hyphen groups, so cute. πŸ’…

# mac2pw 00B052000001 -n 10 -l 12 -b 3
00B052000001 S2J-V4B-NB6-37M
00B052000002 QEX-292-CYF-AVV
00B052000003 5VH-2KR-FYP-EVH
00B052000004 NYU-TPB-ZK3-6H6
00B052000005 MGX-GB7-P2P-42B
00B052000006 DDM-UD8-8NS-BZA
00B052000007 MLZ-86G-F4G-MS8
00B052000008 DTY-U8D-DT8-3G2
00B052000009 6BY-WVU-GB9-UEB
00B05200000A TX3-NUS-TKM-LVL

Next: 10 consecutive addresses and passwords again, but from a different starting device address. We specified option -m so passwords are generated based on the MAC address. That means the same password gets generated every time for a given device address. We also set password length to 16 characters with option -l and a bunching factor of 4 with option -b. ✨

# mac2pw 00B052000001 -m -l 16 -b 4 -n 10
00B052000001 HBXY-FVHN-COML-MVLY
00B052000002 KYCC-KFFD-BHCN-CSUL
00B052000003 LQXF-TULV-IOQB-SKJI
00B052000004 SOBX-FRNC-EIHL-KBPW
00B052000005 XPAC-KESG-MDYY-OFPQ
00B052000006 SFTQ-DWEF-GHYC-VOWW
00B052000007 NNZQ-FCTW-VQLG-ESBV
00B052000008 SEPC-KYYS-JZEO-HHVT
00B052000009 OYPS-DSDV-QILZ-JYOV
00B05200000A HQYV-FIWJ-CJDZ-XPNZ

And this last one: 10 consecutive addresses and passwords, same as before, but from a different starting device address. The address range here overlaps the range shown above, but identical device addresses get identical passwords. That's the whole point. Address based passwords may be of interest on large private networks requiring frequent firmware upgrades or device configuration. πŸ¦‹

# mac2pw 00B052000006 -m -l 16 -b 4 -n 10
00B052000006 SFTQ-DWEF-GHYC-VOWW
00B052000007 NNZQ-FCTW-VQLG-ESBV
00B052000008 SEPC-KYYS-JZEO-HHVT
00B052000009 OYPS-DSDV-QILZ-JYOV
00B05200000A HQYV-FIWJ-CJDZ-XPNZ
00B05200000B MQIG-KUKM-YQSJ-KPRM
00B05200000C VTLW-DAVK-JCMU-JQLU
00B05200000D PIQB-OITS-RFCY-PUVE
00B05200000E IWAV-KYJM-JBEM-GPMR
00B05200000F LQJY-DSEX-WDHE-FVMB

πŸ’€ DISCLAIMER πŸ’€

Qualcomm Atheros reserves the right to modify program names, functionality, input format or output format in future toolkit releases without any obligation to notify or compensate toolkit users. Yeah. They said what they said. πŸ™ˆ


πŸ‘€ SEE ALSO πŸ‘€

hpavkey(1), hpavkeys(1), keys(1), mac2pwd(1), rkey(1)


πŸ’– CREDITS πŸ’–

okay so this tool did NOT just manifest out of the void, bestie β€” real humans made this. show them some respect:

  • Charles Maier
  • Pouyan Sepehrdad
  • Ning Shang

three absolute icons, fr fr. give them their flowers 🫢


and that's a wrap on mac2pw(1)! the whole thing lives in open-plc-utils-0.0.3, dated Feb 2015 🌸 β€” so yeah, this manual page is a little vintage, but she still slays πŸ’…βœ¨

now go convert some MAC addresses to passwords and be iconic about it πŸ‘‘ no cap πŸ’–