pymobiledevice3 icon indicating copy to clipboard operation
pymobiledevice3 copied to clipboard

Error reported when pairing with AppleTV

Open bitxeno opened this issue 1 year ago • 1 comments

Test environment

  • Ubuntu 22.04
  • AppleTV and tvOS 17.5
  • pymobiledevice3 4.8.4

Describe the bug Hi, I encounter an error when attempting to pair my AppleTV using the pymobiledevice3 remote pair command. After selecting the device, pymobiledevice3 reports an error:

Traceback (most recent call last):
  File "/usr/local/bin/pymobiledevice3", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/__main__.py", line 100, in main
    cli()
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/cli/remote.py", line 240, in cli_pair
    asyncio.run(start_remote_pair_task(name), debug=True)
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/cli/remote.py", line 233, in start_remote_pair_task
    await service.connect(autopair=True)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 881, in connect
    await RemotePairingProtocol.connect(self, autopair=autopair)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 371, in connect
    await self._pair()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 488, in _pair
    await self._verify_proof()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 550, in _verify_proof
    assert self.srp_context.verify_proof(data[PairingDataComponentType.PROOF].hex().encode())
KeyError: EnumIntegerString.new(4, 'PROOF')

Did I miss something?

To Reproduce Steps to reproduce the behavior:

  1. Execute pymobiledevice3 remote pair
  2. Select One Device to Pair
  3. See error

Expected behavior Pair AppleTV success

Logs If applicable, add logs including backtraces for the given error that help explain your problem.

Additional context Add any other context about the problem here.

For community

⬇️ Please click the 👍 reaction instead of leaving a +1 or 👍 comment

bitxeno avatar May 24 '24 10:05 bitxeno

Test environment

  • Ubuntu 22.04
  • AppleTV and tvOS 17.5
  • pymobiledevice3 4.8.4

Describe the bug Hi, I encounter an error when attempting to pair my AppleTV using the pymobiledevice3 remote pair command. After selecting the device, pymobiledevice3 reports an error:

Traceback (most recent call last):
  File "/usr/local/bin/pymobiledevice3", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/__main__.py", line 100, in main
    cli()
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.10/dist-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/cli/remote.py", line 240, in cli_pair
    asyncio.run(start_remote_pair_task(name), debug=True)
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/cli/remote.py", line 233, in start_remote_pair_task
    await service.connect(autopair=True)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 881, in connect
    await RemotePairingProtocol.connect(self, autopair=autopair)
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 371, in connect
    await self._pair()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 488, in _pair
    await self._verify_proof()
  File "/usr/local/lib/python3.10/dist-packages/pymobiledevice3/remote/tunnel_service.py", line 550, in _verify_proof
    assert self.srp_context.verify_proof(data[PairingDataComponentType.PROOF].hex().encode())
KeyError: EnumIntegerString.new(4, 'PROOF')

Did I miss something?

To Reproduce Steps to reproduce the behavior:

  1. Execute pymobiledevice3 remote pair
  2. Select One Device to Pair
  3. See error

Expected behavior Pair AppleTV success

Logs If applicable, add logs including backtraces for the given error that help explain your problem.

Additional context Add any other context about the problem here.

For community

⬇️ Please click the 👍 reaction instead of leaving a +1 or 👍 comment

Inspect the packets with wireshark, Apple sends back a non-encrypted error packet. First byte is key, Second byte is length of value, and rest of bytes is value up to length.

Looking at the error message you got it's likely that the SRP portion failed, I'm getting the same thing. I tried a couple times so Apple rate limited me by 0x20 seconds

image

DebianArch64 avatar May 24 '24 19:05 DebianArch64