Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

security feature not working #9

Open
enmanoj opened this issue Feb 22, 2018 · 10 comments
Open

security feature not working #9

enmanoj opened this issue Feb 22, 2018 · 10 comments

Comments

@enmanoj
Copy link

enmanoj commented Feb 22, 2018

when using 'secure': ['write'] while initialling Characteristics getting a run-time error

File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Smp.py", line 101, in handlePairingConfirm
self._r = crypto.r()
NameError: global name 'crypto' is not defined

Please fix a patch for this.

@Adam-Langley
Copy link
Owner

Hi @enmanoj, indeed the crypto support has not been ported. Feel free to submit a patch and I will review it, otherwise I hope to get to it soon.
Thanks,

@Adam-Langley
Copy link
Owner

Hi @enmanoj - could you please post a failure case for this? It will speed up reproduction so I can get a fix done.
Thanks.

@enmanoj
Copy link
Author

enmanoj commented Mar 13, 2018

You need to add 'secure' while defining characteristic to enable security. To do that please follow the below steps.
Examples/pizza/PizzaCrustCharacteristic.py -> to __init__() after 'properties': ['read', 'write'] add this 'secure': ['read', 'write']

Execute the peripheral.py file sudo python peripheral.py
Read the Characteristic with Uuid '13333333333333333333333333330001'.

You will get the below error. This error is due to typo error in file

/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/AclStream.py

Change self.encypted = False to self.encrypted = False

Output

Hit <ENTER> to disconnect
advertising...
Exception in thread HCISocketPoller:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/BluetoothHCI/BluetoothHCI.py", line 197, in _socket_poller
    self._socket_on_data_user_callback(bytearray(data))
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Hci.py", line 417, in onSocketData
    self.emit('aclDataPkt', [handle, cid, pktData])
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Emit.py", line 15, in emit
    handler(*arguments)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Bindings.py", line 167, in onAclDataPkt
    self._aclStream.push(cid, data)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/AclStream.py", line 18, in push
    self.emit('data', [cid, data])
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Emit.py", line 15, in emit
    handler(*arguments)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Gatt.py", line 255, in onAclStreamData
    self.handleRequest(data)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Gatt.py", line 299, in handleRequest
    response = self.handleReadOrReadBlobRequest(request)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Gatt.py", line 702, in handleReadOrReadBlobRequest
    if handleSecure & 0x02 and not self._aclStream.encrypted:
AttributeError: AclStream instance has no attribute 'encrypted'


terminated.

Once you fixed the above run peripheral.py and read the same again you will find this error

NameError: global name 'crypto' is not defined

Output


Exception in thread HCISocketPoller:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/BluetoothHCI/BluetoothHCI.py", line 197, in _socket_poller
    self._socket_on_data_user_callback(bytearray(data))
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Hci.py", line 417, in onSocketData
    self.emit('aclDataPkt', [handle, cid, pktData])
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Emit.py", line 15, in emit
    handler(*arguments)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Bindings.py", line 167, in onAclDataPkt
    self._aclStream.push(cid, data)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/AclStream.py", line 18, in push
    self.emit('data', [cid, data])
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Emit.py", line 15, in emit
    handler(*arguments)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Smp.py", line 47, in onAclStreamData
    self.handlePairingConfirm(data)
  File "/usr/local/lib/python2.7/dist-packages/pybleno/hci_socket/Smp.py", line 101, in handlePairingConfirm
    self._r = crypto.r()
NameError: global name 'crypto' is not defined

Note: Am using nRF Connect for Mobile as master for reading and writing data.

@Adam-Langley
Copy link
Owner

Hi @enmanoj, I've committed a fix for some syntactical issues that you identified, but the crypto stuff is not yet implemented - I haven't been able to exercise it. Can you reproduce this same issue using either Windows, MacOS or iOS, and post the repro scenario here? I don't have Android available to me.
Thanks,

@shrsulav
Copy link

Is there any way to bypass this secure feature? I'm running the echo and battery services without any change and the program is stuck at the crypto point.

@Adam-Langley
Copy link
Owner

Hi @shrsulav - can you switch to the 'transpiled' branch and try that? Those bugs are all resolved on that branch.
Please feed back your experience here.
Thanks

@shrsulav
Copy link

Hello @Adam-Langley, I checked out the transpiled branch and ran the main.py of the echo example. And, this is the error I'm getting:

pybleno/bleno/examples/echo# python3 main.py
Traceback (most recent call last):
File "main.py", line 2, in
from bleno.supporting import *
ModuleNotFoundError: No module named 'bleno'

@Adam-Langley
Copy link
Owner

Hi @shrsulav have you followed the instructions under 'Running The Examples'?
Because there is currently no pip module for that branch, you cannot run the examples the way you appear to have.

@ukBaz
Copy link

ukBaz commented Sep 11, 2019

Another option is:
pip install -e .

This Installs the project in editable mode from the current project repositry. This will link the package to the local files meaning any changes locally would be available in your environment

@shrsulav
Copy link

@Adam-Langley I cloned the repo, checked out to the transpiled branch and on using the command
$ python3 -m bleno.examples.echo.main

I got the following error:
"ModuleNotFoundError: No module named 'bleno.supporting.math'"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants