recallfx / node-red-contrib-eufy-security

Eufy security node for Node RED
MIT License
6 stars 6 forks source link

Client cannot connect: awaiting captcha #24

Open DIY3D opened 12 months ago

DIY3D commented 12 months ago

Hi,

In my test flow the eufyclient tries to make a connection but asks to enter a code and after a few attempts I get the message: awaiting captcha.

Where can I enter a code or accept a captcha? Do I need to install other software on Homebase?

jova1971 commented 11 months ago

Bump - Same here, looking but have not found an answer just yet

JapioVos commented 11 months ago

Hello, I have the same problem. I was connected for a few days and everything works fine. However, now captcha verification is requested. Is there a way to verify the Captcha?

Question 2, Is it possible to connect using two factor authentication TWA. How do you return the TWA code?

Thanks in advance for a response

Freeman015 commented 6 months ago

Hello, I have the same problem. I was connected for a few days and everything works fine. However, now captcha verification is requested. Is there a way to verify the Captcha?

Question 2, Is it possible to connect using two factor authentication TWA. How do you return the TWA code?

Thanks in advance for a response

To answer question 2 for you: You can add the 2FA code to your connect:

{"command":"connect","verifyCode":"123456"}

Hope that helps

stratacorps commented 5 months ago

Although I am now working on my own fork to add additional functionality, here is what I have found. This goes for both the TFA two-factor-authorization request and the captcha. The answer above is partially correct, but it did not work for me. This is what I have found that works.

(Note: I have an image viewer and am using the node-red dashboard in node-red v4.0 to display the captcha image and captcha id. I am new to node-red so my plan is to build a page that has a text input for the human resolved answer to the image captcha and submit that back through with the necessary connect loginOptions payload that is needed to complete the process. For now I am just viewing the base64 image in the node-red workspace to view the image)

Anyway, the command "connect" is correct, but the verifyCode or the Captcha variables are objects, like below:

For TFA, send the command "connect" along with the verifyCode inside the loginOptions object as:

{ "command": "connect", "loginOptions": { "verifyCode": "123456" } }

For captcha, Bropat's eufy-security-client is looking for the captchID and the answer as part of the login options object, so your payload sent through this wrapper needs to look like this:

{ "command": "connect", "loginOptions": { "captcha": { "captchaId": "6d7b33ca-1661-4e82-9e94-14d52476b98e", "captchaCode": "naM7" } } }

ewgast commented 2 months ago

I am having the same issue, I tried several things but cannot get it to work. I'm new to nodered so maybe its a simple question. I can see the captcha image with the image viewer in the nodered however I cannot find how or where I can add the captcha code or where to add the loginoptions. Can someone help me with this?

image

JapioVos commented 2 months ago

The easiest solution is to deactivate your node and wait a few days. (For me this was a week before I could continue) If you then reactivate your node it will work again without Captcha.

stratacorps commented 2 months ago

I am having the same issue, I tried several things but cannot get it to work. I'm new to nodered so maybe its a simple question. I can see the captcha image with the image viewer in the nodered however I cannot find how or where I can add the captcha code or where to add the loginoptions. Can someone help me with this?

image

In your response, do you receive payload property msg.payload.event equal to "captcha request"? If so, you should also have in the msg payload (along with the image that you are viewing) the captcha ID. These are the two variables you need to send back via the API's connect command (outlined in my previous post)

ewgast commented 2 months ago

Thanks for your fast response. I cannot find how I can send a response back, i havnt done that before maybe its a super simple but can you show me how I should do that in nodered? Do I make a inject block with the connect message as payload?

Mm somehow its working again now, not sure if it was this inject block with the payload (changed into my id and the captcha code) you described earlier or that its is a new day.

Anyway thanks

stratacorps commented 2 months ago

Thanks for your fast response. I cannot find how I can send a response back, i havnt done that before maybe its a super simple but can you show me how I should do that in nodered? Do I make a inject block with the connect message as payload?

Mm somehow its working again now, not sure if it was this inject block with the payload (changed into my id and the captcha code) you described earlier or that its is a new day.

Anyway thanks

As the other post mentioned, after a day or so the captcha request goes away--I'm not sure of Eufy's logic on this, I presume to stop automated systems from trying to penetrate the login. Anyway, you are correct, use an inject module with the following: [ { "id": "8d2f480c1e2738ca", "type": "inject", "z": "049542b9958f9847", "name": "connect Captcha", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"command\":\"connect\",\"loginOptions\":{\"captcha\":{\"captchaId\":\"503938d0-1a2e-4123-83da-0f5209fb5b81\",\"captchaCode\":\"DDVb\"}}}", "payloadType": "json", "x": 460, "y": 120, "wires": [ [ "69bf09dc40cc0580" ] ] } ]

I just edit the inject module with the new captcha id and answer (code). I will probably use the dashboard in node-red to create a form for displaying the captcha image and an input for the human response. I am still evaluating whether or not its worth integrating Eufy's security model into my project.