[openwrt/openwrt] ramips: get MAC addr from the encrypted partition (WG4хх223)

LEDE Commits lede-commits at lists.infradead.org
Fri Aug 19 07:16:42 PDT 2022


ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/ecd8f7e294a73d56906f7edcd8206ac6e304875c

commit ecd8f7e294a73d56906f7edcd8206ac6e304875c
Author: Mikhail Zhilkin <csharper2005 at gmail.com>
AuthorDate: Sat Jul 9 17:09:57 2022 +0000

    ramips: get MAC addr from the encrypted partition (WG4хх223)
    
    This commit resolves #10062. Adds decryption of the Arcadyan WG4xx223
    configuration partition (board_data)to get base MAC address from it.
    As a result, after this change the hack with saving MAC addressees to
    u-boot-env before installation of OpenWrt is no longer necessary.
    
    This is necessary for the following devices:
    - Beeline Smartbox Flash (Arcadyan WG443223)
    - MTS WG430223 (Arcadyan WG430223)
    
    Example:
    +----------------+-------------------+------------------------+
    |                |    MTS WG430223   | Beeline Smartbox Flash |
    +----------------+-------------------+------------------------+
    | base mac (mtd) | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06      |
    | label          | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:09      |
    | LAN            | A4:xx:xx:51:xx:F6 | 30:xx:xx:51:xx:09      |
    | WAN            | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06      |
    | WLAN_2g        | A4:xx:xx:51:xx:F5 | 30:xx:xx:51:xx:07      |
    | WLAN_5g        | A6:xx:xx:21:xx:F5 | 32:xx:xx:41:xx:07      |
    +----------------+-------------------+------------------------+
    
    Collected statistic shows that the 2-4th bits of the 7th byte of the
    WLAN_5g MAC are the constant (see #10062 for more details):
    - Beeline Smartbox Flash - 100
    - MTS WG430223 - 010
    
    Signed-off-by: Mikhail Zhilkin <csharper2005 at gmail.com>
    (cherry picked from commit a6b0d0806055a53a2538df83f8322c38ee9f3441)
---
 target/linux/ramips/image/mt7621.mk                 |  4 ++--
 .../ramips/mt7621/base-files/etc/board.d/02_network | 14 +++++++++-----
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac         | 21 +++++++++++++++------
 3 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 5f6ef8cb76..e3608d8d4e 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -263,7 +263,7 @@ define Device/beeline_smartbox-flash
   IMAGE/factory.trx := append-kernel | append-ubi | check-size
   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
   DEVICE_PACKAGES := kmod-usb3 kmod-mt7615e kmod-mt7615-firmware \
-	uboot-envtools
+	uboot-envtools uencrypt
 endef
 TARGET_DEVICES += beeline_smartbox-flash
 
@@ -1219,7 +1219,7 @@ define Device/mts_wg430223
   IMAGES += factory.trx
   IMAGE/factory.trx := append-kernel | append-ubi | check-size
   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
-  DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware uboot-envtools
+  DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware uboot-envtools uencrypt
 endef
 TARGET_DEVICES += mts_wg430223
 
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index ae8ee89d7f..2d119cb55e 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -129,11 +129,10 @@ ramips_setup_macs()
 		wan_mac=$(mtd_get_mac_ascii u-boot-env et1macaddr)
 		label_mac=$(mtd_get_mac_binary factory 0x4)
 		;;
-	beeline,smartbox-flash|\
-	mts,wg430223)
-		lan_mac=$(mtd_get_mac_ascii u-boot-env eth2macaddr)
-		wan_mac=$(mtd_get_mac_ascii u-boot-env eth3macaddr)
-		label_mac=$lan_mac
+	beeline,smartbox-flash)
+		wan_mac=$(mtd_get_mac_encrypted_arcadyan "board_data")
+		label_mac=$(macaddr_add "$wan_mac" 3)
+		lan_mac=$label_mac
 		;;
 	buffalo,wsr-1166dhp)
 		local index="$(find_mtd_index "board_data")"
@@ -196,6 +195,11 @@ ramips_setup_macs()
 		wan_mac=$label_mac
 		lan_mac=$(macaddr_add $label_mac 1)
 		;;
+	mts,wg430223)
+		wan_mac=$(mtd_get_mac_encrypted_arcadyan "board_data")
+		label_mac=$wan_mac
+		lan_mac=$(macaddr_add "$wan_mac" 2)
+		;;
 	netgear,wax202)
 		lan_mac=$(mtd_get_mac_ascii Config mac)
 		wan_mac=$(macaddr_add "$lan_mac" 1)
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 265cd2eb28..0e08fb6df3 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -10,12 +10,13 @@ PHYNBR=${DEVPATH##*/phy}
 board=$(board_name)
 
 case "$board" in
-	beeline,smartbox-flash|\
-	mts,wg430223)
-		hw_mac_addr_ra0="$(mtd_get_mac_ascii u-boot-env ra0macaddr)"
-		hw_mac_addr_rax0="$(mtd_get_mac_ascii u-boot-env rax0macaddr)"
-		[ "$PHYNBR" = "0" ] && echo -n $hw_mac_addr_ra0 > /sys${DEVPATH}/macaddress
-		[ "$PHYNBR" = "1" ] && echo -n $hw_mac_addr_rax0 > /sys${DEVPATH}/macaddress
+	beeline,smartbox-flash)
+		hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
+		[ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
+		hw_mac_addr=$(macaddr_setbit   $hw_mac_addr 26)
+		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 27)
+		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
+		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
 		;;
 	cudy,x6)
 		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
@@ -74,6 +75,14 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
 		;;
+	mts,wg430223)
+		hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
+		[ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
+		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 26)
+		hw_mac_addr=$(macaddr_setbit   $hw_mac_addr 27)
+		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
+		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
+		;;
 	oraybox,x3a)
 		if [ "$PHYNBR" = "1" ]; then
 			hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"




More information about the lede-commits mailing list