mirror of
				https://github.com/wh201906/Proxmark3GUI.git
				synced 2025-10-31 22:33:23 +08:00 
			
		
		
		
	EM410x clone support
This commit is contained in:
		
							parent
							
								
									f86cba8d56
								
							
						
					
					
						commit
						1e728c891c
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,2 @@ | |||||||
| /build* | /build* | ||||||
|  | /data | ||||||
| @ -191,5 +191,15 @@ | |||||||
|             "cmd": "lf config q <divisor> b <bits per sample> d <decimation> a <averaging> t <trigger threshold> s <samples to skip>", |             "cmd": "lf config q <divisor> b <bits per sample> d <decimation> a <averaging> t <trigger threshold> s <samples to skip>", | ||||||
|             "divisor cmd": "hw setlfdivisor <divisor>" |             "divisor cmd": "hw setlfdivisor <divisor>" | ||||||
|         } |         } | ||||||
|  |     }, | ||||||
|  |     "t55xx":{ | ||||||
|  |         "clone em410x":{ | ||||||
|  |             "read":"lf search", | ||||||
|  |             "successful read flag":"Valid EM410x ID", | ||||||
|  |             "pattern":"EM TAG ID\\s*:\\s\\K[0-9a-fA-F]{10}", | ||||||
|  |             "clone cmd":"lf em 410xwrite <id> <type>", | ||||||
|  |             "t5555 flag":"0", | ||||||
|  |             "t55x7 flag":"1" | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -199,5 +199,15 @@ | |||||||
|             "cmd": "lf config --divisor <divisor> --bps <bits per sample> --dec <decimation> --avg <averaging> --trig <trigger threshold> --skip <samples to skip>", |             "cmd": "lf config --divisor <divisor> --bps <bits per sample> --dec <decimation> --avg <averaging> --trig <trigger threshold> --skip <samples to skip>", | ||||||
|             "divisor cmd": "hw setlfdivisor -d <divisor>" |             "divisor cmd": "hw setlfdivisor -d <divisor>" | ||||||
|         } |         } | ||||||
|  |     }, | ||||||
|  |     "t55xx":{ | ||||||
|  |         "clone em410x":{ | ||||||
|  |             "read":"lf em 410x reader", | ||||||
|  |             "successful read flag":"EM 410x ID", | ||||||
|  |             "pattern":"EM 410x ID\\s*\\K[0-9a-fA-F]{10}", | ||||||
|  |             "clone cmd":"lf em 410x clone --id <id> <type>", | ||||||
|  |             "t5555 flag":"--q5", | ||||||
|  |             "t55x7 flag":"" | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -78,7 +78,13 @@ QString Util::execCMDWithOutput(const QString& cmd, ReturnTrigger trigger, bool | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     isRequiringOutput = false; |     isRequiringOutput = false; | ||||||
|     return (isResultFound || trigger.expectedOutputs.isEmpty() || rawOutput ? *requiredOutput : ""); | 
 | ||||||
|  |     // For functions without expected outputs in the return trigger, the result is the raw output.
 | ||||||
|  |     // For functions with expected outputs in the return trigger,
 | ||||||
|  |     // if rawOutput=true, the result is the raw output,
 | ||||||
|  |     // otherwise, if the raw output contains one of the expected outputs, the result is the raw output,
 | ||||||
|  |     // otherwise, the result is empty(as a failed flag).
 | ||||||
|  |     return (trigger.expectedOutputs.isEmpty() || isResultFound || rawOutput ? *requiredOutput : ""); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Util::delay(unsigned int msec) | void Util::delay(unsigned int msec) | ||||||
|  | |||||||
| @ -536,7 +536,7 @@ It could make the whole sector blocked irreversibly!</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="914"/> |         <location filename="../ui/mainwindow.ui" line="914"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="835"/> |         <location filename="../ui/mainwindow.cpp" line="838"/> | ||||||
|         <source>About UID Card</source> |         <source>About UID Card</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -738,6 +738,7 @@ or the communication between a tag and a reader.</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="1883"/> |         <location filename="../ui/mainwindow.ui" line="1883"/> | ||||||
|  |         <location filename="../ui/mainwindow.cpp" line="44"/> | ||||||
|         <source>T55xx</source> |         <source>T55xx</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -939,7 +940,7 @@ or the communication between a tag and a reader.</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="2570"/> |         <location filename="../ui/mainwindow.ui" line="2570"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="267"/> |         <location filename="../ui/mainwindow.cpp" line="270"/> | ||||||
|         <source>History:</source> |         <source>History:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1054,46 +1055,46 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="80"/> |         <location filename="../ui/mainwindow.cpp" line="83"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="129"/> |         <location filename="../ui/mainwindow.cpp" line="132"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="596"/> |         <location filename="../ui/mainwindow.cpp" line="599"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="616"/> |         <location filename="../ui/mainwindow.cpp" line="619"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="629"/> |         <location filename="../ui/mainwindow.cpp" line="632"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="648"/> |         <location filename="../ui/mainwindow.cpp" line="651"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="661"/> |         <location filename="../ui/mainwindow.cpp" line="664"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="688"/> |         <location filename="../ui/mainwindow.cpp" line="691"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="701"/> |         <location filename="../ui/mainwindow.cpp" line="704"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="893"/> |         <location filename="../ui/mainwindow.cpp" line="896"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="918"/> |         <location filename="../ui/mainwindow.cpp" line="921"/> | ||||||
|         <source>Info</source> |         <source>Info</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="129"/> |         <location filename="../ui/mainwindow.cpp" line="132"/> | ||||||
|         <source>Plz choose a port first</source> |         <source>Plz choose a port first</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="201"/> |         <location filename="../ui/mainwindow.cpp" line="204"/> | ||||||
|         <source>Connected</source> |         <source>Connected</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="207"/> |         <location filename="../ui/mainwindow.cpp" line="210"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1003"/> |         <location filename="../ui/mainwindow.cpp" line="1006"/> | ||||||
|         <source>Not Connected</source> |         <source>Not Connected</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="648"/> |         <location filename="../ui/mainwindow.cpp" line="651"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="661"/> |         <location filename="../ui/mainwindow.cpp" line="664"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="893"/> |         <location filename="../ui/mainwindow.cpp" line="896"/> | ||||||
|         <source>Failed to open</source> |         <source>Failed to open</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <source>Continue?</source> |         <source>Continue?</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1113,194 +1114,194 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="80"/> |         <location filename="../ui/mainwindow.cpp" line="83"/> | ||||||
|         <source>Failed to load config file</source> |         <source>Failed to load config file</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <source>Some of the data and key will be cleared.</source> |         <source>Some of the data and key will be cleared.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="483"/> |         <location filename="../ui/mainwindow.cpp" line="486"/> | ||||||
|         <source>Plz select the font of data widget and key widget</source> |         <source>Plz select the font of data widget and key widget</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="596"/> |         <location filename="../ui/mainwindow.cpp" line="599"/> | ||||||
|         <source>Data must consists of 32 Hex symbols(Whitespace is allowed)</source> |         <source>Data must consists of 32 Hex symbols(Whitespace is allowed)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="616"/> |         <location filename="../ui/mainwindow.cpp" line="619"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="629"/> |         <location filename="../ui/mainwindow.cpp" line="632"/> | ||||||
|         <source>Key must consists of 12 Hex symbols(Whitespace is allowed)</source> |         <source>Key must consists of 12 Hex symbols(Whitespace is allowed)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="641"/> |         <location filename="../ui/mainwindow.cpp" line="644"/> | ||||||
|         <source>Plz select the data file:</source> |         <source>Plz select the data file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="682"/> |         <location filename="../ui/mainwindow.cpp" line="685"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="686"/> |         <location filename="../ui/mainwindow.cpp" line="689"/> | ||||||
|         <source>Binary Data Files(*.bin *.dump)</source> |         <source>Binary Data Files(*.bin *.dump)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="655"/> |         <location filename="../ui/mainwindow.cpp" line="658"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="880"/> |         <location filename="../ui/mainwindow.cpp" line="883"/> | ||||||
|         <source>All Files(*.*)</source> |         <source>All Files(*.*)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="654"/> |         <location filename="../ui/mainwindow.cpp" line="657"/> | ||||||
|         <source>Plz select the key file:</source> |         <source>Plz select the key file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="681"/> |         <location filename="../ui/mainwindow.cpp" line="684"/> | ||||||
|         <source>Plz select the location to save data file:</source> |         <source>Plz select the location to save data file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="688"/> |         <location filename="../ui/mainwindow.cpp" line="691"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="701"/> |         <location filename="../ui/mainwindow.cpp" line="704"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="918"/> |         <location filename="../ui/mainwindow.cpp" line="921"/> | ||||||
|         <source>Failed to save to</source> |         <source>Failed to save to</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="694"/> |         <location filename="../ui/mainwindow.cpp" line="697"/> | ||||||
|         <source>Plz select the location to save key file:</source> |         <source>Plz select the location to save key file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="655"/> |         <location filename="../ui/mainwindow.cpp" line="658"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="695"/> |         <location filename="../ui/mainwindow.cpp" line="698"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="699"/> |         <location filename="../ui/mainwindow.cpp" line="702"/> | ||||||
|         <source>Binary Key Files(*.bin *.dump)</source> |         <source>Binary Key Files(*.bin *.dump)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="682"/> |         <location filename="../ui/mainwindow.cpp" line="685"/> | ||||||
|         <source>Text Data Files(*.txt *.eml)</source> |         <source>Text Data Files(*.txt *.eml)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="820"/> |         <location filename="../ui/mainwindow.cpp" line="823"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="821"/> |         <location filename="../ui/mainwindow.cpp" line="824"/> | ||||||
|         <source>    Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.</source> |         <source>    Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="823"/> |         <location filename="../ui/mainwindow.cpp" line="826"/> | ||||||
|         <source>There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.</source> |         <source>There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="824"/> |         <location filename="../ui/mainwindow.cpp" line="827"/> | ||||||
|         <source>    Gen1:</source> |         <source>    Gen1:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="824"/> |         <location filename="../ui/mainwindow.cpp" line="827"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="825"/> |         <location filename="../ui/mainwindow.cpp" line="828"/> | ||||||
|         <source>    Gen2:</source> |         <source>    Gen2:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="825"/> |         <location filename="../ui/mainwindow.cpp" line="828"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="827"/> |         <location filename="../ui/mainwindow.cpp" line="830"/> | ||||||
|         <source>There are some types of Chinese Magic Card Gen2.</source> |         <source>There are some types of Chinese Magic Card Gen2.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="828"/> |         <location filename="../ui/mainwindow.cpp" line="831"/> | ||||||
|         <source>    CUID Card:</source> |         <source>    CUID Card:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="828"/> |         <location filename="../ui/mainwindow.cpp" line="831"/> | ||||||
|         <source>    the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.</source> |         <source>    the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="829"/> |         <location filename="../ui/mainwindow.cpp" line="832"/> | ||||||
|         <source>    (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>)</source> |         <source>    (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="830"/> |         <location filename="../ui/mainwindow.cpp" line="833"/> | ||||||
|         <source>    FUID Card:</source> |         <source>    FUID Card:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="830"/> |         <location filename="../ui/mainwindow.cpp" line="833"/> | ||||||
|         <source>    you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).</source> |         <source>    you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="831"/> |         <location filename="../ui/mainwindow.cpp" line="834"/> | ||||||
|         <source>    (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)</source> |         <source>    (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="832"/> |         <location filename="../ui/mainwindow.cpp" line="835"/> | ||||||
|         <source>    UFUID Card:</source> |         <source>    UFUID Card:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="832"/> |         <location filename="../ui/mainwindow.cpp" line="835"/> | ||||||
|         <source>    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).</source> |         <source>    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).</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="834"/> |         <location filename="../ui/mainwindow.cpp" line="837"/> | ||||||
|         <source>    Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).</source> |         <source>    Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="879"/> |         <location filename="../ui/mainwindow.cpp" line="882"/> | ||||||
|         <source>Plz select the trace file:</source> |         <source>Plz select the trace file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="903"/> |         <location filename="../ui/mainwindow.cpp" line="906"/> | ||||||
|         <source>Plz select the location to save trace file:</source> |         <source>Plz select the location to save trace file:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="880"/> |         <location filename="../ui/mainwindow.cpp" line="883"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="904"/> |         <location filename="../ui/mainwindow.cpp" line="907"/> | ||||||
|         <source>Trace Files(*.trc)</source> |         <source>Trace Files(*.trc)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1004"/> |         <location filename="../ui/mainwindow.cpp" line="1007"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1176"/> |         <location filename="../ui/mainwindow.cpp" line="1179"/> | ||||||
|         <source>Idle</source> |         <source>Idle</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1006"/> |         <location filename="../ui/mainwindow.cpp" line="1009"/> | ||||||
|         <source>Stop</source> |         <source>Stop</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1326,27 +1327,27 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1113"/> |         <location filename="../ui/mainwindow.cpp" line="1116"/> | ||||||
|         <source>HW Version:</source> |         <source>HW Version:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1115"/> |         <location filename="../ui/mainwindow.cpp" line="1118"/> | ||||||
|         <source>PM3:</source> |         <source>PM3:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1117"/> |         <location filename="../ui/mainwindow.cpp" line="1120"/> | ||||||
|         <source>State:</source> |         <source>State:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1172"/> |         <location filename="../ui/mainwindow.cpp" line="1175"/> | ||||||
|         <source>Running</source> |         <source>Running</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1299"/> |         <location filename="../ui/mainwindow.cpp" line="1302"/> | ||||||
|         <source>Actural Freq: </source> |         <source>Actural Freq: </source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1354,58 +1355,96 @@ or the communication between a tag and a reader.</source> | |||||||
| <context> | <context> | ||||||
|     <name>Mifare</name> |     <name>Mifare</name> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="643"/> |         <location filename="../module/mifare.cpp" line="642"/> | ||||||
|         <source>Success!</source> |         <source>Success!</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="209"/> |         <location filename="../module/mifare.cpp" line="208"/> | ||||||
|         <location filename="../module/mifare.cpp" line="643"/> |         <location filename="../module/mifare.cpp" line="642"/> | ||||||
|         <location filename="../module/mifare.cpp" line="647"/> |         <location filename="../module/mifare.cpp" line="646"/> | ||||||
|         <location filename="../module/mifare.cpp" line="671"/> |         <location filename="../module/mifare.cpp" line="670"/> | ||||||
|         <location filename="../module/mifare.cpp" line="710"/> |         <location filename="../module/mifare.cpp" line="709"/> | ||||||
|         <location filename="../module/mifare.cpp" line="723"/> |         <location filename="../module/mifare.cpp" line="722"/> | ||||||
|         <location filename="../module/mifare.cpp" line="774"/> |         <location filename="../module/mifare.cpp" line="773"/> | ||||||
|         <source>Info</source> |         <source>Info</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="209"/> |         <location filename="../module/mifare.cpp" line="208"/> | ||||||
|         <source>Plz provide at least one known key</source> |         <source>Plz provide at least one known key</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="468"/> |         <location filename="../module/mifare.cpp" line="467"/> | ||||||
|         <location filename="../module/mifare.cpp" line="647"/> |         <location filename="../module/mifare.cpp" line="646"/> | ||||||
|         <source>Failed!</source> |         <source>Failed!</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="672"/> |         <location filename="../module/mifare.cpp" line="671"/> | ||||||
|         <source>The Access Bits is invalid! |         <source>The Access Bits is invalid! | ||||||
| It could make the whole sector blocked irreversibly! | It could make the whole sector blocked irreversibly! | ||||||
| Continue to write?</source> | Continue to write?</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="710"/> |         <location filename="../module/mifare.cpp" line="709"/> | ||||||
|         <source>Successful!</source> |         <source>Successful!</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="723"/> |         <location filename="../module/mifare.cpp" line="722"/> | ||||||
|         <source>Failed to write to these blocks:</source> |         <source>Failed to write to these blocks:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="727"/> |         <location filename="../module/mifare.cpp" line="726"/> | ||||||
|         <source>Select them?</source> |         <source>Select them?</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="774"/> |         <location filename="../module/mifare.cpp" line="773"/> | ||||||
|         <source>Failed to read card.</source> |         <source>Failed to read card.</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
| </context> | </context> | ||||||
|  | <context> | ||||||
|  |     <name>T55xxTab</name> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="17"/> | ||||||
|  |         <source>Clone to T55xx</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="25"/> | ||||||
|  |         <source>Target Type:</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="32"/> | ||||||
|  |         <source>T5555</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="39"/> | ||||||
|  |         <source>T55x7</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="64"/> | ||||||
|  |         <source>EM410x</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="70"/> | ||||||
|  |         <source>Read</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="80"/> | ||||||
|  |         <source>Clone</source> | ||||||
|  |         <translation type="unfinished"></translation> | ||||||
|  |     </message> | ||||||
|  | </context> | ||||||
| </TS> | </TS> | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							| @ -500,7 +500,7 @@ It could make the whole sector blocked irreversibly!</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="914"/> |         <location filename="../ui/mainwindow.ui" line="914"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="835"/> |         <location filename="../ui/mainwindow.cpp" line="838"/> | ||||||
|         <source>About UID Card</source> |         <source>About UID Card</source> | ||||||
|         <translation>关于UID卡</translation> |         <translation>关于UID卡</translation> | ||||||
|     </message> |     </message> | ||||||
| @ -708,6 +708,7 @@ or the communication between a tag and a reader.</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="1883"/> |         <location filename="../ui/mainwindow.ui" line="1883"/> | ||||||
|  |         <location filename="../ui/mainwindow.cpp" line="44"/> | ||||||
|         <source>T55xx</source> |         <source>T55xx</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
| @ -909,7 +910,7 @@ or the communication between a tag and a reader.</source> | |||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.ui" line="2570"/> |         <location filename="../ui/mainwindow.ui" line="2570"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="267"/> |         <location filename="../ui/mainwindow.cpp" line="270"/> | ||||||
|         <source>History:</source> |         <source>History:</source> | ||||||
|         <translation>命令历史:</translation> |         <translation>命令历史:</translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1064,46 +1065,46 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation>图形化界面</translation> |         <translation>图形化界面</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="80"/> |         <location filename="../ui/mainwindow.cpp" line="83"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="129"/> |         <location filename="../ui/mainwindow.cpp" line="132"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="596"/> |         <location filename="../ui/mainwindow.cpp" line="599"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="616"/> |         <location filename="../ui/mainwindow.cpp" line="619"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="629"/> |         <location filename="../ui/mainwindow.cpp" line="632"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="648"/> |         <location filename="../ui/mainwindow.cpp" line="651"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="661"/> |         <location filename="../ui/mainwindow.cpp" line="664"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="688"/> |         <location filename="../ui/mainwindow.cpp" line="691"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="701"/> |         <location filename="../ui/mainwindow.cpp" line="704"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="893"/> |         <location filename="../ui/mainwindow.cpp" line="896"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="918"/> |         <location filename="../ui/mainwindow.cpp" line="921"/> | ||||||
|         <source>Info</source> |         <source>Info</source> | ||||||
|         <translation>信息</translation> |         <translation>信息</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="129"/> |         <location filename="../ui/mainwindow.cpp" line="132"/> | ||||||
|         <source>Plz choose a port first</source> |         <source>Plz choose a port first</source> | ||||||
|         <translation>请先选择端口</translation> |         <translation>请先选择端口</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="201"/> |         <location filename="../ui/mainwindow.cpp" line="204"/> | ||||||
|         <source>Connected</source> |         <source>Connected</source> | ||||||
|         <translation>已连接</translation> |         <translation>已连接</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="207"/> |         <location filename="../ui/mainwindow.cpp" line="210"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1003"/> |         <location filename="../ui/mainwindow.cpp" line="1006"/> | ||||||
|         <source>Not Connected</source> |         <source>Not Connected</source> | ||||||
|         <translation>未连接</translation> |         <translation>未连接</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="648"/> |         <location filename="../ui/mainwindow.cpp" line="651"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="661"/> |         <location filename="../ui/mainwindow.cpp" line="664"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="893"/> |         <location filename="../ui/mainwindow.cpp" line="896"/> | ||||||
|         <source>Failed to open</source> |         <source>Failed to open</source> | ||||||
|         <translation>无法打开</translation> |         <translation>无法打开</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <source>Continue?</source> |         <source>Continue?</source> | ||||||
|         <translation>确定?</translation> |         <translation>确定?</translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1123,82 +1124,82 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation>检查更新</translation> |         <translation>检查更新</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="80"/> |         <location filename="../ui/mainwindow.cpp" line="83"/> | ||||||
|         <source>Failed to load config file</source> |         <source>Failed to load config file</source> | ||||||
|         <translation>无法打开配置文件</translation> |         <translation>无法打开配置文件</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="370"/> |         <location filename="../ui/mainwindow.cpp" line="373"/> | ||||||
|         <source>Some of the data and key will be cleared.</source> |         <source>Some of the data and key will be cleared.</source> | ||||||
|         <translation>部分数据和密码将被清除</translation> |         <translation>部分数据和密码将被清除</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="483"/> |         <location filename="../ui/mainwindow.cpp" line="486"/> | ||||||
|         <source>Plz select the font of data widget and key widget</source> |         <source>Plz select the font of data widget and key widget</source> | ||||||
|         <translation>请选择数据窗口和密钥窗口的字体</translation> |         <translation>请选择数据窗口和密钥窗口的字体</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="596"/> |         <location filename="../ui/mainwindow.cpp" line="599"/> | ||||||
|         <source>Data must consists of 32 Hex symbols(Whitespace is allowed)</source> |         <source>Data must consists of 32 Hex symbols(Whitespace is allowed)</source> | ||||||
|         <translation>数据必须由32个十六进制字符组成(中间可含有空格)</translation> |         <translation>数据必须由32个十六进制字符组成(中间可含有空格)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="616"/> |         <location filename="../ui/mainwindow.cpp" line="619"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="629"/> |         <location filename="../ui/mainwindow.cpp" line="632"/> | ||||||
|         <source>Key must consists of 12 Hex symbols(Whitespace is allowed)</source> |         <source>Key must consists of 12 Hex symbols(Whitespace is allowed)</source> | ||||||
|         <translation>密钥必须由12个十六进制字符组成(中间可含有空格)</translation> |         <translation>密钥必须由12个十六进制字符组成(中间可含有空格)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="641"/> |         <location filename="../ui/mainwindow.cpp" line="644"/> | ||||||
|         <source>Plz select the data file:</source> |         <source>Plz select the data file:</source> | ||||||
|         <translation>请选择数据文件:</translation> |         <translation>请选择数据文件:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="682"/> |         <location filename="../ui/mainwindow.cpp" line="685"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="686"/> |         <location filename="../ui/mainwindow.cpp" line="689"/> | ||||||
|         <source>Binary Data Files(*.bin *.dump)</source> |         <source>Binary Data Files(*.bin *.dump)</source> | ||||||
|         <translation>二进制数据文件(*.bin *.dump)</translation> |         <translation>二进制数据文件(*.bin *.dump)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="655"/> |         <location filename="../ui/mainwindow.cpp" line="658"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="880"/> |         <location filename="../ui/mainwindow.cpp" line="883"/> | ||||||
|         <source>All Files(*.*)</source> |         <source>All Files(*.*)</source> | ||||||
|         <translation>所有文件(*.*)</translation> |         <translation>所有文件(*.*)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="654"/> |         <location filename="../ui/mainwindow.cpp" line="657"/> | ||||||
|         <source>Plz select the key file:</source> |         <source>Plz select the key file:</source> | ||||||
|         <translation>请选择密钥文件:</translation> |         <translation>请选择密钥文件:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="681"/> |         <location filename="../ui/mainwindow.cpp" line="684"/> | ||||||
|         <source>Plz select the location to save data file:</source> |         <source>Plz select the location to save data file:</source> | ||||||
|         <translation>请选择数据文件保存的位置:</translation> |         <translation>请选择数据文件保存的位置:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="688"/> |         <location filename="../ui/mainwindow.cpp" line="691"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="701"/> |         <location filename="../ui/mainwindow.cpp" line="704"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="918"/> |         <location filename="../ui/mainwindow.cpp" line="921"/> | ||||||
|         <source>Failed to save to</source> |         <source>Failed to save to</source> | ||||||
|         <translation>无法保存至</translation> |         <translation>无法保存至</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="694"/> |         <location filename="../ui/mainwindow.cpp" line="697"/> | ||||||
|         <source>Plz select the location to save key file:</source> |         <source>Plz select the location to save key file:</source> | ||||||
|         <translation>请选择密钥文件保存的位置:</translation> |         <translation>请选择密钥文件保存的位置:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="655"/> |         <location filename="../ui/mainwindow.cpp" line="658"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="695"/> |         <location filename="../ui/mainwindow.cpp" line="698"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="699"/> |         <location filename="../ui/mainwindow.cpp" line="702"/> | ||||||
|         <source>Binary Key Files(*.bin *.dump)</source> |         <source>Binary Key Files(*.bin *.dump)</source> | ||||||
|         <translation>二进制密码文件(*.bin *.dump)</translation> |         <translation>二进制密码文件(*.bin *.dump)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="642"/> |         <location filename="../ui/mainwindow.cpp" line="645"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="682"/> |         <location filename="../ui/mainwindow.cpp" line="685"/> | ||||||
|         <source>Text Data Files(*.txt *.eml)</source> |         <source>Text Data Files(*.txt *.eml)</source> | ||||||
|         <translation>文本数据文件(*.txt *.eml)</translation> |         <translation>文本数据文件(*.txt *.eml)</translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1207,114 +1208,114 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation type="vanished">文本密码文件(*.txt *.eml)</translation> |         <translation type="vanished">文本密码文件(*.txt *.eml)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="820"/> |         <location filename="../ui/mainwindow.cpp" line="823"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation>    普通Mifare卡的块0无法写入,卡号也不能更改</translation> |         <translation>    普通Mifare卡的块0无法写入,卡号也不能更改</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="821"/> |         <location filename="../ui/mainwindow.cpp" line="824"/> | ||||||
|         <source>    Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.</source> |         <source>    Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.</source> | ||||||
|         <translation>    UID卡(在国外叫Chinese Magic Card)的块0可写,卡号可变。</translation> |         <translation>    UID卡(在国外叫Chinese Magic Card)的块0可写,卡号可变。</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="823"/> |         <location filename="../ui/mainwindow.cpp" line="826"/> | ||||||
|         <source>There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.</source> |         <source>There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.</source> | ||||||
|         <translation>国外把UID卡分为Chinese Magic Card Gen1和Gen2</translation> |         <translation>国外把UID卡分为Chinese Magic Card Gen1和Gen2</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="824"/> |         <location filename="../ui/mainwindow.cpp" line="827"/> | ||||||
|         <source>    Gen1:</source> |         <source>    Gen1:</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="824"/> |         <location filename="../ui/mainwindow.cpp" line="827"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation>    指通常所说的UID卡,可以通过后门指令直接读写块而无需密码,在PM3和此GUI中有特殊命令处理这类卡片</translation> |         <translation>    指通常所说的UID卡,可以通过后门指令直接读写块而无需密码,在PM3和此GUI中有特殊命令处理这类卡片</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="825"/> |         <location filename="../ui/mainwindow.cpp" line="828"/> | ||||||
|         <source>    Gen2:</source> |         <source>    Gen2:</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="825"/> |         <location filename="../ui/mainwindow.cpp" line="828"/> | ||||||
|         <source>    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.</source> |         <source>    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.</source> | ||||||
|         <translation>    这个叫法在国内比较罕见,在国外指CUID/FUID/UFUID这类对后门指令不响应的卡(防火墙卡)</translation> |         <translation>    这个叫法在国内比较罕见,在国外指CUID/FUID/UFUID这类对后门指令不响应的卡(防火墙卡)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="827"/> |         <location filename="../ui/mainwindow.cpp" line="830"/> | ||||||
|         <source>There are some types of Chinese Magic Card Gen2.</source> |         <source>There are some types of Chinese Magic Card Gen2.</source> | ||||||
|         <translation>以下是Gen2卡的详细介绍</translation> |         <translation>以下是Gen2卡的详细介绍</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="828"/> |         <location filename="../ui/mainwindow.cpp" line="831"/> | ||||||
|         <source>    CUID Card:</source> |         <source>    CUID Card:</source> | ||||||
|         <translation>    CUID卡:</translation> |         <translation>    CUID卡:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="828"/> |         <location filename="../ui/mainwindow.cpp" line="831"/> | ||||||
|         <source>    the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.</source> |         <source>    the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.</source> | ||||||
|         <translation>    可通过普通的写块命令来写块0,可重复擦写</translation> |         <translation>    可通过普通的写块命令来写块0,可重复擦写</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="829"/> |         <location filename="../ui/mainwindow.cpp" line="832"/> | ||||||
|         <source>    (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>)</source> |         <source>    (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>)</source> | ||||||
|         <translation>    (hf mf wrbl 0 A FFFFFFFFFFFF <待写入数据>)</translation> |         <translation>    (hf mf wrbl 0 A FFFFFFFFFFFF <待写入数据>)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="830"/> |         <location filename="../ui/mainwindow.cpp" line="833"/> | ||||||
|         <source>    FUID Card:</source> |         <source>    FUID Card:</source> | ||||||
|         <translation>    FUID卡:</translation> |         <translation>    FUID卡:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="830"/> |         <location filename="../ui/mainwindow.cpp" line="833"/> | ||||||
|         <source>    you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).</source> |         <source>    you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).</source> | ||||||
|         <translation>    块0只能写入一次</translation> |         <translation>    块0只能写入一次</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="831"/> |         <location filename="../ui/mainwindow.cpp" line="834"/> | ||||||
|         <source>    (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)</source> |         <source>    (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)</source> | ||||||
|         <translation>    (更高级的穿防火墙卡,可以过一些能识别出CUID卡的读卡器)</translation> |         <translation>    (更高级的穿防火墙卡,可以过一些能识别出CUID卡的读卡器)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="832"/> |         <location filename="../ui/mainwindow.cpp" line="835"/> | ||||||
|         <source>    UFUID Card:</source> |         <source>    UFUID Card:</source> | ||||||
|         <translation>    UFUID卡:</translation> |         <translation>    UFUID卡:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="832"/> |         <location filename="../ui/mainwindow.cpp" line="835"/> | ||||||
|         <source>    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).</source> |         <source>    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).</source> | ||||||
|         <translation>    锁卡前和普通UID/CUID卡一样可以反复读写块0,用特殊命令锁卡后就和FUID卡一样了</translation> |         <translation>    锁卡前和普通UID/CUID卡一样可以反复读写块0,用特殊命令锁卡后就和FUID卡一样了</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="834"/> |         <location filename="../ui/mainwindow.cpp" line="837"/> | ||||||
|         <source>    Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).</source> |         <source>    Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).</source> | ||||||
|         <translation>    所有UID卡都似乎更容易被Nested攻击破解</translation> |         <translation>    所有UID卡都似乎更容易被Nested攻击破解</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="879"/> |         <location filename="../ui/mainwindow.cpp" line="882"/> | ||||||
|         <source>Plz select the trace file:</source> |         <source>Plz select the trace file:</source> | ||||||
|         <translation>请选择trace文件:</translation> |         <translation>请选择trace文件:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="903"/> |         <location filename="../ui/mainwindow.cpp" line="906"/> | ||||||
|         <source>Plz select the location to save trace file:</source> |         <source>Plz select the location to save trace file:</source> | ||||||
|         <translation>请选择trace文件保存的位置:</translation> |         <translation>请选择trace文件保存的位置:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="880"/> |         <location filename="../ui/mainwindow.cpp" line="883"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="904"/> |         <location filename="../ui/mainwindow.cpp" line="907"/> | ||||||
|         <source>Trace Files(*.trc)</source> |         <source>Trace Files(*.trc)</source> | ||||||
|         <translation>Trace文件(*.trc)</translation> |         <translation>Trace文件(*.trc)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1004"/> |         <location filename="../ui/mainwindow.cpp" line="1007"/> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1176"/> |         <location filename="../ui/mainwindow.cpp" line="1179"/> | ||||||
|         <source>Idle</source> |         <source>Idle</source> | ||||||
|         <translation>空闲</translation> |         <translation>空闲</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1006"/> |         <location filename="../ui/mainwindow.cpp" line="1009"/> | ||||||
|         <source>Stop</source> |         <source>Stop</source> | ||||||
|         <translation>停止</translation> |         <translation>停止</translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1340,27 +1341,27 @@ or the communication between a tag and a reader.</source> | |||||||
|         <translation>密钥B</translation> |         <translation>密钥B</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1113"/> |         <location filename="../ui/mainwindow.cpp" line="1116"/> | ||||||
|         <source>HW Version:</source> |         <source>HW Version:</source> | ||||||
|         <translation>固件版本:</translation> |         <translation>固件版本:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1115"/> |         <location filename="../ui/mainwindow.cpp" line="1118"/> | ||||||
|         <source>PM3:</source> |         <source>PM3:</source> | ||||||
|         <translation>连接状态:</translation> |         <translation>连接状态:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1117"/> |         <location filename="../ui/mainwindow.cpp" line="1120"/> | ||||||
|         <source>State:</source> |         <source>State:</source> | ||||||
|         <translation>运行状态:</translation> |         <translation>运行状态:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1172"/> |         <location filename="../ui/mainwindow.cpp" line="1175"/> | ||||||
|         <source>Running</source> |         <source>Running</source> | ||||||
|         <translation>正在运行</translation> |         <translation>正在运行</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ui/mainwindow.cpp" line="1299"/> |         <location filename="../ui/mainwindow.cpp" line="1302"/> | ||||||
|         <source>Actural Freq: </source> |         <source>Actural Freq: </source> | ||||||
|         <translation>实际频率: </translation> |         <translation>实际频率: </translation> | ||||||
|     </message> |     </message> | ||||||
| @ -1368,34 +1369,34 @@ or the communication between a tag and a reader.</source> | |||||||
| <context> | <context> | ||||||
|     <name>Mifare</name> |     <name>Mifare</name> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="643"/> |         <location filename="../module/mifare.cpp" line="642"/> | ||||||
|         <source>Success!</source> |         <source>Success!</source> | ||||||
|         <translation>成功!</translation> |         <translation>成功!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="209"/> |         <location filename="../module/mifare.cpp" line="208"/> | ||||||
|         <location filename="../module/mifare.cpp" line="643"/> |         <location filename="../module/mifare.cpp" line="642"/> | ||||||
|         <location filename="../module/mifare.cpp" line="647"/> |         <location filename="../module/mifare.cpp" line="646"/> | ||||||
|         <location filename="../module/mifare.cpp" line="671"/> |         <location filename="../module/mifare.cpp" line="670"/> | ||||||
|         <location filename="../module/mifare.cpp" line="710"/> |         <location filename="../module/mifare.cpp" line="709"/> | ||||||
|         <location filename="../module/mifare.cpp" line="723"/> |         <location filename="../module/mifare.cpp" line="722"/> | ||||||
|         <location filename="../module/mifare.cpp" line="774"/> |         <location filename="../module/mifare.cpp" line="773"/> | ||||||
|         <source>Info</source> |         <source>Info</source> | ||||||
|         <translation>信息</translation> |         <translation>信息</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="209"/> |         <location filename="../module/mifare.cpp" line="208"/> | ||||||
|         <source>Plz provide at least one known key</source> |         <source>Plz provide at least one known key</source> | ||||||
|         <translation>请至少提供一个已知密码</translation> |         <translation>请至少提供一个已知密码</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="468"/> |         <location filename="../module/mifare.cpp" line="467"/> | ||||||
|         <location filename="../module/mifare.cpp" line="647"/> |         <location filename="../module/mifare.cpp" line="646"/> | ||||||
|         <source>Failed!</source> |         <source>Failed!</source> | ||||||
|         <translation>失败!</translation> |         <translation>失败!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="672"/> |         <location filename="../module/mifare.cpp" line="671"/> | ||||||
|         <source>The Access Bits is invalid! |         <source>The Access Bits is invalid! | ||||||
| It could make the whole sector blocked irreversibly! | It could make the whole sector blocked irreversibly! | ||||||
| Continue to write?</source> | Continue to write?</source> | ||||||
| @ -1404,24 +1405,62 @@ Continue to write?</source> | |||||||
| 确定要写入吗?</translation> | 确定要写入吗?</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="710"/> |         <location filename="../module/mifare.cpp" line="709"/> | ||||||
|         <source>Successful!</source> |         <source>Successful!</source> | ||||||
|         <translation>成功!</translation> |         <translation>成功!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="723"/> |         <location filename="../module/mifare.cpp" line="722"/> | ||||||
|         <source>Failed to write to these blocks:</source> |         <source>Failed to write to these blocks:</source> | ||||||
|         <translation>写入以下块失败:</translation> |         <translation>写入以下块失败:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="727"/> |         <location filename="../module/mifare.cpp" line="726"/> | ||||||
|         <source>Select them?</source> |         <source>Select them?</source> | ||||||
|         <translation>选中这些块?</translation> |         <translation>选中这些块?</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../module/mifare.cpp" line="774"/> |         <location filename="../module/mifare.cpp" line="773"/> | ||||||
|         <source>Failed to read card.</source> |         <source>Failed to read card.</source> | ||||||
|         <translation>读卡失败。</translation> |         <translation>读卡失败。</translation> | ||||||
|     </message> |     </message> | ||||||
| </context> | </context> | ||||||
|  | <context> | ||||||
|  |     <name>T55xxTab</name> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="17"/> | ||||||
|  |         <source>Clone to T55xx</source> | ||||||
|  |         <translation>复制到T55xx卡</translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="25"/> | ||||||
|  |         <source>Target Type:</source> | ||||||
|  |         <translation>目标卡片类型:</translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="32"/> | ||||||
|  |         <source>T5555</source> | ||||||
|  |         <translation></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="39"/> | ||||||
|  |         <source>T55x7</source> | ||||||
|  |         <translation></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="64"/> | ||||||
|  |         <source>EM410x</source> | ||||||
|  |         <translation></translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="70"/> | ||||||
|  |         <source>Read</source> | ||||||
|  |         <translation>读卡</translation> | ||||||
|  |     </message> | ||||||
|  |     <message> | ||||||
|  |         <location filename="../ui/t55xxtab.ui" line="80"/> | ||||||
|  |         <source>Clone</source> | ||||||
|  |         <translation>复制</translation> | ||||||
|  |     </message> | ||||||
|  | </context> | ||||||
| </TS> | </TS> | ||||||
|  | |||||||
| @ -154,5 +154,4 @@ void LF::syncWithUI() | |||||||
| void LF::setConfigMap(const QVariantMap& configMap) | void LF::setConfigMap(const QVariantMap& configMap) | ||||||
| { | { | ||||||
|     this->configMap = configMap; |     this->configMap = configMap; | ||||||
|     qDebug() << configMap; |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -91,7 +91,6 @@ Mifare::Mifare(Ui::MainWindow *ui, Util *addr, QWidget *parent): QObject(parent) | |||||||
| void Mifare::setConfigMap(const QVariantMap& configMap) | void Mifare::setConfigMap(const QVariantMap& configMap) | ||||||
| { | { | ||||||
|     this->configMap = configMap; |     this->configMap = configMap; | ||||||
|     qDebug() << configMap; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| QMap<QString, QString> Mifare::info(bool isRequiringOutput) | QMap<QString, QString> Mifare::info(bool isRequiringOutput) | ||||||
|  | |||||||
| @ -1,14 +1,68 @@ | |||||||
| #include "t55xxtab.h" | #include "t55xxtab.h" | ||||||
| #include "ui_t55xxtab.h" | #include "ui_t55xxtab.h" | ||||||
| 
 | 
 | ||||||
| T55xxTab::T55xxTab(QWidget *parent) : | T55xxTab::T55xxTab(Util *addr, QWidget *parent) : | ||||||
|     QWidget(parent), |     QWidget(parent), | ||||||
|     ui(new Ui::T55xxTab) |     ui(new Ui::T55xxTab) | ||||||
| { | { | ||||||
|     ui->setupUi(this); |     ui->setupUi(this); | ||||||
|  |     util = addr; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| T55xxTab::~T55xxTab() | T55xxTab::~T55xxTab() | ||||||
| { | { | ||||||
|     delete ui; |     delete ui; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void T55xxTab::setConfigMap(const QVariantMap &configMap) | ||||||
|  | { | ||||||
|  |     this->configMap = configMap; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void T55xxTab::setGUIState(bool st) | ||||||
|  | { | ||||||
|  |     ui->cloneGroupBox->setEnabled(st); | ||||||
|  |     emit setParentGUIState(st); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void T55xxTab::on_Clone_EM410xReadButton_clicked() | ||||||
|  | { | ||||||
|  |     setGUIState(false); | ||||||
|  | 
 | ||||||
|  |     QVariantMap config = configMap["clone em410x"].toMap(); | ||||||
|  |     QString result; | ||||||
|  |     QRegularExpressionMatch reMatch; | ||||||
|  | 
 | ||||||
|  |     result = util->execCMDWithOutput( | ||||||
|  |                  config["read"].toString(), | ||||||
|  |                  Util::ReturnTrigger(6000, {config["successful read flag"].toString()})); | ||||||
|  |     if(result.isEmpty()) | ||||||
|  |     { | ||||||
|  |         setGUIState(true); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |     reMatch = QRegularExpression(config["pattern"].toString()).match(result); | ||||||
|  |     ui->Clone_EM410xIDEdit->setText(reMatch.captured()); | ||||||
|  | 
 | ||||||
|  |     setGUIState(true); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void T55xxTab::on_Clone_EM410xCloneButton_clicked() | ||||||
|  | { | ||||||
|  |     if(ui->Clone_EM410xIDEdit->text().isEmpty()) | ||||||
|  |         return; | ||||||
|  |     setGUIState(false); | ||||||
|  | 
 | ||||||
|  |     QVariantMap config = configMap["clone em410x"].toMap(); | ||||||
|  |     QString cmd = config["clone cmd"].toString(); | ||||||
|  |     cmd.replace("<id>", ui->Clone_EM410xIDEdit->text()); | ||||||
|  |     if(ui->Clone_T5555Button->isChecked()) | ||||||
|  |         cmd.replace("<type>", config["t5555 flag"].toString()); | ||||||
|  |     else | ||||||
|  |         cmd.replace("<type>", config["t55x7 flag"].toString()); | ||||||
|  |     util->execCMD(cmd); | ||||||
|  |     Util::gotoRawTab(); | ||||||
|  | 
 | ||||||
|  |     setGUIState(true); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,9 +1,11 @@ | |||||||
| #ifndef T55XXTAB_H | #ifndef T55XXTAB_H | ||||||
| #define T55XXTAB_H | #define T55XXTAB_H | ||||||
| 
 | 
 | ||||||
|  | #include "common/util.h" | ||||||
| #include <QWidget> | #include <QWidget> | ||||||
| 
 | 
 | ||||||
| namespace Ui { | namespace Ui | ||||||
|  | { | ||||||
| class T55xxTab; | class T55xxTab; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -12,11 +14,23 @@ class T55xxTab : public QWidget | |||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     explicit T55xxTab(QWidget *parent = nullptr); |     explicit T55xxTab(Util *addr, QWidget *parent = nullptr); | ||||||
|     ~T55xxTab(); |     ~T55xxTab(); | ||||||
| 
 | 
 | ||||||
|  |     void setConfigMap(const QVariantMap& configMap); | ||||||
|  | private slots: | ||||||
|  |     void on_Clone_EM410xReadButton_clicked(); | ||||||
|  | 
 | ||||||
|  |     void on_Clone_EM410xCloneButton_clicked(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     Ui::T55xxTab *ui; |     Ui::T55xxTab *ui; | ||||||
|  |     Util* util; | ||||||
|  |     QVariantMap configMap; | ||||||
|  | 
 | ||||||
|  |     void setGUIState(bool st); | ||||||
|  | signals: | ||||||
|  |     void setParentGUIState(bool st); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif // T55XXTAB_H
 | #endif // T55XXTAB_H
 | ||||||
|  | |||||||
| @ -39,13 +39,16 @@ MainWindow::MainWindow(QWidget *parent): | |||||||
|     Util::setUI(ui); |     Util::setUI(ui); | ||||||
|     mifare = new Mifare(ui, util, this); |     mifare = new Mifare(ui, util, this); | ||||||
|     lf = new LF(ui, util, this); |     lf = new LF(ui, util, this); | ||||||
|  |     t55xxTab = new T55xxTab(util); | ||||||
|  |     connect(t55xxTab, &T55xxTab::setParentGUIState, this, &MainWindow::setState); | ||||||
|  |     ui->funcTab->insertTab(2, t55xxTab, tr("T55xx")); | ||||||
| 
 | 
 | ||||||
|     keyEventFilter = new MyEventFilter(QEvent::KeyPress); |     keyEventFilter = new MyEventFilter(QEvent::KeyPress); | ||||||
|     resizeEventFilter = new MyEventFilter(QEvent::Resize); |     resizeEventFilter = new MyEventFilter(QEvent::Resize); | ||||||
| 
 | 
 | ||||||
|     // hide unused tabs
 |     // hide unused tabs
 | ||||||
| //    ui->funcTab->removeTab(1);
 | //    ui->funcTab->removeTab(1);
 | ||||||
|     ui->funcTab->removeTab(2); |     ui->funcTab->removeTab(3); | ||||||
| 
 | 
 | ||||||
|     portSearchTimer = new QTimer(this); |     portSearchTimer = new QTimer(this); | ||||||
|     portSearchTimer->setInterval(2000); |     portSearchTimer->setInterval(2000); | ||||||
| @ -85,7 +88,7 @@ void MainWindow::loadConfig() | |||||||
|     QJsonDocument configJson(QJsonDocument::fromJson(configData)); |     QJsonDocument configJson(QJsonDocument::fromJson(configData)); | ||||||
|     mifare->setConfigMap(configJson.object()["mifare classic"].toObject().toVariantMap()); |     mifare->setConfigMap(configJson.object()["mifare classic"].toObject().toVariantMap()); | ||||||
|     lf->setConfigMap(configJson.object()["lf"].toObject().toVariantMap()); |     lf->setConfigMap(configJson.object()["lf"].toObject().toVariantMap()); | ||||||
| 
 |     t55xxTab->setConfigMap(configJson.object()["t55xx"].toObject().toVariantMap()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::initUI() // will be called by main.app
 | void MainWindow::initUI() // will be called by main.app
 | ||||||
| @ -636,7 +639,7 @@ void MainWindow::on_MF_File_loadButton_clicked() | |||||||
| { | { | ||||||
|     QString title = ""; |     QString title = ""; | ||||||
|     QString filename = ""; |     QString filename = ""; | ||||||
|     if(ui->MF_File_dataBox->isChecked()) |     if(ui->MF_File_dataButton->isChecked()) | ||||||
|     { |     { | ||||||
|         title = tr("Plz select the data file:"); |         title = tr("Plz select the data file:"); | ||||||
|         filename = QFileDialog::getOpenFileName(this, title, "./", tr("Binary Data Files(*.bin *.dump)") + ";;" + tr("Text Data Files(*.txt *.eml)") + ";;" + tr("All Files(*.*)")); |         filename = QFileDialog::getOpenFileName(this, title, "./", tr("Binary Data Files(*.bin *.dump)") + ";;" + tr("Text Data Files(*.txt *.eml)") + ";;" + tr("All Files(*.*)")); | ||||||
| @ -649,7 +652,7 @@ void MainWindow::on_MF_File_loadButton_clicked() | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     else if(ui->MF_File_keyBox->isChecked()) |     else if(ui->MF_File_keyButton->isChecked()) | ||||||
|     { |     { | ||||||
|         title = tr("Plz select the key file:"); |         title = tr("Plz select the key file:"); | ||||||
|         filename = QFileDialog::getOpenFileName(this, title, "./", tr("Binary Key Files(*.bin *.dump)") + ";;" + tr("All Files(*.*)")); |         filename = QFileDialog::getOpenFileName(this, title, "./", tr("Binary Key Files(*.bin *.dump)") + ";;" + tr("All Files(*.*)")); | ||||||
| @ -676,7 +679,7 @@ void MainWindow::on_MF_File_saveButton_clicked() | |||||||
|         defaultName += "_"; |         defaultName += "_"; | ||||||
|     defaultName += QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss"); |     defaultName += QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss"); | ||||||
| 
 | 
 | ||||||
|     if(ui->MF_File_dataBox->isChecked()) |     if(ui->MF_File_dataButton->isChecked()) | ||||||
|     { |     { | ||||||
|         title = tr("Plz select the location to save data file:"); |         title = tr("Plz select the location to save data file:"); | ||||||
|         filename = QFileDialog::getSaveFileName(this, title, "./data_" + defaultName, tr("Binary Data Files(*.bin *.dump)") + ";;" + tr("Text Data Files(*.txt *.eml)"), &selectedType); |         filename = QFileDialog::getSaveFileName(this, title, "./data_" + defaultName, tr("Binary Data Files(*.bin *.dump)") + ";;" + tr("Text Data Files(*.txt *.eml)"), &selectedType); | ||||||
| @ -689,7 +692,7 @@ void MainWindow::on_MF_File_saveButton_clicked() | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     else if(ui->MF_File_keyBox->isChecked()) |     else if(ui->MF_File_keyButton->isChecked()) | ||||||
|     { |     { | ||||||
|         title = tr("Plz select the location to save key file:"); |         title = tr("Plz select the location to save key file:"); | ||||||
|         filename = QFileDialog::getSaveFileName(this, title, "./key_" + defaultName, tr("Binary Key Files(*.bin *.dump)"), &selectedType); |         filename = QFileDialog::getSaveFileName(this, title, "./key_" + defaultName, tr("Binary Key Files(*.bin *.dump)"), &selectedType); | ||||||
| @ -707,12 +710,12 @@ void MainWindow::on_MF_File_saveButton_clicked() | |||||||
| 
 | 
 | ||||||
| void MainWindow::on_MF_File_clearButton_clicked() | void MainWindow::on_MF_File_clearButton_clicked() | ||||||
| { | { | ||||||
|     if(ui->MF_File_keyBox->isChecked()) |     if(ui->MF_File_keyButton->isChecked()) | ||||||
|     { |     { | ||||||
|         mifare->data_clearKey(); |         mifare->data_clearKey(); | ||||||
|         mifare->data_syncWithKeyWidget(); |         mifare->data_syncWithKeyWidget(); | ||||||
|     } |     } | ||||||
|     else if(ui->MF_File_dataBox->isChecked()) |     else if(ui->MF_File_keyButton->isChecked()) | ||||||
|     { |     { | ||||||
|         mifare->data_clearData(); |         mifare->data_clearData(); | ||||||
|         mifare->data_syncWithDataWidget(); |         mifare->data_syncWithDataWidget(); | ||||||
|  | |||||||
| @ -31,6 +31,7 @@ | |||||||
| #include "common/pm3process.h" | #include "common/pm3process.h" | ||||||
| #include "module/mifare.h" | #include "module/mifare.h" | ||||||
| #include "module/lf.h" | #include "module/lf.h" | ||||||
|  | #include "module/t55xxtab.h" | ||||||
| #include "common/util.h" | #include "common/util.h" | ||||||
| #include "ui/mf_trailerdecoderdialog.h" | #include "ui/mf_trailerdecoderdialog.h" | ||||||
| 
 | 
 | ||||||
| @ -205,6 +206,7 @@ private slots: | |||||||
| 
 | 
 | ||||||
|     void on_Set_Client_configPathEdit_editingFinished(); |     void on_Set_Client_configPathEdit_editingFinished(); | ||||||
| 
 | 
 | ||||||
|  |     void setState(bool st); | ||||||
| private: | private: | ||||||
|     Ui::MainWindow* ui; |     Ui::MainWindow* ui; | ||||||
|     QButtonGroup* MFCardTypeBtnGroup; |     QButtonGroup* MFCardTypeBtnGroup; | ||||||
| @ -235,6 +237,7 @@ private: | |||||||
|     QStringList clientEnv; |     QStringList clientEnv; | ||||||
|     QDir* clientWorkingDir; |     QDir* clientWorkingDir; | ||||||
| 
 | 
 | ||||||
|  |     T55xxTab* t55xxTab; | ||||||
|     Mifare* mifare; |     Mifare* mifare; | ||||||
|     LF* lf; |     LF* lf; | ||||||
|     Util* util; |     Util* util; | ||||||
| @ -247,7 +250,6 @@ private: | |||||||
|     void signalInit(); |     void signalInit(); | ||||||
|     void MF_widgetReset(); |     void MF_widgetReset(); | ||||||
|     void setTableItem(QTableWidget *widget, int row, int column, const QString& text); |     void setTableItem(QTableWidget *widget, int row, int column, const QString& text); | ||||||
|     void setState(bool st); |  | ||||||
|     void saveClientPath(const QString& path); |     void saveClientPath(const QString& path); | ||||||
|     void onLFfreqConfChanged(int value, bool isCustomized); |     void onLFfreqConfChanged(int value, bool isCustomized); | ||||||
|     void dockInit(); |     void dockInit(); | ||||||
|  | |||||||
| @ -136,7 +136,7 @@ | |||||||
|        </sizepolicy> |        </sizepolicy> | ||||||
|       </property> |       </property> | ||||||
|       <property name="currentIndex"> |       <property name="currentIndex"> | ||||||
|        <number>2</number> |        <number>0</number> | ||||||
|       </property> |       </property> | ||||||
|       <widget class="QWidget" name="mifareTab"> |       <widget class="QWidget" name="mifareTab"> | ||||||
|        <attribute name="title"> |        <attribute name="title"> | ||||||
| @ -524,7 +524,7 @@ | |||||||
|               </widget> |               </widget> | ||||||
|              </item> |              </item> | ||||||
|              <item> |              <item> | ||||||
|               <widget class="QRadioButton" name="MF_File_dataBox"> |               <widget class="QRadioButton" name="MF_File_dataButton"> | ||||||
|                <property name="text"> |                <property name="text"> | ||||||
|                 <string>Data</string> |                 <string>Data</string> | ||||||
|                </property> |                </property> | ||||||
| @ -534,7 +534,7 @@ | |||||||
|               </widget> |               </widget> | ||||||
|              </item> |              </item> | ||||||
|              <item> |              <item> | ||||||
|               <widget class="QRadioButton" name="MF_File_keyBox"> |               <widget class="QRadioButton" name="MF_File_keyButton"> | ||||||
|                <property name="text"> |                <property name="text"> | ||||||
|                 <string>Key</string> |                 <string>Key</string> | ||||||
|                </property> |                </property> | ||||||
|  | |||||||
| @ -1,7 +1,5 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <ui version="4.0"> | <ui version="4.0"> | ||||||
|  <author/> |  | ||||||
|  <comment/> |  | ||||||
|  <exportmacro/> |  | ||||||
|  <class>T55xxTab</class> |  <class>T55xxTab</class> | ||||||
|  <widget class="QWidget" name="T55xxTab"> |  <widget class="QWidget" name="T55xxTab"> | ||||||
|   <property name="geometry"> |   <property name="geometry"> | ||||||
| @ -12,10 +10,98 @@ | |||||||
|     <height>300</height> |     <height>300</height> | ||||||
|    </rect> |    </rect> | ||||||
|   </property> |   </property> | ||||||
|   <property name="windowTitle"> |   <layout class="QVBoxLayout"> | ||||||
|    <string>Form</string> |    <item> | ||||||
|  |     <widget class="QGroupBox" name="cloneGroupBox"> | ||||||
|  |      <property name="title"> | ||||||
|  |       <string>Clone to T55xx</string> | ||||||
|  |      </property> | ||||||
|  |      <layout class="QVBoxLayout" name="verticalLayout"> | ||||||
|  |       <item> | ||||||
|  |        <layout class="QHBoxLayout" name="horizontalLayout_3"> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QLabel" name="label"> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>Target Type:</string> | ||||||
|           </property> |           </property> | ||||||
|          </widget> |          </widget> | ||||||
|  <pixmapfunction/> |         </item> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QRadioButton" name="Clone_T5555Button"> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>T5555</string> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |         <item> | ||||||
|  |          <widget class="QRadioButton" name="Clone_T55x7Button"> | ||||||
|  |           <property name="text"> | ||||||
|  |            <string>T55x7</string> | ||||||
|  |           </property> | ||||||
|  |           <property name="checked"> | ||||||
|  |            <bool>true</bool> | ||||||
|  |           </property> | ||||||
|  |          </widget> | ||||||
|  |         </item> | ||||||
|  |         <item> | ||||||
|  |          <spacer name="horizontalSpacer"> | ||||||
|  |           <property name="orientation"> | ||||||
|  |            <enum>Qt::Horizontal</enum> | ||||||
|  |           </property> | ||||||
|  |           <property name="sizeHint" stdset="0"> | ||||||
|  |            <size> | ||||||
|  |             <width>40</width> | ||||||
|  |             <height>20</height> | ||||||
|  |            </size> | ||||||
|  |           </property> | ||||||
|  |          </spacer> | ||||||
|  |         </item> | ||||||
|  |        </layout> | ||||||
|  |       </item> | ||||||
|  |       <item> | ||||||
|  |        <widget class="QGroupBox" name="Clone_EM410xGroupBox"> | ||||||
|  |         <property name="title"> | ||||||
|  |          <string>EM410x</string> | ||||||
|  |         </property> | ||||||
|  |         <layout class="QHBoxLayout" name="horizontalLayout"> | ||||||
|  |          <item> | ||||||
|  |           <widget class="QPushButton" name="Clone_EM410xReadButton"> | ||||||
|  |            <property name="text"> | ||||||
|  |             <string>Read</string> | ||||||
|  |            </property> | ||||||
|  |           </widget> | ||||||
|  |          </item> | ||||||
|  |          <item> | ||||||
|  |           <widget class="QLineEdit" name="Clone_EM410xIDEdit"/> | ||||||
|  |          </item> | ||||||
|  |          <item> | ||||||
|  |           <widget class="QPushButton" name="Clone_EM410xCloneButton"> | ||||||
|  |            <property name="text"> | ||||||
|  |             <string>Clone</string> | ||||||
|  |            </property> | ||||||
|  |           </widget> | ||||||
|  |          </item> | ||||||
|  |         </layout> | ||||||
|  |        </widget> | ||||||
|  |       </item> | ||||||
|  |      </layout> | ||||||
|  |     </widget> | ||||||
|  |    </item> | ||||||
|  |    <item> | ||||||
|  |     <spacer name="verticalSpacer"> | ||||||
|  |      <property name="orientation"> | ||||||
|  |       <enum>Qt::Vertical</enum> | ||||||
|  |      </property> | ||||||
|  |      <property name="sizeHint" stdset="0"> | ||||||
|  |       <size> | ||||||
|  |        <width>20</width> | ||||||
|  |        <height>40</height> | ||||||
|  |       </size> | ||||||
|  |      </property> | ||||||
|  |     </spacer> | ||||||
|  |    </item> | ||||||
|  |   </layout> | ||||||
|  |  </widget> | ||||||
|  |  <resources/> | ||||||
|  <connections/> |  <connections/> | ||||||
| </ui> | </ui> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 wh201906
						wh201906