Skip to content

cicada-solvers/idkfa

Repository files navigation

Liber Primus Translator


A toolset for working with 3301's Liber Primus.

Quick start


Clone and run the repository to translate the first segment of Liber Primus.

$ git clone https://github.com/rtkd/idkfa .
$ npm install
$ chmod u+x idkfa
$ ./idkfa -s 0.0 -v l -i l

Available Commands


-c, --charAt

Returns latin character(s) at position(s) n.

-c 0 1 2 3
-f, --find

Finds crib candidates and returns source, source path and key

-f the circumference
-i, --invert

Inverts/Reverses source, gematria and key properties

-i f
  • f — Invert gematria column: futhark
  • k — Invert key
  • l — Invert gematria column: latin
  • o — Invert gematria column: offset
  • p — Invert gematria column: prime
  • s — Reverse shift
  • t — Reverse source text
-k, --key

Generates and applies key(s) for decryption. Keys can be denoted as integer, integer csv, latin, futhark or mathematical expression. Multiple keys are seperated by a space.

For details on using mathematical expressions see: MathJS Functions

Expressions must be enclosed in single quotation marks.

Generator functions int(), odd(), even(), prime(), fib() will accept 0, 1 or 2 parameters of type integer .

  • 0 parameters will generate as many consecutive numbers as the selected source has graphs.
  • 1 parameter will generate first n consecutive numbers, and repeat as source has graphs.
  • 2 parameters will generate consecutive numbers from n to n, and repeat as source has graphs.

If first parameter is larger than second, order of numbers will be reversed.

Available transformations: Euler Phi ephi(), Möbius: mob()

Examples

Generate key: 1,1,1,1..

-k 1

Generate key: 1,2,3,1,2,3..

-k 1,2,3

Generate key: 23,10,1,10,9,10,16,26,23,10,1,10,9,10,16,26..

-k divinity

Generate key: 0,3,3,17,24,4,0,3,3,17,24,4..

-k ᚠᚩᚩᛒᚪᚱ

Generate key: 1,2,4,6,10,12,16,18,22,28,30,36..

-k '$(ephi(x), x, prime())'

Generate key: 29,23,19,17,13,11,7,5,29,23,19,17,13,11,7,5..

-k '$(x, x, prime(10, 2))'

Generate keys: 1,2,3,1,2,3.. and 23,10,1,10,9,10,16,26,23,10,1,10,9,10,16,26..

-k 1,2,3 divinity
-p, --patch
  • d — Patch the dictionary to match expected output ((I)NG, I(A/O)..)
  • s — Patch chars at specific positions within source. (See config.js)
-p s
-s, --source

Select part(s) of source. Source accepts one or multiple paths, each consisting of one or multiple waypoints, seperated by a dot. Each waypoint denotes an offset within the hierarchical source array.

-s 0.0
Examples

Select chapter 0

-s 0

Select section 12 of chapter 0

-s 0.12

Select paragraph 1 of section 13 of chapter 0

-s 0.13.1

Select sentence 1 of paragraph 0 of section 11 of chapter 0

-s 0.11.0.1

Select word 5 of sentence 4 of paragraph 0 of section 11 of chapter 0

-s 0.11.0.4.5

Select graph 1 of word 5 of sentence 4 of paragraph 0 of section 11 of chapter 0

-s 0.11.0.4.5.1
-v, --verbose

Sets the data to return.

-v c w x
  • c — The char (graph) count of the selected source.

  • d — Matches generated latin against a dictionary and returns longest and most matched words.

  • f — The generated latin as futhark.

  • i — The Index of Coincidence for the given source.

  • k — The generated key(s).

  • l — The generated latin text.

  • p — The generated text as primes.

  • s — The selected source

  • w — The word count of the selected source.

  • x — The checksum (sum of gemartia prime values) of the selected source.

-w, --wordAt

Returns latin word(s) at position(s) n.

-w 21 27 42

Known Translations


Segment: 0

./idkfa -s 0.0 -v l -i l

Segment: 1

./idkfa -s 0.1 -v l -p s -k divinity

Segment: 2

./idkfa -s 0.2 -v l

Segment: 3

./idkfa -s 0.3 -v l -i l -k 3

Segment: 4

./idkfa -s 0.4 -v l

Segment: 5

./idkfa -s 0.5 -v l -p s -k firfumferenfe

Segment: 6

./idkfa -s 0.6 -v l

Segment: 16

./idkfa -s 0.16 -v l -p s -k '$(ephi(x), x, prime())'

Segment: 17

./idkfa -s 0.17 -v l