From b788d6a15f8651e50b8ddfe2876347b94b85d569 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Sun, 26 Feb 2023 12:33:15 +0800 Subject: [PATCH] Misc work in translation Update translations Fix the translation in t55xxtab (QTranslator must be created before wigets) Reduce unnecessary translations --- i18n/en_US.ts | 711 +++++++++++++---------------- i18n/zh_CN.qm | Bin 22354 -> 21802 bytes i18n/zh_CN.ts | 725 ++++++++++++++---------------- src/common/util.cpp | 2 +- src/common/util.h | 2 +- src/main.cpp | 10 +- src/ui/mainwindow.ui | 8 +- src/ui/mf_sim_simdialog.ui | 20 +- src/ui/mf_trailerdecoderdialog.ui | 36 +- src/ui/mf_uid_parameterdialog.ui | 6 +- src/ui/t55xxtab.ui | 6 +- 11 files changed, 695 insertions(+), 831 deletions(-) diff --git a/i18n/en_US.ts b/i18n/en_US.ts index f8b79a6..4bd1306 100644 --- a/i18n/en_US.ts +++ b/i18n/en_US.ts @@ -44,86 +44,41 @@ Simulate - - - u - - UID 4 or 7 bytes. If not specified, the UID 4B from emulator memory will be used - - - --atqa - - Provide explicit ATQA (2 bytes) - - - --sak - - - - - n - - Automatically exit simulation after <numreads> blocks have been read by reader. 0 = infinite - - - i - - Interactive, means that console will not be returned until simulation finishes or is aborted - - - x - - Crack, performs the 'reader attack', nr/ar attack against a legitimate reader, fishes out the key(s) - - - e - - set keys found from 'reader attack' to emulator memory (implies x(--crack) and i) - - - -v - - verbose output - - - f - - Provide explicit SAK (1 byte) @@ -134,11 +89,6 @@ get UIDs to use for 'reader attack' from file 'f <filename.txt>' (implies x and i) - - - r - - Generate random nonces instead of sequential nonces. Standard reader attack won't work with this option, only moebius attack works @@ -152,21 +102,6 @@ Set Parameter - - - UID: - - - - - ATQA: - - - - - SAK: - - MF_trailerDecoderDialog @@ -180,16 +115,6 @@ Blocks - - - 4 - - - - - 16 - - Trailer Data: @@ -202,124 +127,110 @@ - - Cx0 - - - - - Cx1 - - - - - Cx2 - - - - - Cx3 - - - - + Data Block Permission: - + Block0 - + Block1 - + Block2 - - + + Read - - + + Write - + Increase - + Decrease/Transfer/Restore - + Trailer Block Permission: - - + + KeyA - + Access Bits - - + + KeyB - + Reference: MF1S70YYX_V1 Product data sheet Rev. 3.2 — 23 November 2017 - + Note:the Access Bits usually contains 4 bytes(8 hex symbols), but only the first 3 bytes matters. You can set the 4th byte randomly. - + Invalid! It could make the whole sector blocked irreversibly! - + + Valid - - - - - - + + KeyB cannot serve for authentication + + + + + + + + + Block - + KeyA+B @@ -352,213 +263,213 @@ It could make the whole sector blocked irreversibly! - + Card Type - + MINI 320 - + 1K 1024 - + 2K 2048 - + 4K 4096 - + File - - + + Load - - + + Save - + Data - + Key - + Attack - + Card Info - + Check Default - + Nested - + Hardnested - + Darkside - + Read/Write - + Block: - + Key: - + Key Type: - + List Data - + LF - + other - + Divisor: - + Actural Freq: 125.000kHz - + Trigger threshold: - + Samples to skip: - + Get Config - + Set Config - - + + Data: - + Normal(Require Password) - + Dump - + Restore - + Chinese Magic Card(Without Password) - + Lock UFUID Card - - + + About UID Card - + Set Parameter - + Wipe - - + + Simulate - - + + Clear @@ -603,459 +514,492 @@ It could make the whole sector blocked irreversibly! - - Set Fonts + + + Read One - Read One + Write One - Write One + + Read Selected - - Read Selected - - - - - - + Write Selected - - - + + + Sniff - + Sniff(14a) - + LF Config - + Frequency - - 125k - - - - - 134k - - - - + You might need a modified LF antenna if the freq is not 125k/134k. When setting the freq, the "hw setlfdivisor" will also be called. - + Bits per sample: - + Decimation: - + Averaging: - + Reset - + LF Operation - + Search - + Read and search for valid known tag. - + Read - + Sniff low frequency signal with LF field ON. Use this to get raw data from a tag. - + Tune - + Measure LF antenna tuning. If the antenna voltage has a obvious drop after putting card on the antenna, it is likely that the tag is a LF tag. On Iceman/RRG repo, press the button on PM3 to stop measuring - + Sniff low frequency signal with LF field OFF. Use this to get raw data from a reader or the communication between a tag and a reader. - + T55xx - + Basic Configuration(Page 0 Block 0) - - + + Hex: - - + + Bin: - - + + Get from Data - - + + Set to Data - - + + Locked: - + Master Key: - + Data Bit Rate: - + eXtended Mode: - - + + Modulation: - + PSK Clock Freq: - + Answer on Request: - + One Time Pad: - + Max Block: - + Password: - + Seq. Terminator: - + Seq. Start Marker: - + Fast Downlink: - + Inverse Data: - + Init-Delay: - + Analog Front-End Option(Page 1 Block 3) - + Option Key: - + Soft Modulation: - + Clamp Voltage: - + Modulation Voltage: - + Clock Detection Threshold: - + Gap Detection Threshold: - + Write Dampling: - + Demod Delay: - + Downlink Protocol: - + T55xx Read Config - + Bit Rate: - + Seq. Term. - + Offset: - + Inverted: - + T5577 - + T5555 - + RawCommand - + History: - + ClearHistory - + Send - + ClearOutput - + Settings - + Client - + GUI working directory: - + Preload script path(Reconnect to apply): - + If the client requires some enviroment variables, you can make a script file(*.bat on Windows or *.sh on Linux) to configure them, then put the path of the script there. - + Client working directory(Reconnect to apply): - + On Windows, the client working directory should not be identical to the path of GUI, otherwise the client will use the wrong .dll file. - + Start arguments(Reconnect to apply): - + -f is necessary because the GUI need to handle the output in time. In some cases, the arguments should be set to "-p /dev/<port> -f" or "-p <port> -f". - + config.json - + Different clients require different config files. You can change the content of config file if the command format changes. - + Keep the client active even the PM3 hardware is disconnected.(Experimental) - + + UI + + + + + Opacity: + + + + + Theme: + + + + + + + + Set + + + + + (Restart this app to use new theme) + + + + + Global Font: + + + + + Data Font: + + + + + Command Font: + + + + + Latest Release: + + + + + Report Bugs: + + + + ../data - + <port> -f - + Config file(Reconnect to apply): - + Keep buttons enabled even the client is running or disconnected - - GUI - - - - + Language: - + Choose Language - + (Restart this app to use new language) @@ -1065,15 +1009,15 @@ or the communication between a tag and a reader. - - - - - - - - - + + + + + + + + + Info @@ -1089,14 +1033,14 @@ or the communication between a tag and a reader. - + Not Connected - - - + + + Failed to open @@ -1131,66 +1075,61 @@ or the communication between a tag and a reader. - - Plz select the font of data widget and key widget - - - - + Data must consists of 32 Hex symbols(Whitespace is allowed) - - + + Key must consists of 12 Hex symbols(Whitespace is allowed) - + Plz select the data file: - - - + + + Binary Data Files(*.bin *.dump) - - - + + + All Files(*.*) - + Plz select the key file: - + Plz select the location to save data file: - - - + + + Failed to save to - + Plz select the location to save key file: - - - + + + Binary Key Files(*.bin *.dump) @@ -1205,131 +1144,146 @@ or the communication between a tag and a reader. - - + + Text Data Files(*.txt *.eml) - + Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card. - + Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it. - + There are two versions of Chinese Magic Cards, the Gen1 and the Gen2. - + Gen1: - + also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands. - + Gen2: - + doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands. - + There are some types of Chinese Magic Card Gen2. - + CUID Card: - + the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command. - + (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>) - + FUID Card: - + you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to). - + (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.) - + UFUID Card: - + It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card). - + Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key). - + Plz select the trace file: - + Plz select the location to save trace file: + + + (None) + + + + + Dark + + + + + Light + + External file - - + + Trace Files(*.trc) - - + + Idle - + Stop - + Sec @@ -1339,37 +1293,37 @@ or the communication between a tag and a reader. - + KeyA - + KeyB - + HW Version: - + PM3: - + State: - + Running - + Actural Freq: @@ -1377,56 +1331,52 @@ or the communication between a tag and a reader. Mifare - + + Succeed! - - - - - - - + + + + + + + Info - + Plz provide at least one known key - - + + Failed! - + The Access Bits is invalid! It could make the whole sector blocked irreversibly! Continue to write? - - Succeed! - - - - + Failed to write to these blocks: - + Select them? - + Failed to read card. @@ -1443,21 +1393,6 @@ Continue to write? Target Type: - - - T5555 - - - - - T55x7 - - - - - EM410x - - Read diff --git a/i18n/zh_CN.qm b/i18n/zh_CN.qm index 05dc7be39bcf50f67f3324fed14e4d4a884e8b00..864746bdd41a8f6455c167033d6f57bd12b51e5d 100644 GIT binary patch delta 2534 zcmZ8i3s6&M7CyPTH@Ue9Hv$DJA_jTCR1i@?1pz@42#BsIT5E(LSP3c-#Z|&+?ND(j z?yV~bRiQq?p=#W1wMua-uCTrzwOZH3uIzNJh`K&1ZrA;Q8FZSNJ750XbN>H3-}%m; zE6uXTMp>1oZ8Z^1#nbnR!!w3RK96YlMc@a(N5BdqPe&q7K@`3oSVNTLN0b~)G}51F zMmy4)iRRjgrgQ;M6UF?I*eZ7-T_v&mk?$7;tOwQ+dm@%7@MmH#`4ZWJ>xq4EoG7%E z*jM-=^fqxU4j*kAK)sDPj}D@+Ex^k}YU2Qg9S2^)x^)1<{z;r?AW_6J;>KBt#$F^Y zeF@QoQsOGGcDOQtll%uTWi4^lZDgYA4Jr3@wgCOwh=O-c#npw{LAj4h{( zU!Q_l5oPADA&QjSbmjw?}#Mpjlo1qc5i+hd+c6nRGW)p#V(V_93B z6Dp1!z?jFf`(KVCdiQ?}AMz!nml*$#QL%S56WY0(XuOsQS7Z^1z0BCxKS7xoCiU|r zM9v3*P{8>zv(E;ZDOksxXk&=94+b!C0dqa4glO10=FT^_Kwuhkw`CKgi)OkqP+9O< z=0R5x6q?LDEe0{4kK``bM53UdlPGDx+K>-Am86zp6M0=vtE;D4GRL% z2zf!%P?+MdbUQymg^FQGi_DcD5HAFPH!8)E7khXY!{NdN8kN`IkAEf-H83 zGl;kaumy6U(`dF}EYLZRt=I=Ij5y6ob338X6X0DURRHiu-~!-%D7bI{M;cfu%NxIc zYGdmz!kv?BZ2hHeFyRTdp$Zt1&o=yb7Al#??)6xOvD?S)Ke?4i*uWl6Pk<87*_OK? zJh6rIxcUTB@FC}y)eP_SaxrH&LNS3ebY4SYces?sqgZd@77Yo4sdsQ|4O)6ml(qrz~b6j#I-iWxl}h>uXr z>5KC!S6Gb4q0BkO8nF@MmZqqVOT;={QJ0cMlxk2qZMi_??yGd`bA8J9O5Ga7N9QX2 z`lin26R0!{gG(oi%8Ym;qgG$zm!Pt4eiI`SxkU1Rs6_#OCcbVK2uvK!cl^2UybFA% z$sO|_;=^}WKq~Ge-}7!Ikw>Q&tD=VGl?#Z0$iY+O|NT^OHX`&DJVn2zup zsv5lyD(+UbrMp29g{pm%FOh7u>K};@;gO{Rxo(Hlvjyisn3Z2IjMm?T8B>My+EGNV z2I2khmSFy)HVCFy5tzqG!lKd|BFA(g=M}EXv9*HPa1T8^DlBe&3dx=ewLKufOcZvx z!o3L=;h^d;Jn^;AJO#>3Xc7($7of~{!m-;dZqRb!UIGfxMF>Bg2eF_AwTH3~-PM85 zP@qGZdU~7<2ZzR}Q!Th!WBt|hGxfMYuBnS>w84}{^#)f|I!dmtX*oq?2vC21TZ5LU z)%!=iL`$Bl+t7sa=OONmW!g{DlZlk^4%*u`NHz5wvQsPVEMFqCzf|?IQjGSpw0=m7lD|T0$;&HnW{-DXnU@nQ%Wt%LPLaVOG zyrS5w%Pm}?Gp)4dnJw1*Y?C#=&>|gn^0bGz1!!Fr6kzV8z`=AyfU(eGmL7Y!NVELj z$Kx`@7+qccS~VEqEtU8U=dfErf0*6wS1hv^1{jqig<0#2_vU4$&3x@X80`>WSWsZH zEhc);@0b36qbqL-{IguDD?DTYKrSw^x z(w-InAGwz>^L$PD)`t-9jU1W`^RmJfR$bi6#YO$6*^Nm(GD*~ntbC@q{~T#@@;G}# z@*UPq(XafQWW}sL(fdWTml;DCExR&h+oD0Lj1(K`YCo7hij#i*ov)NT`@#PK2`8nN delta 2878 zcmaJ?3s6&M7Ctw*H;nFe5s{vVZwJQX@Ayr|e=Po1BFSUmJR+$(u#iZm02TwoflGnez-2`8 z@xXFm9g)~b#B?~3uK~^`(!B><09*~M0M-(55+a*^IZ<*Dk?%<&(=j3?f-p4!7Xyz2 zvC(7)ULs1_O%ytkXj&Ul#6F@~u*a<sV|A!)r!FN#MLC&z`BaK zJu6Xy0^%Cy5+%kFcQ%n|>MG*8P=cvfNWFRsSXfW$b!O1Ko5m)82#WVn)JFp7TusIu zCR})dk`2{F3O$*E))M*Wk|_#)QkRlx6W#}0r<4#5C6zgGayVrd+HmniSIXY79v2rl zF>N^TAl4O>z4;VTS}gD-)<EW)K+kb7FiI^Wan{ z(XbAYEEowyjS-FBh|K-{MIl}Lac;jTLXtzIX%pEZU*7{oyF{t`<`a381Hp(#o#>$P zHN>J7ooy8n4Lak*q+6ozzr0BleN%LIIx-2lAbNPW1dM1z-DL=5w7Xbbu>_?l7Z1Ls zA_~4Q9y+oLcC*;$CYVbO5NCVpkw~66XILOK(`FMFH4cSZlf zpXZK3@oD1j3KL3TVP&uKq3(OEtJ@}`p*?Jo80h{hTNDZOh-NDeqV^-Fv%;({XrKUi z8@LDf1F#eL08GtwqVEk>$QgyMvdP(+%TVd0Ot!8R{hRs?TYqIIL}_66Rsur>cJF_( zK;3=zWAEh{6*cUkFLn^QoM4+W5|BX!+k6`VkKfLDcm9O#ILZ0v93e86bFmkpspwkH z+;t6Y7{#SDoB;LyT%KznYVXZ`)P#LDb1-MCMjQD&<*GOALR-w{8a5%LL=AUL^8^R; zxt2uKE;vPEzK-FMFjJE14a(!^OQt<(2lbtjnSaK9Uk^!f+G+U7k?fj`0inoVNm0wAEeW#q=Cwd(s~|fye&O! zLG9zN%T%?6s9A?h^Y@>T>2p~`D{35iQI_A44!cM;Pkt8|AuFqEAewMawqnD4l;T6# zCXtG02q)WKjReMQm(^q;fS4V!_D^wNY>}+X;)VVXO_M#U07a5_54 zrDAvUIjH~lihZ|~C_#hbQ0Oa&aGj!URSz6>D%z8gNno;~qpQgFv;7sN7^h-p;Yh83}H==!yxu}lAgS9lqrN<38u~s!~JeuApmyATeVRGmLHK#XQp?_UB@s%~}g z^!pf8{^}_aM=)sSs%Q88-kOn&&-5zwEgKk`vJ8jQ)5NdwlVKc?{bT7OM(B{b zNF^a5meM5_;Y+!v+nd+;LK7DfQes))u)FrNi$cm^9A+OXf5EEyy(0; z5(cR*4X_tF91pM+zs0t+@BELdGXwT6>$BIZCk(KcJAAy?F9t3?Yg&Aa6e)S68t1&5 zoG@pxWvQjeT54UIP-t1WsDSw&FOJ07%y{!}Z5K8t1ql+@;qjT4%%0a?eSG$vgX`Zq zH{cpkc$BcjRXZSlJ#0Sqk*-OMre6}`Ddl4w+yBoR{#I+mTdk3O&KGI|MfR6&erjRr zs5y4AZyCd};Sq)fLbIP1Pm%h*C;JM&G^y}Q@OJ_e`nmm4=yi55KjYUqd6^!|Qg-IO zNm?w}rg#eHBklIX`Y?%o{P+{BppAPqOIy)XDbKraUHn1u%AJ`%W^JB*;ZFw~Pi5<7 zXQyYrIUk;}aHX!qy3qPTsjl>QR^7Zs#ihDM^K|)^Qj2bRVSa(NRA(v9*DbKFa4rQ+ z@L=I`oYbz3|F_s~Onk}+xk(0ZSw*w0xSwZvCXO26u0&|^akpju32z2T diff --git a/i18n/zh_CN.ts b/i18n/zh_CN.ts index 7c3f628..5d1c5e5 100644 --- a/i18n/zh_CN.ts +++ b/i18n/zh_CN.ts @@ -44,101 +44,51 @@ Simulate 模拟 - - - u - - UID 4 or 7 bytes. If not specified, the UID 4B from emulator memory will be used 4或7字节的UID,如果不指定,则使用模拟器内存中的4字节UID - - - --atqa - - Provide explicit ATQA (2 bytes) 指定ATQA(2个字节) - - - --sak - - Provide explicit SAK (1 byte) 指定SAK(1个字节) - - - n - - Automatically exit simulation after <numreads> blocks have been read by reader. 0 = infinite 在读卡器读取<n>个块后自动退出模拟,n为0或不指定时永远不退出 - - - i - - Interactive, means that console will not be returned until simulation finishes or is aborted 交互模式,勾选后PM3客户端将在模拟完成或者模拟中断后才可继续使用 - - - x - - Crack, performs the 'reader attack', nr/ar attack against a legitimate reader, fishes out the key(s) 破解,对读卡器进行攻击,通过nr/ar攻击来钓出密码(无卡嗅探) - - - e - - set keys found from 'reader attack' to emulator memory (implies x(--crack) and i) 在获得密码后自动将密码写入模拟器内存(自动勾选x(--crack)和i) - - - -v - - verbose output 更多输出内容 - - - f - - get UIDs to use for 'reader attack' from file 'f <filename.txt>' (implies x and i) 从<filename.txt>当中获取用于破解读卡器的UID(批量模拟)(自动勾选x和i) - - - r - - Generate random nonces instead of sequential nonces. Standard reader attack won't work with this option, only moebius attack works @@ -152,21 +102,6 @@ Set Parameter 设置卡参数 - - - UID: - 卡号: - - - - ATQA: - - - - - SAK: - - MF_trailerDecoderDialog @@ -180,16 +115,6 @@ Blocks 块大小 - - - 4 - - - - - 16 - - Trailer Data: @@ -203,91 +128,71 @@ 手动设置访问情况: - - Cx0 - - - - - Cx1 - - - - - Cx2 - - - - - Cx3 - - - - + Data Block Permission: 数据块访问权限: - + Block0 块0 - + Block1 块1 - + Block2 块2 - - + + Read - - + + Write - + Increase 增加 - + Decrease/Transfer/Restore 减少/从缓冲区写入/读入至缓冲区 - + Trailer Block Permission: Trailer访问权限: - - + + KeyA 密钥A - + Access Bits 控制位 - - + + KeyB 密钥B - + Reference: MF1S70YYX_V1 Product data sheet Rev. 3.2 — 23 November 2017 @@ -296,34 +201,40 @@ MF1S70YYX_V1 Product data sheet Rev. 3.2 — 23 November 2017 - + Note:the Access Bits usually contains 4 bytes(8 hex symbols), but only the first 3 bytes matters. You can set the 4th byte randomly. 注意:Access Bits一般包含4个字节(8个16进制字符),但只有前3个字节决定访问情况,最后一个字节可任意设置。 - + Invalid! It could make the whole sector blocked irreversibly! 无效! 可能导致整个扇区被不可逆转地锁定! - + + Valid 有效 - - - - - - + + KeyB cannot serve for authentication + 密钥B无法用于认证 + + + + + + + + Block - + KeyA+B 密钥A+B @@ -356,173 +267,173 @@ It could make the whole sector blocked irreversibly! 选中密码块 - + Card Type 卡片类型 - + MINI 320 - + 1K 1024 - + 2K 2048 - + 4K 4096 - + File 文件 - - + + Load 加载 - - + + Save 保存 - + Data 数据 - + Key 密钥 - + Attack 破解 - + Card Info 读卡信息 - + Check Default 验证默认密码 - + Nested Nested攻击 - + Hardnested Hardested攻击 - + Darkside Darkside攻击 - + Read/Write 读/写 - + Block: 块: - + Key: 密钥: - + Key Type: 密钥类型: - + List Data 列出嗅探数据 - - + + Data: 数据: - + Normal(Require Password) 普通卡(需要密码) - + Dump Dump命令 - + Restore Restore命令 - + Chinese Magic Card(Without Password) UID卡(不需要密码) - + Lock UFUID Card 锁定UFUID卡 - - + + About UID Card 关于UID卡 - + Set Parameter 设置卡参数 - + Wipe 擦除 - - + + Simulate 模拟 - - + + Clear 清空 @@ -567,129 +478,114 @@ It could make the whole sector blocked irreversibly! Trailer解码 - - Set Fonts - 设置字体 - - - - + + Read One 读取单个块 - - + + Write One 写入单个块 - - - + + + Read Selected 读取选中块 - - - + + + Write Selected 写入选中块 - - - + + + Sniff 嗅探 - + Sniff(14a) 嗅探(14a) - + LF Config 低频配置 - + Frequency 频率 - - 125k - - - - - 134k - - - - + You might need a modified LF antenna if the freq is not 125k/134k. When setting the freq, the "hw setlfdivisor" will also be called. 如果频率不为125k/134k,则原装天线可能不适用。 设置频率后GUI会使用"hw setlfdivisor"改变底层分频系数。 - + Bits per sample: 采样精度(Bits per sample): - + Decimation: 抽取(Decimation): - + Averaging: 平均化(Averaging): - + Reset 重置 - + LF Operation 低频操作 - + Search 搜索 - + Read and search for valid known tag. 读卡并寻找已知类型的卡 - + Read 读取 - + Sniff low frequency signal with LF field ON. Use this to get raw data from a tag. 激活低频电磁场并读取原始信号。 该功能用于获取卡片原始数据。 - + Tune 调谐 - + Measure LF antenna tuning. If the antenna voltage has a obvious drop after putting card on the antenna, it is likely that the tag is a LF tag. On Iceman/RRG repo, press the button on PM3 to stop measuring @@ -698,7 +594,7 @@ On Iceman/RRG repo, press the button on PM3 to stop measuring 在冰人版固件下,如果需要停止测量,请按下PM3侧面的按钮 - + Sniff low frequency signal with LF field OFF. Use this to get raw data from a reader or the communication between a tag and a reader. @@ -707,387 +603,431 @@ or the communication between a tag and a reader. 或者卡片与读卡器的交互过程。 - + T55xx - + Basic Configuration(Page 0 Block 0) 基本配置区(页0 块0) - - + + Hex: 16进制: - - + + Bin: 2进制: - - + + Get from Data 从数据区导入 - - + + Set to Data 导出到数据区 - - + + Locked: 锁定(Locked): - + Master Key: - + Data Bit Rate: 数据比特率(Data Bit Rate): - + eXtended Mode: 扩展模式(eXtended Mode): - - + + Modulation: 调制方式(Modulation): - + PSK Clock Freq: - + Answer on Request: - + One Time Pad: - + Max Block: - + Password: 密码(Password): - + Seq. Terminator: - + Seq. Start Marker: - + Fast Downlink: - + Inverse Data: - + Init-Delay: - + Analog Front-End Option(Page 1 Block 3) 模拟前端选项区(页1 块3) - + Option Key: - + Soft Modulation: - + Clamp Voltage: - + Modulation Voltage: - + Clock Detection Threshold: - + Gap Detection Threshold: - + Write Dampling: - + Demod Delay: - + Downlink Protocol: - + T55xx Read Config T55xx读卡配置区 - + Bit Rate: 比特率(Bit Rate): - + Seq. Term. - + Offset: - + Inverted: - + T5577 - + T5555 - + RawCommand 原始命令 - + History: 命令历史: - + ClearHistory 清空历史 - + Send 发送 - + ClearOutput 清空输出 - + Settings 设置 - + Client 客户端 - + GUI working directory: GUI工作路径: - + ../data - + <port> -f - + Config file(Reconnect to apply): 配置文件(重连后生效): - + + UI + 界面 + + + Language: 语言: - + Choose Language 选择语言 - + (Restart this app to use new language) (重启此程序以使用新语言) - + + Opacity: + 透明度: + + + + Theme: + 主题: + + + + + + + Set + 设置 + + + + (Restart this app to use new theme) + (重启此程序以使用新主题) + + + + Global Font: + 全局字体: + + + + Data Font: + 数据字体: + + + + Command Font: + 命令字体: + + + + Latest Release: + 检查更新: + + + + Report Bugs: + 反馈问题: + + + Keep buttons enabled even the client is running or disconnected 保持所有按钮可点击,即使未连接客户端或有任务正在运行 - + LF 低频 - + other 其它 - + Divisor: 分频系数(Divisor): - + Actural Freq: 125.000kHz 实际频率: 125.000kHz - + Trigger threshold: 触发阈值(Trigger threshold): - + Samples to skip: 跳过前n个采样(Samples to skip): - + Get Config 获取当前配置 - + Set Config 改变当前配置 - + Preload script path(Reconnect to apply): 预加载脚本路径(重连后生效): - + If the client requires some enviroment variables, you can make a script file(*.bat on Windows or *.sh on Linux) to configure them, then put the path of the script there. 如果客户端需要配置环境变量才能正常运行,可以将配置环境变量所需的脚本文件(Windows系统内为*.bat,linux系统内为*.sh)路径填入此处。 - + Client working directory(Reconnect to apply): 客户端工作路径(重连后生效): - + On Windows, the client working directory should not be identical to the path of GUI, otherwise the client will use the wrong .dll file. 在Windows系统中,客户端工作路径与GUI程序所在路径不能相同,否则客户端会使用错误的.dll文件。 - + Start arguments(Reconnect to apply): 启动参数(重连后生效): - + -f is necessary because the GUI need to handle the output in time. In some cases, the arguments should be set to "-p /dev/<port> -f" or "-p <port> -f". -f选项用于使客户端实时返回命令回显,必须添加。部分情况下启动参数需设置为"-p /dev/<port> -f"或"-p <port> -f"。 - Config file path(Reconnect to apply): - 配置文件路径(重连后生效): - - - + config.json - + Different clients require different config files. You can change the content of config file if the command format changes. 不同客户端需要使用不同的配置文件。若命令格式发生改变,你可以尝试手动修改配置文件以适配。 - + Keep the client active even the PM3 hardware is disconnected.(Experimental) 在PM3断开后保持客户端运行(实验性功能) - - - GUI - 图形化界面 - - - - - - - - - - + + + + + + + + + Info 信息 @@ -1103,14 +1043,14 @@ or the communication between a tag and a reader. - + Not Connected 未连接 - - - + + + Failed to open 无法打开 @@ -1155,199 +1095,205 @@ or the communication between a tag and a reader. 部分数据和密码将被清除 - - Plz select the font of data widget and key widget - 请选择数据窗口和密钥窗口的字体 - - - + Data must consists of 32 Hex symbols(Whitespace is allowed) 数据必须由32个十六进制字符组成(中间可含有空格) - - + + Key must consists of 12 Hex symbols(Whitespace is allowed) 密钥必须由12个十六进制字符组成(中间可含有空格) - + Plz select the data file: 请选择数据文件: - - - + + + Binary Data Files(*.bin *.dump) 二进制数据文件(*.bin *.dump) - - - + + + All Files(*.*) 所有文件(*.*) - + Plz select the key file: 请选择密钥文件: - + Plz select the location to save data file: 请选择数据文件保存的位置: - - - + + + Failed to save to 无法保存至 - + Plz select the location to save key file: 请选择密钥文件保存的位置: - - - + + + Binary Key Files(*.bin *.dump) 二进制密码文件(*.bin *.dump) - - + + Text Data Files(*.txt *.eml) 文本数据文件(*.txt *.eml) - Text Key Files(*.txt *.eml) - 文本密码文件(*.txt *.eml) - - - + Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card. 普通Mifare卡的块0无法写入,卡号也不能更改 - + Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it. UID卡(在国外叫Chinese Magic Card)的块0可写,卡号可变。 - + There are two versions of Chinese Magic Cards, the Gen1 and the Gen2. 国外把UID卡分为Chinese Magic Card Gen1和Gen2 - + Gen1: - + also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands. 指通常所说的UID卡,可以通过后门指令直接读写块而无需密码,在PM3和此GUI中有特殊命令处理这类卡片 - + Gen2: - + doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands. 这个叫法在国内比较罕见,在国外指CUID/FUID/UFUID这类对后门指令不响应的卡(防火墙卡) - + There are some types of Chinese Magic Card Gen2. 以下是Gen2卡的详细介绍 - + CUID Card: CUID卡: - + the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command. 可通过普通的写块命令来写块0,可重复擦写 - + (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>) (hf mf wrbl 0 A FFFFFFFFFFFF <待写入数据>) - + FUID Card: FUID卡: - + you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to). 块0只能写入一次 - + (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.) (更高级的穿防火墙卡,可以过一些能识别出CUID卡的读卡器) - + UFUID Card: UFUID卡: - + It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card). 锁卡前和普通UID/CUID卡一样可以反复读写块0,用特殊命令锁卡后就和FUID卡一样了 - + Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key). 所有UID卡都似乎更容易被Nested攻击破解 - + Plz select the trace file: 请选择trace文件: - + Plz select the location to save trace file: 请选择trace文件保存的位置: + + + (None) + (无) + + + + Dark + 暗黑 + + + + Light + 明亮 + External file 外部文件 - - + + Trace Files(*.trc) Trace文件(*.trc) - - + + Idle 空闲 - + Stop 停止 - + Sec 扇区 @@ -1357,37 +1303,37 @@ or the communication between a tag and a reader. - + KeyA 密钥A - + KeyB 密钥B - + HW Version: 固件版本: - + PM3: 连接状态: - + State: 运行状态: - + Running 正在运行 - + Actural Freq: 实际频率: @@ -1395,34 +1341,35 @@ or the communication between a tag and a reader. Mifare - + + Succeed! 成功! - - - - - - - + + + + + + + Info 信息 - + Plz provide at least one known key 请至少提供一个已知密码 - - + + Failed! 失败! - + The Access Bits is invalid! It could make the whole sector blocked irreversibly! Continue to write? @@ -1431,22 +1378,17 @@ Continue to write? 确定要写入吗? - - Succeed! - 成功! - - - + Failed to write to these blocks: 写入以下块失败: - + Select them? 选中这些块? - + Failed to read card. 读卡失败。 @@ -1463,21 +1405,6 @@ Continue to write? Target Type: 目标卡片类型: - - - T5555 - - - - - T55x7 - - - - - EM410x - - Read diff --git a/src/common/util.cpp b/src/common/util.cpp index 0130a42..24b5ab4 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -128,7 +128,7 @@ bool Util::chooseLanguage(QSettings* guiSettings, QMainWindow* window) return false; if(langMap[selectedText] == "(ext)") { - QString extPath = QFileDialog::getOpenFileName(nullptr, tr("Select the translation file:")); + QString extPath = QFileDialog::getOpenFileName(window, tr("Select the translation file:")); if(extPath.isEmpty()) return false; diff --git a/src/common/util.h b/src/common/util.h index bda759b..bc43d07 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -59,7 +59,7 @@ public: static ClientType getClientType(); static int rawTabIndex; static QDockWidget* rawDockPtr; - static bool chooseLanguage(QSettings *guiSettings, QMainWindow *window); + static bool chooseLanguage(QSettings *guiSettings, QMainWindow *window = nullptr); public slots: void processOutput(const QString& output); static void setClientType(Util::ClientType clientType); diff --git a/src/main.cpp b/src/main.cpp index 05ab4ef..5e45f45 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,7 +23,6 @@ int main(int argc, char *argv[]) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QApplication a(argc, argv); - MainWindow w; QSettings* settings = new QSettings("GUIsettings.ini", QSettings::IniFormat); settings->setIniCodec("UTF-8"); @@ -36,7 +35,7 @@ int main(int argc, char *argv[]) settings->endGroup(); if(languageName == "") { - if(Util::chooseLanguage(settings, &w)) + if(Util::chooseLanguage(settings)) { settings->beginGroup("language"); languageName = settings->value("name").toString(); @@ -53,11 +52,13 @@ int main(int argc, char *argv[]) } else languageFile = ":/i18n/" + languageName + ".qm"; - QTranslator* translator = new QTranslator(&w); + + // Note that the translator must be created before the application's widgets. + QTranslator* translator = new QTranslator(); if(translator->load(languageFile)) a.installTranslator(translator); else - QMessageBox::information(&w, "Error", "Can't load " + languageFile + " as translation file."); + QMessageBox::information(nullptr, "Error", "Can't load " + languageFile + " as translation file."); QFile* themeFile = new QFile(); QTextStream* themeStream = new QTextStream(); @@ -87,6 +88,7 @@ int main(int argc, char *argv[]) delete settings; settings = nullptr; + MainWindow w; w.initUI(); w.show(); return a.exec(); diff --git a/src/ui/mainwindow.ui b/src/ui/mainwindow.ui index ca2a943..0b0122d 100644 --- a/src/ui/mainwindow.ui +++ b/src/ui/mainwindow.ui @@ -1286,7 +1286,7 @@ - 125k + 125k true @@ -1302,7 +1302,7 @@ - 134k + 134k @@ -3192,7 +3192,7 @@ or the communication between a tag and a reader. - <html><head/><body><p><a href="https://github.com/wh201906/Proxmark3GUI/releases/"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/wh201906/Proxmark3GUI/releases/</span></a></p></body></html> + <html><head/><body><p><a href="https://github.com/wh201906/Proxmark3GUI/releases/"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/wh201906/Proxmark3GUI/releases/</span></a></p></body></html> true @@ -3222,7 +3222,7 @@ or the communication between a tag and a reader. - <html><head/><body><p><a href="https://github.com/wh201906/Proxmark3GUI/issues/"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/wh201906/Proxmark3GUI/issues/</span></a></p></body></html> + <html><head/><body><p><a href="https://github.com/wh201906/Proxmark3GUI/issues/"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/wh201906/Proxmark3GUI/issues/</span></a></p></body></html> true diff --git a/src/ui/mf_sim_simdialog.ui b/src/ui/mf_sim_simdialog.ui index 2fcbf31..4b82bb2 100644 --- a/src/ui/mf_sim_simdialog.ui +++ b/src/ui/mf_sim_simdialog.ui @@ -35,7 +35,7 @@ - u + u @@ -102,7 +102,7 @@ - --atqa + --atqa @@ -169,7 +169,7 @@ - --sak + --sak @@ -236,7 +236,7 @@ - n + n @@ -303,7 +303,7 @@ - i + i @@ -354,7 +354,7 @@ - x + x @@ -405,7 +405,7 @@ - e + e @@ -456,7 +456,7 @@ - f + f @@ -523,7 +523,7 @@ - r + r @@ -574,7 +574,7 @@ - -v + -v diff --git a/src/ui/mf_trailerdecoderdialog.ui b/src/ui/mf_trailerdecoderdialog.ui index 3d3aa63..f79015c 100644 --- a/src/ui/mf_trailerdecoderdialog.ui +++ b/src/ui/mf_trailerdecoderdialog.ui @@ -25,7 +25,7 @@ - 4 + 4 true @@ -35,7 +35,7 @@ - 16 + 16 @@ -131,7 +131,7 @@ - Cx0 + Cx0 @@ -152,7 +152,7 @@ - Cx1 + Cx1 @@ -173,7 +173,7 @@ - Cx2 + Cx2 @@ -194,7 +194,7 @@ - Cx3 + Cx3 @@ -214,84 +214,84 @@ - C10 + C10 - C11 + C11 - C12 + C12 - C13 + C13 - C20 + C20 - C21 + C21 - C22 + C22 - C23 + C23 - C30 + C30 - C31 + C31 - C32 + C32 - C33 + C33 diff --git a/src/ui/mf_uid_parameterdialog.ui b/src/ui/mf_uid_parameterdialog.ui index 15d5129..3b45dab 100644 --- a/src/ui/mf_uid_parameterdialog.ui +++ b/src/ui/mf_uid_parameterdialog.ui @@ -19,7 +19,7 @@ - UID: + UID: @@ -29,7 +29,7 @@ - ATQA: + ATQA: @@ -39,7 +39,7 @@ - SAK: + SAK: diff --git a/src/ui/t55xxtab.ui b/src/ui/t55xxtab.ui index 7ead35a..e25a815 100644 --- a/src/ui/t55xxtab.ui +++ b/src/ui/t55xxtab.ui @@ -29,14 +29,14 @@ - T5555 + T5555 - T55x7 + T55x7 true @@ -61,7 +61,7 @@ - EM410x + EM410x