cyberchef 9.34.2 → 9.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/src/core/Utils.mjs +24 -0
- package/src/core/config/Categories.json +4 -1
- package/src/core/config/OperationConfig.json +1246 -155
- package/src/core/config/modules/Bletchley.mjs +2 -0
- package/src/core/config/modules/Default.mjs +4 -0
- package/src/core/lib/Base45.mjs +27 -0
- package/src/core/lib/Charts.mjs +2 -1
- package/src/core/lib/SIGABA.mjs +502 -0
- package/src/core/operations/Bombe.mjs +3 -0
- package/src/core/operations/Colossus.mjs +3 -0
- package/src/core/operations/Enigma.mjs +3 -0
- package/src/core/operations/FromBase45.mjs +89 -0
- package/src/core/operations/GetAllCasings.mjs +1 -1
- package/src/core/operations/Lorenz.mjs +3 -0
- package/src/core/operations/SIGABA.mjs +287 -0
- package/src/core/operations/ScatterChart.mjs +1 -1
- package/src/core/operations/SeriesChart.mjs +4 -1
- package/src/core/operations/ToBase45.mjs +78 -0
- package/src/core/operations/Typex.mjs +3 -0
- package/src/core/operations/index.mjs +6 -0
- package/src/node/index.mjs +15 -0
- package/tests/operations/index.mjs +3 -0
- package/tests/operations/tests/Base45.mjs +103 -0
- package/tests/operations/tests/GetAllCasings.mjs +3 -3
- package/tests/operations/tests/SIGABA.mjs +91 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base45 tests.
|
|
3
|
+
*
|
|
4
|
+
* @author Thomas Weißschuh [thomas@t-8ch.de]
|
|
5
|
+
*
|
|
6
|
+
* @copyright Crown Copyright 2021
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import TestRegister from "../../lib/TestRegister.mjs";
|
|
11
|
+
|
|
12
|
+
const defaultB45Alph = "0-9A-Z $%*+\\-./:";
|
|
13
|
+
|
|
14
|
+
TestRegister.addTests([
|
|
15
|
+
{
|
|
16
|
+
name: "To Base45: nothing",
|
|
17
|
+
input: "",
|
|
18
|
+
expectedOutput: "",
|
|
19
|
+
recipeConfig: [
|
|
20
|
+
{
|
|
21
|
+
op: "To Base45",
|
|
22
|
+
args: [defaultB45Alph],
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "To Base45: Spec encoding example 1",
|
|
28
|
+
input: "AB",
|
|
29
|
+
expectedOutput: "BB8",
|
|
30
|
+
recipeConfig: [
|
|
31
|
+
{
|
|
32
|
+
op: "To Base45",
|
|
33
|
+
args: [defaultB45Alph],
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "To Base45: Spec encoding example 2",
|
|
39
|
+
input: "Hello!!",
|
|
40
|
+
expectedOutput: "%69 VD92EX0",
|
|
41
|
+
recipeConfig: [
|
|
42
|
+
{
|
|
43
|
+
op: "To Base45",
|
|
44
|
+
args: [defaultB45Alph],
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "To Base45: Spec encoding example 3",
|
|
50
|
+
input: "base-45",
|
|
51
|
+
expectedOutput: "UJCLQE7W581",
|
|
52
|
+
recipeConfig: [
|
|
53
|
+
{
|
|
54
|
+
op: "To Base45",
|
|
55
|
+
args: [defaultB45Alph],
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "From Base45: nothing",
|
|
61
|
+
input: "",
|
|
62
|
+
expectedOutput: "",
|
|
63
|
+
recipeConfig: [
|
|
64
|
+
{
|
|
65
|
+
op: "From Base45",
|
|
66
|
+
args: [defaultB45Alph],
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "From Base45: Spec decoding example 1",
|
|
72
|
+
input: "QED8WEX0",
|
|
73
|
+
expectedOutput: "ietf!",
|
|
74
|
+
recipeConfig: [
|
|
75
|
+
{
|
|
76
|
+
op: "From Base45",
|
|
77
|
+
args: [defaultB45Alph],
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "From Base45: Invalid character",
|
|
83
|
+
input: "!",
|
|
84
|
+
expectedOutput: "Character not in alphabet: '!'",
|
|
85
|
+
recipeConfig: [
|
|
86
|
+
{
|
|
87
|
+
op: "From Base45",
|
|
88
|
+
args: [defaultB45Alph],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "From Base45: Invalid triplet value",
|
|
94
|
+
input: "ZZZ",
|
|
95
|
+
expectedOutput: "Triplet too large: 'ZZZ'",
|
|
96
|
+
recipeConfig: [
|
|
97
|
+
{
|
|
98
|
+
op: "From Base45",
|
|
99
|
+
args: [defaultB45Alph],
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
]);
|
|
@@ -11,7 +11,7 @@ TestRegister.addTests([
|
|
|
11
11
|
{
|
|
12
12
|
name: "All casings of test",
|
|
13
13
|
input: "test",
|
|
14
|
-
expectedOutput: "test\nTest\ntEst\nTEst\nteSt\nTeSt\ntESt\nTESt\ntesT\nTesT\ntEsT\nTEsT\nteST\nTeST\ntEST\nTEST
|
|
14
|
+
expectedOutput: "test\nTest\ntEst\nTEst\nteSt\nTeSt\ntESt\nTESt\ntesT\nTesT\ntEsT\nTEsT\nteST\nTeST\ntEST\nTEST",
|
|
15
15
|
recipeConfig: [
|
|
16
16
|
{
|
|
17
17
|
"op": "Get All Casings",
|
|
@@ -22,7 +22,7 @@ TestRegister.addTests([
|
|
|
22
22
|
{
|
|
23
23
|
name: "All casings of t",
|
|
24
24
|
input: "t",
|
|
25
|
-
expectedOutput: "t\nT
|
|
25
|
+
expectedOutput: "t\nT",
|
|
26
26
|
recipeConfig: [
|
|
27
27
|
{
|
|
28
28
|
"op": "Get All Casings",
|
|
@@ -33,7 +33,7 @@ TestRegister.addTests([
|
|
|
33
33
|
{
|
|
34
34
|
name: "All casings of null",
|
|
35
35
|
input: "",
|
|
36
|
-
expectedOutput: "
|
|
36
|
+
expectedOutput: "",
|
|
37
37
|
recipeConfig: [
|
|
38
38
|
{
|
|
39
39
|
"op": "Get All Casings",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIGABA machine tests
|
|
3
|
+
*
|
|
4
|
+
* @author hettysymes
|
|
5
|
+
* @copyright hettysymes 2020
|
|
6
|
+
* @license Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
import TestRegister from "../../lib/TestRegister.mjs";
|
|
9
|
+
|
|
10
|
+
TestRegister.addTests([
|
|
11
|
+
{
|
|
12
|
+
name: "SIGABA: encrypt test 1",
|
|
13
|
+
input: "HELLO WORLD TESTING THE SIGABA MACHINE",
|
|
14
|
+
expectedOutput: "ULBECJCZJBJFVUDWAVRGRBMPSQHOTTNVQEESKN",
|
|
15
|
+
recipeConfig: [
|
|
16
|
+
{
|
|
17
|
+
"op": "SIGABA",
|
|
18
|
+
"args": [
|
|
19
|
+
"BHKWECJDOVAYLFMITUGXRNSPZQ", true, "G",
|
|
20
|
+
"CDTAKGQOZXLVJYHSWMIBPRUNEF", false, "L",
|
|
21
|
+
"WAXHJZMBVDPOLTUYRCQFNSGKEI", false, "I",
|
|
22
|
+
"HUSCWIMJQXDALVGBFTOYZKRPNE", false, "T",
|
|
23
|
+
"RTLSMNKXFVWQUZGCHEJBYDAIPO", false, "B",
|
|
24
|
+
"GHAQBRJWDMNZTSKLOUXYPFIECV", false, "N",
|
|
25
|
+
"VFLGEMTCXZIQDYAKRPBONHWSUJ", true, "Q",
|
|
26
|
+
"ZQCAYHRJNXPFLKIOTBUSVWMGDE", false, "B",
|
|
27
|
+
"EZVSWPCTULGAOFDJNBIYMXKQHR", false, "J",
|
|
28
|
+
"ELKSGDXMVYJUZNCAROQBPWHITF", false, "R",
|
|
29
|
+
"3891625740", "3",
|
|
30
|
+
"6297135408", "1",
|
|
31
|
+
"2389715064", "8",
|
|
32
|
+
"9264351708", "6",
|
|
33
|
+
"9573086142", "6",
|
|
34
|
+
"Encrypt"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "SIGABA: encrypt test 2",
|
|
41
|
+
input: "PCRPJZWSPNOHMWANBFBEIVZOXDQESPYDEFBNTHXLSICIRPKUATJVDUQFLZOKGHHHDUDIBRKUHVCGAGLBWVGFFXNDHKPFSPSCIIPCXUFRRHNYWIJFEJWQSGMSNJHWSLPKVXHUQUWIURHDIHIUTWGQFIYLTKEZAUESWYEKIWXUSSXWXBEHCXCUDQWKCISVPKXJVPOIJZWTUGKAORBMKBAQUZOPTSUSYZRROWQUYKNCLHVIHEGWCCONGVHEKCEXVYIPNILIXTXDELNGLJGMEQKKQJWZLPNXPOGIOSVAEAJYKWYJXXGKKPLVYAZGDCMNHMPLCYWDQSRBEMVVVZVFYJMRYGHJOTDOEQVRQOVXOGOVYGTXETFHAYELRYVDGWOFVGAOWPMHQYRZMNXVTAHWSKZLJDFVQPZGMHZWFNOBHSZHEDAEXIFCEEJYZDOEFOQWCXTKPJRUEITKHVCITCLKBUFNAFBYXELAYPBRGGGOCCAGLXXJXTSWCJHMHQPVUIBAGBDKAGEEEPKRGGICJQXSYHBNNAKGYODRAUWAEYHWCKHEQIBAONWQJYQCIFKDTOCTJMBJULWKMSNNMPXINHZQWUMJQLQKIPVZVRGYPCJJZMENWTFTUSPCSPRXHMZPCHCNQTUDCOUJHRKYQIUWWVEVVRYFDIYRQISNGPMQLNMCNMVBEWHNCUODHAGEVEUMKVZLEIKYAMPGVVSBYNRJMFCATDXTQCYXIBCXXKYEYHHYERQGQWZTWCEJBFQLRFFCIVVSZUKGLOTLNGLQNTIKTBBWVFMONUFKRLCJASEKUEEDDQDIVQMFRSJRNHYZJODFHSCJSDAIRUXOSDNFUFUFMNZYQIEGRUXKUPCHENUEZHRKYHDRJYSHLZNYRBWVXORMJMJRIRNSAJQRUMPCXUDFYRGKEAXQXJHPEWNIYIDURDGWIFEMSOFYYCFRZGMZXJNTLTJBBSZIULQSOMEVGCTCVXUHTIEHSPOPQYCJLPAJAPQPAQXE",
|
|
42
|
+
expectedOutput: "GMEXPPCMFGKUVGXZHVTCKXRSTJUYWNOKFVELWAHHSJBXGOEXCMLOVSIMCDMGEYMWWTFDUMCDUJEZITNPVVBGQDJEVHJXSKJAAUZWBELMSPUTXCUYPDTJCQXEBGWPWRSQLSNFMASCTJZDSFNKDDTAXLRGUPKCBNXMZPADJSFGGNYKRPYBNTYPTGVPACBEINILNACWFVKMJPGCEZFROEYYKTGYSQYMFSGVDOJJONNYEYSCCIXWLKUSJZDRVAQSNUWHMDJVDNNMPGOYRGQRSBGSPQKGCTFZQWSOXBWSQZDCRQJQAWZDPQEILGMMABIMCDPNSKAFCLPQGIRJCMGQREBEUHBYREXFABFMVZTZBDUMASVNUMHIYRSZLGNZFMVAIABLCUZLJLKKZPWEXDHYZFVSNRLCLNDRKLKSWRHQVQJRTHCNFZXDEXSLAXXOGMFVSGCJGAWOLGDMTLWSFNTCUVCCEACINRZAZZOGLEHHXLPHVKILBBJDPOOCILQKKGODSXOBDPZZDXHJLLBOBVFCHJVMUBUZZIKGCWGCYGXVEHHIJGPEQERWEZLILQNHPHALFKFMGADNELGBKILKIUETGDCBQUEOECWVFNOXTJKUYPWBNEKYSIKMVSAMBZGLIKDAOELRSTKFASEKABTUCPSFEGXXQGDFPSPVOLBHGLZSLLWCABSRKZDQQRKVCKXDGTIHPDNMPDZEXYFYKXZTPJPLYOFNLWAGKJEOHOYLMZELXIDWWNXPKEPUCKNNNHJLFYHPQNHMMCGMUPHSUSYYIVWTIMFKKKTFPGFTLTWWSQBRBMGBTZXPVULKNZIIKVTYLJFISGPTLZFTCLGNZOMVKZOIMUDGXRDDSVFRHRYWBEWHYLCUISYMRWAZZAQPJYXZQQKZLILOSHXUTQJFPTXQSREKSUDZTLGUDLUGOJMQHJRJHXCHQTKJULTWWQOXIRFRQEYBPJPEKXFIRMNATWNFBADOSIJVZYRYDBHDAEDJUVDHLDAU",
|
|
43
|
+
recipeConfig: [
|
|
44
|
+
{ "op": "SIGABA",
|
|
45
|
+
"args": [
|
|
46
|
+
"YCHLQSUGBDIXNZKERPVJTAWFOM", true, "A",
|
|
47
|
+
"INPXBWETGUYSAOCHVLDMQKZJFR", false, "B",
|
|
48
|
+
"WNDRIOZPTAXHFJYQBMSVEKUCGL", false, "C",
|
|
49
|
+
"TZGHOBKRVUXLQDMPNFWCJYEIAS", false, "D",
|
|
50
|
+
"YWTAHRQJVLCEXUNGBIPZMSDFOK", true, "E",
|
|
51
|
+
"QSLRBTEKOGAICFWYVMHJNXZUDP", false, "F",
|
|
52
|
+
"CHJDQIGNBSAKVTUOXFWLEPRMZY", false, "G",
|
|
53
|
+
"CDFAJXTIMNBEQHSUGRYLWZKVPO", true, "H",
|
|
54
|
+
"XHFESZDNRBCGKQIJLTVMUOYAPW", false, "I",
|
|
55
|
+
"EZJQXMOGYTCSFRIUPVNADLHWBK", false, "J",
|
|
56
|
+
"7591482630", "0",
|
|
57
|
+
"3810592764", "1",
|
|
58
|
+
"4086153297", "2",
|
|
59
|
+
"3980526174", "3",
|
|
60
|
+
"6497135280", "4",
|
|
61
|
+
"Encrypt"]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "SIGABA: decrypt test",
|
|
67
|
+
input: "AKDHFWAYSLHJDKXEVMJJHGKFTQBZPJPJILOVHMBYOAGBZVLLTQUOIKXFPUFNILBDPCAELMAPSXTLMUEGSDTNUDWGZDADBFELWWHKVPRZNDATDPYEHIDMTGAGPDEZYXFSASVKSBMXVOJQXRMHDBWUNZDTIIIVKHJYPIEUHAJCNBXNLGVFADEWIKXDJZBUTGOQBCQZWYKRVEENWRWWRYDNOAPGMODTPTUJZCLUCRDILJABNTBTWUEIJSJRQBUVCOUJJDWFMNNUHXBDFYXLGUMXQEAWSVHBXQGEOOGPYRVOAJLAIYIOHHEXACDTAWWCBGQRNPERSIKHTXPXKBUNACZLFZTRBMBBDDGKNBIQMFHZROCZZBGNZSJKDRRWPEQHLCFADNPWPWSLPIFNKBWQPMARUERGWUUODXSCOJQECGHIZRFRNRSXWSFWKISHHTUFRVXLHCQWGBMRDHCYDSVNIDDRSTODCGJSSBLUYOBGEWFOVKOZBJTYCAKMZECUGLJGTSZJNBOLTMUZRRSIGGRQHLRPMGLINASSMZOBNACKUMSFNIZAUFCPFXXOOTJQWWLZOFLGZLHJCWZJCRJKVOUDLNMKQATGVTOFHACAEKFLRWRTTMVRXHYGOTYPNBMUSKDAKXFCICUOVSWXGPQOYUUWTWRPQMEQCSDJMMJKELIHGEDYKWOVHVPUAIBFGAODXODXVFIIZIGWRZSBTIGXVHFABMMOPGVMLGHQQXNOEJRDLOBGUOWSELBHERZFSBLUODMOGIBNVGVGQYDBTKLOPNKZZNGLTTGZYYXIBAHZJDCILZXKNSJDHXWTYQLFHTUINTYSBPIXOPLOQHSAHGQPYUWYNPKMRBBBYIICCBBJRKWVLBIDBBEKJCXHLPUBMIGBUFYDPOCSRUNZOKMKJHMYFJZWFNHQZOGGRTNNUVLMRLDSAJIECTYCJKBYVNAXGCMGNVFJEDSATZQDQTYRBPLZKHAXMOVJZEDKINXKBUVWXXHTYUFO",
|
|
68
|
+
expectedOutput: "KTSOYDGMLPMVXEAJIATXCNQFXHBNCBXIJOCQGCQBRQSBYFOOEVPVXACBMIUIRNVMJHREKRHBSXJFSMWCKTTCYXJOFSJCQECXXCHTEGPEYSMYDHCSMODUAVBNLILYUIBBIXJCXXNQPCERRSMJTPQLMOXSKTRPWOFUSWXOYRJLBIJGIOYTEAEJEGGYAGSXNHNQTETANPWEGATHSBFLHCVHVIJUAKDVGQCWUSIFFFVAJYPJAFUYDXSLGPGESOUAYXBQIIOXWTXNOXLNCGWSUKVIBMOUGNHORYLSNVNNJLKKFDUAEISOLBLCXYHMDGVBVVVIKDLTMTDVWWJBXWXROVTJBXXKXLEWTTISKIUMYSACVUGGNANMCGUMFNQUXDLTHJNYTFIQEPKQQQSSROYJOILJYQXICXACWGOHCSHENXJILOMIIFCIOUDXDCINIVKIRJCVHWXSFQXMNRBJJWTPXNJADEOPEJBLKHKXNTORIRVRLXUXXAMKMODBXNLQCVJXVOTBRHXBBVJHPFEQFCRXYRRXHXPTXXSUESUTHUGOWQYQPQFPXQPVGEIRPQNKXXMBHIPECRUWFEWJUTYIKSMJSRQIQAIAMXTGDXSJIABHIGKUPJBCHWMVYTMQNQYGDHCNMBSVTPXNFRELFXXQYIOLCDEXDXDVSINICOXRMNSPICPQMOBIDJCNBJKXFAVMUXOXHERJIBIXLMXXULDXKXXHAQDXEXIWXOEEUGKSUGCMRWJDPYCYKXTPCOXMURAJCPRXKFJAJALERWRHVMFHOGMFHXGSXQDPJCJNXRQFGHKRCYTEBJDHPCMYFEAPWSVVMMBVUJJMCAAYURHUPVQVJYDCSNMQEMNIFEXYXIIXBVRVILXAUCBDXRJHGPKPYXHPPPNVSBBCDRLVVIYPKAKYIXTJVYDGVPHXULWMADBEICNIFKWUOOHEFNANDKOXMCVBVORLQYNXLULOEGVGWNKNMOHYVRSYSOVYGAKCGAWKGAIAQNQR",
|
|
69
|
+
recipeConfig: [
|
|
70
|
+
{ "op": "SIGABA",
|
|
71
|
+
"args": [
|
|
72
|
+
"YCHLQSUGBDIXNZKERPVJTAWFOM", true, "A",
|
|
73
|
+
"INPXBWETGUYSAOCHVLDMQKZJFR", false, "B",
|
|
74
|
+
"WNDRIOZPTAXHFJYQBMSVEKUCGL", false, "C",
|
|
75
|
+
"TZGHOBKRVUXLQDMPNFWCJYEIAS", false, "D",
|
|
76
|
+
"YWTAHRQJVLCEXUNGBIPZMSDFOK", true, "E",
|
|
77
|
+
"QSLRBTEKOGAICFWYVMHJNXZUDP", false, "F",
|
|
78
|
+
"CHJDQIGNBSAKVTUOXFWLEPRMZY", false, "G",
|
|
79
|
+
"CDFAJXTIMNBEQHSUGRYLWZKVPO", true, "H",
|
|
80
|
+
"XHFESZDNRBCGKQIJLTVMUOYAPW", false, "I",
|
|
81
|
+
"EZJQXMOGYTCSFRIUPVNADLHWBK", false, "J",
|
|
82
|
+
"7591482630", "0",
|
|
83
|
+
"3810592764", "1",
|
|
84
|
+
"4086153297", "2",
|
|
85
|
+
"3980526174", "3",
|
|
86
|
+
"6497135280", "4",
|
|
87
|
+
"Decrypt"]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
]);
|