mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 13:00:42 -07:00
mingw and proxspace 3.xx environments would hang on Windows 11 24H2 since WMIC is no longer installed. This should enable the usage of powershell to enumerate serial ports on said environments
This commit is contained in:
parent
a021ada83f
commit
b90348e66b
2 changed files with 27 additions and 7 deletions
|
@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
|
||||||
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
||||||
|
|
||||||
## [unreleased][unreleased]
|
## [unreleased][unreleased]
|
||||||
|
- Changed `pm3.sh` - Serial ports enumeration on Proxspace3.xx / MINGW environments, now using powershell.exe since wmic is deprecated (@iceman1001)
|
||||||
- Fixed and updated `hf iclass trbl` to correctly use the credit key when passed and show partial tearoff results (@antiklesys)
|
- Fixed and updated `hf iclass trbl` to correctly use the credit key when passed and show partial tearoff results (@antiklesys)
|
||||||
- Fixed `hf iclass legbrute` was not correctly parsin the index value
|
- Fixed `hf iclass legbrute` was not correctly parsin the index value
|
||||||
- Fixed `hf mf ekeyprn` - failed to download emulator memory due to wrong size calculation (@iceman1001)
|
- Fixed `hf mf ekeyprn` - failed to download emulator memory due to wrong size calculation (@iceman1001)
|
||||||
|
|
33
pm3
33
pm3
|
@ -136,11 +136,15 @@ function get_pm3_list_Windows {
|
||||||
PM3LIST=()
|
PM3LIST=()
|
||||||
|
|
||||||
# Normal SERIAL PORTS (COM)
|
# Normal SERIAL PORTS (COM)
|
||||||
for DEV in $(wmic /locale:ms_409 path Win32_SerialPort Where "PNPDeviceID LIKE '%VID_9AC4&PID_4B8F%' Or PNPDeviceID LIKE '%VID_2D2D&PID_504D%'" Get DeviceID 2>/dev/null | awk -b '/^COM/{print $1}'); do
|
for DEV in $($PSHEXE -command "Get-CimInstance -ClassName Win32_serialport | Where-Object {\$_.PNPDeviceID -like '*VID_9AC4&PID_4B8F*' -or \$_.PNPDeviceID -like '*VID_2D2D&PID_504D*'} | Select -expandproperty DeviceID" 2>/dev/null); do
|
||||||
DEV=${DEV/ */}
|
|
||||||
|
_comport=$DEV
|
||||||
|
|
||||||
#prevent soft bricking when using pm3-flash-all on an outdated bootloader
|
#prevent soft bricking when using pm3-flash-all on an outdated bootloader
|
||||||
if [ $(basename -- "$0") = "pm3-flash-all" ]; then
|
if [ $(basename -- "$0") = "pm3-flash-all" ]; then
|
||||||
line=$(wmic /locale:ms_409 path Win32_SerialPort Where "DeviceID='$DEV'" Get PNPDeviceID 2>/dev/null | awk -b '/^USB/{print $1}');
|
|
||||||
|
line=$($PSHEXE -command "Get-CimInstance -ClassName Win32_serialport | Where-Object {\$_.DeviceID -eq '$_comport'} | Select -expandproperty PNPDeviceID" 2>/dev/null);
|
||||||
|
|
||||||
if [[ ! $line =~ ^"USB\VID_9AC4&PID_4B8F\ICEMAN" ]]; then
|
if [[ ! $line =~ ^"USB\VID_9AC4&PID_4B8F\ICEMAN" ]]; then
|
||||||
echo -e "\033[0;31m[!] Using pm3-flash-all on an oudated bootloader, use pm3-flash-bootrom first!"
|
echo -e "\033[0;31m[!] Using pm3-flash-all on an oudated bootloader, use pm3-flash-bootrom first!"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -154,8 +158,8 @@ function get_pm3_list_Windows {
|
||||||
|
|
||||||
#BT direct SERIAL PORTS (COM)
|
#BT direct SERIAL PORTS (COM)
|
||||||
if $FINDBTRFCOMM; then
|
if $FINDBTRFCOMM; then
|
||||||
for DEV in $(wmic /locale:ms_409 path Win32_PnPEntity Where "Caption LIKE '%Bluetooth%(COM%'" Get Name 2> /dev/null | awk -b 'match($0,/(COM[0-9]+)/,m){print m[1]}'); do
|
|
||||||
DEV=${DEV/ */}
|
for DEV in $($PSHEXE -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2>/dev/null); do
|
||||||
PM3LIST+=("$DEV")
|
PM3LIST+=("$DEV")
|
||||||
if [ ${#PM3LIST[*]} -ge "$N" ]; then
|
if [ ${#PM3LIST[*]} -ge "$N" ]; then
|
||||||
return
|
return
|
||||||
|
@ -165,8 +169,8 @@ function get_pm3_list_Windows {
|
||||||
|
|
||||||
#white BT dongle SERIAL PORTS (COM)
|
#white BT dongle SERIAL PORTS (COM)
|
||||||
if $FINDBTDONGLE; then
|
if $FINDBTDONGLE; then
|
||||||
for DEV in $(wmic /locale:ms_409 path Win32_SerialPort Where "PNPDeviceID LIKE '%VID_10C4&PID_EA60%'" Get DeviceID 2>/dev/null | awk -b '/^COM/{print $1}'); do
|
|
||||||
DEV=${DEV/ */}
|
for DEV in $($PSHEXE -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_10C4&PID_EA60*' | Select -expandproperty DeviceID" 2>/dev/null); do
|
||||||
PM3LIST+=("$DEV")
|
PM3LIST+=("$DEV")
|
||||||
if [ ${#PM3LIST[*]} -ge "$N" ]; then
|
if [ ${#PM3LIST[*]} -ge "$N" ]; then
|
||||||
return
|
return
|
||||||
|
@ -497,6 +501,21 @@ if [ "$HOSTOS" = "LINUX" ]; then
|
||||||
elif [ "$HOSTOS" = "DARWIN" ]; then
|
elif [ "$HOSTOS" = "DARWIN" ]; then
|
||||||
GETPM3LIST=get_pm3_list_macOS
|
GETPM3LIST=get_pm3_list_macOS
|
||||||
elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then
|
elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then
|
||||||
|
|
||||||
|
# First try finding it using the PATH environment variable
|
||||||
|
PSHEXE=$(command -v powershell.exe 2>/dev/null)
|
||||||
|
|
||||||
|
# If it fails (such as if WSLENV is not set), try using the default installation path
|
||||||
|
if [ -z "$PSHEXE" ]; then
|
||||||
|
PSHEXE=/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Finally test if PowerShell is working
|
||||||
|
if ! "$PSHEXE" exit >/dev/null 2>&1; then
|
||||||
|
echo >&2 "[!!] Cannot run powershell.exe in your MINGW environment"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
GETPM3LIST=get_pm3_list_Windows
|
GETPM3LIST=get_pm3_list_Windows
|
||||||
else
|
else
|
||||||
echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS"
|
echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue