-
Notifications
You must be signed in to change notification settings - Fork 14
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
Getting to the finish line: JuicePassProxy as fully isolated local control with ESP or exploit-based traffic redirection, documentation, and support for different types of HA instances #89
Comments
Now with more people interested in this subject maybe we can have more sample messages to be able to support more firmware versions. |
If all versions support the telnet method for changing the server address why need to use an extra device ? A set of scripts (that can be used from smartphone or computer) can be used to connect a factory state device to the wifi of the user and after that juicepassproxy can telnet and set the server address. The end users that probably will have most benefit from the ESP device maybe will not have the knowledge to flash the firmware and do the process. doing something from smartphone will be easier for that users like the original enel x does (in very bad way, all times that I have to use I have to make many many retries). |
A big problem will be if enel x change the devices to use the encrypted messages, that we dont know how to decode yet : #73 |
They are going out of business. It's unlikely they will do anything other than shut down the severs running in AWS. |
As to the "Telnet method", response here: home-assistant/core#86588 (comment) - tl;dr: I am fairly certain the majority of devices don't support that, unless there's a debug hook that reacts to setting that unrelated parameter, no reason it should work, may be worth investigating today/soon to decide if the following is needed. Easy enough to test on my bench. Expansion on UDP traffic by Man-in-the-Middle (MitM), defined scope:
|
in my experience, even with telnet working to update the target endpoint, it regularly reset itself and became unreliable. it might be easiest to leverage existing projects like adguard or pihole and create instructions around those setups |
Oh, and addressing encrypted messages:
Approximately 0% risk there. Encryption was an optional feature that has always been present in ZAP firmware, to meet certain requirements to certain companies that request it. Default mode of operation is unencrypted traffic. Their devs are long gone and I don't think anyone even knows how to build new firmware builds. So, the functionality that exists today is there forever, and the firmware defaults to encryption-disabled. Not sure why that box got switched to encrypted mode, but it's just a config flag that's easily reset with a factory-default wipe on ZAP systems (anywhere I suggest factory reset, I have to reiterate: never factory-reset a non-ZAP device!). Easy peasy :) |
Definitely on my test list, then. Such platforms may offer too many bells and whistles making setup too complex, especially for something as obscure as a UDP-based protocol to be forwarded - but I'll see if it can be practical. A RPi is also much more expensive than an ESP, but I haven't messed with those projects at all, so... maybe there's cheaper options? Experience and advice welcome! |
I just tested the Telnet method.
I should add, it's a very clever trick I hadn't even thought was being used until I read the code. Unfortunately, knowing it constantly monitors and resets the connection, I just don't know if it can be made fully reliable. It might be enough as a starting point, though - so I'm definitely giving it a try soon! |
Thanks for this wonderful summary of steps we can take! I have sent out notes to Consumer Reports and the Harvard Cyberlaw Clinic for referrals to legal advisors on the IP questions. @FalconFour and any other maintainers, would it be helpful to organize a call to discuss next steps? I can be available Friday from 8pm ET onward, as well as some times on Saturday and Sunday ET. Then perhaps we can talk about ways to find out who's interested, what skills/time/resources they have, and think about how to coordinate going forward? Here's a Whenisgood link. I'll take a look around noon ET on Friday: https://whenisgood.net/4hwijjh Here at the Ithaca Ecovillage, we have a few folks with developer experience, including some IOT experience. I'm planning to spend time over the weekend setting the system up and documenting the process for less technical folks along the way. If I can get things installed and set up for my needs, I would be open to collaborating with someone to develop some docs and a disk image for a common, <$100 tiny computer (like a Raspberry Pi 4 Model B) that people could use to add juicepassproxy to their network as a short term solution for people. --Nathan |
On JPP side I have some sugestions of changes that can help in future, they need help from people that know better how the homeassistant entities and devices work and more about python than me.
|
I don't know if this is something that this project wants to pursue, but I have been able to successfully redirect DNS and read the UDP packets on my windows 10 machine as a standalone setup. This may be a far simpler way to "manage" the juicebox settings (such as current offline max for matching the circuit capacity) for most users with just a windows laptop (with admin rights).
JPP could be the "app" that listens if the user installs python and runs the python script directly on their windows machine, but this still requires HASS for the front-end. I'm thinking an all-in-one settings app would be more appropriate here. Side note about Android: I tried to use the same concept on my android phone, but failed. I tried to use the phone as a mobile hotspot and use personal DNS filter (pDNSf) to override the DNS (it acts as a VPN) and then use an app to listen on UDP 8042. Unfortunately, without root, mobile hotspot traffic on Android is routed directly to the internet and not through the VPN even when the VPN is connected which meant that this configuration was not viable. Now, with the proper DNS override in place on my network at the router level, I was able to read the packets in the app without any problem so that could open the door to an app to control the JB if the network conditions are satisfied. |
hey @FalconFour @atc99 @ivanfmartinez @natematias doing a lot of issue cleanup tonight- will you all make sure ideas from above are included in #102 and we can close this issue once confirmed. |
I dont think this can be replaced by #102. #102 is about JPP refator on the current idea, this is about a bigger solution that uses JPP and like done by niharmeta here https://github.com/niharmehta/juicepass_proxy_install_scripts |
Well, today is the day we've all been waiting for. Enel X Way NA is shutting down. Thousands of angry people looking for a solution. It is time to shine - end of the horrible app era, and beginning of the community-developed server era. I hope we aren't too late to finish this, as lots of eyes are hopefully coming here to see what the state of the project is and how long they need to wait to make a "turnkey" solution they can just follow a guide and implement for themselves.
Admittedly, as the app has continued working for me and all my various boxes (both old and new alike) - in no small part because I know the internal quirks that need to be aligned to make it tick - I've just kept using the app and haven't tried setting up JPP on my Home Assistant yet. There are still a few difficult hurdles to clear.
I'm doing my best but, you may be able to tell, this is my first (and somewhat forced) deep dive into contributing to an open project like this. I use ChatGPT to lay the foundation for code (😂), and whenever I'm doing development work, I step away from the computer with a huge headache. Not fun for me. But I deeply want to help in every way I can, especially in this golden opportunity where folks are considering whether they have to buy a new box. Lots of E-waste at stake!
Should we go with creating sub-issues for each of these as milestones? Other ideas?
The text was updated successfully, but these errors were encountered: