seemoo-lab/owl

Is Android mobile phone supported?

kxdkxd opened this issue · 4 comments

I have cross compiled libpcap, libev, libnl-3 to armeabi using NDK and it went well. (While configuring libnl-3, I changed -lpthread to -pthread in the libnl-3 cmake files, because I read the docs and it shows that -lpthread is just similar as -pthread, and since the -lpthread is causing error, I changed -lpthread into -pthread directly.)
However, when I trying to cmake owl, something wrong happened.

build git:(master) cmake ..
CMake Deprecation Warning at googletest/CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Deprecation Warning at googletest/googlemock/CMakeLists.txt:45 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Deprecation Warning at googletest/googletest/CMakeLists.txt:56 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Found PythonInterp: /home/kxd/.pyenv/shims/python (found version "2.7.17") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kxd/Android/owl/build

Then I tried make directly, but error occurred.

➜  build git:(master) make -j6       
[  2%] Building C object CMakeFiles/radiotap.dir/radiotap/radiotap.c.o
[  5%] Building CXX object googletest/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
/home/kxd/Android/owl/radiotap/radiotap.c:104:39: warning: taking address of packed member 'it_len' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        if (max_length < get_unaligned_le16(&radiotap_header->it_len))
                                             ^~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:19:70: note: expanded from macro 'get_unaligned_le16'
#define get_unaligned_le16(p)   le16_to_cpu(get_unaligned((uint16_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:14:12: note: expanded from macro 'get_unaligned'
                typeof(*(p)) __val;                             \
                         ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:105:28: note: expanded from macro 'le16toh'
#define le16toh(x) htole16(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:89:21: note: expanded from macro 'htole16'
#define htole16(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:104:39: warning: taking address of packed member 'it_len' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        if (max_length < get_unaligned_le16(&radiotap_header->it_len))
                                             ^~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:19:70: note: expanded from macro 'get_unaligned_le16'
#define get_unaligned_le16(p)   le16_to_cpu(get_unaligned((uint16_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:15:47: note: expanded from macro 'get_unaligned'
        } __attribute__((packed)) *__ptr = (void *) (p);        \
                                                     ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:105:28: note: expanded from macro 'le16toh'
#define le16toh(x) htole16(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:89:21: note: expanded from macro 'htole16'
#define htole16(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:108:46: warning: taking address of packed member 'it_len' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        iterator->_max_length = get_unaligned_le16(&radiotap_header->it_len);
                                                    ^~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:19:70: note: expanded from macro 'get_unaligned_le16'
#define get_unaligned_le16(p)   le16_to_cpu(get_unaligned((uint16_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:14:12: note: expanded from macro 'get_unaligned'
                typeof(*(p)) __val;                             \
                         ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:105:28: note: expanded from macro 'le16toh'
#define le16toh(x) htole16(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:89:21: note: expanded from macro 'htole16'
#define htole16(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:108:46: warning: taking address of packed member 'it_len' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        iterator->_max_length = get_unaligned_le16(&radiotap_header->it_len);
                                                    ^~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:19:70: note: expanded from macro 'get_unaligned_le16'
#define get_unaligned_le16(p)   le16_to_cpu(get_unaligned((uint16_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:15:47: note: expanded from macro 'get_unaligned'
        } __attribute__((packed)) *__ptr = (void *) (p);        \
                                                     ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:105:28: note: expanded from macro 'le16toh'
#define le16toh(x) htole16(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:89:21: note: expanded from macro 'htole16'
#define htole16(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:110:50: warning: taking address of packed member 'it_present' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        iterator->_bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:20:70: note: expanded from macro 'get_unaligned_le32'
#define get_unaligned_le32(p)   le32_to_cpu(get_unaligned((uint32_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:14:12: note: expanded from macro 'get_unaligned'
                typeof(*(p)) __val;                             \
                         ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:106:28: note: expanded from macro 'le32toh'
#define le32toh(x) htole32(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:90:21: note: expanded from macro 'htole32'
#define htole32(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:110:50: warning: taking address of packed member 'it_present' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        iterator->_bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kxd/Android/owl/radiotap/platform.h:20:70: note: expanded from macro 'get_unaligned_le32'
#define get_unaligned_le32(p)   le32_to_cpu(get_unaligned((uint32_t *)(p)))
                                                                       ^
/home/kxd/Android/owl/radiotap/platform.h:15:47: note: expanded from macro 'get_unaligned'
        } __attribute__((packed)) *__ptr = (void *) (p);        \
                                                     ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:106:28: note: expanded from macro 'le32toh'
#define le32toh(x) htole32(x)
                           ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/sys/endian.h:90:21: note: expanded from macro 'htole32'
#define htole32(x) (x)
                    ^
/home/kxd/Android/owl/radiotap/radiotap.c:113:28: warning: taking address of packed member 'it_present' of class or structure 'ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
        iterator->_next_bitmap = &radiotap_header->it_present;
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
7 warnings generated.
[  8%] Linking C static library libradiotap.a
[  8%] Built target radiotap
[ 10%] Building C object src/CMakeFiles/awdl.dir/log.c.o
[ 16%] Building C object src/CMakeFiles/awdl.dir/state.c.o
[ 16%] Building C object src/CMakeFiles/awdl.dir/channel.c.o
[ 18%] Building C object src/CMakeFiles/awdl.dir/sync.c.o
[ 21%] Building C object src/CMakeFiles/awdl.dir/election.c.o
In file included from /home/kxd/Android/owl/src/sync.c:21:
/home/kxd/Android/owl/src/ieee80211.h:142:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr1; /* dst */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/sync.c:21:
/home/kxd/Android/owl/src/ieee80211.h:143:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr2; /* src */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/sync.c:21:
/home/kxd/Android/owl/src/ieee80211.h:144:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr3; /* bssid */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
3 errors generated.
In file included from /home/kxd/Android/owl/src/channel.c:21:
/home/kxd/Android/owl/src/ieee80211.h:142:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr1; /* dst */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/channel.c:21:
/home/kxd/Android/owl/src/ieee80211.h:143:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr2; /* src */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/channel.c:21:
/home/kxd/Android/owl/src/ieee80211.h:144:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr3; /* bssid */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
src/CMakeFiles/awdl.dir/build.make:117: recipe for target 'src/CMakeFiles/awdl.dir/sync.c.o' failed
make[2]: *** [src/CMakeFiles/awdl.dir/sync.c.o] Error 1
make[2]: *** 正在等待未完成的任务....
3 errors generated.
src/CMakeFiles/awdl.dir/build.make:131: recipe for target 'src/CMakeFiles/awdl.dir/channel.c.o' failed
make[2]: *** [src/CMakeFiles/awdl.dir/channel.c.o] Error 1
In file included from /home/kxd/Android/owl/src/election.c:23:
In file included from /home/kxd/Android/owl/src/election.h:23:
/home/kxd/Android/owl/src/ieee80211.h:142:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr1; /* dst */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/election.c:23:
In file included from /home/kxd/Android/owl/src/election.h:23:
/home/kxd/Android/owl/src/ieee80211.h:143:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr2; /* src */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/election.c:23:
In file included from /home/kxd/Android/owl/src/election.h:23:
/home/kxd/Android/owl/src/ieee80211.h:144:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr addr3; /* bssid */
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/election.c:23:
/home/kxd/Android/owl/src/election.h:32:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr master_addr;
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/election.c:23:
/home/kxd/Android/owl/src/election.h:33:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr sync_addr;
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
In file included from /home/kxd/Android/owl/src/election.c:23:
/home/kxd/Android/owl/src/election.h:34:20: error: field has incomplete type 'struct ether_addr'
        struct ether_addr self_addr;
                          ^
/home/kxd/Android/android-ndk-r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/netinet/ether.h:63:8: note: forward declaration of 'struct ether_addr'
struct ether_addr* ether_aton(const char* __ascii);
       ^
6 errors generated.
src/CMakeFiles/awdl.dir/build.make:103: recipe for target 'src/CMakeFiles/awdl.dir/election.c.o' failed
make[2]: *** [src/CMakeFiles/awdl.dir/election.c.o] Error 1
CMakeFiles/Makefile2:215: recipe for target 'src/CMakeFiles/awdl.dir/all' failed
make[1]: *** [src/CMakeFiles/awdl.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
[ 24%] Linking CXX static library ../../lib/libgtest.a
[ 24%] Built target gtest
Makefile:135: recipe for target 'all' failed
make: *** [all] Error 2

It seems that NDK does not have a fully-implemented ether library? Or did I made something wrong?

It works in android using kali nethunter