mirror of
https://github.com/wh201906/Proxmark3GUI.git
synced 2025-04-20 11:41:07 +08:00
V0.2.6
Update deploy/deploy.py
This commit is contained in:
parent
2704b7cfc2
commit
ce973fda96
11
CHANGELOG.md
11
CHANGELOG.md
@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
[中文](doc/CHANGELOG/CHANGELOG_zh_CN.md)
|
[中文](doc/CHANGELOG/CHANGELOG_zh_CN.md)
|
||||||
|
|
||||||
|
### V0.2.6
|
||||||
|
+ Add support for Iceman/RRG repo v4.15864 [#37](https://github.com/wh201906/Proxmark3GUI/issues/37)
|
||||||
|
+ Optimize mifare classic block writing logic
|
||||||
|
+ Fix the default lf config
|
||||||
|
+ Add feedback for the GUI failing to start the client
|
||||||
|
+ Add feedback for the client failing to connect to PM3 hardware
|
||||||
|
+ Detect PM3 hardware when searching serial ports
|
||||||
|
+ Remove extra empty lines in raw command output
|
||||||
|
+ Use embedded config files
|
||||||
|
+ Remove the wait time between performing nested attack then switching to staticnested attack
|
||||||
|
|
||||||
### V0.2.5
|
### V0.2.5
|
||||||
+ Fix bug [#28](https://github.com/wh201906/Proxmark3GUI/issues/28)
|
+ Fix bug [#28](https://github.com/wh201906/Proxmark3GUI/issues/28)
|
||||||
|
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
import os, sys, shutil
|
import os, sys, shutil
|
||||||
from win32api import GetFileVersionInfo
|
from win32api import GetFileVersionInfo
|
||||||
from json import load
|
from json import load
|
||||||
from re import fullmatch, IGNORECASE
|
from re import fullmatch, sub, IGNORECASE
|
||||||
|
|
||||||
compressDirList = []
|
compressDirList = []
|
||||||
|
|
||||||
|
|
||||||
def getPEVersion(fname):
|
def getPEVersion(fname):
|
||||||
try:
|
try:
|
||||||
fileInfo = GetFileVersionInfo(fname, '\\')
|
fileInfo = GetFileVersionInfo(fname, "\\")
|
||||||
version = "V%d.%d.%d" % (fileInfo['FileVersionMS'] / 65536,
|
version = "V%d.%d.%d" % (
|
||||||
fileInfo['FileVersionMS'] % 65536,
|
fileInfo["FileVersionMS"] / 65536,
|
||||||
fileInfo['FileVersionLS'] / 65536)
|
fileInfo["FileVersionMS"] % 65536,
|
||||||
|
fileInfo["FileVersionLS"] / 65536,
|
||||||
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Cannot get version number of", fname)
|
print("Cannot get version number of", fname)
|
||||||
return version
|
return version
|
||||||
@ -19,7 +21,7 @@ def getPEVersion(fname):
|
|||||||
|
|
||||||
os.chdir(sys.path[0])
|
os.chdir(sys.path[0])
|
||||||
print("Current Directory:", os.getcwd())
|
print("Current Directory:", os.getcwd())
|
||||||
targetName = os.path.abspath(os.getcwd()).split('\\')[-2]
|
targetName = os.path.abspath(os.getcwd()).split("\\")[-2]
|
||||||
print("Target Name", targetName)
|
print("Target Name", targetName)
|
||||||
|
|
||||||
src32Dir = ""
|
src32Dir = ""
|
||||||
@ -63,11 +65,6 @@ elif not os.path.exists(dst32Dir):
|
|||||||
print(dst32Dir, "doesn't exist, creating...")
|
print(dst32Dir, "doesn't exist, creating...")
|
||||||
shutil.copytree("./32", dst32Dir)
|
shutil.copytree("./32", dst32Dir)
|
||||||
shutil.copyfile(src32Path, dst32Path)
|
shutil.copyfile(src32Path, dst32Path)
|
||||||
configPath = dst32Dir + "/config"
|
|
||||||
if os.path.exists(configPath):
|
|
||||||
print(configPath, "exists, replacing...")
|
|
||||||
shutil.rmtree(configPath)
|
|
||||||
shutil.copytree("../config", configPath)
|
|
||||||
compressDirList.append(dst32Dir)
|
compressDirList.append(dst32Dir)
|
||||||
|
|
||||||
if os.path.exists(dst64Dir) and os.path.exists(dst64Path):
|
if os.path.exists(dst64Dir) and os.path.exists(dst64Path):
|
||||||
@ -77,19 +74,23 @@ elif not os.path.exists(dst64Dir):
|
|||||||
print(dst64Dir, "doesn't exist, creating...")
|
print(dst64Dir, "doesn't exist, creating...")
|
||||||
shutil.copytree("./64", dst64Dir)
|
shutil.copytree("./64", dst64Dir)
|
||||||
shutil.copyfile(src64Path, dst64Path)
|
shutil.copyfile(src64Path, dst64Path)
|
||||||
configPath = dst64Dir + "/config"
|
|
||||||
if os.path.exists(configPath):
|
|
||||||
print(configPath, "exists, replacing...")
|
|
||||||
shutil.rmtree(configPath)
|
|
||||||
shutil.copytree("../config", configPath)
|
|
||||||
compressDirList.append(dst64Dir)
|
compressDirList.append(dst64Dir)
|
||||||
|
|
||||||
# TODO: GUI+client
|
# TODO: GUI+client
|
||||||
clientList = [
|
clientList = [
|
||||||
"official-v3.1.0", "rrg_other-v4.13441", "rrg_other-v4.14434",
|
"official-v3.1.0",
|
||||||
"rrg_other-v4.14831"
|
"rrg_other-v4.13441",
|
||||||
|
"rrg_other-v4.14434",
|
||||||
|
"rrg_other-v4.14831",
|
||||||
|
"rrg_other-v4.15864",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
configList = []
|
||||||
|
for config in os.listdir("../config"):
|
||||||
|
configPath = os.path.join("../config", config)
|
||||||
|
if os.path.isfile(configPath) and config.endswith(".json"):
|
||||||
|
configList.append(config)
|
||||||
|
|
||||||
|
|
||||||
def generateClient(clientName):
|
def generateClient(clientName):
|
||||||
global compressDirList
|
global compressDirList
|
||||||
@ -105,12 +106,34 @@ def generateClient(clientName):
|
|||||||
shutil.copytree(clientSrcDir, clientDstDir)
|
shutil.copytree(clientSrcDir, clientDstDir)
|
||||||
shutil.copytree(dst64Dir, clientDstGUIDir)
|
shutil.copytree(dst64Dir, clientDstGUIDir)
|
||||||
if "official" in clientName:
|
if "official" in clientName:
|
||||||
shutil.copyfile("./client/GUIsettings_Official.ini",
|
shutil.copyfile(
|
||||||
clientDstGUIDir + "/GUIsettings.ini")
|
"./client/GUIsettings_Official.ini", clientDstGUIDir + "/GUIsettings.ini"
|
||||||
|
)
|
||||||
elif "rrg" in clientName:
|
elif "rrg" in clientName:
|
||||||
shutil.copyfile("./client/GUIsettings_RRG.ini",
|
shutil.copyfile(
|
||||||
clientDstGUIDir + "/GUIsettings.ini")
|
"./client/GUIsettings_RRG.ini", clientDstGUIDir + "/GUIsettings.ini"
|
||||||
|
)
|
||||||
|
# Use exactly matched configFile if possible
|
||||||
|
version = clientName[clientName.find("v") :]
|
||||||
|
for config in configList:
|
||||||
|
if version in config:
|
||||||
|
print("Find matched config file", config)
|
||||||
|
with open(
|
||||||
|
clientDstGUIDir + "/GUIsettings.ini", "r", encoding="utf-8"
|
||||||
|
) as f:
|
||||||
|
data = f.read()
|
||||||
|
data = sub(
|
||||||
|
"configFile=:/config/.+\\.json",
|
||||||
|
"configFile=:/config/" + config,
|
||||||
|
data,
|
||||||
|
)
|
||||||
|
with open(
|
||||||
|
clientDstGUIDir + "/GUIsettings.ini", "w", encoding="utf-8"
|
||||||
|
) as f:
|
||||||
|
f.write(data)
|
||||||
|
|
||||||
compressDirList.append(clientDstDir)
|
compressDirList.append(clientDstDir)
|
||||||
|
return clientDstDir
|
||||||
|
|
||||||
|
|
||||||
for cl in clientList:
|
for cl in clientList:
|
||||||
|
@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
[English](../../CHANGELOG.md)
|
[English](../../CHANGELOG.md)
|
||||||
|
|
||||||
|
### V0.2.6
|
||||||
|
+ 支持冰人版客户端 v4.15864 [#37](https://github.com/wh201906/Proxmark3GUI/issues/37)
|
||||||
|
+ 优化Mifare Classic卡写卡逻辑
|
||||||
|
+ 修复lf config默认配置
|
||||||
|
+ 添加客户端无法启动的提示
|
||||||
|
+ 添加PM3硬件连接失败的提示
|
||||||
|
+ 为PM3对应串口添加提示,并自动选中
|
||||||
|
+ 修复原始指令框中有多余空行的问题
|
||||||
|
+ 内嵌不同客户端的配置文件
|
||||||
|
+ 去除从nested attack切换到staticnested attack的等待时间
|
||||||
|
|
||||||
### V0.2.5
|
### V0.2.5
|
||||||
+ 修复 [#28](https://github.com/wh201906/Proxmark3GUI/issues/28)
|
+ 修复 [#28](https://github.com/wh201906/Proxmark3GUI/issues/28)
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ qnx: target.path = /tmp/$${TARGET}/bin
|
|||||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
!isEmpty(target.path): INSTALLS += target
|
!isEmpty(target.path): INSTALLS += target
|
||||||
|
|
||||||
VERSION = 0.2.5
|
VERSION = 0.2.6
|
||||||
QMAKE_TARGET_PRODUCT = "Proxmark3GUI"
|
QMAKE_TARGET_PRODUCT = "Proxmark3GUI"
|
||||||
QMAKE_TARGET_DESCRIPTION = "Proxmark3GUI"
|
QMAKE_TARGET_DESCRIPTION = "Proxmark3GUI"
|
||||||
QMAKE_TARGET_COMPANY = "wh201906"
|
QMAKE_TARGET_COMPANY = "wh201906"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user