__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/bin/sh # SPDX-License-Identifier: CC0-1.0 # 2021 Aleksander Morgado <[email protected]> # 2022 Thilo-Alexander Ginkel <[email protected]> # 2022 Bjørn Mork <[email protected]> # # Foxconn SDX55 (Lenovo T99W175) FCC unlock operation # # The script will first try to unlock the WWAN modem using the new (hash-based) # v2 method and fall back to the old (v1) method if that fails # # require program name and at least 2 arguments [ $# -lt 2 ] && exit 1 # first argument is DBus path, not needed here shift # second and next arguments are control port names for PORT in "$@"; do # match port type in Linux 5.14 and newer grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && { MBIM_PORT=$PORT break } # match port name in Linux 5.13 echo "$PORT" | grep -q MBIM && { MBIM_PORT=$PORT break } done # fail if no MBIM port exposed [ -n "$MBIM_PORT" ] || exit 2 log_v2_failure() { echo "$1. Falling back to old unlock method" >&2 } FIRMWARE_VERSION=$(qmicli --device-open-proxy --device="/dev/$MBIM_PORT" \ --dms-foxconn-get-firmware-version=firmware-mcfg \ | grep "Version:" \ | grep -o "'.*'" \ | sed "s/'//g" \ | sed -e 's/\.[^.]*\.[^.]*$//') if [ -n "${FIRMWARE_VERSION}" ]; then FIRMWARE_APPS_VERSION=$(qmicli --device-open-proxy --device="/dev/$MBIM_PORT" \ --dms-foxconn-get-firmware-version=apps \ | grep "Version:" \ | grep -o "'.*'" \ | sed "s/'//g") if [ -n "${FIRMWARE_APPS_VERSION}" ]; then IMEI=$(qmicli --device-open-proxy --device="/dev/$MBIM_PORT" --dms-get-ids \ | grep "IMEI:" \ | grep -o "'.*'" \ | sed "s/'//g") if [ -n "${IMEI}" ]; then SALT="salt" # use a static salt for now MAGIC="foxc" HASH="${SALT}$(printf "%s%s%s%s%s" "${FIRMWARE_VERSION}" \ "${FIRMWARE_APPS_VERSION}" "${IMEI}" "${SALT}" "${MAGIC}" \ | md5sum \ | head -c 32)" else log_v2_failure "Could not determine SDX55 IMEI" fi else log_v2_failure "Could not determine SDX55 firmware apps version" fi else log_v2_failure "Could not determine SDX55 firmware version" fi UNLOCK_RESULT=1 if [ -n "${HASH}" ]; then qmicli --device-open-proxy --device="/dev/$MBIM_PORT" \ --dms-foxconn-set-fcc-authentication-v2="${HASH},48" UNLOCK_RESULT=$? if [ $UNLOCK_RESULT -ne 0 ]; then log_v2_failure "SDX55 FCC unlock v2 failed" fi fi if [ $UNLOCK_RESULT -ne 0 ]; then qmicli --device-open-proxy --device="/dev/$MBIM_PORT" \ --dms-foxconn-set-fcc-authentication=0 UNLOCK_RESULT=$? if [ $UNLOCK_RESULT -ne 0 ]; then echo "SDX55 FCC unlock v1 failed" >&2 fi fi exit $UNLOCK_RESULT
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| 03f0:4e1d | File | 771 B | 0755 |
|
| 105b | File | 2.59 KB | 0755 |
|
| 105b:e0ab | File | 2.59 KB | 0755 |
|
| 105b:e0c3 | File | 2.59 KB | 0755 |
|
| 1199 | File | 771 B | 0755 |
|
| 1199:9079 | File | 771 B | 0755 |
|
| 14c3 | File | 2.32 KB | 0755 |
|
| 14c3:4d75 | File | 2.32 KB | 0755 |
|
| 1eac | File | 765 B | 0755 |
|
| 1eac:1001 | File | 765 B | 0755 |
|
| 2c7c | File | 615 B | 0755 |
|
| 2c7c:030a | File | 615 B | 0755 |
|
| 413c:81a3 | File | 771 B | 0755 |
|
| 413c:81a8 | File | 771 B | 0755 |
|