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

Osborne-Hoffman (aritech/interlogix) support #44

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

wichers
Copy link

@wichers wichers commented Feb 13, 2023

For testing purposes I've hacked Osborne-Hoffman (aritech/interlogix/honeywell) support into pysiaalarm/HA. OH+CID, OH+SIA or OH+XSIA it's called in documentation. As Honeywell is a major player, it would be great to get support in pysiaalarm.

The Osborne-Hoffman protocol is a simple TCP overlay protocol that adds Triple DES support, this starts with the server sending a scrambled 192-bit DES key to the client. After the key is sent client communication can start whereby each packet is padded with zero's (not your standard padding scheme) and encrypted with 3DES ECB.

Here is an example of a decrypted SIA packet:
01010053"SIA-DCS"0007R0075L0001[#001465|NRP000*'DECKERS'NM]7C9677F21948CC12|#001465

There are a couple of SIA hacks made by Honeywell, this is not in the SIA specifications:

  1. CRC is not calculated (it's statically set to 0101) and should not be checked
  2. There is no account before "[" and the account is always filled in the content field (see fix in base_server.py)
  3. There could be a whitespace in the ping packet (see fix in regexes.py)
  4. Response is always in the following form f'{response_type.value}\r'.encode("ascii")

I somehow would like to store a setting that Osborne-Hoffman is enabled, and act accordingly. I should probably create a specific Osborne-Hoffman class. Right now I have no idea how to do add this nicely, so your suggestions are very welcome.

@wichers
Copy link
Author

wichers commented Feb 15, 2023

For your information, Osborne-Hoffman support will add compatibility for a large range of products:

  • CSX75 Panel Range (CS7050(N) TCP/IP gateway)
  • CSX75 Panel Range (CS9104/9204 Video Verification Module)
  • CSX75 Panel Range (CS7002(N) GSM/GPRS module)
  • ATS MASTER Panel range (ATS2xxx, ATS3xxx, ATS4xxx with ATS1806 or ATS1809)
  • ATS Advanced (with TDA74xx GRPS/IP modules or ATS7310 GSM/GPRS module)
  • ATS Advanced IP (ATSx000A-IP, ATSx500A-IP)
  • NetworX Panel Range (NX-590(N)E TCP/IP gateway)
  • NetworX Panel Range (NX-9104/9204 Video Verification Module)
  • NetworX Panel Range (NX-7002(N) GSM/GPRS module)
  • Simon Panel Range (60-938)

@wichers
Copy link
Author

wichers commented Feb 15, 2023

I've made a few changed in my last commit, don't know if the usage of CommunicationsProtocol is the way to go. Also still need to do something with the CRC checksum and the Event return value.

@eavanvalkenburg
Copy link
Owner

Hey, please do the PR to dev!

@spleijers
Copy link

spleijers commented Jan 30, 2024

Hi @eavanvalkenburg , anything we can do to help merge or test this? Support for the ATS1000A would be fantastic!

@eavanvalkenburg
Copy link
Owner

@sanderpleijers @wichers please make sure the PR goes to the dev branch then we can run some checks and also release a beta package that you guys can test.

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

Successfully merging this pull request may close these issues.

3 participants