303 lines
11 KiB
Plaintext
303 lines
11 KiB
Plaintext
|
Security+1.0
|
||
|
|
||
|
|
||
|
Filetype: Flipper SubGhz RAW File
|
||
|
Version: 1
|
||
|
Frequency: 315000000
|
||
|
Preset: FuriHalSubGhzPresetOok650Async
|
||
|
Protocol: RAW
|
||
|
RAW_Data: -59500 500 -1500 500 -1000 1000 -1500 500 -500 1500 -1500 500 -500 1500 -1500 500 -1000 1000 -1500 500 -1500 500 -1500 500 -1000 1000 -1500 500 -500 1500 -1500 500 -1500 500 -1500 500 -1000 1000 -1500 500 -1500 500 -58000
|
||
|
RAW_Data: 1500 -1500 500 -500 1500 -1500 500 -1000 1000 -1500 500 -1500 500 -1500 500 -1000 1000 -1500 500 -500 1500 -1000 1000 -1000 1000 -1500 500 -500 1500 -500 1500 -500 1500 -1000 1000 -500 1500 -1000 1000 -500 1500
|
||
|
*Repeat above 10 times.
|
||
|
|
||
|
The data is a series of digits between 0..2:
|
||
|
0: -1500 500
|
||
|
1: -1000 1000
|
||
|
2: -500 1500
|
||
|
_: -50K+ xxx
|
||
|
|
||
|
Packets…
|
||
|
_01020201000102000100
|
||
|
_02010001021102221212
|
||
|
|
||
|
|
||
|
Rolling [Count] is every other digit (base 3), then reverse the bits...
|
||
|
v v v v v v v v v v
|
||
|
_01020201000102000100
|
||
|
_02010001021102221212
|
||
|
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
|
||
|
|
||
|
00000000000000010211
|
||
|
|
||
|
(((((0*3+1) * 3 + 0) * 3 + 2) * 3 + 1) * 3 + 1) = 103
|
||
|
103 = 00000000 00000000 00000000 01100111b
|
||
|
Reverse 11100110 00000000 00000000 00000000b = 0xE6000000 [Count]
|
||
|
|
||
|
Digits in acc from both.
|
||
|
|
||
|
_01020201000102000100
|
||
|
_02010001021102221212
|
||
|
|
||
|
Acc adds digit from rolling or decoded fixed.
|
||
|
Decoded fixed digit is "(n*3 + digit - acc) % 3"
|
||
|
Acc clears between packets.
|
||
|
Extract fix requires an accumulator of all previous digits.
|
||
|
|
||
|
_01020201000102000100
|
||
|
|
||
|
acc=0+0 (digit 0)
|
||
|
(0*3 + 1 - 0) = 1 fixed:1 acc=0+1=1
|
||
|
acc=1+0 (digit 0)
|
||
|
(0*3 + 2 - 1) = 1 fixed:11 acc=1+1=2
|
||
|
acc=2+0 (digit 0)
|
||
|
(0*3 + 2 - 2) = 0 fixed:110 acc=2+0=2
|
||
|
acc=2+0 (digit 0)
|
||
|
(1*3 + 1 - 2) = 2 fixed:1102 acc=2+2=4
|
||
|
acc=4+0 (digit 0)
|
||
|
(2*3 + 0 - 4) = 2 fixed:11022 acc=4+2=6
|
||
|
acc=6+0 (digit 0)
|
||
|
(2*3 + 1 - 6) = 1 fixed:110221 acc=6+1=7
|
||
|
acc=7+0 (digit 0)
|
||
|
(2*3 + 2 - 7) = 1 fixed:1102211 acc=7+1=8
|
||
|
acc=8+0 (digit 0)
|
||
|
(3*3 + 0 - 8) = 1 fixed:11022111 acc=8+1=9
|
||
|
acc=9+0 (digit 0)
|
||
|
(3*3 + 1 - 9) = 1 fixed:110221111 acc=9+1=10
|
||
|
acc=9+0 (digit 0)
|
||
|
(4*3 + 0 - 10) = 2 fixed:1102211112 acc=10+2=12
|
||
|
acc=0 (end of packet 1)
|
||
|
|
||
|
_02010001021102221212
|
||
|
|
||
|
acc=0+0 (digit 0)
|
||
|
(0*3 + 2 - 0) = 2 fixed:1102211112_2 acc=0+2=2
|
||
|
acc=2+0 (digit 0)
|
||
|
(1*3 + 1 - 2) = 2 fixed:1102211112_22 acc=2+2=4
|
||
|
acc=4+0 (digit 0)
|
||
|
(2*3 + 0 - 4) = 2 fixed:1102211112_222 acc=4+2=6
|
||
|
acc=6+0 (digit 0)
|
||
|
(2*3 + 1 - 6) = 1 fixed:1102211112_2221 acc=6+1=7
|
||
|
acc=7+0 (digit 0)
|
||
|
(2*3 + 2 - 7) = 1 fixed:1102211112_22211 acc=7+1=8
|
||
|
acc=8+1 (digit 1)
|
||
|
(3*3 + 1 - 9) = 1 fixed:1102211112_222111 acc=9+1=10
|
||
|
acc=10+0 (digit 0)
|
||
|
(3*3 + 2 - 10) = 1 fixed:1102211112_2221111 acc=10+1=11
|
||
|
acc=11+2 (digit 2)
|
||
|
(4*3 + 2 - 13) = 1 fixed:1102211112_22211111 acc=13+1=14
|
||
|
acc=14+1 (digit 1)
|
||
|
(5*3 + 2 - 15) = 2 fixed:1102211112_222111112 acc=15+2=17
|
||
|
acc=17+1 (digit 1)
|
||
|
(6*3 + 2 - 18) = 2 fixed:1102211112_2221111122 acc=15+2=17
|
||
|
|
||
|
1102211112 2221111122 (0x63A4A76D or 1671735149 decimal)
|
||
|
|
||
|
0x63A4A76D/27 decimal = 0x3B0C3D4
|
||
|
1671735149 % 27 decimal = 17 decimal. = 122 base3 (1*9+2*3+2).
|
||
|
|
||
|
Serial/Count…
|
||
|
[Fixed] Serial = 0x63A4A76D (sn=0x3B0C3D4, Id1=1, Id0=2, Btn=2)
|
||
|
[Rolling] Count = 0xE6000000
|
||
|
|
||
|
|
||
|
Filetype: Flipper SubGhz Key File
|
||
|
Version: 1
|
||
|
Frequency: 315000000
|
||
|
Preset: FuriHalSubGhzPresetOok650Async
|
||
|
Protocol: Security+ 1.0
|
||
|
Bit: 42
|
||
|
Key: 63 A4 A7 6D E6 00 00 00
|
||
|
|
||
|
|
||
|
|
||
|
Security+2.0
|
||
|
=============
|
||
|
|
||
|
Filetype: Flipper SubGhz RAW File
|
||
|
Version: 1
|
||
|
Frequency: 315000000
|
||
|
Preset: FuriHalSubGhzPresetOok650Async
|
||
|
Protocol: RAW
|
||
|
RAW_Data: 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -500 250 -250 250 -250 250 -250 500 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -500 500 -500 250 -250 500 -500 250 -250 250 -250 250 -250 250 -250 500 -500 250 -250 250 -250 250 -250 250 -250 250 -250 500 -500 500 -250 250 -250 250 -500 500 -500 500 -500 250 -250 500 -250 250 -500 500 -250 250 -68000
|
||
|
RAW_Data: 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -250 250 -500 250 -250 250 -250 250 -250 500 -500 500 -250 250 -500 500 -500 500 -250 250 -500 500 -250 250 -500 500 -500 250 -250 500 -500 250 -250 500 -500 250 -250 500 -250 250 -250 250 -500 250 -250 500 -250 250 -500 250 -250 250 -250 250 -250 250 -250 500 -500 250 -250 250 -250 250 -250 250 -250 250 -250 500 -68000
|
||
|
|
||
|
Repeats 10 times.
|
||
|
|
||
|
Convert into 250 groups... (positive is 1, negative is 0)
|
||
|
250=1 500=11 -250=0 -500=00
|
||
|
|
||
|
Bitstream:
|
||
|
101010101010101010101010101010100101010110101010101010101001100101100101010101100101010101011001101010011001100101101001101 0... (272 zeros)
|
||
|
101010101010101010101010101010100101010110011010011001101001101001100101100101100101101010010110100101010101100101010101011 0... (272 zeros)
|
||
|
|
||
|
Group into pairs:
|
||
|
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 01 01 01 01 10 10 10 10 10 10 10 10 10 01 10 01 01 10 01 01 01 01 01 10 01 01 01 01 01 01 10 01 10 10 10 01 10 01 10 01 01 10 10 01 10 10 ...
|
||
|
|
||
|
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 01 01 01 01 10 01 10 10 01 10 01 10 10 01 10 10 01 10 01 01 10 01 01 10 01 01 10 10 10 01 01 10 10 01 01 01 01 01 10 01 01 01 01 01 01 10 ...
|
||
|
|
||
|
Second digit is value (explain examples... 10 = 0, 01 = 1)
|
||
|
|
||
|
00000000000000001111000000000101101111101111110100010101100100
|
||
|
3C016FBF4564 [Pk1]
|
||
|
|
||
|
00000000000000001111010010100100101101101100011001111101111110
|
||
|
3D292DB19F7E [Pk2]
|
||
|
|
||
|
Filetype: Flipper SubGhz Key File
|
||
|
Version: 1
|
||
|
Frequency: 315000000
|
||
|
Preset: FuriHalSubGhzPresetOok650Async
|
||
|
Protocol: Security+ 2.0
|
||
|
Bit: 62
|
||
|
Key: 00 00 3D 29 2D B1 9F 7E
|
||
|
Secplus_packet_1: 00 00 3C 01 6F BF 45 64
|
||
|
|
||
|
PK1: 00 00 3C 01 6F BF 45 64
|
||
|
PK2: 00 00 3D 29 2D B1 9F 7E
|
||
|
|
||
|
secplus_packet_1:
|
||
|
00000000000000001111000000000101101111101111110100010101100100 [Pk1] 3C016FBF4564
|
||
|
9 8 7 6 5 4 3 2 1 0 [p2]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p1]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p0]
|
||
|
3210 [invert]
|
||
|
3210 [order]
|
||
|
|
||
|
base3 digits... p2[1:0] p2[3:2] p2[5:4] p2[7:6] p2[9:8] [roll 8..4]
|
||
|
base3 digits... invert[1:0] invert[3:2] order[1:0] order[3:2] [roll 3..0]
|
||
|
fixed1 = p0*1024+p1
|
||
|
|
||
|
invert method: subghz_protocol_secplus_v2_mix_invet
|
||
|
order method: subghz_protocol_secplus_v2_mix_order_decode
|
||
|
|
||
|
Repeat above for 2nd packet.
|
||
|
|
||
|
reorder rolling digits (rp2[8],rp1[8],rp2[4:7],rp1[4:7],rp2[0:3],rp1[0:3])
|
||
|
rolling digits from base3 to binary.
|
||
|
Count = reverse(rolling 28-bit)
|
||
|
Btn = fixed1 [20:12]
|
||
|
Sn = (fixed1 [19:0],fixed2)
|
||
|
|
||
|
|
||
|
Can you show me the "25 steps" to decode a Security+2.0 signal.
|
||
|
|
||
|
|
||
|
|
||
|
3C016FBF4564 001111000000000101101111101111110100010101100100 [Pk1]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p2]
|
||
|
p2 = 1111000100b = 964
|
||
|
|
||
|
3C016FBF4564 001111000000000101101111101111110100010101100100 [Pk1]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p1]
|
||
|
p1 = 0101101000b = 360
|
||
|
|
||
|
3C016FBF4564 001111000000000101101111101111110100010101100100 [Pk1]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p0]
|
||
|
p0 = 1111110111b = 1015
|
||
|
|
||
|
|
||
|
3C016FBF4564 001111000000000101101111101111110100010101100100 [Pk1]
|
||
|
3210 [invert]
|
||
|
invert method = 0101b = 0x5
|
||
|
|
||
|
3C016FBF4564 001111000000000101101111101111110100010101100100 [Pk1]
|
||
|
3210 [order]
|
||
|
order method = 0000b = 0x0
|
||
|
|
||
|
|
||
|
invert method 0x5 in subghz_protocol_secplus_v2_mix_invet
|
||
|
method 0x5 : invert p0 and p2 bits. subghz_protocol_secplus_v2_mix_invet
|
||
|
|
||
|
p0 = 1111110111b
|
||
|
0000001000b = 8 decimal
|
||
|
p1 = 0101101000b
|
||
|
0101101000b = 360 decimal
|
||
|
p2 = 1111000100b
|
||
|
0000111011b = 59 decimal
|
||
|
|
||
|
order method 0x0: subghz_protocol_secplus_v2_mix_order_decode
|
||
|
method 0x0 : swap p1 and p2 subghz_protocol_secplus_v2_mix_order_decode
|
||
|
|
||
|
p0 = 0000001000b = 8
|
||
|
p1 = 0000111011b = 59 decimal
|
||
|
p2 = 0101101000b = 360 decimal
|
||
|
9876543210
|
||
|
|
||
|
base3 digits... p2[1:0] p2[3:2] p2[5:4] p2[7:6] p2[9:8] [roll 8..4]
|
||
|
02211xxxx
|
||
|
|
||
|
base3 digits... invert[1:0] invert[3:2] order[1:0] order[3:2] [roll 3..0]
|
||
|
1100
|
||
|
|
||
|
rollH1 [8..0] = 022111100
|
||
|
|
||
|
fixed1 = p0*1024+p1 8*1024+59 8192+59 = 8251
|
||
|
|
||
|
|
||
|
|
||
|
3D292DB19F7E 001111010010100100101101101100011001111101111110 [Pk2]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p0]
|
||
|
p0 = 1111001111b = 975
|
||
|
|
||
|
3D292DB19F7E 001111010010100100101101101100011001111101111110 [Pk2]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p1]
|
||
|
p1 = 0000101011b = 43
|
||
|
|
||
|
3D292DB19F7E 001111010010100100101101101100011001111101111110 [Pk2]
|
||
|
9 8 7 6 5 4 3 2 1 0 [p2]
|
||
|
p2 = 1110111110b = 958
|
||
|
|
||
|
3D292DB19F7E 001111010010100100101101101100011001111101111110 [Pk2]
|
||
|
3210 invert
|
||
|
invert method = 0100b = 0x4
|
||
|
|
||
|
3D292DB19F7E 001111010010100100101101101100011001111101111110 [Pk2]
|
||
|
3210 order
|
||
|
order method = 1010b = 0xA
|
||
|
|
||
|
invert method 0x4: subghz_protocol_secplus_v2_mix_invet
|
||
|
method 0x4 : invert all.
|
||
|
|
||
|
p0 = 1111001111b
|
||
|
0000110000 = 48 decimal
|
||
|
p1 = 0000101011b
|
||
|
1111010100 = 980 decimal
|
||
|
p2 = 1110111110b
|
||
|
0001000001 = 65 decimal
|
||
|
|
||
|
order method 0xa: subghz_protocol_secplus_v2_mix_order_decode
|
||
|
method 0xa : no reodering
|
||
|
|
||
|
p0 = 0000110000 = 48 decimal
|
||
|
p1 = 1111010100 = 980 decimal
|
||
|
p2 = 0001000001 = 65 decimal
|
||
|
9876543210
|
||
|
|
||
|
base3 digits... p2[1:0] p2[3:2] p2[5:4] p2[7:6] p2[9:8] [roll 8..4]
|
||
|
10010xxxx
|
||
|
|
||
|
base3 digits... invert[1:0] invert[3:2] order[1:0] order[3:2] [roll 3..0]
|
||
|
0122
|
||
|
|
||
|
rollH2 [8..0] = 100100122
|
||
|
|
||
|
fixed2 = p0*1024+p1 48*1024+980 = 50132
|
||
|
|
||
|
fixed2 = 50132 decimal = 1100001111010100b
|
||
|
fixed1 = 8251 decimal = 0010000000111011b
|
||
|
|
||
|
rollH1 [8..0] = 022111100
|
||
|
rollH2 [8..0] = 100100122
|
||
|
|
||
|
reorder rolling digits (rH2[8],rH1[8],rH2[4:7],rH1[4:7],rH2[0:3],rH1[0:3])
|
||
|
reverse... 100100112222100011 (base3)
|
||
|
= 134217895 decimal
|
||
|
= 1000000000000000000010100111 binary
|
||
|
reverse... 1110010100000000000000000001 binary
|
||
|
0xE500001
|
||
|
|
||
|
Count = 0xE500001
|
||
|
Btn = fixed1 [15:12] 0010b = 2 dec
|
||
|
Sn = (fixed1 [11:0] fixed2[15:0]) 000000111011_1100001111010100b = 0x3BC3D4
|
||
|
|