mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 02:27:26 -07:00
Android platform adaptation(dxl)
This commit is contained in:
parent
d118ba9e06
commit
78ee43c9c4
4 changed files with 715 additions and 0 deletions
403
client/android/CMakeLists.txt
Normal file
403
client/android/CMakeLists.txt
Normal file
|
@ -0,0 +1,403 @@
|
|||
#需要的最cmake版本
|
||||
cmake_minimum_required(VERSION 3.4.1)
|
||||
|
||||
#添加预编译宏定义参数,此次的作用是开启配置文件的引入!
|
||||
add_definitions(-DANDROID -D"getlocaledecpoint()='.'" -DZ_SOLO)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -O3 -fvisibility=hidden -w")
|
||||
|
||||
#缩短路径定义
|
||||
set(PM3_ROOT ../../)
|
||||
|
||||
#添加动态库定义
|
||||
add_library(pm3rrg_rdv4 SHARED
|
||||
${PM3_ROOT}/common/util_posix.c
|
||||
${PM3_ROOT}/common/crapto1/crapto1.c
|
||||
${PM3_ROOT}/common/crapto1/crypto1.c
|
||||
${PM3_ROOT}/common/crc.c
|
||||
${PM3_ROOT}/common/crc16.c
|
||||
${PM3_ROOT}/common/crc32.c
|
||||
${PM3_ROOT}/common/crc64.c
|
||||
${PM3_ROOT}/common/cardhelper.c
|
||||
${PM3_ROOT}/common/parity.c
|
||||
${PM3_ROOT}/common/commonutil.c
|
||||
${PM3_ROOT}/common/generator.c
|
||||
${PM3_ROOT}/common/lfdemod.c
|
||||
${PM3_ROOT}/common/iso15693tools.c
|
||||
${PM3_ROOT}/common/bucketsort.c
|
||||
${PM3_ROOT}/common/legic_prng.c
|
||||
${PM3_ROOT}/common/mbedtls/aes.c
|
||||
${PM3_ROOT}/common/mbedtls/base64.c
|
||||
${PM3_ROOT}/common/mbedtls/rsa.c
|
||||
${PM3_ROOT}/common/mbedtls/rsa_internal.c
|
||||
${PM3_ROOT}/common/mbedtls/arc4.c
|
||||
${PM3_ROOT}/common/mbedtls/bignum.c
|
||||
${PM3_ROOT}/common/mbedtls/asn1parse.c
|
||||
${PM3_ROOT}/common/mbedtls/asn1write.c
|
||||
${PM3_ROOT}/common/mbedtls/blowfish.c
|
||||
${PM3_ROOT}/common/mbedtls/camellia.c
|
||||
${PM3_ROOT}/common/mbedtls/certs.c
|
||||
${PM3_ROOT}/common/mbedtls/des.c
|
||||
${PM3_ROOT}/common/mbedtls/ecdsa.c
|
||||
${PM3_ROOT}/common/mbedtls/ecp.c
|
||||
${PM3_ROOT}/common/mbedtls/ecp_curves.c
|
||||
${PM3_ROOT}/common/mbedtls/entropy.c
|
||||
${PM3_ROOT}/common/mbedtls/entropy_poll.c
|
||||
${PM3_ROOT}/common/mbedtls/error.c
|
||||
${PM3_ROOT}/common/mbedtls/md.c
|
||||
${PM3_ROOT}/common/mbedtls/md5.c
|
||||
${PM3_ROOT}/common/mbedtls/md_wrap.c
|
||||
${PM3_ROOT}/common/mbedtls/sha1.c
|
||||
${PM3_ROOT}/common/mbedtls/sha256.c
|
||||
${PM3_ROOT}/common/mbedtls/sha512.c
|
||||
${PM3_ROOT}/common/mbedtls/timing.c
|
||||
${PM3_ROOT}/common/mbedtls/cmac.c
|
||||
${PM3_ROOT}/common/mbedtls/oid.c
|
||||
${PM3_ROOT}/common/mbedtls/pem.c
|
||||
${PM3_ROOT}/common/mbedtls/pk.c
|
||||
${PM3_ROOT}/common/mbedtls/pk_wrap.c
|
||||
${PM3_ROOT}/common/mbedtls/pkcs5.c
|
||||
${PM3_ROOT}/common/mbedtls/pkcs12.c
|
||||
${PM3_ROOT}/common/mbedtls/pkparse.c
|
||||
${PM3_ROOT}/common/mbedtls/pkwrite.c
|
||||
${PM3_ROOT}/common/mbedtls/x509.c
|
||||
${PM3_ROOT}/common/mbedtls/x509_crl.c
|
||||
${PM3_ROOT}/common/mbedtls/x509_crt.c
|
||||
${PM3_ROOT}/common/mbedtls/ctr_drbg.c
|
||||
${PM3_ROOT}/common/mbedtls/cipher_wrap.c
|
||||
${PM3_ROOT}/common/mbedtls/cipher.c
|
||||
${PM3_ROOT}/common/mbedtls/platform_util.c
|
||||
${PM3_ROOT}/common//zlib/inflate.c
|
||||
${PM3_ROOT}/common/zlib/inffast.c
|
||||
${PM3_ROOT}/common/zlib/zutil.c
|
||||
${PM3_ROOT}/common/zlib/inftrees.c
|
||||
${PM3_ROOT}/common//zlib/adler32.c
|
||||
# client inside
|
||||
${PM3_ROOT}/client/src/fileutils.c
|
||||
${PM3_ROOT}/client/src/uart/uart_posix.c
|
||||
${PM3_ROOT}/client/src/loclass/cipherutils.c
|
||||
${PM3_ROOT}/client/src/loclass/cipher.c
|
||||
${PM3_ROOT}/client/src/loclass/ikeys.c
|
||||
${PM3_ROOT}/client/src/loclass/elite_crack.c
|
||||
${PM3_ROOT}/client/src/emv/emvcore.c
|
||||
${PM3_ROOT}/client/src/emv/cmdemv.c
|
||||
${PM3_ROOT}/client/src/emv/tlv.c
|
||||
${PM3_ROOT}/client/src/emv/dol.c
|
||||
${PM3_ROOT}/client/src/emv/emv_tags.c
|
||||
${PM3_ROOT}/client/src/emv/emv_roca.c
|
||||
${PM3_ROOT}/client/src/emv/dump.c
|
||||
${PM3_ROOT}/client/src/emv/crypto_polarssl.c
|
||||
${PM3_ROOT}/client/src/emv/crypto.c
|
||||
${PM3_ROOT}/client/src/emv/emv_pk.c
|
||||
${PM3_ROOT}/client/src/emv/emv_pki.c
|
||||
${PM3_ROOT}/client/src/emv/emvjson.c
|
||||
${PM3_ROOT}/client/src/emv/apduinfo.c
|
||||
${PM3_ROOT}/client/src/emv/test/cryptotest.c
|
||||
${PM3_ROOT}/client/src/emv/test/sda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/dda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/cda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/crypto_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/cryptotest.c
|
||||
${PM3_ROOT}/client/src/emv/test/sda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/dda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/cda_test.c
|
||||
${PM3_ROOT}/client/src/emv/test/crypto_test.c
|
||||
${PM3_ROOT}/client/src/crypto/libpcrypto.c
|
||||
${PM3_ROOT}/client/src/crypto/asn1utils.c
|
||||
${PM3_ROOT}/client/src/crypto/asn1dump.c
|
||||
${PM3_ROOT}/client/src/mifare/mad.c
|
||||
${PM3_ROOT}/client/src/mifare/mfkey.c
|
||||
${PM3_ROOT}/client/src/mifare/mifare4.c
|
||||
${PM3_ROOT}/client/src/mifare/mifarehost.c
|
||||
${PM3_ROOT}/client/src/mifare/ndef.c
|
||||
${PM3_ROOT}/client/src/mifare/desfire_crypto.c
|
||||
${PM3_ROOT}/client/src/mifare/mifaredefault.c
|
||||
${PM3_ROOT}/client/src/fido/cose.c
|
||||
${PM3_ROOT}/client/src/fido/fidocore.c
|
||||
${PM3_ROOT}/client/src/fido/cbortools.c
|
||||
${PM3_ROOT}/client/src/fido/additional_ca.c
|
||||
${PM3_ROOT}/client/src/preferences.c
|
||||
${PM3_ROOT}/client/src/graph.c
|
||||
${PM3_ROOT}/client/src/ui.c
|
||||
${PM3_ROOT}/client/src/tea.c
|
||||
${PM3_ROOT}/client/src/util.c
|
||||
${PM3_ROOT}/client/src/comms.c
|
||||
${PM3_ROOT}/client/src/cmdcrc.c
|
||||
${PM3_ROOT}/client/src/cmdanalyse.c
|
||||
${PM3_ROOT}/client/src/cmddata.c
|
||||
${PM3_ROOT}/client/src/cmdtrace.c
|
||||
${PM3_ROOT}/client/src/cmdhf.c
|
||||
${PM3_ROOT}/client/src/cmdhflto.c
|
||||
${PM3_ROOT}/client/src/aidsearch.c
|
||||
${PM3_ROOT}/client/src/cmdhf14a.c
|
||||
${PM3_ROOT}/client/src/cmdhf14b.c
|
||||
${PM3_ROOT}/client/src/cmdwiegand.c
|
||||
${PM3_ROOT}/client/src/wiegand_formatutils.c
|
||||
${PM3_ROOT}/client/src/wiegand_formats.c
|
||||
${PM3_ROOT}/client/src/cmdlfmotorola.c
|
||||
${PM3_ROOT}/client/src/cmdlfgallagher.c
|
||||
${PM3_ROOT}/client/src/cmdhf15.c
|
||||
${PM3_ROOT}/client/src/cmdhfepa.c
|
||||
${PM3_ROOT}/client/src/cmdhflegic.c
|
||||
${PM3_ROOT}/client/src/cmdhfthinfilm.c
|
||||
${PM3_ROOT}/client/src/cmdflashmemspiffs.c
|
||||
${PM3_ROOT}/client/src/cmdhffelica.c
|
||||
${PM3_ROOT}/client/src/cmdhficlass.c
|
||||
${PM3_ROOT}/client/src/cmdhflist.c
|
||||
${PM3_ROOT}/client/src/cmdhfmf.c
|
||||
${PM3_ROOT}/client/src/cmdhfmfdes.c
|
||||
${PM3_ROOT}/client/src/cmdhfmfu.c
|
||||
${PM3_ROOT}/client/src/cmdhfmfp.c
|
||||
${PM3_ROOT}/client/src/cmdhffido.c
|
||||
${PM3_ROOT}/client/src/cmdhftopaz.c
|
||||
${PM3_ROOT}/client/src/cmdhw.c
|
||||
${PM3_ROOT}/client/src/cmdlf.c
|
||||
${PM3_ROOT}/client/src/cmdlfkeri.c
|
||||
${PM3_ROOT}/client/src/cmdlffdx.c
|
||||
${PM3_ROOT}/client/src/cmdlfio.c
|
||||
${PM3_ROOT}/client/src/cmdlfem4x.c
|
||||
${PM3_ROOT}/client/src/cmdlfhid.c
|
||||
${PM3_ROOT}/client/src/cmdlfnedap.c
|
||||
${PM3_ROOT}/client/src/cmdlfguard.c
|
||||
${PM3_ROOT}/client/src/cmdlfhitag.c
|
||||
${PM3_ROOT}/client/src/cmdlfjablotron.c
|
||||
${PM3_ROOT}/client/src/cmdsmartcard.c
|
||||
${PM3_ROOT}/client/src/cmdlfti.c
|
||||
${PM3_ROOT}/client/src/cmdlfpac.c
|
||||
${PM3_ROOT}/client/src/cmdlfnoralsy.c
|
||||
${PM3_ROOT}/client/src/cmdlfnexwatch.c
|
||||
${PM3_ROOT}/client/src/cmdlfpresco.c
|
||||
${PM3_ROOT}/client/src/cmdlfindala.c
|
||||
${PM3_ROOT}/client/src/cmdlfviking.c
|
||||
${PM3_ROOT}/client/src/cmdlfsecurakey.c
|
||||
${PM3_ROOT}/client/src/cmdlfpyramid.c
|
||||
${PM3_ROOT}/client/src/cmdlfparadox.c
|
||||
${PM3_ROOT}/client/src/cmdlfcotag.c
|
||||
${PM3_ROOT}/client/src/cmdlfawid.c
|
||||
${PM3_ROOT}/client/src/cmdparser.c
|
||||
${PM3_ROOT}/client/src/cmdscript.c
|
||||
${PM3_ROOT}/client/src/cmdlfvisa2000.c
|
||||
${PM3_ROOT}/client/src/whereami.c
|
||||
${PM3_ROOT}/client/src/cmdmain.c
|
||||
${PM3_ROOT}/client/src/cmdflashmem.c
|
||||
${PM3_ROOT}/client/src/scripting.c
|
||||
${PM3_ROOT}/client/src/pm3_binlib.c
|
||||
${PM3_ROOT}/client/src/pm3_bitlib.c
|
||||
${PM3_ROOT}/client/src/cmdlft55xx.c
|
||||
${PM3_ROOT}/client/src/cmdlfpcf7931.c
|
||||
${PM3_ROOT}/client/src/cmdhfmfhard.c
|
||||
${PM3_ROOT}/client/src/cmdusart.c
|
||||
# deps ouside
|
||||
${PM3_ROOT}/client/deps/jansson/utf.c
|
||||
${PM3_ROOT}/client/deps/jansson/dump.c
|
||||
${PM3_ROOT}/client/deps/jansson/path.c
|
||||
${PM3_ROOT}/client/deps/jansson/load.c
|
||||
${PM3_ROOT}/client/deps/jansson/error.c
|
||||
${PM3_ROOT}/client/deps/jansson/value.c
|
||||
${PM3_ROOT}/client/deps/jansson/memory.c
|
||||
${PM3_ROOT}/client/deps/jansson/pack_unpack.c
|
||||
${PM3_ROOT}/client/deps/jansson/hashtable_seed.c
|
||||
${PM3_ROOT}/client/deps/jansson/strbuffer.c
|
||||
${PM3_ROOT}/client/deps/jansson/strconv.c
|
||||
${PM3_ROOT}/client/deps/jansson/hashtable.c
|
||||
${PM3_ROOT}/client/deps/jansson/hashtable.c
|
||||
# cliparser
|
||||
${PM3_ROOT}/client/deps/cliparser/cliparser.c
|
||||
${PM3_ROOT}/client/deps/cliparser/argtable3.c
|
||||
# tinycbor
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborencoder.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborencoder_close_container_checked.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborerrorstrings.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborparser.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborparser_dup_string.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborpretty.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborpretty_stdio.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cbortojson.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/cborvalidation.c
|
||||
${PM3_ROOT}/client/deps/tinycbor/open_memstream.c
|
||||
# reveng
|
||||
${PM3_ROOT}/client/deps/reveng/cli.c
|
||||
${PM3_ROOT}/client/deps/reveng/bmpbit.c
|
||||
${PM3_ROOT}/client/deps/reveng/preset.c
|
||||
${PM3_ROOT}/client/deps/reveng/model.c
|
||||
${PM3_ROOT}/client/deps/reveng/poly.c
|
||||
${PM3_ROOT}/client/deps/reveng/reveng.c
|
||||
# liblua
|
||||
${PM3_ROOT}/client/deps/liblua/lapi.c
|
||||
${PM3_ROOT}/client/deps/liblua/ldo.c
|
||||
${PM3_ROOT}/client/deps/liblua/lgc.c
|
||||
${PM3_ROOT}/client/deps/liblua/ltm.c
|
||||
${PM3_ROOT}/client/deps/liblua/lvm.c
|
||||
${PM3_ROOT}/client/deps/liblua/lzio.c
|
||||
${PM3_ROOT}/client/deps/liblua/lcode.c
|
||||
${PM3_ROOT}/client/deps/liblua/llex.c
|
||||
${PM3_ROOT}/client/deps/liblua/liolib.c
|
||||
${PM3_ROOT}/client/deps/liblua/loslib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lopcodes.c
|
||||
${PM3_ROOT}/client/deps/liblua/lmem.c
|
||||
${PM3_ROOT}/client/deps/liblua/lmathlib.c
|
||||
${PM3_ROOT}/client/deps/liblua/ldump.c
|
||||
${PM3_ROOT}/client/deps/liblua/ldblib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lundump.c
|
||||
${PM3_ROOT}/client/deps/liblua/lcorolib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lauxlib.c
|
||||
${PM3_ROOT}/client/deps/liblua/ltablib.c
|
||||
${PM3_ROOT}/client/deps/liblua/linit.c
|
||||
${PM3_ROOT}/client/deps/liblua/lstring.c
|
||||
${PM3_ROOT}/client/deps/liblua/lctype.c
|
||||
${PM3_ROOT}/client/deps/liblua/ltable.c
|
||||
${PM3_ROOT}/client/deps/liblua/ldebug.c
|
||||
${PM3_ROOT}/client/deps/liblua/lstate.c
|
||||
${PM3_ROOT}/client/deps/liblua/lstrlib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lfunc.c
|
||||
${PM3_ROOT}/client/deps/liblua/lparser.c
|
||||
${PM3_ROOT}/client/deps/liblua/lobject.c
|
||||
${PM3_ROOT}/client/deps/liblua/loadlib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lbaselib.c
|
||||
${PM3_ROOT}/client/deps/liblua/lbitlib.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bruteforce.c
|
||||
# android source
|
||||
jni_tools.c
|
||||
pm3_main.c
|
||||
)
|
||||
|
||||
#添加头文件配置
|
||||
target_include_directories(pm3rrg_rdv4 PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${PM3_ROOT}/
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/common/zlib
|
||||
${PM3_ROOT}/common_fpga
|
||||
${PM3_ROOT}/common/mbedtls
|
||||
${PM3_ROOT}/client/src
|
||||
${PM3_ROOT}/client/src/fido
|
||||
${PM3_ROOT}/client/src/uart
|
||||
${PM3_ROOT}/client/deps/liblua
|
||||
${PM3_ROOT}/client/deps/reveng
|
||||
${PM3_ROOT}/client/deps/jansson
|
||||
${PM3_ROOT}/client/deps/tinycbor
|
||||
${PM3_ROOT}/client/deps/cliparser
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
## CPU-specific code
|
||||
## These are mostly for x86-based architectures, which is not useful for many Android devices.
|
||||
add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set(X86_CPUS x86 x86_64 i686)
|
||||
|
||||
message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS)
|
||||
message(STATUS "Building optimised x86/x86_64 binaries")
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_nosimd BEFORE PRIVATE
|
||||
-mno-mmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
## x86 / MMX
|
||||
add_library(pm3rrg_rdv4_hardnested_mmx OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE
|
||||
-mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_mmx PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
## x86 / SSE2
|
||||
add_library(pm3rrg_rdv4_hardnested_sse2 OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE
|
||||
-mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_sse2 PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
## x86 / AVX
|
||||
add_library(pm3rrg_rdv4_hardnested_avx OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE
|
||||
-mmmx -msse2 -mavx -mno-avx2 -mno-avx512f)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_avx PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
## x86 / AVX2
|
||||
add_library(pm3rrg_rdv4_hardnested_avx2 OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE
|
||||
-mmmx -msse2 -mavx -mavx2 -mno-avx512f)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_avx2 PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
## x86 / AVX512
|
||||
add_library(pm3rrg_rdv4_hardnested_avx512 OBJECT
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bf_core.c
|
||||
${PM3_ROOT}/client/deps/hardnested/hardnested_bitarray_core.c)
|
||||
|
||||
target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE
|
||||
-mmmx -msse2 -mavx -mavx2 -mavx512f)
|
||||
|
||||
target_include_directories(pm3rrg_rdv4_hardnested_avx512 PRIVATE
|
||||
${PM3_ROOT}/common
|
||||
${PM3_ROOT}/client
|
||||
${PM3_ROOT}/include/
|
||||
${PM3_ROOT}/client/deps/hardnested)
|
||||
|
||||
set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
set(SIMD_TARGETS
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_mmx>
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_sse2>
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_avx>
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_avx2>
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_avx512>)
|
||||
else ()
|
||||
message(STATUS "Not building optimised targets")
|
||||
set(SIMD_TARGETS)
|
||||
endif ()
|
||||
|
||||
#定义为静态库,被最终的pm3库依赖!
|
||||
add_library(pm3rrg_rdv4_hardnested STATIC
|
||||
$<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd>
|
||||
${SIMD_TARGETS})
|
||||
|
||||
#添加动态库链接!
|
||||
target_link_libraries(pm3rrg_rdv4 pm3rrg_rdv4_hardnested android log z)
|
97
client/android/jni_tools.c
Normal file
97
client/android/jni_tools.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
//
|
||||
// Created by DXL on 2017/9/1.
|
||||
//
|
||||
|
||||
//including header
|
||||
#include <malloc.h>
|
||||
#include <jni_tools.h>
|
||||
#include "stdbool.h"
|
||||
|
||||
//当前线程是否添加的标志位
|
||||
static bool g_IsAttach;
|
||||
|
||||
//TODO 环境变量获取函数
|
||||
JNIEnv *getJniEnv() {
|
||||
JNIEnv *currentThreadEnv;
|
||||
g_IsAttach = false;
|
||||
if ((*g_JavaVM)->GetEnv(g_JavaVM, (void **) ¤tThreadEnv, JNI_VERSION_1_4) != JNI_OK) {
|
||||
LOGE("Get Env Fail!");
|
||||
if ((*g_JavaVM)->AttachCurrentThread(g_JavaVM, ¤tThreadEnv, NULL) != JNI_OK) {
|
||||
LOGE("Attach the current thread Fail!");
|
||||
g_IsAttach = false;
|
||||
return NULL;
|
||||
} else {
|
||||
g_IsAttach = true;
|
||||
LOGE("Attach the current thread Success!");
|
||||
return currentThreadEnv;
|
||||
}
|
||||
} else {
|
||||
g_IsAttach = false;
|
||||
//LOGE("Get Env Success!");
|
||||
return currentThreadEnv;
|
||||
}
|
||||
}
|
||||
|
||||
//解绑线程env
|
||||
void deatchThread() {
|
||||
if (g_IsAttach) {
|
||||
LOGD("线程解绑成功!");
|
||||
(*g_JavaVM)->DetachCurrentThread(g_JavaVM);
|
||||
}
|
||||
}
|
||||
|
||||
//TODO 命令行解析
|
||||
CMD *parse_command_line(const char *commandStr) {
|
||||
//一个指针,指向传进来的命令字符串(const修饰的,我们需要复刻一份!)
|
||||
CMD *cmd = (CMD *) malloc(sizeof(CMD));
|
||||
if (!cmd) {
|
||||
LOGD("申请空间失败!");
|
||||
return NULL;
|
||||
}
|
||||
//拷贝字符串到堆空间!
|
||||
char *pTmp = strdup(commandStr);
|
||||
LOGD("拷贝参数字符串到临时堆!");
|
||||
//返回的结果!先初始化为20个空间
|
||||
int size = 20;
|
||||
cmd->cmd = (char **) malloc(size * sizeof(char **));
|
||||
if (cmd->cmd) {
|
||||
LOGD("申请参数空间成功!");
|
||||
} else {
|
||||
LOGD("申请空间失败!");
|
||||
}
|
||||
//进行截取
|
||||
char *pStr = strtok(pTmp, " ");
|
||||
LOGD("第0次截取完成: %s", pStr);
|
||||
//给结果数组进行下标为0的第一次初始化
|
||||
cmd->cmd[0] = pStr;
|
||||
//局部变量用于储存解析到的命令个数,下标移动为一
|
||||
int count = 1;
|
||||
//需要截取命令参数,以空格为限定符
|
||||
for (; pStr != NULL; ++count) {
|
||||
//如果容量不够,则扩容!
|
||||
if (count == (size - 1)) {
|
||||
size += 20;
|
||||
cmd->cmd = (char **) realloc(cmd->cmd, size * sizeof(char **));
|
||||
LOGD("超过初始容量,自动扩容!");
|
||||
}
|
||||
pStr = strtok(NULL, " ");
|
||||
if (pStr) {
|
||||
cmd->cmd[count] = pStr;
|
||||
LOGD("第%d次截取完成: %s", count, pStr);
|
||||
}
|
||||
}
|
||||
cmd->len = (count - 1);
|
||||
LOGD("解析函数执行完成!");
|
||||
return cmd;
|
||||
}
|
||||
|
||||
//内存释放
|
||||
void free_command_line(CMD *cmd) {
|
||||
//二级指针需要逐层释放!
|
||||
LOGD("释放命令行字符串二级引用!");
|
||||
free(cmd->cmd[0]);
|
||||
LOGD("释放命令行一级引用!");
|
||||
free(cmd->cmd);
|
||||
LOGD("释放结构体内存");
|
||||
free(cmd);
|
||||
}
|
40
client/android/jni_tools.h
Normal file
40
client/android/jni_tools.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// Created by dell on 2017/9/1.
|
||||
//
|
||||
|
||||
#ifndef DXL_TOOLS_H
|
||||
#define DXL_TOOLS_H
|
||||
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
#include <string.h>
|
||||
|
||||
//JNI LOG
|
||||
#define TAG "DXL BlUESPP_PN532"
|
||||
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE,TAG,__VA_ARGS__)
|
||||
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)
|
||||
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
|
||||
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG,__VA_ARGS__)
|
||||
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)
|
||||
|
||||
//全局的环境变量定义
|
||||
JavaVM *g_JavaVM;
|
||||
|
||||
//线程环境指针获取函数
|
||||
JNIEnv *getJniEnv();
|
||||
|
||||
//子线程释放函数,必须是native层创建的线程才可以调用
|
||||
void deatchThread();
|
||||
|
||||
typedef struct {
|
||||
char **cmd;
|
||||
int len;
|
||||
} CMD;
|
||||
|
||||
//命令行解析函数
|
||||
CMD *parse_command_line(const char *commandStr);
|
||||
|
||||
//解析结果释放函数!
|
||||
void free_command_line(CMD *);
|
||||
|
||||
#endif //DXL_TOOLS_H
|
175
client/android/pm3_main.c
Normal file
175
client/android/pm3_main.c
Normal file
|
@ -0,0 +1,175 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (C) 2009 Michael Gernoth <michael at gernoth.net>
|
||||
// Copyright (C) 2010 iZsh <izsh at fail0verflow.com>
|
||||
//
|
||||
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
|
||||
// at your option, any later version. See the LICENSE.txt file for the text of
|
||||
// the license.
|
||||
//-----------------------------------------------------------------------------
|
||||
// Main binary
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "proxmark3.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h> // for Mingw readline
|
||||
#include <limits.h>
|
||||
#include <unistd.h>
|
||||
#include <ctype.h>
|
||||
#include "usart_defs.h"
|
||||
#include "util_posix.h"
|
||||
#include "proxgui.h"
|
||||
#include "cmdmain.h"
|
||||
#include "ui.h"
|
||||
#include "cmdhw.h"
|
||||
#include "whereami.h"
|
||||
#include "comms.h"
|
||||
#include "fileutils.h"
|
||||
#include "jni_tools.h"
|
||||
|
||||
#define LOCAL_SOCKET_SERVER_NAME "DXL.COM.ASL"
|
||||
|
||||
void ShowGraphWindow() {
|
||||
|
||||
}
|
||||
|
||||
void HideGraphWindow(void) {
|
||||
|
||||
}
|
||||
|
||||
void RepaintGraphWindow() {
|
||||
|
||||
}
|
||||
|
||||
int push_cmdscriptfile(char *path, bool stayafter) {
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
static char *my_executable_path = NULL;
|
||||
static char *my_executable_directory = NULL;
|
||||
|
||||
const char *get_my_executable_path(void) {
|
||||
return my_executable_path;
|
||||
}
|
||||
|
||||
const char *get_my_executable_directory(void) {
|
||||
return my_executable_directory;
|
||||
}
|
||||
|
||||
static void set_my_executable_path(void) {
|
||||
|
||||
}
|
||||
|
||||
static const char *my_user_directory = NULL;
|
||||
|
||||
const char *get_my_user_directory(void) {
|
||||
return my_user_directory;
|
||||
}
|
||||
|
||||
static void set_my_user_directory(void) {
|
||||
}
|
||||
|
||||
static bool open() {
|
||||
if (conn.run) {
|
||||
return true;
|
||||
}
|
||||
// Open with LocalSocket(Not a tcp connection!)
|
||||
bool ret = OpenProxmark("socket:"LOCAL_SOCKET_SERVER_NAME, false, 1000, false, 115200);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 发送一条命令等待执行!
|
||||
* */
|
||||
jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) {
|
||||
//may be pm3 not running.
|
||||
if (!conn.run) {
|
||||
if (open() && TestProxmark() == PM3_SUCCESS) {
|
||||
LOGD("Open Successfully!");
|
||||
PrintAndLogEx(NORMAL, "Open Successfully!");
|
||||
} else {
|
||||
LOGD("Open failed!");
|
||||
PrintAndLogEx(NORMAL, "Open failed!");
|
||||
CloseProxmark();
|
||||
}
|
||||
}
|
||||
//无论如何,新的命令的输入了,就要换个行!
|
||||
PrintAndLogEx(NORMAL, "\n");
|
||||
char *cmd = (char *) ((*env)->GetStringUTFChars(env, cmd_, 0));
|
||||
// Many parts of the PM3 client will assume that they can read any write from pwd. So we set
|
||||
// pwd to whatever the PM3 "executable directory" is, to get consistent behaviour.
|
||||
/*int ret = chdir(get_my_executable_directory());
|
||||
if (ret == -1) {
|
||||
LOGW("Couldn't chdir(get_my_executable_directory()), errno=%s", strerror(errno));
|
||||
}
|
||||
char pwd[1024];
|
||||
memset((void *) &pwd, 0, sizeof(pwd));
|
||||
getcwd((char *) &pwd, sizeof(pwd));
|
||||
LOGI("pwd = %s", pwd);*/
|
||||
int ret = CommandReceived(cmd);
|
||||
if (ret == 99) {
|
||||
// exit / quit
|
||||
// TODO: implement this
|
||||
PrintAndLogEx(NORMAL, "Asked to exit, can't really do that yet...");
|
||||
}
|
||||
(*env)->ReleaseStringUTFChars(env, cmd_, cmd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 是否在执行命令
|
||||
* */
|
||||
jboolean isExecuting(JNIEnv *env, jobject instance) {
|
||||
return (jboolean) ((jboolean) conn.run);
|
||||
}
|
||||
|
||||
/*
|
||||
* 进行设备链接验证!
|
||||
* */
|
||||
jboolean testPm3(JNIEnv *env, jobject instance) {
|
||||
bool ret1 = open();
|
||||
if (!ret1) {
|
||||
CloseProxmark();
|
||||
return false;
|
||||
}
|
||||
bool ret2 = TestProxmark() == PM3_SUCCESS;
|
||||
return (jboolean) (ret1 && ret2);
|
||||
}
|
||||
|
||||
void stopPm3(JNIEnv *env, jobject instance) {
|
||||
CloseProxmark();
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
JNIEnv *jniEnv = NULL;
|
||||
if ((*vm)->GetEnv(vm, (void **) &jniEnv, JNI_VERSION_1_4) != JNI_OK) {
|
||||
return -1;
|
||||
}
|
||||
(*jniEnv)->GetJavaVM(jniEnv, &g_JavaVM);
|
||||
jclass clazz = (*jniEnv)->FindClass(jniEnv, "cn/rrg/natives/Proxmark3RRGRdv4Tools");
|
||||
if (clazz == NULL) {
|
||||
return -1;
|
||||
}
|
||||
jclass clz_test = (*jniEnv)->FindClass(jniEnv, "cn/rrg/devices/Proxmark3RRGRdv4");
|
||||
JNINativeMethod methods[] = {
|
||||
{"startExecute", "(Ljava/lang/String;)I", (void *) sendCMD},
|
||||
{"stopExecute", "()V", (void *) stopPm3},
|
||||
{"isExecuting", "()Z", (void *) isExecuting}
|
||||
};
|
||||
JNINativeMethod methods1[] = {
|
||||
{"testPm3", "()Z", (void *) testPm3},
|
||||
{"closePm3", "()V", stopPm3}
|
||||
};
|
||||
if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) !=
|
||||
JNI_OK) {
|
||||
return -1;
|
||||
}
|
||||
if ((*jniEnv)->RegisterNatives(jniEnv, clz_test, methods1,
|
||||
sizeof(methods1) / sizeof(methods1[0])) !=
|
||||
JNI_OK) {
|
||||
return -1;
|
||||
}
|
||||
(*jniEnv)->DeleteLocalRef(jniEnv, clazz);
|
||||
(*jniEnv)->DeleteLocalRef(jniEnv, clz_test);
|
||||
return JNI_VERSION_1_4;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue