A client library to multiplex connections from and to iOS devices

Overview

libusbmuxd

A client library for applications to handle usbmux protocol connections with iOS devices.

Features

This project is a client library to multiplex connections from and to iOS devices alongside command-line utilities.

It is primarily used by applications which use the libimobiledevice library to communicate with services running on iOS devices.

The library does not establish a direct connection with a device but requires connecting to a socket provided by the usbmuxd daemon.

The usbmuxd daemon is running upon installing iTunes on Windows and Mac OS X.

The libimobiledevice project provides an open-source reimplementation of the usbmuxd daemon to use on Linux or as an alternative to communicate with iOS devices without the need to install iTunes.

Some key features are:

  • Protocol: Provides an interface to handle the usbmux protocol
  • Port Proxy: Provides the iproxy utility to proxy ports to the device
  • Netcat: Provides the inetcat utility to expose a raw connection to the device
  • Cross-Platform: Tested on Linux, macOS, Windows and Android platforms
  • Flexible: Allows using the open-source or proprietary usbmuxd daemon

Furthermore the Linux build optionally provides support using inotify if available.

Installation / Getting started

Debian / Ubuntu Linux

First install all required dependencies and build tools:

sudo apt-get install \
	build-essential \
	pkg-config \
	checkinstall \
	git \
	autoconf \
	automake \
	libtool-bin \
	libplist-dev \
	libimobiledevice-glue-dev \
	usbmuxd

Then clone the actual project repository:

git clone https://github.com/libimobiledevice/libusbmuxd.git
cd libusbmuxd

Now you can build and install it:

./autogen.sh
make
sudo make install

Usage

iproxy

This utility allows binding local TCP ports so that a connection to one (or more) of the local ports will be forwarded to the specified port (or ports) on a usbmux device.

Bind local TCP port 2222 and forward to port 22 of the first device connected via USB:

iproxy 2222:22

This would allow using ssh with localhost:2222 to connect to the sshd daemon on the device. Please mind that this is just an example and the sshd daemon is only available for jailbroken devices that actually have it installed.

Please consult the usage information or manual page for a full documentation of available command line options:

iproxy --help
man iproxy

inetcat

This utility is a simple netcat-like tool that allows opening a read/write interface to a TCP port on a usbmux device and expose it via STDIN/STDOUT.

Use ssh ProxyCommand to connect to a jailbroken iOS device via SSH:

ssh -oProxyCommand="inetcat 22" root@localhost

Please consult the usage information or manual page for a full documentation of available command line options:

inetcat --help
man inetcat

Environment

The environment variable USBMUXD_SOCKET_ADDRESS allows to change the location of the usbmuxd socket away from the local default one.

An example of using an utility from the libimobiledevice project with an usbmuxd socket exposed on a port of a remote host:

export USBMUXD_SOCKET_ADDRESS=192.168.179.1:27015
ideviceinfo

This sets the usbmuxd socket address to 192.168.179.1:27015 for applications that use the libusbmuxd library.

Contributing

We welcome contributions from anyone and are grateful for every pull request!

If you'd like to contribute, please fork the master branch, change, commit and send a pull request for review. Once approved it can be merged into the main code base.

If you plan to contribute larger changes or a major refactoring, please create a ticket first to discuss the idea upfront to ensure less effort for everyone.

Please make sure your contribution adheres to:

  • Try to follow the code style of the project
  • Commit messages should describe the change well without being too short
  • Try to split larger changes into individual commits of a common domain
  • Use your real name and a valid email address for your commits

We are still working on the guidelines so bear with us!

Links

License

This library is licensed under the GNU Lesser General Public License v2.1, also included in the repository in the COPYING file.

The utilities iproxy and inetcat are licensed under the GNU General Public License v2.0.

Credits

Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.

This project is an independent software library and has not been authorized, sponsored, or otherwise approved by Apple Inc.

README Updated on: 2022-04-04

Comments
  • Can't compile due to libplist dependency

    Can't compile due to libplist dependency

    I'm getting an error:

    configure: error: Package requirements (libplist >= 1.11) were not met:

    Requested 'libplist >= 1.11' but version of libplist is 1.10

    Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.

    Looking at libplist, it seems the latest tag is 1.10

    opened by jasperblues 18
  • soname tracking

    soname tracking

    Hi,

    it seems that a recent commit changed libusbmuxd ABI: https://github.com/libimobiledevice/libusbmuxd/commit/f5a7387a54ae08c9cd1d83a415393e0e909dc6e6#diff-038b1c435b1baca0fc7faaf5e375f401L37 added a field in usbmuxd_device_info_t, which means applications and libraries built against an old version of libusbmuxd will crash when running with an updated version.

    This as caused bugs in Debian (https://bugs.debian.org/941703) where upower and tools in libimobiledevice are crashing.

    Would it be possible to do dependency tracking in exposed symbols, and update the soname/soversion when that happens?

    opened by corsac-s 16
  • usbmuxd_get_device_list detecting IPad over wifi

    usbmuxd_get_device_list detecting IPad over wifi

    On Windows, usbmuxd_get_device_list is detecting my IPad 1 over wifi, when the IPad is not connected via USB. Is this meant to happen?

    The usbmuxd_device_info_t.product_id ==0 when detected over wifi, and the correct product_id when on usb, so a simple fix would be to add a check for di->product_id != 0:

    got_device_list:
    
        // explicitly close connection
        UNLOCK;
        socket_close(sfd);
    
        // create copy of device info entries from collection
        newlist = (usbmuxd_device_info_t*)malloc(sizeof(usbmuxd_device_info_t) * (collection_count(&tmpdevs) + 1));
        dev_cnt = 0;
        FOREACH(usbmuxd_device_info_t *di, &tmpdevs, usbmuxd_device_info_t *) {
            if (di && di->product_id != 0) {
                memcpy(&newlist[dev_cnt], di, sizeof(usbmuxd_device_info_t));
                free(di);
                dev_cnt++;
            }
        } ENDFOREACH
    
    bug enhancement 
    opened by Polyfun 13
  • Compiling libusbmuxd on windows

    Compiling libusbmuxd on windows

    So I have successfully got to a point where I am compiling libusbmuxd on windows mingw to use it for windows platform.

    However although autogen.sh and configure is done without error

    it fails to make libusbmuxd at below . Does anyone have any idea on this? Is there a clear instruction on how to build in windows? Quoatmotion seems to have something but they don't detail anything on how to compile...

    $ make make all-recursive make[1]: Entering directory /home/Naver/libusbmuxd-1.0.10' Making all in common make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/common' CC collection.lo CCLD libinternalcommon.la make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/common' Making all in src make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/src' CC libusbmuxd.lo libusbmuxd.c:46:26: error: expected ';', ',' or ')' before numeric constant #define sleep(x) Sleep(x_1000) ^ libusbmuxd.c:46:25: error: expected ';', ',' or ')' before '' token #define sleep(x) Sleep(x_1000) ^ make[2]: ** [libusbmuxd.lo] Error 1 make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/Naver/libusbmuxd-1.0.10' make: *** [all] Error 2

    opened by hyunmin90 9
  • Portable pointer initialisation

    Portable pointer initialisation

    opened by elfring 9
  • Windows: BSOD with multiple devices with ffffffffffffffffffffffffffffffffffffffff UDID in restore mode

    Windows: BSOD with multiple devices with ffffffffffffffffffffffffffffffffffffffff UDID in restore mode

    what could be the cause for device->udid to be 40 characters long "ffffffffffffffffffffffffffffffffffffffff"?

    i'm asking because i saw a windows BSOD (Blue Screen Of Death) that happened due 2 devices that were added to the attached usb devices list with the same "ffffffffffffffffffffffffffffffffffffffff" "udid...

    opened by daniel-bluesea 8
  • Avoid exporting non-public symbols

    Avoid exporting non-public symbols

    Between libusbmuxd 1.0.8 and 1.0.9, some private symbols were removed from the library, which technically breaks ABI. This pull request adds -fvisibility=hidden to GLOBAL_CFLAGS and explicitly exports the public symbols as per [1] to avoid exporting these symbols as part of the ABI and avoiding future breakage.

    This also effectively decouples the iproxy binary from libusbmuxd's private symbols so that they can be upgraded separately.

    [1] http://gcc.gnu.org/wiki/Visibility

    bug enhancement 
    opened by hyperair 8
  • gcc-9.1 compile error

    gcc-9.1 compile error

    make[2]: Entering directory '/root/iphone/libusbmuxd/src' CC libusbmuxd.lo libusbmuxd.c:865:12: error: static declaration of 'pselect' follows non-static declaration 865 | static int pselect(int nfds, fd_set readfds, fd_set writefds, fd_set exceptfds, const struct timespec timeout, const sigset_t *sigmask) | ^~~~~~~ In file included from /usr/include/sys/types.h:196, from /usr/include/stdlib.h:394, from libusbmuxd.c:27: /usr/include/sys/select.h:113:12: note: previous declaration of 'pselect' was here 113 | extern int pselect (int _nfds, fd_set *__restrict _readfds, | ^~~~~~~

    I changed the following:

    static int pselect(int nfds, fd_set *readfds, fd

    to

    int pselect(int nfds, fd_set *readfds, fd

    Now libusbmuxd compiles fine.

    opened by sanitariu 7
  • Cannot compile on windows 64bit with msys2

    Cannot compile on windows 64bit with msys2

    Hello. i'm trying to compile libusbmuxd but there's a linker problem that i don't know how to solve. Here's the full log i also included libplist compile log so you have more info:

    Note: it seems that libusbmuxd is not able to detect libplist automatically so i had to manually tell where it was placed.

    luckc@DESKTOP-CG79PC9 MSYS ~/libimobiledevice/libusbmuxd
    $ libplist_LIBS=/usr/local/lib libplist_CFLAGS=/usr/local/include ./autogen.sh
    libtoolize: putting auxiliary files in '.'.
    libtoolize: linking file './ltmain.sh'
    libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
    libtoolize: linking file 'm4/libtool.m4'
    libtoolize: linking file 'm4/ltoptions.m4'
    libtoolize: linking file 'm4/ltsugar.m4'
    libtoolize: linking file 'm4/ltversion.m4'
    libtoolize: linking file 'm4/lt~obsolete.m4'
    configure.ac:28: installing './compile'
    configure.ac:6: installing './missing'
    common/Makefile.am: installing './depcomp'
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether make supports nested variables... (cached) yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.exe
    checking for suffix of executables... .exe
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking for style of include used by make... GNU
    checking dependency style of gcc... gcc3
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking build system type... x86_64-pc-msys
    checking host system type... x86_64-pc-msys
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by gcc... /usr/x86_64-pc-msys/bin/ld.exe
    checking if the linker (/usr/x86_64-pc-msys/bin/ld.exe) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... no, using cp -pR
    checking the maximum length of command line arguments... 8192
    checking how to convert x86_64-pc-msys file names to x86_64-pc-msys format... func_convert_file_noop
    checking how to convert x86_64-pc-msys file names to toolchain format... func_convert_file_noop
    checking for /usr/x86_64-pc-msys/bin/ld.exe option to reload object files... -r
    checking for objdump... objdump
    checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
    checking for dlltool... dlltool
    checking how to associate runtime and link libraries... func_cygming_dll_for_implib
    checking for ar... ar
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/bin/dd
    checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
    checking for mt... no
    checking if : is a manifest tool... no
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
    checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... yes
    checking dynamic linker characteristics... Win32 ld.exe
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for ld used by g++... /usr/x86_64-pc-msys/bin/ld.exe
    checking if the linker (/usr/x86_64-pc-msys/bin/ld.exe) is GNU ld... yes
    checking whether the g++ linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking for g++ option to produce PIC... -DDLL_EXPORT -DPIC
    checking if g++ PIC flag -DDLL_EXPORT -DPIC works... yes
    checking if g++ static flag -static works... yes
    checking if g++ supports -c -o file.o... yes
    checking if g++ supports -c -o file.o... (cached) yes
    checking whether the g++ linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking dynamic linker characteristics... Win32 ld.exe
    checking how to hardcode library paths into programs... immediate
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking for libplist... yes
    checking sys/inotify.h usability... no
    checking sys/inotify.h presence... no
    checking for sys/inotify.h... no
    checking for ANSI C header files... (cached) yes
    checking for stdint.h... (cached) yes
    checking for stdlib.h... (cached) yes
    checking for string.h... (cached) yes
    checking for an ANSI C-conforming const... yes
    checking for size_t... yes
    checking for ssize_t... yes
    checking for uint16_t... yes
    checking for uint32_t... yes
    checking for uint8_t... yes
    checking for stdlib.h... (cached) yes
    checking for GNU libc compatible malloc... yes
    checking for stdlib.h... (cached) yes
    checking for GNU libc compatible realloc... yes
    checking for strcasecmp... yes
    checking for strdup... yes
    checking for strerror... yes
    checking for strndup... yes
    checking whether to enable WIN32 build settings... no
    checking for pthread_create, pthread_mutex_lock in -lpthread... yes
    checking for supported compiler flags...  -Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter -fvisibility=hidden
    checking whether make supports nested variables... (cached) yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating common/Makefile
    config.status: creating src/Makefile
    config.status: creating include/Makefile
    config.status: creating tools/Makefile
    config.status: creating libusbmuxd.pc
    config.status: creating config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    

    Configuration for libusbmuxd 1.1.0:

      Install prefix: .........: /usr/local
      inotify support (Linux) .: no
    
      Now type 'make' to build libusbmuxd 1.1.0,
      and then 'make install' for installation.
    
    
    luckc@DESKTOP-CG79PC9 MSYS ~/libimobiledevice/libusbmuxd
    $ make
    make  all-recursive
    make[1]: ingresso nella directory "/home/luckc/libimobiledevice/libusbmuxd"
    Making all in common
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libusbmuxd/common"
      CC       socket.lo
      CC       collection.lo
      CCLD     libinternalcommon.la
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libusbmuxd/common"
    Making all in src
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libusbmuxd/src"
      CC       libusbmuxd.lo
    gcc: warning: /usr/local/include: linker input file unused because linking not done
      CCLD     libusbmuxd.la
    .libs/libusbmuxd.o: In function `create_plist_message':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:397: undefined reference to `plist_new_dict'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:397:(.text+0x8a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_dict'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:398: undefined reference to `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:398:(.text+0x99): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:398: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:398:(.text+0xab): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:399: undefined reference to `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:399:(.text+0xb7): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:399: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:399:(.text+0xc9): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:400: undefined reference to `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:400:(.text+0xd1): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:400: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:400:(.text+0xe3): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:401: undefined reference to `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:401:(.text+0xef): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:401: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:401:(.text+0x101): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:402: undefined reference to `plist_new_uint'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:402:(.text+0x10b): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `plist_new_uint'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:402: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:402:(.text+0x11d): additional relocation overflows omitted from the output
    .libs/libusbmuxd.o: In function `send_plist_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:388: undefined reference to `plist_to_xml'
    .libs/libusbmuxd.o: In function `device_record_from_plist':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:141: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:142: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:147: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:148: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:153: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:154: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:161: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:162: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:143: undefined reference to `plist_get_uint_val'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:149: undefined reference to `plist_get_uint_val'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:155: undefined reference to `plist_get_string_val'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:163: undefined reference to `plist_get_uint_val'
    .libs/libusbmuxd.o: In function `receive_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:209: undefined reference to `plist_from_xml'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:217: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:218: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:225: undefined reference to `plist_get_string_val'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:274: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:231: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:232: undefined reference to `plist_get_uint_val'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:279: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:241: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:262: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:264: undefined reference to `plist_get_uint_val'
    .libs/libusbmuxd.o: In function `send_pair_record_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:482: undefined reference to `plist_new_string'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:482: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:484: undefined reference to `plist_copy'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:484: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:488: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `send_listen_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:414: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `send_list_devices_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:458: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `usbmuxd_get_device_list':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:881: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:853: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:854: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:884: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:856: undefined reference to `plist_array_get_size'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:859: undefined reference to `plist_array_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:860: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:872: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:867: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `send_connect_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:428: undefined reference to `plist_new_uint'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:428: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:429: undefined reference to `plist_new_uint'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:429: undefined reference to `plist_dict_set_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:432: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `send_read_buid_packet':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:471: undefined reference to `plist_free'
    .libs/libusbmuxd.o: In function `usbmuxd_read_buid':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1147: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1139: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1140: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1141: undefined reference to `plist_get_string_val'
    .libs/libusbmuxd.o: In function `usbmuxd_read_pair_record':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1195: undefined reference to `plist_free'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1183: undefined reference to `plist_dict_get_item'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1184: undefined reference to `plist_get_node_type'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1186: undefined reference to `plist_get_data_val'
    .libs/libusbmuxd.o: In function `usbmuxd_save_pair_record':
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1222: undefined reference to `plist_new_data'
    /home/luckc/libimobiledevice/libusbmuxd/src/libusbmuxd.c:1235: undefined reference to `plist_free'
    collect2: error: ld returned 1 exit status
    Makefile:419: set di istruzioni per l'obiettivo "libusbmuxd.la" non riuscito
    make[2]: *** [libusbmuxd.la] Errore 1
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libusbmuxd/src"
    Makefile:465: set di istruzioni per l'obiettivo "all-recursive" non riuscito
    make[1]: *** [all-recursive] Errore 1
    make[1]: uscita dalla directory "/home/luckc/libimobiledevice/libusbmuxd"
    Makefile:374: set di istruzioni per l'obiettivo "all" non riuscito
    make: *** [all] Errore 2
    

    here's libplist log:

    luckc@DESKTOP-CG79PC9 MSYS ~/libimobiledevice/libplist
    $ ./autogen.sh
    libtoolize: putting auxiliary files in '.'.
    libtoolize: linking file './ltmain.sh'
    libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
    libtoolize: linking file 'm4/libtool.m4'
    libtoolize: linking file 'm4/ltoptions.m4'
    libtoolize: linking file 'm4/ltsugar.m4'
    libtoolize: linking file 'm4/ltversion.m4'
    libtoolize: linking file 'm4/lt~obsolete.m4'
    configure.ac:28: installing './compile'
    configure.ac:41: installing './config.guess'
    configure.ac:41: installing './config.sub'
    configure.ac:6: installing './install-sh'
    configure.ac:6: installing './missing'
    cython/Makefile.am: installing './depcomp'
    parallel-tests: installing './test-driver'
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking whether make supports nested variables... (cached) yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.exe
    checking for suffix of executables... .exe
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking for style of include used by make... GNU
    checking dependency style of gcc... gcc3
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking whether g++ is available and compiles a program... yes
    checking build system type... x86_64-pc-msys
    checking host system type... x86_64-pc-msys
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by gcc... /usr/x86_64-pc-msys/bin/ld.exe
    checking if the linker (/usr/x86_64-pc-msys/bin/ld.exe) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... no, using cp -pR
    checking the maximum length of command line arguments... 8192
    checking how to convert x86_64-pc-msys file names to x86_64-pc-msys format... func_convert_file_noop
    checking how to convert x86_64-pc-msys file names to toolchain format... func_convert_file_noop
    checking for /usr/x86_64-pc-msys/bin/ld.exe option to reload object files... -r
    checking for objdump... objdump
    checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
    checking for dlltool... dlltool
    checking how to associate runtime and link libraries... func_cygming_dll_for_implib
    checking for ar... ar
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/bin/dd
    checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
    checking for mt... no
    checking if : is a manifest tool... no
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
    checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... yes
    checking dynamic linker characteristics... Win32 ld.exe
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for ld used by g++... /usr/x86_64-pc-msys/bin/ld.exe
    checking if the linker (/usr/x86_64-pc-msys/bin/ld.exe) is GNU ld... yes
    checking whether the g++ linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking for g++ option to produce PIC... -DDLL_EXPORT -DPIC
    checking if g++ PIC flag -DDLL_EXPORT -DPIC works... yes
    checking if g++ static flag -static works... yes
    checking if g++ supports -c -o file.o... yes
    checking if g++ supports -c -o file.o... (cached) yes
    checking whether the g++ linker (/usr/x86_64-pc-msys/bin/ld.exe) supports shared libraries... yes
    checking dynamic linker characteristics... Win32 ld.exe
    checking how to hardcode library paths into programs... immediate
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking for libxml2... yes
    checking for ANSI C header files... (cached) yes
    checking for stdint.h... (cached) yes
    checking for stdlib.h... (cached) yes
    checking for string.h... (cached) yes
    checking for an ANSI C-conforming const... yes
    checking for size_t... yes
    checking for ssize_t... yes
    checking for uint16_t... yes
    checking for uint32_t... yes
    checking for uint8_t... yes
    checking for asprintf... yes
    checking for strcasecmp... yes
    checking for strdup... yes
    checking for strerror... yes
    checking for strndup... yes
    checking for stpcpy... yes
    checking for vasprintf... yes
    checking whether byte ordering is bigendian... no
    checking whether to enable WIN32 build settings... no
    checking for a Python interpreter with version >= 2.3... python
    checking for python... /usr/bin/python
    checking for python version... 2.7
    checking for python platform... msys
    checking for python script directory... ${prefix}/lib/python2.7/site-packages
    checking for python extension module directory... ${exec_prefix}/lib/python2.7/site-packages
    checking for cython... /usr/bin/cython
    checking for Cython version... 0.23
    configure: Cython executable is '/usr/bin/cython'
    checking for python2.7... (cached) /usr/bin/python
    checking for a version of Python >= '2.1.0'... yes
    checking for the distutils Python package... yes
    checking for Python include path... /usr/bin/python-config is /usr/bin/python-config
    -I/usr/include/python3.4m -I/usr/include/python3.4m
    checking for Python library path... /usr/bin/python-config is /usr/bin/python-config
     -L/usr/lib -lpython3.4m -lintl -ldl
    checking for Python site-packages path... /usr/lib/python2.7/site-packages
    checking python extra libraries... ('', '-ldl')
    checking python extra linking flags...
    checking consistency of all components of python development environment... yes
    checking for libplist Cython bindings... Package libplist was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libplist.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libplist' found
    Using built-in libplist Cython bindings (assuming this is a first build)
    checking for supported compiler flags...  -Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter -fvisibility=hidden
    checking whether make supports nested variables... (cached) yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating libcnary/Makefile
    config.status: creating src/Makefile
    config.status: creating src/libplist.pc
    config.status: creating src/libplist++.pc
    config.status: creating include/Makefile
    config.status: creating tools/Makefile
    config.status: creating cython/Makefile
    config.status: creating test/Makefile
    config.status: creating doxygen.cfg
    config.status: creating config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    
    Configuration for libplist 1.13.0:
    -------------------------------------------
    
      Install prefix: .........: /usr/local
      Python bindings .........: yes
    
      Now type 'make' to build libplist 1.13.0,
      and then 'make install' for installation.
    
    
    luckc@DESKTOP-CG79PC9 MSYS ~/libimobiledevice/libplist
    $ make
    make  all-recursive
    make[1]: ingresso nella directory "/home/luckc/libimobiledevice/libplist"
    Making all in libcnary
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/libcnary"
      CC       node.lo
      CC       list.lo
      CC       node_list.lo
      CC       iterator.lo
      CC       node_iterator.lo
      CCLD     libcnary.la
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/libcnary"
    Making all in src
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/src"
      CC       base64.lo
      CC       bytearray.lo
      CC       hashtable.lo
      CC       ptrarray.lo
      CC       xplist.lo
      CC       bplist.lo
      CC       plist.lo
      CCLD     libplist.la
      CXX      Node.lo
      CXX      Structure.lo
      CXX      Array.lo
      CXX      Boolean.lo
      CXX      Data.lo
      CXX      Date.lo
      CXX      Dictionary.lo
      CXX      Integer.lo
      CXX      Key.lo
      CXX      Real.lo
      CXX      String.lo
      CXX      Uid.lo
      CXXLD    libplist++.la
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/src"
    Making all in include
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/include"
    make[2]: Nessuna operazione da eseguire per "all".
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/include"
    Making all in tools
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/tools"
      CC       plistutil.o
      CCLD     plistutil.exe
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/tools"
    Making all in cython
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/cython"
    /usr/bin/cython -I. -I../src -o plist.c plist.pyx
    make  all-am
    make[3]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/cython"
      CC       plist_la-plist_util.lo
      CC       plist_la-plist.lo
      CCLD     plist.la
    libtool: warning: undefined symbols not allowed in x86_64-pc-msys shared libraries; building static only
    make[3]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/cython"
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/cython"
    Making all in test
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist/test"
      CC       plist_cmp.o
      CCLD     plist_cmp.exe
      CC       plist_test.o
      CCLD     plist_test.exe
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist/test"
    make[2]: ingresso nella directory "/home/luckc/libimobiledevice/libplist"
    make[2]: uscita dalla directory "/home/luckc/libimobiledevice/libplist"
    make[1]: uscita dalla directory "/home/luckc/libimobiledevice/libplist"
    
    opened by luckcolors 7
  • Device removed notification arrived when connecting another iPhone

    Device removed notification arrived when connecting another iPhone

    I have registered to listen device added/removed notifications. Use case: Connect iPhone, pair and trust, wait for device is ready. Connect another iPhone, pair and trust.

    When pairing another iPhone, i got notification device removed notification from BOTH devices. after a while both devices will arrive again.

    Note: This happens only on Mac. On Windows there is no extra 'device removed' notifications.

    question OS X feedback 
    opened by skortela 7
  • icat: collides with sleuthkit

    icat: collides with sleuthkit

    both libusbmuxd and sleuthkit install icat binary into /usr/bin. That makes it harder to maintain the tool. It also might break other tools which call "/usr/bin/icat".

    Please change the name to something more unique. I think inetcat will do it.

    opened by blshkv 6
  • recv failed: Resource temporarily unavailable

    recv failed: Resource temporarily unavailable

    When I try to connect by using NMSSH from app to device to send the command "echo success" I get an error in the iproxy:

    recv failed: Resource temporarily unavailable send failed: Bad file descriptor

    does anyone have any idea what can cause it? Issues appear on some MacBooks no matter the system version. For example on my 4 MacBooks works but on my friend's mbp pro 2012 Catalina error appears.

    opened by danio0701 0
  • iproxy erroring with RESULT_CONNREFUSED

    iproxy erroring with RESULT_CONNREFUSED

    Hi. I attempted to forward a port using iproxy

    $ iproxy --udid xxxx --debug --debug 6002:6002
    Creating listening port 6002 for device port 6002
    waiting for connection
    

    but after launching my tcp connection on my macbook, this is what I get:

    New connection for 6002->6002, fd = 5
    waiting for connection
    Requesting connecion to USB device handle 4 (serial: xxxx), port 6002
    [libusbmuxd] usbmuxd_connect: Reading connect result...
    [libusbmuxd] usbmuxd_connect: Connect failed, Error code=3
    Error connecting to device: No such file or directory
    

    diving into the source code told me that error code 3 is a "Connection refused" message. It used to work just fine with older iOS version (14.something). We had to upgrade our devices for our product to the latest version, which is iOS 15.4.1. Now the problem occurs, but keep in mind I'm not 100% sure I remember if it worked after upgrading or did it break with the upgrade.

    macOS specs: 2019 MacBook Pro. Intel Catalina 10.15.7 (can't upgrade OS because of compatibility of some tools)

    iOS specs: iPhone SE 2nd gen iOS 15.4.1

    Tell me if you need any more info and I'll share as much as my nda allows me to. Thanks!

    opened by kaiytech 1
  • fixed usbmuxd_send case dead-loop on windows

    fixed usbmuxd_send case dead-loop on windows

    On windows, errno will not be set when socket send failed, see https://docs.microsoft.com/en-us/windows/win32/winsock/error-codes-errno-h-errno-and-wsagetlasterror-2

    opened by sandin 0
  • usbmuxd_events_unsubscribe is blocked about 2~3 secs

    usbmuxd_events_unsubscribe is blocked about 2~3 secs

    If users don't install iTunes, the usbmuxd_events_unsubscribe will be blocked about 2~3 secs. usbmuxd_events_unsubscribe calls thread_join to wait the thread to be finished, but the sleep in usbmuxd_listen_poll delay it. Should not use the sleep function, it's better to use a event to wait for timeout, then set the event in usbmuxd_events_unsubscribe .

    opened by yanqinglu 1
  • make failed for not found for architecture arm64

    make failed for not found for architecture arm64

    libusbmuxd % make

    System Apple Macbook Pro 2021 M1

    ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

    /Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
    Making all in src
      CC       libusbmuxd.lo
      CCLD     libusbmuxd-2.0.la
    ld: warning: ignoring file /usr/local/lib/libplist-2.0.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
    ld: warning: ignoring file /usr/local/Cellar/libplist/HEAD-cf7a3f3/lib/libplist-2.0.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
    Undefined symbols for architecture arm64:
      "_plist_array_get_item", referenced from:
          _usbmuxd_get_device_list in libusbmuxd.o
      "_plist_array_get_size", referenced from:
          _usbmuxd_get_device_list in libusbmuxd.o
      "_plist_copy", referenced from:
          _send_pair_record_packet in libusbmuxd.o
      "_plist_dict_get_item", referenced from:
          _usbmuxd_get_device_list in libusbmuxd.o
          _device_info_from_plist in libusbmuxd.o
          _receive_packet in libusbmuxd.o
          _usbmuxd_read_buid in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_dict_set_item", referenced from:
          _usbmuxd_connect in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
          _send_pair_record_packet in libusbmuxd.o
          _usbmuxd_delete_pair_record in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_free", referenced from:
          _device_monitor in libusbmuxd.o
          _usbmuxd_get_device_list in libusbmuxd.o
          _receive_packet in libusbmuxd.o
          _usbmuxd_connect in libusbmuxd.o
          _usbmuxd_read_buid in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
          _send_pair_record_packet in libusbmuxd.o
          ...
      "_plist_from_bin", referenced from:
          _create_plist_message in libusbmuxd.o
      "_plist_from_xml", referenced from:
          _receive_packet in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_get_data_val", referenced from:
          _device_info_from_plist in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
      "_plist_get_node_type", referenced from:
          _usbmuxd_get_device_list in libusbmuxd.o
          _device_info_from_plist in libusbmuxd.o
          _receive_packet in libusbmuxd.o
          _usbmuxd_read_buid in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_get_string_val", referenced from:
          _device_info_from_plist in libusbmuxd.o
          _receive_packet in libusbmuxd.o
          _usbmuxd_read_buid in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_get_uint_val", referenced from:
          _device_info_from_plist in libusbmuxd.o
          _receive_packet in libusbmuxd.o
      "_plist_new_data", referenced from:
          _usbmuxd_save_pair_record_with_device_id in libusbmuxd.o
      "_plist_new_dict", referenced from:
          _create_plist_message in libusbmuxd.o
      "_plist_new_string", referenced from:
          _usbmuxd_read_pair_record in libusbmuxd.o
          _send_pair_record_packet in libusbmuxd.o
          _usbmuxd_delete_pair_record in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_new_uint", referenced from:
          _usbmuxd_connect in libusbmuxd.o
          _send_pair_record_packet in libusbmuxd.o
          _create_plist_message in libusbmuxd.o
      "_plist_to_xml", referenced from:
          _device_monitor in libusbmuxd.o
          _usbmuxd_get_device_list in libusbmuxd.o
          _receive_packet in libusbmuxd.o
          _usbmuxd_connect in libusbmuxd.o
          _usbmuxd_read_buid in libusbmuxd.o
          _usbmuxd_read_pair_record in libusbmuxd.o
          _send_pair_record_packet in libusbmuxd.o
          ...
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[2]: *** [libusbmuxd-2.0.la] Error 1
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2
    
    

    please help in matter

    opened by jagdish24 2
  • Win32: fix bug that network device cannot connect

    Win32: fix bug that network device cannot connect

    On windows, the data transmitted by the driver is not the same as that on other platforms. The data I output is: 02 00 00 00 C0 A8 1F 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Bit 0 is AF_INET, and the following 4-7 bits are IPv4 address. So I modified it to match this prefix only under windows. Now, it can normally connect to the WiFi device of IPv4.

    @nikias

    opened by xanadu-lee 1
Releases(2.0.2)
  • 2.0.2(Jun 15, 2020)

    Homepage

    2.0.2 (2020-06-15)

    Maintenance release.

    Breaking

    • Rename library and all related files by adding an API version resulting in libusbmuxd-2.0

    Features

    • Handle USB and network devices with new options in tools
    • Make connecting sockets non-blocking
    • Switch from concurrent threads to loop with select()
    • Allow to specify source address for listening socket in iproxy
    • Allow to map multiple ports in iproxy
    • Add man pages for iproxy and inetcat tools
    • Improve socket_create() with proper use of getaddrinfo
    • Allow proper listening on localhost for IPv6 and IPv4 in iproxy
    • Bump dependency to libplist 2.2.0
    • Add new --version argument to output version information to tools
    • Improve README.md with project description, installation, contributing and usage sections

    Bug Fixes

    • Fix compiler warnings
    • Fix win32 build
    • Fix crash when no UDID is provided
    Source code(tar.gz)
    Source code(zip)
    libusbmuxd-2.0.2.tar.bz2(332.65 KB)
Owner
libimobiledevice
A cross-platform protocol library to access iOS devices
libimobiledevice
SuccessorCLI A CLI tool to restore iOS Devices on versions they're already on, based on the original Succession

A tool to restore iOS Devices on versions they're already on, based on the original Succession

Dabezt 11 Dec 26, 2022
Open-source jailbreaking tool for many iOS devices

Open-source jailbreaking tool for many iOS devices *Read disclaimer before using this software. checkm8 permanent unpatchable bootrom exploit for hund

null 0 Nov 6, 2021
Helper/wrapper for mautrix-imessage for jailbroken devices

Brooklyn This readme is out-of-date. Blame Ethan, he's working on it. Components Rubicon "The die is cast." Crosses Apple's last river between IMCore

Ethan Chaffin 11 Jun 24, 2022
iOS library for device fingerprinting. Does not require server APIs to work, fully client-side operation.

Lightweight iOS library for local device fingerprinting Installation (CocoaPods) # Podfile pod 'FingerprintJS' Note: If you've never used CocoaPods fo

FingerprintJS 45 Dec 17, 2022
Pass for iOS - an iOS client compatible with Pass command line application.

Pass is an iOS client compatible with ZX2C4's Pass command line application. It is a password manager using GPG for encryption and Git for version control.

Mingshen Sun 1.3k Dec 26, 2022
Two-Factor Authentication Client for iOS

Authenticator Two-Factor Authentication Client for iOS. Authenticator is a simple, free, and open source two-factor authentication app. It helps keep

Matt Rubin 770 Dec 30, 2022
Swift cross-platform crypto library using CommonCrypto/libcrypto

BlueCryptor Swift cross-platform crypto library derived from IDZSwiftCommonCrypto. IMPORTANT NOTE: This release is NOT entirely source code compatible

Kitura 183 Oct 15, 2022
A wrapper for Apple's Common Crypto library written in Swift.

IDZSwiftCommonCrypto A Swift wrapper for Apple's CommonCrypto library. IDZSwiftCommonCrypto works with both CocoaPods and Cathage. For more details on

idz 472 Dec 12, 2022
Swift cross-platform crypto library using CommonCrypto/libcrypto

BlueCryptor Swift cross-platform crypto library derived from IDZSwiftCommonCrypto. IMPORTANT NOTE: This release is NOT entirely source code compatible

Kitura 183 Oct 15, 2022
A powerful, protocol-oriented library for working with the keychain in Swift.

Locksmith A powerful, protocol-oriented library for working with the keychain in Swift. ?? iOS 8.0+ ?? Mac OS X 10.10+ ⌚️ watchOS 2 ?? tvOS ?? I make

Matthew Palmer 2.9k Dec 21, 2022
KeyClip is yet another Keychain library written in Swift.

KeyClip KeyClip is yet another Keychain library written in Swift. Features Multi Types ( String / NSDictionary / NSData ) Error Handling Settings ( kS

Shinichiro Aska 43 Nov 6, 2022
A library for make a beautiful Passcode Lock View

SmileLock A library for make a beautiful Passcode Lock View, also support Touch ID. Requirements iOS 9.0+ Swift 4 (pod version 3.x), Swift 3 (pod vers

Recruit Lifestyle Co. Ltd. 607 Sep 18, 2022
LocalAuth - Another Fusion library to implement the local authentication using Biometry

FusionLocalAuth Another Fusion library to implement the local authentication usi

Vedant Jha 0 Jan 13, 2022
SVPinView is a light-weight customisable library used for accepting pin numbers or one-time passwords.

SVPinView SVPinView is a light-weight customisable library used for accepting pin numbers or one-time passwords. Getting Started An example project is

Srinivas Vemuri 246 Jan 4, 2023
Virgil Core SDK allows developers to get up and running with Virgil Cards Service API quickly and add end-to-end security to their new or existing digital solutions to become HIPAA and GDPR compliant and more.

Virgil Core SDK Objective-C/Swift Introduction | SDK Features | Installation | Configure SDK | Usage Examples | Docs | Support Introduction Virgil Sec

Virgil Security, Inc. 27 Jul 26, 2022
RSA public/private key encryption, private key signing and public key verification in Swift using the Swift Package Manager. Works on iOS, macOS, and Linux (work in progress).

BlueRSA Swift cross-platform RSA wrapper library for RSA encryption and signing. Works on supported Apple platforms (using Security framework). Linux

Kitura 122 Dec 16, 2022
Safe and easy to use crypto for iOS and macOS

Swift-Sodium Swift-Sodium provides a safe and easy to use interface to perform common cryptographic operations on macOS, iOS, tvOS and watchOS. It lev

Frank Denis 483 Jan 5, 2023
RSA public/private key encryption, private key signing and public key verification in Swift using the Swift Package Manager. Works on iOS, macOS, and Linux (work in progress).

BlueRSA Swift cross-platform RSA wrapper library for RSA encryption and signing. Works on supported Apple platforms (using Security framework). Linux

Kitura 122 Dec 16, 2022
Native and encrypted password manager for iOS and macOS.

Open Sesame Native and encrypted password manager for iOS and macOS. What is it? OpenSesame is a free and powerful password manager that lets you mana

OpenSesame 432 Jan 7, 2023