This commit is contained in:
2025-03-26 08:53:40 -05:00
parent 10c83ac965
commit 407916e30c
3 changed files with 120 additions and 111 deletions

View File

@@ -7,44 +7,44 @@
- total number of properties: 54 - total number of properties: 54
## Customer Cipher ## Customer Cipher
- property key: [12683 37623 46427 24232 53244 25444 34138 18278 52542 17394 45705 57706 - property key: [17384 21071 64263 14173 48872 51553 28021 45694 56555 33805 2625 64735
22403 60684 20477 13672 47069 29025 8419 8211 36163 21756 45607 31517 26395 23421 5291 64801 27594 45755 18570 21108 24021 32654 60698 36958
44312 19522 17814 41879 18325 2622 43956 30841 59391 52171 51029 44917 32655 8083 48743 18902 2050 58888 49782 53855 6539 61094 11244 16942
28846 25756 24212 4239 11940 31284 58701 7692 31504 25629 20378 35504 26841 50742 36717 15708 51338 47424 44243 62691 15630 41373 14725 34483
45861 59860 4819 52686 62304 58952] 9141 48067 10942 13010 44634 40143]
- position key: [29587 60364 47856 53105 61491 65374 34021 4048 33167] - position key: [26845 24321 52293 19187 29228 61277 32841 51235 34682]
--- ---
## User Cipher ## User Cipher
- property key: [14398 56125 29659 36184 61716 58844 42259 48679 36351 53209 63475 35295 - property key: [ 6859 23873 43509 63326 38209 4681 6549 58196 20386 45543 7213 10665
1927 35139 48674 32220 3724 62784 11332 63262 61320 62990 59038 61659 59595 37675 38733 28230 18106 11839 217 58358 45503 9119 13711 47091
31829 24135 49167 50519 23410 2470 22259 32544 30127 27527 18620 39840 2477 4601 12968 25412 57571 1504 36875 36008 22596 65108 20334 57220
105 31222 38444 37307 58991 39926 16285 42364 843 30922 30467 43324 57449 9749 48916 23941 16493 45581 22735 8888 45253 44959 47418 52406
13596 3432 28064 33665 35252 8733] 38448 31290 22494 51292 26944 44318]
- passcode key: [43892 51915 3968 29221 4 52573 20838 48052 39138 14671] - passcode key: [61110 58124 49630 7713 65071 1473 10319 26443 24286 22]
- combined position key: [40967 35807 54041 52517 31281 56961 42242 11385 1018] - combined position key: [17105 6226 55543 52110 63357 65173 47236 36681 52804]
- mask key: [57731 56088 1801 26915 40765 22438 9693 31860 17942 7993] - mask key: [ 5981 20544 34128 22101 9735 7951 7840 53333 61565 214]
### Combined Postion Key ### Combined Postion Key
```mermaid ```mermaid
block-beta block-beta
columns 2 columns 2
user_pos["user position key:\n[24890 2120 45550 47291 61945 28551 49488 49734 20771]"] user_pos["user position key:\n[15348 25802 2932 35759 37505 7088 5681 24341 39057]"]
customer_pos["customer position key:\n[29587 60364 47856 53105 61491 65374 34021 4048 33167]"] customer_pos["customer position key:\n[26845 24321 52293 19187 29228 61277 32841 51235 34682]"]
space:2 space:2
xor(("XOR")):2 xor(("XOR")):2
user_pos --> xor user_pos --> xor
customer_pos --> xor customer_pos --> xor
space:2 space:2
comb_pos["combined position key\n[40967 35807 54041 52517 31281 56961 42242 11385 1018]"]:2 comb_pos["combined position key\n[17105 6226 55543 52110 63357 65173 47236 36681 52804]"]:2
xor --> comb_pos xor --> comb_pos
``` ```
## User Keypad ## User Keypad
- keypad: - keypad example:<br/>Key 0: [ 0 1 2 21 4 5 24 16 44]<br/>Key 1: [36 46 38 3 49 23 33 43 35]<br/>Key 2: [18 37 20 39 40 50 42 25 26]<br/>Key 3: [45 19 47 48 31 41 51 52 53]<br/>Key 4: [27 28 11 12 22 32 15 7 17]<br/>Key 5: [ 9 10 29 30 13 14 6 34 8]<br/>
- user passcode indices: [12, 4, 51, 33] - user passcode indices: [16, 23, 45, 41]
## nKode Cipher ## nKode Cipher
@@ -52,54 +52,54 @@ block-beta
```mermaid ```mermaid
block-beta block-beta
columns 2 columns 2
cprop["customer_property_key\n[12683 37623 46427 24232 53244 25444 34138 18278 52542 17394 45705 57706 cprop["customer_property_key\n[17384 21071 64263 14173 48872 51553 28021 45694 56555 33805 2625 64735
22403 60684 20477 13672 47069 29025 8419 8211 36163 21756 45607 31517 26395 23421 5291 64801 27594 45755 18570 21108 24021 32654 60698 36958
44312 19522 17814 41879 18325 2622 43956 30841 59391 52171 51029 44917 32655 8083 48743 18902 2050 58888 49782 53855 6539 61094 11244 16942
28846 25756 24212 4239 11940 31284 58701 7692 31504 25629 20378 35504 26841 50742 36717 15708 51338 47424 44243 62691 15630 41373 14725 34483
45861 59860 4819 52686 62304 58952]"] 9141 48067 10942 13010 44634 40143]"]
uprop["user_property_key\n[14398 56125 29659 36184 61716 58844 42259 48679 36351 53209 63475 35295 uprop["user_property_key\n[ 6859 23873 43509 63326 38209 4681 6549 58196 20386 45543 7213 10665
1927 35139 48674 32220 3724 62784 11332 63262 61320 62990 59038 61659 59595 37675 38733 28230 18106 11839 217 58358 45503 9119 13711 47091
31829 24135 49167 50519 23410 2470 22259 32544 30127 27527 18620 39840 2477 4601 12968 25412 57571 1504 36875 36008 22596 65108 20334 57220
105 31222 38444 37307 58991 39926 16285 42364 843 30922 30467 43324 57449 9749 48916 23941 16493 45581 22735 8888 45253 44959 47418 52406
13596 3432 28064 33665 35252 8733]"] 38448 31290 22494 51292 26944 44318]"]
space:2 space:2
xor1(("XOR")):2 xor1(("XOR")):2
cprop --> xor1 cprop --> xor1
uprop --> xor1 uprop --> xor1
space:2 space:2
prop["combined_property_key\n[32565 54767 5127 26787 61372 9024 10051 31192 36215 25953 63643 7907 prop["combined_property_key\n[ 3998 21572 55042 58365 40151 56917 7146 59748 41624 5784 34350 32869
34275 49131 65253 35224 52025 49525 36214 22719 57589 6411 46986 50058 53395 9331 14458 19129 53918 11036 33943 47140 13973 55881 48429 60127
38701 701 36150 6894 36770 58151 63226 62425 5898 2177 3529 29703 51683 5313 42763 50259 48824 61851 14521 48287 21836 28900 38175 36849
30896 41755 9016 47283 14611 18887 54104 55155 32367 2577 31449 39233 53395 56365 51787 3932 9457 4434 50392 35667 65060 8394 57404 19291
18953 7162 61412 6044 61623 4668]"] 36039 26883 24085 29399 24324 41103]"]
xor1 --> prop xor1 --> prop
pass["user_passcode_indices\n[12, 4, 51, 33]"] pass["user_passcode_indices\n[16, 23, 45, 41]"]
space:2 space:2
sel(("select\nproperties")):2 sel(("select\nproperties")):2
pass --> sel pass --> sel
prop --> sel prop --> sel
space:2 space:2
passcode["user passcode properties:\n[34275 61372 6044 2177]"]:2 passcode["user passcode properties:\n[53918 60127 8394 4434]"]:2
sel --> passcode sel --> passcode
space:2 space:2
pad["zero pad to\nmax nkode length: 10"]:2 pad["zero pad to\nmax nkode length: 10"]:2
passcode -->pad passcode -->pad
space:2 space:2
paddedpasscode["padded passcode:\n[34275 61372 6044 2177 0 0 0 0 0 0]"] paddedpasscode["padded passcode:\n[53918 60127 8394 4434 0 0 0 0 0 0]"]
pad --> paddedpasscode pad --> paddedpasscode
passkey["passcode key:\n[43892 51915 3968 29221 4 52573 20838 48052 39138 14671]"] passkey["passcode key:\n[61110 58124 49630 7713 65071 1473 10319 26443 24286 22]"]
space:2 space:2
xor2(("XOR")):2 xor2(("XOR")):2
passkey --> xor2 passkey --> xor2
paddedpasscode --> xor2 paddedpasscode --> xor2
space:2 space:2
cipheredpass["ciphered passcode:\n[11927 9591 6172 31396 4 52573 20838 48052 39138 14671]"]:2 cipheredpass["ciphered passcode:\n[15400 2515 57620 3955 65071 1473 10319 26443 24286 22]"]:2
xor2 --> cipheredpass xor2 --> cipheredpass
space:2 space:2
hash(("hash")):2 hash(("hash")):2
cipheredpass --> hash cipheredpass --> hash
space:2 space:2
cipheredhashed["hashed ciphered passcode:\n$2b$12$Jf48A5rmjkxb0II7CkuD8.Qg3GCuROgbS99pMbthC2gXt9szx9gmm"]:2 cipheredhashed["hashed ciphered passcode:\n$2b$12$4ew1R/6AXYkPuF4PO4CpQeCEEGMuoo7N8Rnj1yAGOGenJ8vc689ge"]:2
hash --> cipheredhashed hash --> cipheredhashed
``` ```
@@ -107,9 +107,9 @@ block-beta
```mermaid ```mermaid
block-beta block-beta
columns 3 columns 3
passcode_idx["passcode indices:\n[12, 4, 51, 33]"] passcode_idx["passcode indices:\n[16, 23, 45, 41]"]
comb_pos["combined position key:\n[40967 35807 54041 52517 31281 56961 42242 11385 1018]"] comb_pos["combined position key:\n[17105 6226 55543 52110 63357 65173 47236 36681 52804]"]
cust_pos["customer position key:\n[29587 60364 47856 53105 61491 65374 34021 4048 33167]"] cust_pos["customer position key:\n[26845 24321 52293 19187 29228 61277 32841 51235 34682]"]
space:3 space:3
propidx(["Get Position Idx:\nmap each to element mod props_per_key"]) propidx(["Get Position Idx:\nmap each to element mod props_per_key"])
@@ -120,7 +120,7 @@ block-beta
cust_pos --> xor1 cust_pos --> xor1
space:3 space:3
passcode_position_idx["passcode poition indices:\n[3, 4, 6, 6]"] passcode_position_idx["passcode poition indices:\n[7, 5, 0, 5]"]
propidx --> passcode_position_idx propidx --> passcode_position_idx
space:5 space:5
@@ -128,10 +128,10 @@ block-beta
passcode_position_idx --> pad1 passcode_position_idx --> pad1
space:5 space:5
posidx["Padded Passcode Position Indices:\n[3, 4, 6, 6, 3, 3, 7, 5, 0, 8]"] posidx["Padded Passcode Position Indices:\n[7, 5, 0, 5, 6, 3, 1, 2, 8, 5]"]
pad1 --> posidx pad1 --> posidx
space:1 space:1
user_pos["user position key:\n[24890 2120 45550 47291 61945 28551 49488 49734 20771]"] user_pos["user position key:\n[15348 25802 2932 35759 37505 7088 5681 24341 39057]"]
xor1 --> user_pos xor1 --> user_pos
space:4 space:4
@@ -139,15 +139,15 @@ block-beta
user_pos --> sel user_pos --> sel
posidx --> sel posidx --> sel
space:5 space:5
passcode_pos["ordered user passcode positions:\n[47291 61945 49488 49488 47291 47291 49734 28551 24890 20771]"] passcode_pos["ordered user passcode positions:\n[24341 7088 15348 7088 5681 35759 25802 2932 39057 7088]"]
sel --> passcode_pos sel --> passcode_pos
mask_key["mask key\n[57731 56088 1801 26915 40765 22438 9693 31860 17942 7993]"] mask_key["mask key\n[ 5981 20544 34128 22101 9735 7951 7840 53333 61565 214]"]
space:4 space:4
xor2(("XOR")) xor2(("XOR"))
mask_key --> xor2 mask_key --> xor2
passcode_pos --> xor2 passcode_pos --> xor2
space:5 space:5
mask["enciphered mask:\n [22840 10977 50777 43123 10118 61213 59291 5107 10028 19994]"] mask["enciphered mask:\n [18504 19440 48804 19941 12342 38048 31338 56097 26860 7014]"]
xor2 --> mask xor2 --> mask
``` ```
@@ -156,19 +156,19 @@ block-beta
```mermaid ```mermaid
block-beta block-beta
columns 3 columns 3
selected_keys["selected keys:\n[1, 0, 5, 0]"] selected_keys["selected keys:\n[0, 1, 3, 3]"]
login_keypad["login keypad:\nKey 0: [45 46 29 48 4 50 33 16 17] login_keypad["login keypad:\nKey 0: [ 0 1 2 21 4 5 24 16 44]
Key 1: [18 1 20 12 49 5 15 34 44] Key 1: [36 46 38 3 49 23 33 43 35]
Key 2: [27 10 38 3 31 14 24 7 26] Key 2: [18 37 20 39 40 50 42 25 26]
Key 3: [ 0 37 11 39 22 23 42 52 8] Key 3: [45 19 47 48 31 41 51 52 53]
Key 4: [36 19 2 21 40 32 6 25 35] Key 4: [27 28 11 12 22 32 15 7 17]
Key 5: [ 9 28 47 30 13 41 51 43 53] Key 5: [ 9 10 29 30 13 14 6 34 8]
"] "]
space:4 space:4
selectkeys(("select keys")) selectkeys(("select keys"))
mask["enciphered mask:\n [22840 10977 50777 43123 10118 61213 59291 5107 10028 19994]"] mask["enciphered mask:\n [18504 19440 48804 19941 12342 38048 31338 56097 26860 7014]"]
mask_key["mask key:\n[57731 56088 1801 26915 40765 22438 9693 31860 17942 7993]"] mask_key["mask key:\n[ 5981 20544 34128 22101 9735 7951 7840 53333 61565 214]"]
space:2 space:2
xor1(("XOR")) xor1(("XOR"))
@@ -178,12 +178,12 @@ Key 5: [ 9 28 47 30 13 41 51 43 53]
login_keypad --> selectkeys login_keypad --> selectkeys
space:3 space:3
ordered_keys["ordered keys:\n[[18 1 20 12 49 5 15 34 44] ordered_keys["ordered keys:\n[[ 0 1 2 21 4 5 24 16 44]
[45 46 29 48 4 50 33 16 17] [36 46 38 3 49 23 33 43 35]
[ 9 28 47 30 13 41 51 43 53] [45 19 47 48 31 41 51 52 53]
[45 46 29 48 4 50 33 16 17]]"] [45 19 47 48 31 41 51 52 53]]"]
user_position_key["user position key:\n[24890 2120 45550 47291 61945 28551 49488 49734 20771]"] user_position_key["user position key:\n[15348 25802 2932 35759 37505 7088 5681 24341 39057]"]
passcode_pos["ordered user passcode positions:\n[47291 61945 49488 49488 47291 47291 49734 28551 24890 20771]"] passcode_pos["ordered user passcode positions:\n[24341 7088 15348 7088 5681 35759 25802 2932 39057 7088]"]
selectkeys --> ordered_keys selectkeys --> ordered_keys
xor1 --> passcode_pos xor1 --> passcode_pos
space:8 space:8
@@ -193,7 +193,7 @@ Key 5: [ 9 28 47 30 13 41 51 43 53]
passcode_pos --> get_passcode_idxs passcode_pos --> get_passcode_idxs
space:8 space:8
passcode_pos_idxs["padded passcode position indices:\n[3, 4, 6, 6, 3, 3, 7, 5, 0, 8]"] passcode_pos_idxs["padded passcode position indices:\n[7, 5, 0, 5, 6, 3, 1, 2, 8, 5]"]
get_passcode_idxs --> passcode_pos_idxs get_passcode_idxs --> passcode_pos_idxs
space:3 space:3
@@ -202,13 +202,13 @@ Key 5: [ 9 28 47 30 13 41 51 43 53]
passcode_pos_idxs --> get_presumed_idxs passcode_pos_idxs --> get_presumed_idxs
space:5 space:5
passcode_prop_idxs["presumed passcode property indices:\n[12, 4, 51, 33]"] passcode_prop_idxs["presumed passcode property indices:\n[16, 23, 45, 41]"]
prop["combined_property_key\n[32565 54767 5127 26787 61372 9024 10051 31192 36215 25953 63643 7907 prop["combined_property_key\n[ 3998 21572 55042 58365 40151 56917 7146 59748 41624 5784 34350 32869
34275 49131 65253 35224 52025 49525 36214 22719 57589 6411 46986 50058 53395 9331 14458 19129 53918 11036 33943 47140 13973 55881 48429 60127
38701 701 36150 6894 36770 58151 63226 62425 5898 2177 3529 29703 51683 5313 42763 50259 48824 61851 14521 48287 21836 28900 38175 36849
30896 41755 9016 47283 14611 18887 54104 55155 32367 2577 31449 39233 53395 56365 51787 3932 9457 4434 50392 35667 65060 8394 57404 19291
18953 7162 61412 6044 61623 4668]"] 36039 26883 24085 29399 24324 41103]"]
cipheredhashed["hashed ciphered passcode:\n$2b$12$Jf48A5rmjkxb0II7CkuD8.Qg3GCuROgbS99pMbthC2gXt9szx9gmm"] cipheredhashed["hashed ciphered passcode:\n$2b$12$4ew1R/6AXYkPuF4PO4CpQeCEEGMuoo7N8Rnj1yAGOGenJ8vc689ge"]
get_presumed_idxs --> passcode_prop_idxs get_presumed_idxs --> passcode_prop_idxs
space:3 space:3
@@ -217,7 +217,7 @@ Key 5: [ 9 28 47 30 13 41 51 43 53]
prop --> sel prop --> sel
space:5 space:5
passcode_prop["presumed passcode properties:\n[34275 61372 6044 2177]"] passcode_prop["presumed passcode properties:\n[53918 60127 8394 4434]"]
sel --> passcode_prop sel --> passcode_prop
space:5 space:5
@@ -225,7 +225,7 @@ Key 5: [ 9 28 47 30 13 41 51 43 53]
passcode_prop --> cipher passcode_prop --> cipher
space:5 space:5
cipheredpass["ciphered passcode:\n[11927 9591 6172 31396 4 52573 20838 48052 39138 14671]"] cipheredpass["ciphered passcode:\n[15400 2515 57620 3955 65071 1473 10319 26443 24286 22]"]
cipher --> cipheredpass cipher --> cipheredpass
space:7 space:7
@@ -250,26 +250,26 @@ nKode renewal is a three step process:
```mermaid ```mermaid
flowchart flowchart
subgraph Renew Customer Keys subgraph Renew Customer Keys
old_prop["`old customer property key:<br/>[18187 3794 26588 58875 7848 50844 33360 51199 136 43704 3944 38716 old_prop["`old customer property key:<br/>[ 5461 2309 32503 5283 2454 52252 639 2608 60730 42879 39427 43468
33380 13992 16583 62532 50613 13365 41266 44961 3965 61189 20756 13137 14424 46936 44855 9471 37924 1315 33870 23506 34602 63958 34978 23852
60280 23802 19769 57273 54480 60033 40969 36089 25253 25350 17781 61351 49230 1336 38307 42775 24155 62587 43186 12343 3336 36528 55921 20597
30937 56045 46356 10504 57212 53809 60613 29199 32036 29403 3546 12413 12538 64056 30047 21209 25756 41823 39959 43499 20193 36693 22790 34797
32533 5778 33348 37917 30979 12321]`"] 6903 4921 2507 47755 13892 3473]`"]
new_prop["`new customer property key:<br/>[12683 37623 46427 24232 53244 25444 34138 18278 52542 17394 45705 57706 new_prop["`new customer property key:<br/>[17384 21071 64263 14173 48872 51553 28021 45694 56555 33805 2625 64735
22403 60684 20477 13672 47069 29025 8419 8211 36163 21756 45607 31517 26395 23421 5291 64801 27594 45755 18570 21108 24021 32654 60698 36958
44312 19522 17814 41879 18325 2622 43956 30841 59391 52171 51029 44917 32655 8083 48743 18902 2050 58888 49782 53855 6539 61094 11244 16942
28846 25756 24212 4239 11940 31284 58701 7692 31504 25629 20378 35504 26841 50742 36717 15708 51338 47424 44243 62691 15630 41373 14725 34483
45861 59860 4819 52686 62304 58952]`"] 9141 48067 10942 13010 44634 40143]`"]
old_pos["`old customer position key:<br/>[49469 33687 25335 30110 35784 45318 25682 60991 21209]`"] old_pos["`old customer position key:<br/>[31013 31896 54147 16417 26108 58661 44725 53340 22229]`"]
new_pos["`new customer position key:<br/>[29587 60364 47856 53105 61491 65374 34021 4048 33167]`"] new_pos["`new customer position key:<br/>[26845 24321 52293 19187 29228 61277 32841 51235 34682]`"]
xor1(("XOR")) xor1(("XOR"))
xor2(("XOR")) xor2(("XOR"))
xor_prop["`xor property key:<br/>[30336 39973 53895 47955 53588 42488 1802 32921 52662 59722 48609 30294 xor_prop["`xor property key:<br/>[22205 23370 34288 9214 46974 1405 28426 47182 12753 9074 36930 21779
54759 56228 3898 49452 29288 17748 33233 36786 33342 48121 58163 18508 24387 60453 48028 55774 65518 47000 52420 2470 56063 34392 26040 52594
18016 4280 2223 31790 37701 57535 3005 62592 34138 43213 33312 16594 49089 6827 11204 61121 22105 4723 27332 57960 5251 24598 61853 4699
2167 48753 60288 14727 61912 43013 2440 27651 1588 5830 16960 47821 22563 15374 64050 28549 44054 6687 12484 23816 29679 11976 24707 350
52272 65350 37015 22995 35427 54889]`"] 14658 43258 9077 34905 38942 37214]`"]
xor_pos["`xor position key:<br/>[45742 26715 55303 47855 31739 20056 57527 57839 54102]`"] xor_pos["`xor position key:<br/>[ 4600 9113 8134 2770 6096 2680 12028 6271 53679]`"]
old_prop --> xor1 old_prop --> xor1
new_prop --> xor1 new_prop --> xor1
xor1 --> xor_prop xor1 --> xor_prop
@@ -283,12 +283,12 @@ nKode renewal is a three step process:
users --> eachuser users --> eachuser
subgraph eachuser [for each user] subgraph eachuser [for each user]
subgraph old user keys subgraph old user keys
old_user_pos["`combined position key:<br/>[24890 2120 45550 47291 61945 28551 49488 49734 20771]`"] old_user_pos["`combined position key:<br/>[15348 25802 2932 35759 37505 7088 5681 24341 39057]`"]
old_user_prop["`property key:<br/>[14398 56125 29659 36184 61716 58844 42259 48679 36351 53209 63475 35295 old_user_prop["`property key:<br/>[ 6859 23873 43509 63326 38209 4681 6549 58196 20386 45543 7213 10665
1927 35139 48674 32220 3724 62784 11332 63262 61320 62990 59038 61659 59595 37675 38733 28230 18106 11839 217 58358 45503 9119 13711 47091
31829 24135 49167 50519 23410 2470 22259 32544 30127 27527 18620 39840 2477 4601 12968 25412 57571 1504 36875 36008 22596 65108 20334 57220
105 31222 38444 37307 58991 39926 16285 42364 843 30922 30467 43324 57449 9749 48916 23941 16493 45581 22735 8888 45253 44959 47418 52406
13596 3432 28064 33665 35252 8733]`"] 38448 31290 22494 51292 26944 44318]`"]
old_renew["renew: False"] old_renew["renew: False"]
end end
xor3(("XOR")) xor3(("XOR"))
@@ -300,12 +300,12 @@ nKode renewal is a three step process:
xor_prop --> xor4 xor_prop --> xor4
xor4 --> inter_user_prop xor4 --> inter_user_prop
subgraph inter_user[intermediate user keys] subgraph inter_user[intermediate user keys]
inter_user_pos["`combined position key:<br/>[ 4777 58244 2846 30666 458 37081 17845 52630 53420]`"] inter_user_pos["`combined position key:<br/>[21289 15307 50993 49500 57517 62701 38520 38710 8171]`"]
inter_user_prop["`property key:<br/>[20158 18200 41308 13835 8256 16420 41497 16062 16457 9875 18962 65417 inter_user_prop["`property key:<br/>[19574 1547 11269 54432 8767 5940 30367 23322 32371 37525 35951 31930
53856 21223 45336 48368 31972 45076 44437 30892 28086 19959 1453 47255 46984 32526 11473 47000 47444 39335 52253 59984 27456 42439 20535 31361
14901 20223 51360 47481 51255 59673 23886 35744 61685 49994 51868 56178 46700 2898 6508 36229 46778 6035 64207 28352 19655 40514 48883 52703
2078 51079 32172 43068 6071 13299 13845 51583 1407 28172 13635 5105 47178 6683 17702 12800 60539 43026 26635 32688 49962 33111 55737 52712
63788 61998 64823 55890 983 62580]`"] 44914 53952 29867 16389 61790 15424]`"]
inter_renew["renew: True"] inter_renew["renew: True"]
end end
end end
@@ -316,12 +316,12 @@ nKode renewal is a three step process:
login["First login post renew"] login["First login post renew"]
inter_user --> login inter_user --> login
subgraph new_user [New User Keys] subgraph new_user [New User Keys]
new_user_pos["`combined position key:<br/>[37567 32382 36425 6535 11819 18071 35301 38878 29144]`"] new_user_pos["`combined position key:<br/>[65323 43160 15313 31589 56469 63324 16779 58877 46813]`"]
new_user_prop["`property key:<br/>[63204 21530 24393 63295 52024 46102 24361 23381 41968 3713 26133 17989 new_user_prop["`property key:<br/>[ 4877 339 2263 7952 818 48661 46131 56267 23637 56219 31553 4783
14193 46059 12280 45683 35436 9340 17577 37219 15797 39388 52148 29719 17734 11957 16009 8164 58199 21329 25805 42484 63685 33425 4845 26086
48300 18038 25938 62757 21612 28454 23892 12945 18057 62761 37107 25062 45993 37895 46700 19583 28941 36895 52143 15209 11188 569 60851 63329
27001 30212 20943 35287 60202 25046 29690 64376 57055 1554 42998 36674 33273 55731 2564 42007 14482 45812 39063 18143 15261 56200 36966 9873
45138 58609 25837 59944 8395 52185]`"] 43332 61052 51872 65507 42946 33203]`"]
new_renew["renew: False"] new_renew["renew: False"]
end end
login --> new_user login --> new_user

View File

@@ -20,6 +20,14 @@ def display_keypad(icons_array: np.ndarray, props_per_key: int) -> str:
icons += "\n" icons += "\n"
return icons return icons
def display_md_keypad(icons_array: np.ndarray, props_per_key: int) -> str:
icons = ""
for idx, row in enumerate(icons_array.reshape(-1, props_per_key)):
icons += f"Key {idx}: "
icons += str(row)
icons += "<br/>"
return icons
if __name__ == "__main__": if __name__ == "__main__":
api = NKodeAPI() api = NKodeAPI()
@@ -100,6 +108,7 @@ if __name__ == "__main__":
"mask": mask, "mask": mask,
"selected_keys": selected_keys_login, "selected_keys": selected_keys_login,
"login_keypad": display_keypad(login_keypad, keypad_size.props_per_key), "login_keypad": display_keypad(login_keypad, keypad_size.props_per_key),
"login_keypad_md": display_md_keypad(login_keypad, keypad_size.props_per_key),
"ordered_keys": login_keypad.reshape(-1, keypad_size.props_per_key)[selected_keys_login], "ordered_keys": login_keypad.reshape(-1, keypad_size.props_per_key)[selected_keys_login],
"old_props": old_props, "old_props": old_props,
"new_props": new_props, "new_props": new_props,

View File

@@ -35,7 +35,7 @@ block-beta
``` ```
## User Keypad ## User Keypad
- keypad: {{ user_keypad}} - keypad example:<br/>{{ login_keypad_md }}
- user passcode indices: {{ user_passcode_idxs}} - user passcode indices: {{ user_passcode_idxs}}
## nKode Cipher ## nKode Cipher