DSC Keybus Protocol

6

Tengo planeado conectar un sistema de alarma en casa con el sistema de alarma, pero el problema es que DSC tiene un protocolo propio entre el teclado y la base. ¿Alguien se ha metido con esto antes o puede darme algunos consejos para principiantes sobre cómo aplicar ingeniería inversa a este protocolo?

El cableado es simple: Vcc, GND, Data, Clock

El Vcc es de +12 voltios y las líneas de datos / clk están entre + 8-10, pero funcionan bien a través de un divisor de voltaje para el analizador lógico.

La línea del Reloj es confusa, pero es un reloj de 1 kHz con un 50% de servicio pero solo funciona a 41.600 ms, luego sube a 5.400 ms y luego vuelve a empezar.

La línea de datos parece cambiar en el flanco ascendente o descendente del reloj

(0eslalíneadedatos,1eslalíneadelreloj)

Archivos de OpenLogic Sniffer

    
pregunta mcd1992

5 respuestas

2

No hay una respuesta simple para decodificar un protocolo, si tienen una buena configuración de esquema de encriptación, entonces es probable que esté listo & $% * creek. Con un poco de trabajo y más preguntas, puede averiguar con éxito el tipo de cifrado, y luego, si está mal implementado, descodifíquelo.

Es probable que el teclado tenga un protocolo muy simple y que el controlador tenga algunas restricciones estrictas sobre la cantidad de pulsaciones que aceptará el botón y otras.

En la nota del protocolo síncrono, es probable que el protocolo sea un protocolo NRZ . Esa es mi mejor suposición basada en su explicación. No puedo abrir los archivos ahora mismo, pero espero que esto ayude.

El hecho de que cambie en ambos bordes del reloj es solo una señal de que ambos bordes del reloj representan un punto en el que se produce un "bit" de datos. Con NRZ solo está comprobando si hubo un cambio o no.

Espero que esto haya ayudado.

    
respondido por el Kortuk
2

siguiendo mi búsqueda en la web sobre este tema, parece que este protocolo está usando la línea CLK y luego el flanco ascendente de CLK es para el panel del teclado y el borde descendente para la comunicación del panel y el teclado. Planeo probar esto esta noche con este pequeño boceto de arduino:

Volveré a publicar mis resultados después de esto ...

#define CLK 11
#define DTA 12

String st;

void setup()
{
  pinMode(CLK,INPUT);
  pinMode(DTA,INPUT);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  Serial.println("Debut");
}

void loop()
{
    if (waitCLKchange(1) > 200)
    {
      // Debut de pattern

      st = "";

      while (1)
      {
        // CLK est bas. On attend qu'il remonte
        if (waitCLKchange(0) > 50) break;

        // CLK est haut, on lit un bit
        if (digitalRead(DTA)) st += "1"; else st += "0";

        // Attendre que CLK redescende
        if (waitCLKchange(1) > 50) break;
      }

      Serial.println(st);
    }

}


int waitCLKchange(int currentState)
{
  int c = 0;
  while (digitalRead(CLK) == currentState)
  {
    delayMicroseconds(10);
    c++;
  }
  return c;
}
    
respondido por el riviera
1

Seguí este camino y descubrí que era mucho, mucho más fácil simplemente comprar una de las tarjetas de interfaz serie compatibles, como la DSC 5401 o la nueva IT-100.

Para obtener más información, consulte: enlace

Nota: si tiene su alarma instalada, su instalador tendrá que venir y "registrar" la tarjeta de interfaz en su red KEYBUS. Sospecho que el protocolo puede tener algunas características de seguridad (eso espero), y eso hará que la ingeniería inversa sea aún más difícil.

    
respondido por el payne
0

Está empezando a tomar forma. Aquí hay algunos resultados. Basado en este post: enlace Estoy viendo cadenas de estado, esto es lo que obtengo:

00000101 0 10000001 00000001 00000000 11000111 00000000 11000111 00000000 11000111 1 no zone
00000101 0 10000001 00000010 00000000 11000111 00000000 11000111 00000000 11000111 1 zone 1
00000101 0 10000001 00000010 00000000 11000111 00000000 11000111 00000000 11000111 1 zone 2
00000101 0 10000000 00000011 00000000 11000111 00000000 11000111 00000000 11000111 1 zone 3
00000101 0 10000000 00000011 00000000 11000111 00000000 11000111 00000000 11000111 1 zone 4

00000101 0 10000011 00001000 00000000 11000111 00000000 11000111 00000000 11000111 1 arm delay
00000101 0 10000011 00001000 00000000 11000111 00000000 11000111 00000000 11000111 1 arm delay short beeps
00000101 0 10000010 00000101 00000000 11000111 00000000 11000111 00000000 11000111 1 armed

Si puedes ayudar a darle sentido a esto, ¡sería feliz!

    
respondido por el riviera
0

¿Qué modelo de panel de alarma es? Hice algo similar hace años con un DSC PC1550 (panel de la serie Classic), y no estoy seguro de cuánto ha cambiado con los paneles más nuevos. La afirmación sobre el reloj de flanco ascendente frente al reloj de flanco descendente es correcta: entonces cada bit de datos representó un botón del teclado o un LED en el teclado dependiendo de la dirección de los datos. No estoy seguro de por qué la Zona 1 y la Zona 2 son iguales y la Zona 3 y la Zona 4: obtuve un conjunto de bits definido para cada LED: buena suerte si todavía está trabajando en ello.

    
respondido por el user58880

Lea otras preguntas en las etiquetas