2017-10-23 18:15:02 -04:00
|
|
|
#!/bin/bash
|
|
|
|
|
2019-04-27 11:25:07 +02:00
|
|
|
FULLIMAGE="armsrc/obj/fullimage.elf"
|
|
|
|
BOOTIMAGE="bootrom/obj/bootrom.elf"
|
|
|
|
|
2019-07-14 18:20:41 +02:00
|
|
|
PM3PATH=$(dirname "$0")
|
|
|
|
cd "$PM3PATH" || exit 1
|
2019-04-27 11:25:07 +02:00
|
|
|
|
2018-08-16 12:31:12 -04:00
|
|
|
function wait4proxmark_Linux {
|
2019-03-09 11:10:22 +01:00
|
|
|
echo >&2 "Waiting for Proxmark to appear..."
|
2019-07-14 18:20:41 +02:00
|
|
|
while true; do
|
|
|
|
PM3=$(find /dev/pm3-* /dev/ttyACM* 2>/dev/null | head -1)
|
|
|
|
if [[ $PM3 != "" ]]; then
|
|
|
|
break
|
|
|
|
fi
|
2019-03-09 11:10:22 +01:00
|
|
|
sleep .1
|
|
|
|
done
|
2019-07-14 18:20:41 +02:00
|
|
|
echo "$PM3"
|
2017-10-23 18:15:02 -04:00
|
|
|
}
|
|
|
|
|
2018-08-17 00:22:54 +10:00
|
|
|
function wait4proxmark_macOS {
|
2019-03-09 11:10:22 +01:00
|
|
|
echo >&2 "Waiting for Proxmark to appear..."
|
|
|
|
while true; do
|
2019-07-14 18:20:41 +02:00
|
|
|
PM3=$(find /dev/pm3-* /dev/cu.usbmodem* 2>/dev/null | head -1)
|
2019-03-09 11:10:22 +01:00
|
|
|
if [[ $PM3 != "" ]]; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep .1
|
|
|
|
done
|
2019-07-14 18:20:41 +02:00
|
|
|
echo "$PM3"
|
2018-08-17 00:22:54 +10:00
|
|
|
}
|
|
|
|
|
2019-07-03 14:16:16 +02:00
|
|
|
function wait4proxmark_Windows {
|
|
|
|
echo >&2 "Waiting for Proxmark to appear..."
|
|
|
|
while true; do
|
2019-07-06 15:31:32 +02:00
|
|
|
device=$(wmic path Win32_SerialPort where "PNPDeviceID like '%VID_9AC4&PID_4B8F%'" get DeviceID,PNPDeviceID 2>/dev/null | awk 'NR==2')
|
|
|
|
if [[ $device != "" ]]; then
|
2019-07-03 14:16:16 +02:00
|
|
|
PM3=${device/ */}
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep .1
|
|
|
|
done
|
2019-07-14 18:20:41 +02:00
|
|
|
echo "$PM3"
|
2019-07-03 14:16:16 +02:00
|
|
|
}
|
|
|
|
|
2019-07-13 00:06:19 +02:00
|
|
|
function wait4proxmark_WSL {
|
|
|
|
echo >&2 "Waiting for Proxmark to appear..."
|
|
|
|
while true; do
|
|
|
|
device=$(wmic.exe path Win32_SerialPort where "PNPDeviceID like '%VID_9AC4&PID_4B8F%'" get DeviceID,PNPDeviceID 2>/dev/null | awk 'NR==2')
|
|
|
|
if [[ $device != "" ]]; then
|
|
|
|
PM3=${device/ */}
|
|
|
|
PM3="/dev/ttyS${PM3#COM}"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep .1
|
|
|
|
done
|
2019-07-14 18:20:41 +02:00
|
|
|
if [ -e "$PM3" ] && [ ! -w "$PM3" ]; then
|
2019-07-14 17:58:47 +02:00
|
|
|
echo "We need to give current user read/write access to $PM3"
|
|
|
|
sudo chmod 666 "$PM3"
|
|
|
|
fi
|
2019-07-14 18:20:41 +02:00
|
|
|
echo "$PM3"
|
2019-07-13 00:06:19 +02:00
|
|
|
}
|
|
|
|
|
2019-04-27 11:25:07 +02:00
|
|
|
SCRIPT=$(basename -- "$0")
|
2018-08-17 00:22:54 +10:00
|
|
|
|
2019-04-27 11:25:07 +02:00
|
|
|
if [ "$SCRIPT" = "proxmark3.sh" ]; then
|
2019-07-14 18:20:41 +02:00
|
|
|
CMD() { client/proxmark3 "$@"; }
|
2019-04-27 11:25:07 +02:00
|
|
|
elif [ "$SCRIPT" = "flash-all.sh" ]; then
|
2019-07-14 18:20:41 +02:00
|
|
|
CMD() { client/flasher "$1" -b "$BOOTIMAGE" "$FULLIMAGE"; }
|
2019-07-14 22:13:40 +02:00
|
|
|
elif [ "$SCRIPT" = "flash-fullimage.sh" ]; then
|
2019-07-14 18:20:41 +02:00
|
|
|
CMD() { client/flasher "$1" "$FULLIMAGE"; }
|
2019-04-27 11:25:07 +02:00
|
|
|
elif [ "$SCRIPT" = "flash-bootrom.sh" ]; then
|
2019-07-14 18:20:41 +02:00
|
|
|
CMD() { client/flasher "$1" -b "$BOOTIMAGE"; }
|
2019-04-27 11:25:07 +02:00
|
|
|
else
|
|
|
|
echo "Script ran under unknown name, abort: $SCRIPT"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
HOSTOS=$(uname | awk '{print toupper($0)}')
|
|
|
|
if [ "$HOSTOS" = "LINUX" ]; then
|
2019-07-13 00:06:19 +02:00
|
|
|
if uname -a|grep -q Microsoft; then
|
|
|
|
PORT=$(wait4proxmark_WSL)
|
|
|
|
else
|
|
|
|
PORT=$(wait4proxmark_Linux)
|
|
|
|
fi
|
2019-04-27 11:25:07 +02:00
|
|
|
elif [ "$HOSTOS" = "DARWIN" ]; then
|
|
|
|
PORT=$(wait4proxmark_macOS)
|
2019-07-03 14:16:16 +02:00
|
|
|
elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then
|
|
|
|
PORT=$(wait4proxmark_Windows)
|
2019-04-27 11:25:07 +02:00
|
|
|
else
|
|
|
|
echo "Host OS not recognized, abort: $HOSTOS"
|
|
|
|
exit 1
|
2018-08-17 00:22:54 +10:00
|
|
|
fi
|
2019-04-27 11:25:07 +02:00
|
|
|
if [ "$PORT" = "" ]; then
|
|
|
|
echo "No port, abort"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2019-07-14 18:20:41 +02:00
|
|
|
CMD "$PORT" "$@"
|
2019-04-27 11:25:07 +02:00
|
|
|
exit $?
|