├── .gitignore ├── LICENSE ├── README.md ├── apprts ├── .gitignore ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── BLANK(空白).dump │ ├── cmd.json │ ├── default_keys.txt │ ├── pm3_version.txt │ ├── proxmark3.zip │ ├── template_mifare_info_en.html │ └── template_tag_info_en.html │ ├── java │ └── com │ │ └── rfidresearchgroup │ │ ├── activities │ │ ├── chameleon │ │ │ └── ChameleonGUIActivity.java │ │ ├── connect │ │ │ ├── AbstractPN53XConnectActivity.java │ │ │ ├── Acr122uHkUsbConnectActivity.java │ │ │ ├── ChameleonUsb2UartConnectActivity.java │ │ │ ├── PN532UartConnectActivity.java │ │ │ ├── PN53XUsbBulkTransferActivity.java │ │ │ └── Proxmark3Rdv4RRGConnectActivity.java │ │ ├── main │ │ │ ├── AppMain.java │ │ │ ├── BaseActivity.java │ │ │ ├── GeneralNfcDeviceMain.java │ │ │ ├── PM3FlasherMainActivity.java │ │ │ ├── PN53XNfcMain.java │ │ │ └── PN53XReaderMain.java │ │ ├── proxmark3 │ │ │ └── rdv4_rrg │ │ │ │ ├── Proxmark3ConsoleActivity.java │ │ │ │ ├── Proxmark3NewTerminalInitActivity.java │ │ │ │ └── Proxmark3Rdv4RRGConsoleActivity.java │ │ ├── px53x │ │ │ └── PN53XConsoleActivity.java │ │ ├── standard │ │ │ └── AbsStandardM1Activity.java │ │ └── tools │ │ │ ├── AboutActicity.java │ │ │ ├── BaseConsoleActivity.java │ │ │ ├── ChameleonSoltAliasesActivity.java │ │ │ ├── DeviceConnectActivity.java │ │ │ ├── DumpEditActivity.java │ │ │ ├── DumpListActivity.java │ │ │ ├── FileListActivity.java │ │ │ ├── KeyFileEditActivity.java │ │ │ ├── KeyFileListActivity.java │ │ │ ├── LoginActivity.java │ │ │ └── Proxmark3FirmwareActivity.java │ │ ├── adapter │ │ ├── AbsResIdArrayAdapter.java │ │ ├── DevArrayAdapter.java │ │ ├── EasyBtnAdapter.java │ │ ├── FragmentListPagerAdapter.java │ │ └── MyViewPagerAdapter.java │ │ ├── application │ │ └── Properties.java │ │ ├── binder │ │ ├── BannerImageViewBinder.java │ │ ├── DeviceInfoViewBinder.java │ │ ├── FileInfoBinder.java │ │ ├── ItemCommonBinder.java │ │ ├── ItemSingleTextBean.java │ │ ├── ItemTextBinder.java │ │ ├── ItemToggleBinder.java │ │ └── TitleTextViewBinder.java │ │ ├── callback │ │ ├── ActionCallback.java │ │ ├── BaseCallback.java │ │ ├── ConnectCallback.java │ │ ├── ConnectFailedCtxCallback.java │ │ ├── DriverCallback.java │ │ ├── DumpCallback.java │ │ ├── FileReadLineCallback.java │ │ ├── FormatConvertCallback.java │ │ ├── InitNfcCallback.java │ │ ├── KeyFileCallbak.java │ │ ├── KeysAuthCallback.java │ │ ├── LoginCallback.java │ │ ├── ReaderCallback.java │ │ ├── TagInformationsCallback.java │ │ ├── TagStateCallback.java │ │ └── WriterCallback.java │ │ ├── driver │ │ └── StandardDriver.java │ │ ├── fragment │ │ ├── base │ │ │ ├── AppMainDevicesFragment.java │ │ │ └── BaseFragment.java │ │ ├── connect │ │ │ ├── DeviceConnectAllFragment.java │ │ │ ├── DeviceConnectBaseFragment.java │ │ │ ├── DeviceConnectFragment.java │ │ │ └── DeviceConnectNewFragment.java │ │ ├── init │ │ │ ├── InitFragment.java │ │ │ └── LoginFragment.java │ │ └── tools │ │ │ ├── AbsMfOperatesFragment.java │ │ │ ├── AbsShowInformationFragment.java │ │ │ ├── MainSettingsFragment.java │ │ │ ├── PN53XShowInformationFragment.java │ │ │ ├── PN53xMFRWOperateFragment.java │ │ │ ├── StandardMFRWOperateFragment.java │ │ │ ├── StandardShowInformationFragment.java │ │ │ └── ToolsAccessFragment.java │ │ ├── holder │ │ ├── BannerImageHolder.java │ │ └── ItemCommonViewHolder.java │ │ ├── implement │ │ └── TextWatcherImpl.java │ │ ├── javabean │ │ ├── BannerBean.java │ │ ├── DevBean.java │ │ ├── DeviceInfoBean.java │ │ ├── EasyCMDEntry.java │ │ ├── FileBean.java │ │ ├── ItemCommonBean.java │ │ ├── ItemTextBean.java │ │ ├── ItemToggleBean.java │ │ ├── M1Bean.java │ │ ├── M1KeyBean.java │ │ ├── TitleBean.java │ │ └── TitleTextBean.java │ │ ├── models │ │ ├── AbsStopableTask.java │ │ ├── AbsTagKeysCheckModel.java │ │ ├── AbsTagReadModel.java │ │ ├── AbsTagStateModel.java │ │ ├── AbsTagWriteModel.java │ │ ├── AbsUsb2UartModel.java │ │ ├── AbstractDeviceModel.java │ │ ├── AbstractSppDeviceModel.java │ │ ├── Acr122uUsbRawModel.java │ │ ├── ChameleonUsb2UartModel.java │ │ ├── DumpModel.java │ │ ├── FileReadLineModel.java │ │ ├── FormatConvertModel.java │ │ ├── KeyFileModel.java │ │ ├── PN532SppUartModel.java │ │ ├── PN532Usb2UartModel.java │ │ ├── PN53XInformationsModel.java │ │ ├── PN53XTagReadModel.java │ │ ├── PN53XTagStateModel.java │ │ ├── PN53XTagWriteModel.java │ │ ├── Proxmark3Rdv4SppModel.java │ │ ├── Proxmark3Rdv4UsbModel.java │ │ ├── StandardNFCDeviceModel.java │ │ ├── StandardNFCTagStateModel.java │ │ ├── StandardTagKeysCheckModel.java │ │ ├── StandardTagReadModel.java │ │ ├── StandardTagWriteModel.java │ │ ├── StdNfcInformationsModel.java │ │ └── UniversalBulkPN53XRawModel.java │ │ ├── presenter │ │ ├── AbsMFMagicCheckPresenter.java │ │ ├── AbsTagInformationsPresenter.java │ │ ├── AbsTagKeysCheckPresenter.java │ │ ├── AbsTagReadPresenter.java │ │ ├── AbsTagStatePresenter.java │ │ ├── AbsTagWritePresenter.java │ │ ├── BasePresenter.java │ │ ├── DeviceAttachPresenter.java │ │ ├── DeviceExistsPresenter.java │ │ ├── DevicePresenter.java │ │ ├── DumpPresenter.java │ │ ├── FileReadLinePresenter.java │ │ ├── FormatConvertPresenter.java │ │ ├── KeyFilePresenter.java │ │ ├── PN53XTagInformationsPresenter.java │ │ ├── PN53XTagKeysCheckModel.java │ │ ├── PN53XTagKeysCheckPresenter.java │ │ ├── PN53XTagReadPresenter.java │ │ ├── PN53XTagStatePresenter.java │ │ ├── PN53XTagWritePresenter.java │ │ ├── StandardMFMagicCheckPresenter.java │ │ ├── StandardTagInformationsPresenter.java │ │ ├── StandardTagKeysCheckPresenter.java │ │ ├── StandardTagReadPresenter.java │ │ ├── StandardTagStatePresenter.java │ │ ├── StandardTagWritePresenter.java │ │ └── TagKeysCheckPresenterImpl.java │ │ ├── settings │ │ ├── BaseSetting.java │ │ ├── ChameleonSlotAliasesSetting.java │ │ └── ChameleonSlotAliasesStatusSetting.java │ │ ├── util │ │ ├── Commons.java │ │ ├── DumpUtils.java │ │ ├── EasyBtnUtil.java │ │ ├── InitUtil.java │ │ ├── LineEqualUtil.java │ │ ├── Paths.java │ │ ├── Proxmark3Installer.java │ │ ├── UnionAction.java │ │ └── ZipUtils.java │ │ ├── view │ │ ├── BaseMvpView.java │ │ ├── DeviceAttachView.java │ │ ├── DeviceExistsView.java │ │ ├── DeviceView.java │ │ ├── DriverView.java │ │ ├── DumpEditotView.java │ │ ├── FileReadLineView.java │ │ ├── FormatConvertView.java │ │ ├── KeyFileView.java │ │ ├── MfKeysCheckView.java │ │ ├── TagInformationsView.java │ │ ├── TagReadView.java │ │ ├── TagStateView.java │ │ └── TagWriteView.java │ │ └── widget │ │ ├── MaterialAlertDialog.java │ │ └── ProDialog1.java │ └── res │ ├── anim │ ├── alpha_repeat_1_0.xml │ ├── fade_in.xml │ └── fade_out.xml │ ├── color │ └── color_state_menu_navi_main.xml │ ├── drawable-hdpi │ ├── acr122u.png │ ├── all.png │ ├── bg_border_blue.xml │ ├── bg_circular_auto_radius_16dp.xml │ ├── btn_selector_blue.xml │ ├── btn_selectot_white.xml │ ├── chameleon_rdv2.jpg │ ├── chong.png │ ├── clear.png │ ├── clear_blue.png │ ├── data.png │ ├── delete.xml │ ├── dev_blue.png │ ├── disclaimer_blue.png │ ├── discovery_1.xml │ ├── download.png │ ├── dump_delete.png │ ├── dump_equals.png │ ├── dump_extract.png │ ├── dxl_logo_128.png │ ├── edit.png │ ├── gradual.xml │ ├── gradual2.xml │ ├── guide_arrow.xml │ ├── hacker.xml │ ├── help_blue.png │ ├── ic_arrow_right_green_24dp.xml │ ├── ic_folder_yellow_56dp.xml │ ├── ic_off_green_38x28dp.xml │ ├── ic_on_green_38x28dp.xml │ ├── ic_save_black_24dp.xml │ ├── ic_unknow_black_56dp.xml │ ├── info.png │ ├── information.xml │ ├── key.xml │ ├── log.png │ ├── main_emulate.png │ ├── main_iterator.png │ ├── main_mfcuk.png │ ├── main_mfoc.png │ ├── main_nfclist.png │ ├── main_settings.png │ ├── main_union_key.png │ ├── main_write.png │ ├── mct.png │ ├── mf_rw_goto.png │ ├── mtools.png │ ├── new_add.png │ ├── nfctools.png │ ├── no_1.png │ ├── no_2.png │ ├── opera_515151.xml │ ├── phone_nfc_icon.png │ ├── pn532core.png │ ├── proxgrindlogo.png │ ├── qq.png │ ├── qq_group_blue.png │ ├── rdv4.png │ ├── rdv4_2.png │ ├── read_tag.xml │ ├── refresh.xml │ ├── rename.png │ ├── reset.png │ ├── rfid.png │ ├── rrglogo.png │ ├── rrglogo500.png │ ├── scanner.xml │ ├── sdcard.png │ ├── selector_shadow.xml │ ├── shape_bg_blue_600.xml │ ├── shape_bg_blue_800.xml │ ├── shape_bg_grey_200.xml │ ├── shape_bg_white_1000.xml │ ├── shape_radain_border.xml │ ├── share.png │ ├── simple_console_view_example.png │ ├── single.png │ ├── toggle_background_selector_off.xml │ ├── toggle_background_selector_on.xml │ ├── toggle_drawable_selector.xml │ ├── update_blue.png │ ├── upload.png │ ├── usb_connect.gif │ ├── wechat.png │ └── yes.png │ ├── drawable │ ├── bg_circular_grey_radius_16dp.xml │ ├── bg_circular_white_radius_16dp.xml │ ├── bg_circular_white_radius_5dp.xml │ ├── gradual_grey.xml │ ├── ic_add_black_24dp.xml │ ├── ic_home_grey_24dp.xml │ ├── ic_inbox_grey_24dp.xml │ ├── ic_keyboard_arrow_left_grey_24dp.xml │ ├── ic_menu.xml │ ├── ic_refresh_white_24dp.xml │ ├── ic_settings_grey_24dp.xml │ ├── ic_terminal.xml │ ├── ic_write_tag.xml │ └── termux_view_example.png │ ├── layout-land │ └── act_app_about.xml │ ├── layout │ ├── act_app_about.xml │ ├── act_app_devices.xml │ ├── act_app_main.xml │ ├── act_app_settings.xml │ ├── act_chameleon_main.xml │ ├── act_chameleon_slot_aliases.xml │ ├── act_common_tools.xml │ ├── act_console_layout.xml │ ├── act_device_connect.xml │ ├── act_dump_edit.xml │ ├── act_file_list.xml │ ├── act_keys_edit.xml │ ├── act_login_init.xml │ ├── act_login_main.xml │ ├── act_main_pn53x.xml │ ├── act_main_proxmark3_rdv4_rrg.xml │ ├── act_mf_main.xml │ ├── act_pm3_custom_flasher.xml │ ├── act_pm3_flasher.xml │ ├── act_pm3_terminal_init.xml │ ├── act_std_mf_main.xml │ ├── act_union_action.xml │ ├── dev_info.xml │ ├── dialog_materila_alert_dialog.xml │ ├── dialog_msg_layout.xml │ ├── dialog_working_msg.xml │ ├── dump_equal_result_item.xml │ ├── dump_sector_item.xml │ ├── easy_button_container.xml │ ├── file_select_init_list.xml │ ├── fragment_dev_connect.xml │ ├── fragment_login.xml │ ├── fragment_std_tag_information.xml │ ├── item_act_guide_banner1.xml │ ├── item_act_guide_banner2.xml │ ├── item_act_img_banner.xml │ ├── item_act_main_banner.xml │ ├── item_content_content.xml │ ├── item_content_text.xml │ ├── item_content_toggle.xml │ ├── item_device_info.xml │ ├── item_dialog_style1.xml │ ├── item_easy__btn.xml │ ├── item_file_info.xml │ ├── item_list_title.xml │ ├── item_title.xml │ ├── item_usb_device_connecting.xml │ └── mfdata_bean.xml │ ├── menu │ ├── act_main_menu.xml │ ├── activity_device_connect.xml │ ├── activity_dumpedt.xml │ ├── activity_keyedt.xml │ └── bottom_std_mf_changer.xml │ ├── values-en │ ├── arrays.xml │ └── strings.xml │ ├── values-v11 │ └── styles.xml │ ├── values-v14 │ └── styles.xml │ ├── values-v21 │ └── styles.xml │ ├── values-zh │ ├── arrays.xml │ └── strings.xml │ └── values │ ├── arrays.xml │ ├── color.xml │ ├── strings.xml │ ├── styles.xml │ └── tag_type_list.xml ├── build.gradle ├── githubsrc ├── PN532x173.png ├── acr122ux173.png ├── chameleonx173.png ├── phone_nfcx173.png ├── rdv4x173.png └── rfidx100.png ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── import-summary.txt ├── libcml ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── cn │ │ └── rfidresearchgroup │ │ └── chameleon │ │ ├── defined │ │ ├── BasicTypesCallback.java │ │ ├── ChameleonCMDSet.java │ │ ├── ChameleonClick.java │ │ ├── ChameleonRespSet.java │ │ ├── ChameleonSlot.java │ │ ├── ChameleonType.java │ │ ├── IChameleonExecutor.java │ │ └── ResultCallback.java │ │ ├── executor │ │ ├── ChameleonExecutor.java │ │ └── ExecutorImpl.java │ │ ├── javabean │ │ ├── DetectionDatas.java │ │ └── ResultBean.java │ │ ├── utils │ │ ├── CRC16_14443.java │ │ ├── ChameleonCMDStr.java │ │ ├── ChameleonDetection.java │ │ ├── ChameleonResult.java │ │ ├── ChameleonUtils.java │ │ ├── ChameleonVCUtil.java │ │ ├── DetectionResult.java │ │ └── KeyComparer.java │ │ └── xmodem │ │ ├── AbstractXModem.java │ │ ├── XModem1024.java │ │ └── XModem128.java │ └── res │ └── values │ └── strings.xml ├── libcom ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── namespace.txt ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── proxgrind │ │ ├── bulkio │ │ ├── BulkInputStream.java │ │ └── BulkOutputStream.java │ │ ├── com │ │ ├── AbsBluetoothSpp.java │ │ ├── AbsUsbBulkTransfer.java │ │ ├── Communication.java │ │ ├── DevCallback.java │ │ ├── DeviceChecker.java │ │ ├── DriverInterface.java │ │ ├── LocalComBridgeAdapter.java │ │ ├── SppHasBlock.java │ │ ├── SppNonBlock.java │ │ ├── UsbAcr122Raw.java │ │ ├── UsbBulkTransfer.java │ │ └── UsbSerialControl.java │ │ ├── devices │ │ └── EmptyDeivce.java │ │ └── utils │ │ ├── ContextContentProvider.java │ │ └── HexUtil.java │ └── res │ └── values │ └── strings.xml ├── libcrapto1 ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── CMakeLists.txt │ ├── crapto1.c │ ├── crypto1.c │ ├── include │ │ ├── crapto1.h │ │ └── crypto1.h │ └── main.c │ ├── java │ └── cn │ │ └── dxl │ │ └── crapto1 │ │ └── Crapto1.java │ └── res │ └── values │ └── strings.xml ├── libflasher ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── CMakeLists.txt │ ├── client │ │ ├── comms.c │ │ ├── comms.h │ │ ├── elf.h │ │ ├── fileutils.c │ │ ├── fileutils.h │ │ ├── flash.c │ │ ├── flash.h │ │ ├── mifare │ │ │ ├── mad.c │ │ │ ├── mad.h │ │ │ ├── mfkey.c │ │ │ ├── mfkey.h │ │ │ ├── mifare4.c │ │ │ ├── mifare4.h │ │ │ ├── mifaredefault.c │ │ │ ├── mifaredefault.h │ │ │ ├── mifarehost.c │ │ │ ├── mifarehost.h │ │ │ ├── ndef.c │ │ │ └── ndef.h │ │ ├── proxendian.h │ │ ├── proxmark3.c │ │ ├── proxmark3.h │ │ ├── tools.c │ │ ├── tools.h │ │ ├── uart │ │ │ ├── README.md │ │ │ ├── uart.h │ │ │ ├── uart_posix.c │ │ │ └── uart_win32.c │ │ ├── ui.c │ │ ├── ui.h │ │ ├── util.c │ │ └── util.h │ ├── common │ │ ├── bucketsort.c │ │ ├── bucketsort.h │ │ ├── commonutil.c │ │ ├── commonutil.h │ │ ├── crc.c │ │ ├── crc.h │ │ ├── crc16.c │ │ ├── crc16.h │ │ ├── crc32.c │ │ ├── crc32.h │ │ ├── crc64.c │ │ ├── crc64.h │ │ ├── parity.c │ │ ├── parity.h │ │ ├── util_posix.c │ │ └── util_posix.h │ └── include │ │ ├── ansi.h │ │ ├── at91sam7s512.h │ │ ├── common.h │ │ ├── config_gpio.h │ │ ├── hitag.h │ │ ├── legic.h │ │ ├── mifare.h │ │ ├── pm3_cmd.h │ │ ├── pmflash.h │ │ ├── protocols.h │ │ ├── proxmark3_arm.h │ │ └── usart_defs.h │ └── java │ └── com │ └── rfidresearchgroup │ └── pm3flasher │ ├── Proxmark3Flasher.java │ └── Target.java ├── libmfkey ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── CMakeLists.txt │ ├── at91sam7s512.h │ ├── bucketsort.c │ ├── bucketsort.h │ ├── common.h │ ├── crapto1.c │ ├── crapto1.h │ ├── crypto1.c │ ├── mfkey.c │ ├── mfkey.h │ ├── mfkey32.c │ ├── mfkey32v2.c │ ├── mfkey64.c │ ├── mifare.h │ ├── parity.c │ ├── parity.h │ ├── tools.c │ ├── tools.h │ ├── util_posix.c │ └── util_posix.h │ ├── java │ └── cn │ │ └── dxl │ │ └── mfkey │ │ ├── MfKey32.java │ │ ├── NativeMfKey32.java │ │ ├── NativeMfKey32V2.java │ │ ├── NativeMfKey64.java │ │ ├── Nonce32.java │ │ └── Nonce64.java │ └── res │ └── values │ └── strings.xml ├── libnfc ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── CMakeLists.txt │ ├── check │ │ ├── CMakeLists.txt │ │ ├── check.c │ │ ├── crapto1.c │ │ ├── crapto1.h │ │ └── crypto1.c │ ├── libnfc │ │ ├── CMakeLists.txt │ │ ├── buses │ │ │ ├── com.h │ │ │ ├── com_uart.c │ │ │ └── uart_posix.c │ │ ├── chips │ │ │ ├── pn53x-internal.h │ │ │ ├── pn53x.c │ │ │ └── pn53x.h │ │ ├── conf.c │ │ ├── drivers │ │ │ ├── acr122_usb.c │ │ │ ├── acr122_usb.h │ │ │ ├── pn532_uart.c │ │ │ ├── pn532_uart.h │ │ │ ├── pn53x_usb.c │ │ │ └── pn53x_usb.h │ │ ├── include │ │ │ ├── conf.h │ │ │ ├── config.h │ │ │ ├── drivers.h │ │ │ ├── iso7816.h │ │ │ ├── log-internal.h │ │ │ ├── log.h │ │ │ ├── mirror-subr.h │ │ │ ├── nfc-internal.h │ │ │ ├── nfc │ │ │ │ ├── nfc-emulation.h │ │ │ │ ├── nfc-types.h │ │ │ │ ├── nfc-utils.h │ │ │ │ └── nfc.h │ │ │ ├── target-subr.h │ │ │ ├── tools.h │ │ │ └── uart.h │ │ ├── iso14443-subr.c │ │ ├── log-internal.c │ │ ├── log-printf.c │ │ ├── log.c │ │ ├── mirror-subr.c │ │ ├── nfc-device.c │ │ ├── nfc-emulation.c │ │ ├── nfc-internal.c │ │ ├── nfc-utils.c │ │ ├── nfc.c │ │ ├── target-subr.c │ │ └── tools.c │ ├── mfclassic │ │ ├── CMakeLists.txt │ │ ├── include │ │ │ └── mifare.h │ │ ├── mfclassic.c │ │ └── mifare.c │ ├── mfoc │ │ ├── CMakeLists.txt │ │ ├── crapto1.c │ │ ├── crapto1.h │ │ ├── crypto1.c │ │ ├── mfoc.c │ │ ├── mfoc.h │ │ ├── mifare.c │ │ ├── mifare.h │ │ ├── nfc-utils.c │ │ ├── nfc-utils.h │ │ ├── slre.c │ │ └── slre.h │ └── pn53x │ │ ├── CMakeLists.txt │ │ └── test.c │ ├── java │ └── com │ │ └── rfidresearchgroup │ │ ├── devices │ │ └── PN53X.java │ │ ├── natives │ │ ├── PN53XTagLeaksAdapter.java │ │ └── SpclMf.java │ │ └── utils │ │ └── HexUtil.java │ └── res │ └── values │ └── strings.xml ├── libpm3 ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── jniLibs │ ├── arm64-v8a │ └── libpm3rrg_cmd.so │ ├── armeabi-v7a │ └── libpm3rrg_cmd.so │ ├── x86 │ └── libpm3rrg_cmd.so │ └── x86_64 │ └── libpm3rrg_cmd.so ├── libtag ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── rfidresearchgroup │ │ └── mifare │ │ ├── BatchAdapter.java │ │ ├── HardNestedAdapter.java │ │ ├── MifareAdapter.java │ │ ├── MifareClassicUtils.java │ │ ├── NestedAdapter.java │ │ ├── NfcTagListenUtils.java │ │ ├── PRNGAdapter.java │ │ ├── StdMifareImpl.java │ │ ├── StdMifareIntent.java │ │ ├── TagLeaksAdapter.java │ │ └── TestTaskAdapter.java │ └── res │ ├── values-zh │ └── strings.xml │ └── values │ └── strings.xml ├── libutils ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── rfidresearchgroup │ │ └── common │ │ ├── activities │ │ └── CrashActivity.java │ │ ├── application │ │ └── App.java │ │ ├── implement │ │ ├── AnimationListenerImpl.java │ │ ├── DialogOnclickListenerImpl.java │ │ ├── ItemSelectedListenerImpl.java │ │ ├── OnPageChangeListenerImpl.java │ │ └── PermissionCallback.java │ │ ├── interfaces │ │ ├── OnTouchListener.java │ │ └── RegexCommon.java │ │ ├── services │ │ └── RestartService.java │ │ ├── util │ │ ├── AesUtils.java │ │ ├── AppUtil.java │ │ ├── ArrayUtils.java │ │ ├── AssetsUtil.java │ │ ├── CRC16.java │ │ ├── ContextUtil.java │ │ ├── CountDownTask.java │ │ ├── CrashUtil.java │ │ ├── DiskKVUtil.java │ │ ├── DisplayUtil.java │ │ ├── DynamicLineParseUtil.java │ │ ├── FileUtils.java │ │ ├── FragmentUtil.java │ │ ├── HexUtil.java │ │ ├── IOUtils.java │ │ ├── LanguageUtil.java │ │ ├── LogUtils.java │ │ ├── NetworkUtil.java │ │ ├── PermissionUtil.java │ │ ├── RSAUtil.java │ │ ├── RegexGroupUtil.java │ │ ├── RestartUtils.java │ │ ├── RomUtils.java │ │ ├── SpinnerInitState.java │ │ ├── StatusBarUtil.java │ │ ├── StringUtil.java │ │ ├── SystemBarTintManager.java │ │ ├── SystemUtils.java │ │ ├── TextStyleUtil.java │ │ ├── VibratorUtils.java │ │ └── ViewUtil.java │ │ └── widget │ │ ├── AdditionSubtractionView.java │ │ ├── DoubleInputDialog.java │ │ ├── EditTextWithDelete.java │ │ ├── FilesSelectorDialog.java │ │ ├── FillParentWidthDialog.java │ │ ├── HtmlTextButton.java │ │ ├── OvalImageView.java │ │ ├── SingleInputDialog.java │ │ ├── StatusBarHeightView.java │ │ ├── StatusPenddingView.java │ │ ├── ToastUtil.java │ │ └── ViewPagerSlide.java │ └── res │ ├── drawable │ ├── btn_selector_blue.xml │ ├── delete.xml │ ├── file_directory.png │ ├── file_file.png │ ├── file_icon.png │ ├── file_select.png │ ├── shape_bg_blue_600.xml │ └── shape_bg_blue_800.xml │ ├── layout │ ├── act_crash_main.xml │ ├── double_input_dialog.xml │ ├── file_selector.xml │ ├── file_selector_info.xml │ ├── item_dialog_single_input.xml │ ├── view_h_line.xml │ └── view_v_line.xml │ ├── values-en │ └── strings.xml │ ├── values-zh │ └── strings.xml │ ├── values │ ├── attrs.xml │ ├── color.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ ├── device_filter.xml │ ├── file_paths.xml │ └── nfc_filter.xml ├── settings.gradle ├── terminal-emulator ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── termux │ │ └── terminal │ │ ├── ByteQueue.java │ │ ├── EmulatorDebug.java │ │ ├── JNI.java │ │ ├── KeyHandler.java │ │ ├── TerminalBuffer.java │ │ ├── TerminalColorScheme.java │ │ ├── TerminalColors.java │ │ ├── TerminalEmulator.java │ │ ├── TerminalOutput.java │ │ ├── TerminalRow.java │ │ ├── TerminalSession.java │ │ ├── TextStyle.java │ │ └── WcWidth.java │ └── jni │ ├── Android.mk │ └── termux.c ├── terminal-view ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── termux │ │ └── view │ │ ├── GestureAndScaleRecognizer.java │ │ ├── TerminalRenderer.java │ │ ├── TerminalView.java │ │ └── TerminalViewClient.java │ └── res │ ├── drawable │ ├── text_select_handle_left_material.xml │ └── text_select_handle_right_material.xml │ ├── values-zh │ └── strings.xml │ └── values │ └── strings.xml ├── termux-app ├── build.gradle ├── dev_keystore.jks ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── termux │ │ ├── app │ │ ├── BackgroundJob.java │ │ ├── BellUtil.java │ │ ├── DialogUtils.java │ │ ├── ExtraKeysInfos.java │ │ ├── ExtraKeysView.java │ │ ├── RunCommandService.java │ │ ├── TermuxActivity.java │ │ ├── TermuxHelpActivity.java │ │ ├── TermuxInstaller.java │ │ ├── TermuxOpenReceiver.java │ │ ├── TermuxPreferences.java │ │ ├── TermuxService.java │ │ └── TermuxViewClient.java │ │ └── filepicker │ │ ├── TermuxDocumentsProvider.java │ │ └── TermuxFileReceiverActivity.java │ └── res │ ├── drawable-anydpi-v26 │ └── ic_launcher.xml │ ├── drawable │ ├── banner.png │ ├── current_session.xml │ ├── current_session_black.xml │ ├── ic_foreground.xml │ ├── ic_launcher.xml │ ├── ic_new_session.xml │ ├── ic_service_notification.xml │ ├── selected_session_background.xml │ ├── selected_session_background_black.xml │ ├── session_ripple.xml │ ├── session_ripple_black.xml │ └── terminal_scroll_shape.xml │ ├── layout │ ├── drawer_layout.xml │ ├── extra_keys_main.xml │ ├── extra_keys_right.xml │ └── line_in_drawer.xml │ ├── raw │ └── bell.ogg │ ├── values-zh │ └── strings.xml │ ├── values │ ├── strings.xml │ └── styles.xml │ └── xml │ └── shortcuts.xml └── update_note.txt /apprts/src/main/assets/pm3_version.txt: -------------------------------------------------------------------------------- 1 | 20201026_5 2 | 3 | pattern: *_* 4 | 5 | frist *: date 6 | second: number 7 | 8 | example: 20201026_1 9 | example: 20201026_2 10 | example: 20201027_1 -------------------------------------------------------------------------------- /apprts/src/main/assets/proxmark3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/assets/proxmark3.zip -------------------------------------------------------------------------------- /apprts/src/main/assets/template_tag_info_en.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Information 4 | 26 | 27 | 28 | 29 |

Not a Mifare Classic Tag

30 |

Generic Informations

31 |

UID:

32 |

${UID}

33 |

Technology:

34 |

${Tech}

35 |

ATQA:

36 |

${ATQA}

37 |

SAK:

38 |

${SAK}

39 |

ATS:

40 |

${ATS}

41 |

Type and Manufacturer:

42 |

${TM}

43 |

Type and Manufacturer might be wrong.

44 | 45 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/activities/connect/AbstractPN53XConnectActivity.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.activities.connect; 2 | 3 | import com.rfidresearchgroup.activities.main.PN53XNfcMain; 4 | import com.rfidresearchgroup.activities.tools.DeviceConnectActivity; 5 | import com.rfidresearchgroup.callback.ConnectFailedCtxCallback; 6 | import com.rfidresearchgroup.rfidtools.R; 7 | 8 | public abstract class AbstractPN53XConnectActivity extends DeviceConnectActivity { 9 | 10 | @Override 11 | public Class getTarget() { 12 | return PN53XNfcMain.class; 13 | } 14 | 15 | @Override 16 | public String getConnectingMsg() { 17 | return getString(R.string.msg_connect_common); 18 | } 19 | 20 | @Override 21 | public ConnectFailedCtxCallback getCallback() { 22 | return this; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/activities/connect/Acr122uHkUsbConnectActivity.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.activities.connect; 2 | 3 | import com.rfidresearchgroup.models.AbstractDeviceModel; 4 | import com.rfidresearchgroup.models.Acr122uUsbRawModel; 5 | import com.rfidresearchgroup.rfidtools.R; 6 | 7 | public class Acr122uHkUsbConnectActivity extends AbstractPN53XConnectActivity { 8 | 9 | @Override 10 | public AbstractDeviceModel[] getModels() { 11 | return new AbstractDeviceModel[]{ 12 | new Acr122uUsbRawModel() 13 | }; 14 | } 15 | 16 | @Override 17 | public String getConnectingMsg() { 18 | return getString(R.string.msg_connect_122u); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/activities/main/GeneralNfcDeviceMain.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.activities.main; 2 | 3 | import androidx.fragment.app.Fragment; 4 | 5 | import com.rfidresearchgroup.fragment.tools.StandardMFRWOperateFragment; 6 | import com.rfidresearchgroup.fragment.tools.StandardShowInformationFragment; 7 | import com.rfidresearchgroup.activities.standard.AbsStandardM1Activity; 8 | 9 | public class GeneralNfcDeviceMain extends AbsStandardM1Activity { 10 | @Override 11 | protected Fragment getInformatinFragment() { 12 | return new StandardShowInformationFragment(); 13 | } 14 | 15 | @Override 16 | protected Fragment getTagOperateFragment() { 17 | return new StandardMFRWOperateFragment(); 18 | } 19 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/activities/main/PN53XReaderMain.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.activities.main; 2 | 3 | import androidx.fragment.app.Fragment; 4 | 5 | import com.rfidresearchgroup.fragment.tools.PN53XShowInformationFragment; 6 | import com.rfidresearchgroup.fragment.tools.PN53xMFRWOperateFragment; 7 | import com.rfidresearchgroup.activities.standard.AbsStandardM1Activity; 8 | 9 | public class PN53XReaderMain extends AbsStandardM1Activity { 10 | 11 | @Override 12 | protected Fragment getInformatinFragment() { 13 | return new PN53XShowInformationFragment(); 14 | } 15 | 16 | @Override 17 | protected Fragment getTagOperateFragment() { 18 | return new PN53xMFRWOperateFragment(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/adapter/FragmentListPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.adapter; 2 | 3 | import androidx.fragment.app.Fragment; 4 | import androidx.fragment.app.FragmentManager; 5 | import androidx.fragment.app.FragmentPagerAdapter; 6 | 7 | import java.util.List; 8 | 9 | public class FragmentListPagerAdapter 10 | extends FragmentPagerAdapter { 11 | 12 | private List fragmentList; 13 | 14 | public FragmentListPagerAdapter(FragmentManager fm, List fragments) { 15 | super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); 16 | fragmentList = fragments; 17 | } 18 | 19 | @Override 20 | public Fragment getItem(int i) { 21 | return fragmentList.get(i); 22 | } 23 | 24 | @Override 25 | public int getCount() { 26 | return fragmentList.size(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/binder/ItemCommonBinder.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.binder; 2 | 3 | 4 | import androidx.annotation.NonNull; 5 | 6 | 7 | import com.rfidresearchgroup.holder.ItemCommonViewHolder; 8 | import com.rfidresearchgroup.javabean.ItemCommonBean; 9 | import me.drakeet.multitype.ItemViewBinder; 10 | 11 | public abstract class ItemCommonBinder 12 | extends ItemViewBinder { 13 | 14 | @Override 15 | protected void onBindViewHolder(@NonNull VH holder, @NonNull T item) { 16 | holder.imgIcon.setImageResource(item.getIconResID()); 17 | holder.txtTitle.setText(item.getTitle()); 18 | holder.txtSubTitle.setText(item.getSubTitle()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/ActionCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface ActionCallback { 4 | void onSuccess(S s); 5 | 6 | void onFail(F f); 7 | } 8 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/BaseCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface BaseCallback { 4 | 5 | interface ErrorCallback { 6 | void onError(T e); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/ConnectCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | import java.io.Serializable; 4 | 5 | public interface ConnectCallback extends Serializable { 6 | //连接成功时的回调 7 | void onConnectSucces(); 8 | 9 | //连接失败时的回调 10 | void onConnectFail(); 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/ConnectFailedCtxCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | import android.app.Activity; 4 | 5 | import java.io.Serializable; 6 | 7 | public interface ConnectFailedCtxCallback extends Serializable { 8 | void onFailed(Activity context); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/DriverCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface DriverCallback { 4 | interface DriverCheckCallback { 5 | void onCheckCur(String curDriver); 6 | } 7 | 8 | interface DriverChangeCallback { 9 | void onChangeSuccess(String newDriver); 10 | 11 | void onChangeFail(String msg); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/DumpCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface DumpCallback { 4 | /* 5 | * 在dump内容无误时的回调 6 | */ 7 | void showContents(String[] contents); 8 | 9 | /* 10 | * dump读取失败 11 | * */ 12 | void onFileException(); 13 | 14 | /* 15 | * dump格式错误! 16 | * */ 17 | void onFormatNoSupport(); 18 | 19 | /* 20 | * 成功后的回调 21 | * */ 22 | void onSuccess(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/FileReadLineCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface FileReadLineCallback { 4 | //读取完成的结果数组! 5 | void onReadFinish(String[] line); 6 | 7 | //读取失败的消息! 8 | void onReadFail(String msg); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/FormatConvertCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface FormatConvertCallback extends BaseCallback { 4 | 5 | //转换回调 6 | interface ConvertCallback { 7 | //转换成功后以字节返回 8 | void onConvertSuccess(byte[] result); 9 | 10 | //转换失败应当有消息 11 | void onConvertFail(String errorMsg); 12 | } 13 | 14 | //保存回调 15 | interface SaveCallback { 16 | //转换成功后以字节返回 17 | void onSaveSuccess(); 18 | 19 | //转换失败应当有消息 20 | void onSaveFail(String errorMsg); 21 | } 22 | 23 | //类型检测回调 24 | interface TypeCheckCallback { 25 | 26 | void isTxt(); 27 | 28 | void isBin(); 29 | 30 | void isNot(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/InitNfcCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface InitNfcCallback { 4 | void onInitSuccess(); 5 | 6 | void onInitFail(); 7 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/KeyFileCallbak.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface KeyFileCallbak { 4 | 5 | interface KeyFileReadCallbak { 6 | //密钥读取成功时的回调 7 | void onReadSuccess(String msg); 8 | 9 | //密钥读取失败时的回调 10 | void onReadFail(); 11 | } 12 | 13 | interface KeyFileWriteCallbak { 14 | //密钥写入成功时的回调 15 | void onWriteSuccess(String msg); 16 | 17 | //密钥写入失败时的回调 18 | void onWriteFail(); 19 | } 20 | 21 | interface KeyFileCreateCallback { 22 | void onCreateSuccess(); 23 | 24 | void onCreateFail(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/KeysAuthCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | import com.rfidresearchgroup.javabean.M1KeyBean; 4 | 5 | public interface KeysAuthCallback { 6 | // 标签异常 7 | void onTagAbnormal(); 8 | 9 | // 输入秘钥无效! 10 | void onKeysInvalid(); 11 | 12 | // 在验证的时候 13 | void onAuth(int sectorRemains); 14 | 15 | // 在秘钥轮询的时候 16 | void onKeys(String key); 17 | 18 | // 在验证完成时的结果回调! 19 | void onResults(M1KeyBean[] keyBeans); 20 | } 21 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/LoginCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface LoginCallback{ 4 | //在完成资源注册加载后返回权限码,后期根据权限码注册驱动 5 | void onFinish(); 6 | 7 | //在失败加载后返回类型,后期根据类型做处理! 8 | void onFail(); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/ReaderCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface ReaderCallback extends BaseCallback { 4 | //读取扇区成功后的结果回调 5 | void onSuccess(T t); 6 | 7 | void onTagAbnormal(); 8 | } 9 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/TagInformationsCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface TagInformationsCallback { 4 | //显示信息是以什么格式传入到上层的! 5 | void onInformationsShow(T t); 6 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/TagStateCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | /** 4 | * 标签状态回调视图 5 | */ 6 | public interface TagStateCallback { 7 | // 标签异常 8 | void onTagAbnormal(); 9 | 10 | // 标签普通 11 | void onTagOrdinary(); 12 | 13 | // 标签特殊 14 | void onTagSpecial(); 15 | } 16 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/callback/WriterCallback.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.callback; 2 | 3 | public interface WriterCallback extends BaseCallback { 4 | void onFinish(); 5 | 6 | void onDataInvalid(); 7 | 8 | void onTagAbnormal(); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/fragment/tools/PN53XShowInformationFragment.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.fragment.tools; 2 | 3 | import com.rfidresearchgroup.presenter.AbsTagInformationsPresenter; 4 | import com.rfidresearchgroup.presenter.PN53XTagInformationsPresenter; 5 | 6 | public class PN53XShowInformationFragment extends AbsShowInformationFragment { 7 | @Override 8 | protected AbsTagInformationsPresenter getPresenter() { 9 | return new PN53XTagInformationsPresenter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/fragment/tools/StandardShowInformationFragment.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.fragment.tools; 2 | 3 | import com.rfidresearchgroup.presenter.AbsTagInformationsPresenter; 4 | import com.rfidresearchgroup.presenter.StandardTagInformationsPresenter; 5 | 6 | public class StandardShowInformationFragment extends AbsShowInformationFragment { 7 | @Override 8 | protected AbsTagInformationsPresenter getPresenter() { 9 | //使用的是标准的设备获得到的标签信息! 10 | return new StandardTagInformationsPresenter(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/holder/BannerImageHolder.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.holder; 2 | 3 | import android.view.View; 4 | 5 | import com.bumptech.glide.Glide; 6 | import com.rfidresearchgroup.rfidtools.R; 7 | import com.zhpan.bannerview.holder.ViewHolder; 8 | 9 | import com.rfidresearchgroup.common.widget.OvalImageView; 10 | import com.rfidresearchgroup.javabean.BannerBean; 11 | 12 | public class BannerImageHolder implements ViewHolder { 13 | @Override 14 | public int getLayoutId() { 15 | return R.layout.item_act_img_banner; 16 | } 17 | 18 | @Override 19 | public void onBind(View itemView, BannerBean data, int position, int size) { 20 | OvalImageView imageView = itemView.findViewById(R.id.imgView_Banner); 21 | // 加载进IV中 22 | Glide.with(itemView.getContext()).load(data.getImgRes()).into(imageView); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/holder/ItemCommonViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.holder; 2 | 3 | import android.view.View; 4 | import android.widget.ImageView; 5 | import android.widget.TextView; 6 | 7 | import androidx.annotation.NonNull; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import com.rfidresearchgroup.rfidtools.R; 11 | 12 | public class ItemCommonViewHolder extends RecyclerView.ViewHolder { 13 | public TextView txtTitle; 14 | public TextView txtSubTitle; 15 | public ImageView imgIcon; 16 | 17 | public ItemCommonViewHolder(@NonNull View itemView) { 18 | super(itemView); 19 | txtTitle = itemView.findViewById(R.id.txtMainTitle); 20 | txtSubTitle = itemView.findViewById(R.id.txtSubTitle); 21 | imgIcon = itemView.findViewById(R.id.imgIcon); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/implement/TextWatcherImpl.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.implement; 2 | 3 | import android.text.Editable; 4 | import android.text.TextWatcher; 5 | 6 | public class TextWatcherImpl implements TextWatcher { 7 | @Override 8 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 9 | 10 | } 11 | 12 | @Override 13 | public void onTextChanged(CharSequence s, int start, int before, int count) { 14 | 15 | } 16 | 17 | @Override 18 | public void afterTextChanged(Editable s) { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/BannerBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | public class BannerBean { 4 | private BannerBean[] subs; 5 | private String imgRes; 6 | 7 | public BannerBean() { 8 | } 9 | 10 | public BannerBean(BannerBean[] subs, String imgRes) { 11 | this.subs = subs; 12 | this.imgRes = imgRes; 13 | } 14 | 15 | public BannerBean(BannerBean[] subs) { 16 | this.subs = subs; 17 | } 18 | 19 | public BannerBean(String imgRes) { 20 | this.imgRes = imgRes; 21 | } 22 | 23 | public BannerBean[] getSubs() { 24 | return subs; 25 | } 26 | 27 | public void setSubs(BannerBean[] subs) { 28 | this.subs = subs; 29 | } 30 | 31 | public String getImgRes() { 32 | return imgRes; 33 | } 34 | 35 | public void setImgRes(String imgRes) { 36 | this.imgRes = imgRes; 37 | } 38 | 39 | public void onClick() { 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/DevBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Created by DXL on 2017/11/14. 7 | */ 8 | public class DevBean implements Serializable { 9 | 10 | private String devName; 11 | private String macAddress; 12 | 13 | public DevBean(String name, String addr) { 14 | this.devName = name; 15 | this.macAddress = addr; 16 | } 17 | 18 | public String getDevName() { 19 | return devName; 20 | } 21 | 22 | public String getMacAddress() { 23 | return macAddress; 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "DevBean{" + 29 | "devName='" + devName + '\'' + 30 | ", macAddress='" + macAddress + '\'' + 31 | '}'; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/DeviceInfoBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | import androidx.annotation.DrawableRes; 4 | import androidx.annotation.NonNull; 5 | 6 | public class DeviceInfoBean { 7 | @NonNull 8 | private String name; 9 | @DrawableRes 10 | private int icon; 11 | private boolean enable = true; 12 | 13 | public DeviceInfoBean(@NonNull String name, int icon) { 14 | this.name = name; 15 | this.icon = icon; 16 | } 17 | 18 | @NonNull 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(@NonNull String name) { 24 | this.name = name; 25 | } 26 | 27 | public int getIcon() { 28 | return icon; 29 | } 30 | 31 | public void setIcon(int icon) { 32 | this.icon = icon; 33 | } 34 | 35 | public boolean isEnable() { 36 | return enable; 37 | } 38 | 39 | public void setEnable(boolean enable) { 40 | this.enable = enable; 41 | } 42 | 43 | public void onClick() { 44 | } 45 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/EasyCMDEntry.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | /** 4 | * 组织命令与其名字对应的实体! 5 | * 6 | * @author DXL 7 | */ 8 | public class EasyCMDEntry { 9 | //命令标志 10 | private String cmdName; 11 | //命令内容 12 | private String command; 13 | 14 | public String getCmdName() { 15 | return cmdName; 16 | } 17 | 18 | public EasyCMDEntry setCmdName(String cmdName) { 19 | this.cmdName = cmdName; 20 | return this; 21 | } 22 | 23 | public String getCommand() { 24 | return command; 25 | } 26 | 27 | public EasyCMDEntry setCommand(String command) { 28 | this.command = command; 29 | return this; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/ItemCommonBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | import android.view.View; 4 | 5 | public class ItemCommonBean extends TitleBean { 6 | private String subTitle = ""; 7 | private int iconResID; 8 | 9 | public ItemCommonBean(String title) { 10 | super(title); 11 | } 12 | 13 | public String getSubTitle() { 14 | return subTitle; 15 | } 16 | 17 | public void setSubTitle(String subTitle) { 18 | this.subTitle = subTitle; 19 | } 20 | 21 | public int getIconResID() { 22 | return iconResID; 23 | } 24 | 25 | public void setIconResID(int iconResID) { 26 | this.iconResID = iconResID; 27 | } 28 | 29 | public void onClick(View view, int pos) { 30 | } 31 | 32 | public void onChange(View view, int pos, boolean checked) { 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/ItemTextBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | public class ItemTextBean extends ItemCommonBean { 4 | private String message; 5 | 6 | public ItemTextBean(String title) { 7 | super(title); 8 | } 9 | 10 | public String getMessage() { 11 | return message; 12 | } 13 | 14 | public void setMessage(String message) { 15 | this.message = message; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/ItemToggleBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | public class ItemToggleBean extends ItemCommonBean { 4 | private boolean checked; 5 | 6 | public ItemToggleBean(String title) { 7 | super(title); 8 | } 9 | 10 | public boolean isChecked() { 11 | return checked; 12 | } 13 | 14 | public void setChecked(boolean checked) { 15 | this.checked = checked; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/M1KeyBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | /* 4 | * 这个bean是用来存放验证完成后的key 5 | */ 6 | public class M1KeyBean { 7 | //扇区号 8 | private int sector; 9 | 10 | //ab密钥 11 | private String keyA; 12 | private String keyB; 13 | 14 | public int getSector() { 15 | return sector; 16 | } 17 | 18 | public void setSector(int sector) { 19 | this.sector = sector; 20 | } 21 | 22 | public String getKeyA() { 23 | return keyA; 24 | } 25 | 26 | public void setKeyA(String keyA) { 27 | this.keyA = keyA; 28 | } 29 | 30 | public String getKeyB() { 31 | return keyB; 32 | } 33 | 34 | public void setKeyB(String keyB) { 35 | this.keyB = keyB; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/TitleBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | public class TitleBean { 4 | private String title = ""; 5 | 6 | public TitleBean(String title) { 7 | this.title = title; 8 | } 9 | 10 | public String getTitle() { 11 | return title; 12 | } 13 | 14 | public void setTitle(String title) { 15 | this.title = title; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "TitleBean{" + 21 | "title='" + title + '\'' + 22 | '}'; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/javabean/TitleTextBean.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.javabean; 2 | 3 | public class TitleTextBean { 4 | private String title; 5 | 6 | public TitleTextBean(String title) { 7 | this.title = title; 8 | } 9 | 10 | public String getTitle() { 11 | return title; 12 | } 13 | 14 | public void setTitle(String title) { 15 | this.title = title; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/AbsStopableTask.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | public abstract class AbsStopableTask { 4 | // 停止标志! 5 | protected boolean stopLable = false; 6 | 7 | public void stop() { 8 | stopLable = true; 9 | } 10 | 11 | public void reset() { 12 | stopLable = false; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/AbsTagStateModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.callback.TagStateCallback; 4 | 5 | public abstract class AbsTagStateModel { 6 | public void check(TagStateCallback callback) { 7 | new Thread(new Runnable() { 8 | @Override 9 | public void run() { 10 | if (checkTagState()) { 11 | if (checkTagMagic()) 12 | callback.onTagSpecial(); //标签特殊 13 | else 14 | callback.onTagOrdinary(); //标签普通 15 | } else 16 | callback.onTagAbnormal(); //标签异常 17 | } 18 | }).start(); 19 | } 20 | 21 | protected abstract boolean checkTagState(); 22 | 23 | protected abstract boolean checkTagMagic(); 24 | } 25 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/FileReadLineModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import com.rfidresearchgroup.common.util.FileUtils; 7 | import com.rfidresearchgroup.callback.FileReadLineCallback; 8 | 9 | public class FileReadLineModel { 10 | 11 | /* 12 | * 读取文件以行,以回调结束! 13 | * */ 14 | public static void readFile(File file, FileReadLineCallback callback) { 15 | new Thread(new Runnable() { 16 | @Override 17 | public void run() { 18 | try { 19 | String[] ret = FileUtils.readLines(file); 20 | callback.onReadFinish(ret); 21 | } catch (IOException e) { 22 | e.printStackTrace(); 23 | callback.onReadFail(e.getMessage()); 24 | } 25 | } 26 | }).start(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/PN532SppUartModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import android.bluetooth.BluetoothAdapter; 4 | import android.bluetooth.BluetoothDevice; 5 | 6 | import com.proxgrind.com.DeviceChecker; 7 | 8 | import com.proxgrind.com.DriverInterface; 9 | import com.proxgrind.com.SppHasBlock; 10 | import com.rfidresearchgroup.devices.PN53X; 11 | 12 | /* 13 | * PN53X连接实现! 14 | * */ 15 | public class PN532SppUartModel extends AbstractSppDeviceModel { 16 | @Override 17 | public DriverInterface getDriverInterface() { 18 | return SppHasBlock.get(); 19 | } 20 | 21 | @Override 22 | public DeviceChecker getDeviceInitImpl() { 23 | return new PN53X(PN53X.NAME.PN532, mDI); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/PN532Usb2UartModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.proxgrind.com.DeviceChecker; 4 | 5 | import com.rfidresearchgroup.devices.PN53X; 6 | 7 | public class PN532Usb2UartModel extends AbsUsb2UartModel { 8 | @Override 9 | public DeviceChecker getDeviceInitImpl() { 10 | return new PN53X(PN53X.NAME.PN532, mDI); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/PN53XTagReadModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.mifare.MifareAdapter; 4 | import com.rfidresearchgroup.natives.SpclMf; 5 | 6 | public class PN53XTagReadModel extends AbsTagReadModel { 7 | @Override 8 | protected MifareAdapter getTag() { 9 | return SpclMf.get(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/PN53XTagStateModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.natives.SpclMf; 4 | 5 | public class PN53XTagStateModel extends AbsTagStateModel { 6 | private SpclMf spclMf = SpclMf.get(); 7 | 8 | @Override 9 | protected boolean checkTagState() { 10 | if (spclMf.scanning()) { 11 | return spclMf.connect(); 12 | } else { 13 | return false; 14 | } 15 | } 16 | 17 | @Override 18 | protected boolean checkTagMagic() { 19 | if (!spclMf.scanning()) return false; 20 | if (spclMf.connect()) return spclMf.unlock(); 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/PN53XTagWriteModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.mifare.MifareAdapter; 4 | import com.rfidresearchgroup.natives.SpclMf; 5 | 6 | public class PN53XTagWriteModel extends AbsTagWriteModel { 7 | @Override 8 | protected MifareAdapter getTag() { 9 | return SpclMf.get(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/Proxmark3Rdv4SppModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import android.bluetooth.BluetoothAdapter; 4 | import android.bluetooth.BluetoothDevice; 5 | 6 | import com.proxgrind.com.DeviceChecker; 7 | 8 | import java.io.IOException; 9 | 10 | import com.proxgrind.com.DriverInterface; 11 | import com.proxgrind.com.SppNonBlock; 12 | 13 | /* 14 | * PM3 RDV4 SPP连接实现! 15 | * */ 16 | public class Proxmark3Rdv4SppModel extends AbstractSppDeviceModel { 17 | 18 | @Override 19 | public DriverInterface getDriverInterface() { 20 | return SppNonBlock.get(); 21 | } 22 | 23 | @Override 24 | public DeviceChecker getDeviceInitImpl() { 25 | return new DeviceChecker(mDI) { 26 | @Override 27 | protected boolean checkDevice() throws IOException { 28 | return true; 29 | } 30 | 31 | @Override 32 | public void close() throws IOException { 33 | 34 | } 35 | }; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/Proxmark3Rdv4UsbModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.proxgrind.com.DeviceChecker; 4 | 5 | import java.io.IOException; 6 | 7 | public class Proxmark3Rdv4UsbModel extends AbsUsb2UartModel { 8 | @Override 9 | public DeviceChecker getDeviceInitImpl() { 10 | return new DeviceChecker(mDI) { 11 | @Override 12 | protected boolean checkDevice() throws IOException { 13 | return true; 14 | } 15 | 16 | @Override 17 | public void close() throws IOException { 18 | 19 | } 20 | }; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/StandardTagKeysCheckModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.mifare.MifareAdapter; 4 | import com.rfidresearchgroup.mifare.StdMifareImpl; 5 | 6 | public class StandardTagKeysCheckModel extends AbsTagKeysCheckModel { 7 | 8 | public StandardTagKeysCheckModel(KeyFilesCallback callback) { 9 | super(callback); 10 | } 11 | 12 | @Override 13 | public MifareAdapter getTag() { 14 | return StdMifareImpl.getInstance(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/StandardTagReadModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.mifare.MifareAdapter; 4 | import com.rfidresearchgroup.mifare.StdMifareImpl; 5 | 6 | public class StandardTagReadModel 7 | extends AbsTagReadModel { 8 | @Override 9 | protected MifareAdapter getTag() { 10 | return StdMifareImpl.getInstance(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/models/StandardTagWriteModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.models; 2 | 3 | import com.rfidresearchgroup.mifare.MifareAdapter; 4 | import com.rfidresearchgroup.mifare.StdMifareImpl; 5 | 6 | public class StandardTagWriteModel extends AbsTagWriteModel { 7 | @Override 8 | protected MifareAdapter getTag() { 9 | return StdMifareImpl.getInstance(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/AbsMFMagicCheckPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | /** 4 | * 魔术卡检测支持 5 | * 6 | * @author DXL 7 | */ 8 | public abstract class AbsMFMagicCheckPresenter 9 | extends BasePresenter { 10 | 11 | /* 12 | * 检测是否是魔术卡! 13 | * */ 14 | protected abstract boolean checkMagic(); 15 | } 16 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/AbsTagInformationsPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.view.TagInformationsView; 4 | 5 | public abstract class AbsTagInformationsPresenter 6 | extends BasePresenter> { 7 | 8 | public abstract void show(); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.view.BaseMvpView; 4 | 5 | public abstract class BasePresenter { 6 | 7 | protected String LOG_TAG = this.getClass().getSimpleName(); 8 | 9 | //中介者持有视图层的对象 10 | public V view = null; 11 | 12 | //优化中介类 13 | public void attachView(V view) { 14 | this.view = view; 15 | } 16 | 17 | public void detachView() { 18 | this.view = null; 19 | } 20 | 21 | public boolean isViewAttach() { 22 | return view != null; 23 | } 24 | 25 | public V getView() { 26 | return view; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/DeviceExistsPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbstractDeviceModel; 4 | import com.rfidresearchgroup.view.DeviceExistsView; 5 | 6 | public class DeviceExistsPresenter 7 | extends DevicePresenter { 8 | 9 | public DeviceExistsPresenter(AbstractDeviceModel model) { 10 | super(model); 11 | } 12 | 13 | //刷新已配对的设备List 14 | public void existsDevList() { 15 | if (isViewAttach()) { 16 | subView.showExistsDev(adm.getHistory()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagInformationsPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.callback.TagInformationsCallback; 4 | import com.rfidresearchgroup.models.PN53XInformationsModel; 5 | 6 | public class PN53XTagInformationsPresenter extends AbsTagInformationsPresenter { 7 | @Override 8 | public void show() { 9 | if (isViewAttach()) { 10 | new PN53XInformationsModel().collect(new TagInformationsCallback() { 11 | @Override 12 | public void onInformationsShow(CharSequence charSequence) { 13 | view.onInformationsShow(charSequence); 14 | } 15 | }); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagKeysCheckModel.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagKeysCheckModel; 4 | 5 | import com.rfidresearchgroup.mifare.MifareAdapter; 6 | import com.rfidresearchgroup.natives.SpclMf; 7 | 8 | public class PN53XTagKeysCheckModel extends AbsTagKeysCheckModel { 9 | public PN53XTagKeysCheckModel(KeyFilesCallback callback) { 10 | super(callback); 11 | } 12 | 13 | @Override 14 | public MifareAdapter getTag() { 15 | return SpclMf.get(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagKeysCheckPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagKeysCheckModel; 4 | 5 | public class PN53XTagKeysCheckPresenter 6 | extends TagKeysCheckPresenterImpl { 7 | @Override 8 | public AbsTagKeysCheckModel getTagKeysCheckModel() { 9 | 10 | return new PN53XTagKeysCheckModel(this); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagReadPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagReadModel; 4 | import com.rfidresearchgroup.models.PN53XTagReadModel; 5 | 6 | public class PN53XTagReadPresenter extends AbsTagReadPresenter { 7 | @Override 8 | protected AbsTagReadModel getTagReadModel() { 9 | return new PN53XTagReadModel(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagStatePresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagStateModel; 4 | import com.rfidresearchgroup.models.PN53XTagStateModel; 5 | 6 | public class PN53XTagStatePresenter extends AbsTagStatePresenter { 7 | 8 | @Override 9 | protected AbsTagStateModel getModel() { 10 | return new PN53XTagStateModel(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/PN53XTagWritePresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagWriteModel; 4 | import com.rfidresearchgroup.models.PN53XTagWriteModel; 5 | 6 | public class PN53XTagWritePresenter extends AbsTagWritePresenter { 7 | @Override 8 | protected AbsTagWriteModel getWriteModel() { 9 | return new PN53XTagWriteModel(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardMFMagicCheckPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | public class StandardMFMagicCheckPresenter 4 | extends AbsMFMagicCheckPresenter { 5 | @Override 6 | protected boolean checkMagic() { 7 | // 自带的标准NFC设备默认是没有此类魔术卡的操作实现的! 8 | return false; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardTagInformationsPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.callback.TagInformationsCallback; 4 | import com.rfidresearchgroup.models.StdNfcInformationsModel; 5 | 6 | public class StandardTagInformationsPresenter 7 | extends AbsTagInformationsPresenter { 8 | @Override 9 | public void show() { 10 | new StdNfcInformationsModel().collect(new TagInformationsCallback() { 11 | @Override 12 | public void onInformationsShow(CharSequence s) { 13 | if (isViewAttach()) 14 | view.onInformationsShow(s); 15 | } 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardTagKeysCheckPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagKeysCheckModel; 4 | import com.rfidresearchgroup.models.StandardTagKeysCheckModel; 5 | 6 | public class StandardTagKeysCheckPresenter 7 | extends TagKeysCheckPresenterImpl { 8 | 9 | @Override 10 | public AbsTagKeysCheckModel getTagKeysCheckModel() { 11 | // 传递秘钥文件的列表来实例化一个数据操作模型! 12 | return new StandardTagKeysCheckModel(this); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardTagReadPresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagReadModel; 4 | import com.rfidresearchgroup.models.StandardTagReadModel; 5 | 6 | public class StandardTagReadPresenter 7 | extends AbsTagReadPresenter { 8 | @Override 9 | public AbsTagReadModel getTagReadModel() { 10 | return new StandardTagReadModel(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardTagStatePresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagStateModel; 4 | import com.rfidresearchgroup.models.StandardNFCTagStateModel; 5 | 6 | public class StandardTagStatePresenter extends AbsTagStatePresenter { 7 | 8 | @Override 9 | protected AbsTagStateModel getModel() { 10 | return new StandardNFCTagStateModel(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/presenter/StandardTagWritePresenter.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.presenter; 2 | 3 | import com.rfidresearchgroup.models.AbsTagWriteModel; 4 | import com.rfidresearchgroup.models.StandardTagWriteModel; 5 | 6 | public class StandardTagWritePresenter extends AbsTagWritePresenter { 7 | @Override 8 | protected AbsTagWriteModel getWriteModel() { 9 | return new StandardTagWriteModel(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/settings/BaseSetting.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.settings; 2 | 3 | import java.io.File; 4 | 5 | /* 6 | * 基础设置接口! 7 | * 定义了加载设置的具体步骤! 8 | * */ 9 | public interface BaseSetting { 10 | 11 | /** 12 | * 定义设置配置文件! 13 | */ 14 | File getSettingsFile(); 15 | 16 | /** 17 | * 需要查询的设置! 18 | * 19 | * @return 设置的key 20 | */ 21 | String onQuerySetting(); 22 | 23 | /** 24 | * 在设置未发现时! 25 | * 26 | * @param key 设置的key 27 | */ 28 | void onNotFound(String key); 29 | 30 | /** 31 | * 在设置正常的时候! 32 | * 33 | * @param value 设置的值 34 | */ 35 | void onNormal(String[] value); 36 | } 37 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/BaseMvpView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | public interface BaseMvpView { 4 | void showToast(String msg); 5 | 6 | void showDialog(String title, String msg); 7 | 8 | void hideDialog(); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/DeviceAttachView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import com.rfidresearchgroup.javabean.DevBean; 4 | 5 | public interface DeviceAttachView extends DeviceView { 6 | //显示搜寻到的设备的接口 7 | void devAttach(DevBean devBean); 8 | } 9 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/DeviceExistsView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import com.rfidresearchgroup.javabean.DevBean; 4 | 5 | public interface DeviceExistsView 6 | extends DeviceView { 7 | //显示已配对的设备的接口 8 | void showExistsDev(DevBean[] devList); 9 | } 10 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/DeviceView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import com.rfidresearchgroup.javabean.DevBean; 4 | import com.rfidresearchgroup.callback.BaseCallback; 5 | 6 | public interface DeviceView extends BaseMvpView, BaseCallback.ErrorCallback { 7 | 8 | //驱动没有初始化时的异常回调 9 | void onRegisterError(String name); 10 | 11 | //设备移除时的回调 12 | void devDetach(DevBean devBean); 13 | 14 | //连接失败时的操作 15 | void onConnectFail(); 16 | 17 | //连接成功的操作 18 | void onConnectSuccess(); 19 | 20 | //Nfc设备初始化成功时的回调 21 | void onInitNfcAdapterSuccess(); 22 | 23 | //Nfc设备初始化失败时的回调 24 | void onInitNfcAdapterFail(); 25 | } 26 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/DriverView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | public interface DriverView 4 | extends BaseMvpView { 5 | //驱动切换,返回检测到的类型 6 | void onCheckDriver(String curDriver); 7 | 8 | //在切换成功后 9 | void onDriverChange(String after); 10 | } 11 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/DumpEditotView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | public interface DumpEditotView extends BaseMvpView { 4 | 5 | /* 6 | * 显示dump的内容 7 | */ 8 | void showDumpContent(String[] contents); 9 | 10 | /* 11 | * dump读取失败 12 | * */ 13 | void onFileException(); 14 | 15 | /* 16 | * dump格式错误! 17 | * */ 18 | void onFormatNoSupport(); 19 | 20 | void onSuccess(); 21 | } 22 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/FileReadLineView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import com.rfidresearchgroup.callback.FileReadLineCallback; 4 | 5 | public interface FileReadLineView extends BaseMvpView, FileReadLineCallback { 6 | //目前直接继承即可! 7 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/FormatConvertView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | public interface FormatConvertView extends BaseMvpView { 4 | void onConvertSucess(byte[] result); 5 | 6 | void onConvertFail(String errorMsg); 7 | 8 | void onSaveSuccess(); 9 | 10 | void onSaveFail(String errorMsg); 11 | } 12 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/KeyFileView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | 4 | /* 5 | *视图操作回调 6 | */ 7 | public interface KeyFileView extends BaseMvpView { 8 | 9 | //显示密钥到界面 10 | void showKeyList(String key); 11 | 12 | //显示错误信息 13 | void showKeyError(); 14 | 15 | //在修改成功后的回调 16 | void onKeysModifySuccess(); 17 | 18 | //创建成功后的回调 19 | void onCreateFileSuccess(); 20 | 21 | void onCreateFileFailed(); 22 | } 23 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/MfKeysCheckView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import java.io.File; 4 | 5 | import com.rfidresearchgroup.javabean.M1KeyBean; 6 | 7 | 8 | // 因为这个视图是基于MF标签的秘钥检查回调,因此需要扩展标签状态检测的回调。 9 | public interface MfKeysCheckView extends BaseMvpView, TagStateView { 10 | // 提供一个接口,用于获取相关的秘钥文件! 11 | File[] getKeyFiles(); 12 | 13 | // 在秘钥验证开始时的回调! 14 | void onStart(int sectorCount); 15 | 16 | void onKeysInvalid(); 17 | 18 | // 在验证的时候 19 | void onAuth(int sectorRemains); 20 | 21 | // 在秘钥轮训的时候 22 | void onKeys(String key); 23 | 24 | // 在验证完成时的结果回调! 25 | void onResults(M1KeyBean[] keyBeans); 26 | } 27 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/TagInformationsView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | public interface TagInformationsView 4 | extends BaseMvpView { 5 | //显示信息是以什么格式传入到上层的! 6 | void onInformationsShow(T t); 7 | } -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/TagReadView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | 4 | import com.rfidresearchgroup.javabean.M1Bean; 5 | import com.rfidresearchgroup.javabean.M1KeyBean; 6 | 7 | public interface TagReadView extends BaseMvpView, TagStateView { 8 | //读取完成的回调 9 | void onReadFinish(M1Bean[] datas); 10 | 11 | int[] getReadeSectorSelected(); 12 | 13 | //在读取单扇区时 14 | M1KeyBean[] getKeyBeanForOne(); 15 | 16 | //在读取多扇区时 17 | M1KeyBean[] getKeyBeanForAll(); 18 | } 19 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/TagStateView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | /** 4 | * 标签状态回调视图 5 | */ 6 | public interface TagStateView extends BaseMvpView { 7 | // 标签异常 8 | void onTagAbnormal(); 9 | 10 | // 标签普通 11 | void onTagOrdinary(); 12 | 13 | // 标签特殊 14 | void onTagSpecial(); 15 | } 16 | -------------------------------------------------------------------------------- /apprts/src/main/java/com/rfidresearchgroup/view/TagWriteView.java: -------------------------------------------------------------------------------- 1 | package com.rfidresearchgroup.view; 2 | 3 | import com.rfidresearchgroup.javabean.M1Bean; 4 | import com.rfidresearchgroup.javabean.M1KeyBean; 5 | 6 | public interface TagWriteView 7 | extends BaseMvpView, TagStateView { 8 | 9 | // 是否允许写厂商块,必须有这个控制,避免无意中更改UID! 10 | boolean isWriteManufacturerAllow(); 11 | 12 | // 是否使用正序写卡,避免出现某些特殊的卡写入失败的情况! 13 | boolean isWriteSecOrderImplement(); 14 | 15 | // 写入完成的回调! 16 | void onWriteFinish(); 17 | 18 | // 在数据异常时的回调! 19 | void onDataInvalid(); 20 | 21 | // 获取单扇区写的参数! 22 | int getSector(); 23 | 24 | // 写该扇区某个块 25 | int getBlock(); 26 | 27 | // 写入的块数据! 28 | String getData(); 29 | 30 | // 在写入时需要的数据 31 | M1Bean[] getDatas(); 32 | 33 | //在读取单扇区时需要的秘钥 34 | M1KeyBean[] getKeyBeanForOne(); 35 | 36 | //在读取多扇区时需要的秘钥 37 | M1KeyBean[] getKeyBeanForAll(); 38 | } 39 | -------------------------------------------------------------------------------- /apprts/src/main/res/anim/alpha_repeat_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | -------------------------------------------------------------------------------- /apprts/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /apprts/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /apprts/src/main/res/color/color_state_menu_navi_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/acr122u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/acr122u.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/all.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/bg_border_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/bg_circular_auto_radius_16dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/btn_selector_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/btn_selectot_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/chameleon_rdv2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/chameleon_rdv2.jpg -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/chong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/chong.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/clear.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/clear_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/clear_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/data.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/delete.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/dev_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/dev_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/disclaimer_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/disclaimer_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/download.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/dump_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/dump_delete.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/dump_equals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/dump_equals.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/dump_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/dump_extract.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/dxl_logo_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/dxl_logo_128.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/edit.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/help_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/help_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/ic_arrow_right_green_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/ic_folder_yellow_56dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/ic_save_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/ic_unknow_black_56dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/info.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/log.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_emulate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_emulate.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_iterator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_iterator.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_mfcuk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_mfcuk.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_mfoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_mfoc.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_nfclist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_nfclist.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_settings.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_union_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_union_key.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/main_write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/main_write.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/mct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/mct.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/mf_rw_goto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/mf_rw_goto.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/mtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/mtools.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/new_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/new_add.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/nfctools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/nfctools.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/no_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/no_1.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/no_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/no_2.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/phone_nfc_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/phone_nfc_icon.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/pn532core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/pn532core.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/proxgrindlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/proxgrindlogo.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/qq.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/qq_group_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/qq_group_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rdv4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rdv4.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rdv4_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rdv4_2.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/refresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 19 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rename.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/reset.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rfid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rfid.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rrglogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rrglogo.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/rrglogo500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/rrglogo500.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/sdcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/sdcard.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/selector_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/shape_bg_blue_600.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/shape_bg_blue_800.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/shape_bg_grey_200.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/shape_bg_white_1000.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/shape_radain_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/share.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/simple_console_view_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/simple_console_view_example.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/single.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/toggle_background_selector_off.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/toggle_background_selector_on.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/toggle_drawable_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/update_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/update_blue.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/upload.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/usb_connect.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/usb_connect.gif -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/wechat.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable-hdpi/yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable-hdpi/yes.png -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/bg_circular_grey_radius_16dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/bg_circular_white_radius_16dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/bg_circular_white_radius_5dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_add_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_home_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_inbox_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_keyboard_arrow_left_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_menu.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_refresh_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_settings_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_terminal.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/ic_write_tag.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apprts/src/main/res/drawable/termux_view_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RfidResearchGroup/RFIDtools/8279e0cfae5a1333899cb2b7d0913be139eb3d9b/apprts/src/main/res/drawable/termux_view_example.png -------------------------------------------------------------------------------- /apprts/src/main/res/layout/act_app_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 24 | 25 | -------------------------------------------------------------------------------- /apprts/src/main/res/layout/act_device_connect.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 22 | 23 | -------------------------------------------------------------------------------- /apprts/src/main/res/layout/act_login_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /apprts/src/main/res/layout/act_pm3_flasher.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 |