An old trinket from 2005/2003.
WARNING: It is just a "cryptotoy" (just for fun) do not use it to protect your sensible data.
Vigcrack
is a cryptanalysis tool which can help on crack Vigenère
ciphertexts. This tool is not strictly based on
Babbage's
/Kasiski's
approach. In fact, here is not performed frequency analysis. Here what we get is a more brainy
Hangman
which does not hang any innocent stick figure...
I have developed this tool during my first reading of The Code Book
from Simon Singh
. Here you got a "reissue" from
this crypto-tool.
This repo has some submodules, so after clonning it you need to initialize them. For doing it use the following way:
babbage@DiffEngine:~/src/vigcrack# git submodule update --init
For building this software you need to use Hefesto. After following the
steps to get Hefesto installed on your system, you should move to the vigcrack's src
sub-directory and call hefesto
:
babbage@DiffEngine:~/src/vigcrack# cd src
babbage@DiffEngine:~/src/vigcrack/src# hefesto
After invoking the hefesto command you should get the Vigcrack
binary inside the sub-directory bin
.
Yes, for installing:
babbage@DiffEngine:~/src/vigcrack# hefesto --install
For uninstalling:
babbage@DiffEngine:~/src/vigcrack# hefesto --uninstall
The Vigcrack
is a software which introduces several operation modes. All of them related with the
cryptanalysis of the Vigenère
cipher.
In order to introduce you these operation modes I will use the basic workflow which is based on the necessity of cracking some encrypted data. So, let's use our good and old "crypto-actors": Alice, Bob and Eve. Spoiler: today Eve will win! Come on, I think that she deserves, look.
Let's suppose that Bob sent to Alice the following message:
YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGAR
VJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTM
EYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTM
OFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPH
BNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWL
IPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUT
GNL
Eve is a "Network geek" so she has been listened the Alice/Bob's wire intercepting the previous data. Eve knows that
Alice and Bob are pretty naive. So after trying to crack the cryptogram using simple substitutions without success, she
start assuming the Vigenère
cipher usage (due to the frequency distribution). By the way, Eve has installed a nice
software (...) The first thing that our sympathetic attacker did with
this tool was query a smart Sybil
:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --sybil \
> --file-path=alice-bob-crap.txt --min-pattern-len=3 --max-pattern-len=3
The Vigcrack's sybil
returned the following supressed content to Eve:
INFO: 711 bytes loaded from alice-bob-crap.txt.
YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQF
SQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMI
FCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHO
VUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXG
RAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAV
LZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
INFO: Now guessing the key length... please wait...
*** Found patterns [nearest - farthest]:
The pattern GCI was found 9 letters far from another GCI
The pattern RRQ was found 9 letters far from another RRQ
The pattern RQT was found 9 letters far from another RQT
The pattern QTM was found 9 letters far from another QTM
The pattern TMO was found 9 letters far from another TMO
The pattern MOF was found 9 letters far from another MOF
The pattern FCC was found 18 letters far from another FCC
The pattern CCP was found 18 letters far from another CCP
The pattern OPA was found 18 letters far from another OPA
The pattern LZA was found 18 letters far from another LZA
The pattern NFG was found 22 letters far from another NFG
The pattern UPU was found 27 letters far from another UPU
The pattern XHC was found 27 letters far from another XHC
(...)
The pattern LPH was found 495 letters far from another LPH
The pattern VAS was found 513 letters far from another VAS
The pattern LPH was found 522 letters far from another LPH
The pattern PHJ was found 522 letters far from another PHJ
The pattern GNV was found 560 letters far from another GNV
*** Probable key lengths [most - least]: 3, 9, 2, 6, 18, 4, 5, 11, 12, 15, 8, 19, 7, 10, 13, 16, 20, 14.
Why Eve ran the previous command? Why that pattern lengths?
Well, the Vigcrack's sybil
can predict the length of the keyword just verifying some characteristics onto the cryptogram.
Its Sybil
tell us at the end of the analysis report the most probable keyword lengths (sorted by relevance). The reason for
using the options --min-pattern-len=3
and --max-pattern-len=3
is because Eve is smart. The keyword guessing is
done by found patterns along the cryptogram. Eve supposed that the plaintext was in English and she knows that
trigrams are pretty common in a English text. Things like THE
, AND
, SHE
, HIS
, HER
, etc (no, etc not so).
At the end of the report the Sybil
has shown to Eve that there is a strong possibility of a 3-letter
keyword usage.
Now, Eve started playing a Geek Hangman
;) For doing it she used another suggestive application mode called
hangman
.
She picked the first trigram reported (GCI
) and made an assumption about it represent a THE
when decrypted. So
translating it into commands would be:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=GCI\
> --plaintext=THE --key-len=3 --file-path=alice-bob-crap.txt --max-attempts=30
Now explaining the Eve's intentions. Eve is assuming GCI -> THE
and also assuming that a keyword of length 3 was used.
The --file-path
indicates the cryptogram's path and the option --max-attempts=30
will only decrypt the first
30 letters from the file. This command spitted the following report to Eve:
*** The keyword was completely re-used 102 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'NVE'.
*** Decrypt attempts assuming that 'GCI' leads to 'THE'...
K C P
__________________
N Y l
V L q
E P l
N H u
V J o
E V r
N G t
V I n
E O k
N V i
V H m
E W s
N A n
V D i
E R n
N G t
V V a
E I e
N E r
V H m
E R n
N J w
V P u
E T p
N U h
V C h
E Y u
N D q
V S x
E E a
__________________
The Hangman
is interactive and you can get lots of fun when you start making right assumptions.
However, Eve have seen that her guessing did not produced a legible output. So, she returned to the pattern listing and
started trying other ones. After several attempts she have decided to use another application mode called brutus
.
Well, in fact the brutus
mode does what the hangman
does but automated. Then, Eve have emitted the following
command into her terminal:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --brutus --file-path=alice-bob-crap.txt\
> --plaintexts=the,and,ing,ent,ion,nth,ter,int,oft,tha,ere,tio,her,fth,eth,ati,hat,ate,sth,est\
> --key-len=3 > report.txt
With this command brutus
tries to decipher any found pattern to the informed plaintexts assuming the passed key length.
The informed plaintexts in this command sample are the most common trigrams present in English texts.
Eve got the following data into report.txt
file:
*** Assuming GCI -> THE (keyword = "NFW")
K = NFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFWNFW
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = lgtueztdsicanyvtqmrcvwkxhxcqnivaqdaigpuxribbrivwpeztfxpyihusjsivqbbkqtqlxporqrsbvhviwzldihxvqwpmvexaakjhpdkgdoujjhabeeqnowmiehdawdzsjyxrwbhkyxkmywacyyivsjqccslpqikgzhkyslhdpbcapaxrnqvnslpqikgzhkyslhdpbcapaxrnqvnhsdhjdtznbptzxxqvbernlyghilagpkmcglnrsifscvqvagpkxttibasjqscvpnysgkignwlgisfrnqcansdjmcgdnnftimtxmcdibfrtxmawwhrqtubdyoxkftnqnbxwbvtkajhmtmvdoqbamhmvdoqbaecbcthwawrtvilgdncsipsbgbqervqsggdnwpclscgkjjoclawqerpjtbphypjpikbvnqcmkhdkxigtuwrnlrtypjpikbvnqcmkhdkxigtuwrnlrtypjpikbvnqcmkhdkxigtuwrnlrtypjpikbvnqcmkhdkxigtuexwfrzawdwpgbesaswkawlauczrzkdksivwbwcnlyzpwfpltxvikawpkdkixobjgmcdqnuwwcxdqltizjrileeigdnncdrhdfwwpxtipppgxjileeigdnncdrhdfwwpxtipppgxjileeigdnncdrhdfwwpxtipppgxjileeigdnncdrhdfwwpxtip
*** Assuming RRQ -> THE (keyword = "OCQ")
K = OCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQOCQ
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = kjzthfsgyhfgmbbstsqfbvndgaipqoudwcdofsawuoaexhycohfsidobogxyivouthanwstrwsuqtxrebgyovcrclnwywvssuhdzdqikvcnmcraimnzekdttnzshhncdcccyibdqzhgnewnsxzgbbehyyitibvrotojjfgneroncshbdvzaxmtbmvrotojjfgneroncshbdvzaxmtbmkyckpcwfmevscdwtbahxmoefkokdmonsbjrmuyhiybywudmondswoadyitybyvmbyfnofqckjorixmtizqycmsbjjmqlslssasbgoaixsaszzcguwsxhcbuwnlsqwmedvebsngiksspbcrwadsgpbcrwadkbeiskczzxsyokjjmfyhsyajhphxutyfjjmzvboybjqimubogvtkqspsevgbvisojebmtilnncndhjztzxmoxsbvisojebmtilnncndhjztzxmoxsbvisojebmtilnncndhjztzxmoxsbvisojebmtilnncndhjzthdvixydcczvfekrdyvngvogtffqcqcnyhycazimoeyscesrsabhngvsqcnowrhijsbgwmxcvfdctrslfiuokhkhjjmqicuncicvsdslvosmwmokhkhjjmqicuncicvsdslvosmwmokhkhjjmqicuncicvsdslvosmwmokhkhjjmqicuncicvsdslv
*** Assuming RQT -> THE (keyword = "RLC")
K = RLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLCRLC
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = hanqytpxmewujsppkgnwpserdrwmhcrukzuccjotlcxvlepqlytpzrlscdomfmcrkvxekpkftjinklovpdpcstfzcbtpksjgryrwuefbjzeaziofdbwvyakhkqgeybzuqztmfsrnqvdesteguquyssepmfkwymflkcgatdesofbzjvyujwrljkpjmflkcgatdesofbzjvyujwrljkpjbmzbdzntjvjptrtkpxyljfscbchualegyafjlmezmypkrualerpncxumfkmypjjsmcecchqhacozljkwwhmzdgyaxjhzpcgprgyxcxzlprgwqqdlkpovzsitezphkjvrsvppeufbgpgpzikxugdgpzikxuyyvwpbqwqlppchaxjwmejmxavmylrkmcaxjqjyfmyaefdiyfuskynjdpvjdsjfjcgvpjkwiebzereanqqljflpsjfjcgvpjkwiebzereanqqljflpsjfjcgvpjkwiebzereanqqljflpsjfjcgvpjkwiebzereanqyrszlvuqzqjcvyoumseusfuqwtntezemepqxqwjfsvjqbjfprpeeusjezectivfagyxkjoqswrzkfpctflchyyeaxjhwzlbzzqsjrpcjljatdchyyeaxjhwzlbzzqsjrpcjljatdchyyeaxjhwzlbzzqsjrpcjljatdchyyeaxjhwzlbzzqsjrpcj
*** Assuming QTM -> THE (keyword = "DOS")
K = DOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOSDOS
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = vxxevdduwstexpzdhqbtzgbbrogaemfrunrmqgyhimlsvsmazvddwbzpmrlwtjmfhflbudhphgsbhvcszrmmgqpnzlhmuggqfvbkrotytnbknfytalksiohrynqsvlnranqwtpbbnfrbchbqinempcsmwthgmjpzhmuxdrbccclngfmrtkovxhzxjpzhmuxdrbccclngfmrtkovxhzxywnynnkdxstdqbhhzlvvxccqymvrkzbqmxpxiwswwmmufrkzbbdkmlrwthwmmtxpwqbmqeavxmcwvxhgkewnaqmxhxejdzqdoqmumlwvdoqknariudlfnpshbjdeuxsbgszdbetyqddznfulrqrdznfulrimsgdyaknvdmmvxhxtwsgwlxfavvfhwqxhxntmcwmxotasmceghibgndstrpttgmuszxhgwblnbbsxxenvxcvdpttgmuszxhgwblnbbsxxenvxcvdpttgmuszxhgwblnbbsxxenvxcvdpttgmuszxhgwblnbbsxxevbgwvjranntqsicrwgbegceetdbqonbwsmalngxccjgapgpdozsbeggonbmhfftxqmuuxlagtbnhpdzdtimvvisxhxegnilnwaggbdztzgkhamvvisxhxegnilnwaggbdztzgkhamvvisxhxegnilnwaggbdztzgkhamvvisxhxegnilnwaggbdzt
*** Assuming TMO -> THE (keyword = "QAV")
K = QAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAVQAV
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = ilurjaqitfhbkdwqvnohwtpyecdnsjsfrafjduvuwjygsfaxmjaqkymdjeztgxjsvcyprqvmuupovspgweajtemaniuartunsjyxflgmqaphatvgoixgfbvolbnfjiafxaetgdyobcepzupnvbbzdzfatgvdzxmmvjhlaepzpqiauczfqxcskvwkxmmvjhlaepzpqiauczfqxcskvwkmtamkayakgqqeyuvwyjskqzdmjifhmpnzlmkwtfktzarsfhmpyqyjyftgvtzaqkdtdpjdsxiljpkskvdxstaonzleksgqnnqcnzijyksqcnxbxewrqzcadpupgqsrkgytgwqpbgmnqrwatryfnerwatryffzgdqmxxbsqajilekhtfutylcnjssvtdlekbqzqtzllgopzqbtvfoukqgqedqgujhgwkvdjpiapyflurbskqsqdqgujhgwkvdjpiapyflurbskqsqdqgujhgwkvdjpiapyflurbskqsqdqgujhgwkvdjpiapyflurjytkswfxabqdgfpfttpbtqbrhaoelaptfaxybdkqzwuxcumqcwfpbtulapjutcglnzirkzxthyavmqnagwjijffleksdawiakxtuyqnqmuhuojijffleksdawiakxtuyqnqmuhuojijffleksdawiakxtuyqnqmuhuojijffleksdawiakxtuyqnq
*** Assuming MOF -> THE (keyword = "TZH")
K = TZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZHTZH
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = fmiokonjhcipheknwblikqqmbdrktxpgfxgxavjrxxvhgcbljkonlmjexbahdyxpwqvqfnwarvdlwgmhkbbxqfaxowrbfqvbpkmugzdnexqvxujdpwuhtywcicbckwxglxfhdemlcqbqnrqbscpwencbhdwrwyajwxemobqnmrwxvqwgeudghwkhyajwxemobqnmrwxvqwgeudghwkhnhxnyxzohhenfmrwkvkghrnanxfgvjqbwmahxhclhwbfpgvjqmnzxvghdwhwbehehaqxatlfmxmlghwruthxpbwmshtunobndbwjxvlgndbuclbxfnaqxedrquntfhhmqhknqpdnbnskxufvgbbskxufvgtwhrnnlucgnbxfmshihcvhvmqkkgpwhamshcewrhwmzdpdwrpqwtlvynhebeedvxehkhwrgqwxqmcmiocghrgneedvxehkhwrgqwxqmcmiocghrgneedvxehkhwrgqwxqmcmiocghrgneedvxehkhwrgqwxqmcmiokmqlgtglxceahtmghqqpqrpoiolfzxqhcblvcrhrntvlzvandkcqpqvzxqxruqdmbwjfhalqimxwanoodxxfktcmshtrxxwxllqvmnoejvvrpxfktcmshtrxxwxllqvmnoejvvrpxfktcmshtrxxwxllqvmnoejvvrpxfktcmshtrxxwxllqvmnoe
(...)
*** Assuming ZAS -> EST (keyword = "SBF")
K = SBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBFSBF
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = gkkpiqohjdgricmoudmgmroocbtlrzqehyezbtlsvzwfidznkiqojokczcyjewzquswohoucstfmuinfmczzrdcymyszhrtdqiovebelgyoxyslenyvfvzuejaddiyyenydjecomascopsodtarxcpdzjeutxwckuzfkqcopnpyytsxegvbiiumiwckuzfkqcopnpyytsxegvbiiumiljylayxqifgodosumwiiippblzgexkodxkcivjdjjxzhqexkoooxzwejeujxzgicjbozbrngkznjiiutvrjyndxkuirwomdobdxhzwjiobdvancvhoysycfsoworhiforfmooreldoqmyshwedcqmyshwevxftolnvaiozzgkuigjdtjwksliiqujbkuiagxpjxkbenfxprruvmtaofgccgetzffmiuthoyyoodkkpaiipiocgetzffmiuthoyyoodkkpaiipiocgetzffmiuthoyyoodkkpaiipiocgetzffmiuthoyyoodkkpiorjiuenyagbfvnejrorrprpgqmdbyojdznwatipputnatcobmdorrtbyozsssekdxhhiynrgoyucomqevzgivdkuirtyvyyjnrtoomgktxsnzgivdkuirtyvyyjnrtoomgktxsnzgivdkuirtyvyyjnrtoomgktxsnzgivdkuirtyvyyjnrtoomg
*** Assuming FSQ -> EST (keyword = "DZA")
K = DZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZADZA
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = vmpekvdjosiwxerdwibirgqtrdyatefgmngeqvqhxelhnsbszkvdltzeeraotyefwxlqmdwhhvkbwnchrrbegfhnodhbmgvifktkggtnlnqcnuqtpdkhaowjyciskdngsnfotetbcxrquhqiicwmeusbotwymyhzweumvrqucrdnvxmglkdnxwrxyhzweumvrqucrdnvxmglkdnxwrxnonnfnzvxhldfthwrlknxruqnevgczqimmhxxoslombmfgczqtdzelgotwomblxeoqqeqtsvmeclnxwyktonpimmzxtbdoiddimjellnddikcsrxmdaxnekhqbdtmxhtghrdqwtnidsrnumlgirsrnumlgamhydnskcndbevmzxiosvolmxaknfwoqmzxclmrommgtpkmrwgwabvfdhlreltveuhrxwywqdnqtsmpecnxrndeltveuhrxwywqdnqtsmpecnxrndeltveuhrxwywqdnqtsmpecnxrndeltveuhrxwywqdnqtsmpektglnjgsnclqhacgogqwgrweivbfgnqosbslcyxrujvspvhddrsqwgvgnqehuxtmimjmxasgitnwhdovtxevkasmzxtynxdnlsgvtdolzvchpevkasmzxtynxdnlsgvtdolzvchpevkasmzxtynxdnlsgvtdolzvchpevkasmzxtynxdnlsgvtdol
*** Assuming LPH -> EST (keyword = "MTD")
K = MTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTD
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = msmvqsupljotokoucfsooxwqijvrzbwmjembhbnydbcnkjhpqqsurqqkbiglkebwcucwjuceybhscktnoihbxleeuayhjxbfwqqbmdktiewzeankvabnxfcgpifjqaempellkkqsiuiwrywfzitdkrjhlkcvdeeqcblssiwrtxaebudmibjkocooeeqcblssiwrtxaebudmibjkocootletcefsoniulqycocqkoxrhtbmmzqwfdseodljrldhjwmzqwqufbcmlkcldhioklhwbhzpmsbtrkocvbzlevfdswozyuufujfdpbcrkujfbipidjuguekhywyuzjonqxnouwtktfuyoeajcmfiyoeajcmxdnvutpbikuhbmswooljblcsurqkwclhswoiidxldsdkvhdxtxcxsbcuniikikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvqqxrkampeiihnxtmlxwtxxtvossldewljhpcivoxrabpgbeujojwtxbdewbyauksfdpjogpxoqeceuuskdbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquui
*** Assuming LPH -> EST (keyword = "MTD")
K = MTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTD
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = msmvqsupljotokoucfsooxwqijvrzbwmjembhbnydbcnkjhpqqsurqqkbiglkebwcucwjuceybhscktnoihbxleeuayhjxbfwqqbmdktiewzeankvabnxfcgpifjqaempellkkqsiuiwrywfzitdkrjhlkcvdeeqcblssiwrtxaebudmibjkocooeeqcblssiwrtxaebudmibjkocootletcefsoniulqycocqkoxrhtbmmzqwfdseodljrldhjwmzqwqufbcmlkcldhioklhwbhzpmsbtrkocvbzlevfdswozyuufujfdpbcrkujfbipidjuguekhywyuzjonqxnouwtktfuyoeajcmfiyoeajcmxdnvutpbikuhbmswooljblcsurqkwclhswoiidxldsdkvhdxtxcxsbcuniikikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvqqxrkampeiihnxtmlxwtxxtvossldewljhpcivoxrabpgbeujojwtxbdewbyauksfdpjogpxoqeceuuskdbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquui
*** Assuming LPH -> EST (keyword = "MTD")
K = MTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTD
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = msmvqsupljotokoucfsooxwqijvrzbwmjembhbnydbcnkjhpqqsurqqkbiglkebwcucwjuceybhscktnoihbxleeuayhjxbfwqqbmdktiewzeankvabnxfcgpifjqaempellkkqsiuiwrywfzitdkrjhlkcvdeeqcblssiwrtxaebudmibjkocooeeqcblssiwrtxaebudmibjkocootletcefsoniulqycocqkoxrhtbmmzqwfdseodljrldhjwmzqwqufbcmlkcldhioklhwbhzpmsbtrkocvbzlevfdswozyuufujfdpbcrkujfbipidjuguekhywyuzjonqxnouwtktfuyoeajcmfiyoeajcmxdnvutpbikuhbmswooljblcsurqkwclhswoiidxldsdkvhdxtxcxsbcuniikikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvqqxrkampeiihnxtmlxwtxxtvossldewljhpcivoxrabpgbeujojwtxbdewbyauksfdpjogpxoqeceuuskdbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquui
*** Assuming VAS -> EST (keyword = "JSB")
K = JSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSBJSB
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = ptoyruxqnmpvrlqxdhvpqaxslkxuadznlhndkcpbedfommirtruxsstldlhnnfdzdwfxlxdgbcjvdmwoqlidamghvcbilachzrsenfnukhxbhbpnwceozidisjhmrchnrhmnnlsvjwlxtbxhcjvgltminndxgfgtddotulxtwychcwgnkekmrdqrfgtddotulxtwychcwgnkekmrdqrunhuehgurokxmsbdqfrmrytkudpnbtxhgtgrenmsngilznbtxsxgdfnnndngikrlnkxdkarptdwsmrdxeanhwhgtyraaxvhxkhgqdfsmxkhejrlelxhwhljbxaxalrosaoqxxvnuhxzqhblfnhlzqhblfnzgoxxurejmxidptyrpnmcnftwurmzdnktyrjkgyngtfnwjgyvadzvcexokllkncdooqrdxqxchxsmtoyjmrymxlkncdooqrdxqxchxsmtoyjmrymxlkncdooqrdxqxchxsmtoyjmrymxlkncdooqrdxqxchxsmtoyrsasmdnrhjkkozwnnaxvayvypuvmfhxnmirfjxrytdcrjcgxkqmxvacfhxdbbwnthgqlrhrapshdgxvunedprzmtyraxhechsracsxvktcbbwdprzmtyraxhechsracsxvktcbbwdprzmtyraxhechsracsxvktcbbwdprzmtyraxhechsracsxvk
*** Assuming LPH -> EST (keyword = "MTD")
K = MTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTDMTD
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = msmvqsupljotokoucfsooxwqijvrzbwmjembhbnydbcnkjhpqqsurqqkbiglkebwcucwjuceybhscktnoihbxleeuayhjxbfwqqbmdktiewzeankvabnxfcgpifjqaempellkkqsiuiwrywfzitdkrjhlkcvdeeqcblssiwrtxaebudmibjkocooeeqcblssiwrtxaebudmibjkocootletcefsoniulqycocqkoxrhtbmmzqwfdseodljrldhjwmzqwqufbcmlkcldhioklhwbhzpmsbtrkocvbzlevfdswozyuufujfdpbcrkujfbipidjuguekhywyuzjonqxnouwtktfuyoeajcmfiyoeajcmxdnvutpbikuhbmswooljblcsurqkwclhswoiidxldsdkvhdxtxcxsbcuniikikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvikoxkukikbblnoocvnwaewqjsmvqqxrkampeiihnxtmlxwtxxtvossldewljhpcivoxrabpgbeujojwtxbdewbyauksfdpjogpxoqeceuuskdbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquuiqbzyvbmqxjswozvedaerpxbquui
*** Assuming PHJ -> EST (keyword = "LKP")
K = LKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKPLKP
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = nbawzgvyzkxhptcvlttxcyfejsjsipxvxfvpikbzmpdwykqdrzgvaertpjpzlnpxlidfxvlszkvtlyuwcjqpyusfdozqxyktxzecvrlcwffnfjbleocwlgluqrtkzofvdfuzltetrijffzftarhetfkqzlljensrlpmbgjffugofkievwcsyplcpnsrlpmbgjffugofkievwcsyplcpczfcqfogpwwvuezlcdzypgficpnvnrftebspmzkazeqxxvnrfevopdvzllzeqwptzifpiidnbpuaypljcizfetebkpimvdtvsteypdayvstcrdjmxvpiftvzfmvixpweywcvfhlctvhcfjxdvtjhcfjxdvlewjvcdcryvqpnbkpxzkkzdbiszyxlzibkprwegzebrleveghylltkqvwwjtwlkpmwcpljofoffekbawrypgyvtwlkpmwcpljofoffekbawrypgyvtwlkpmwcpljofoffekbawrypgyvtwlkpmwcpljofoffekbawzeyaybvdfrwiwluvzyfhyghwxgturffzkqddrjpgfbkdhksvsckfhykrffpzjilbteyxppdyxeflsvdglmpnzlkbkpijfmofadykevdwrknzepnzlkbkpijfmofadykevdwrknzepnzlkbkpijfmofadykevdwrknzepnzlkbkpijfmofadykevdw
After analyzing the log file, Eve realized about the possibility of a longer key usage. Because she did not found any legible plaintext.
The imediate longer keyword length pointed by Sybil
is "9". So, she tried it...
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --brutus --file-path=alice-bob-crap.txt\
> --plaintexts=the,and,ing,ent,ion,nth,ter,int,oft,tha,ere,tio,her,fth,eth,ati,hat,ate,sth,est\
> --key-len=9 > report.txt
She started found some relevant attempts, look:
(...)
*** Assuming CNA -> INT (keyword = "T******GA")
K = T******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GAT******GA
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = fLPHJVGcocHWADRGpilHRJPTUwykSEIFMQzeaUQKWEOancASCJVGetjDEUZOWrepVXOPMGphrUKEVNFarbAEJEHQhdrAMJUIIdtuFGWMLQjcxTQWODNaayVJBBIVddxFSQEOWxtlBXUPUKjisBWPDUVuodVYPXHCpeeLVUPUFkdxUXPFLNwnhVRAXHCpeeLVUPUFkdxUXPFLNwnhVRAMOQgfxYVAGLGytrVROJNAkuaMEYFCCjiwLHAWOVeowAMIFCCjtnYEOFOWpowALADOTjeaSSYLEFenhVYNSOQiiwLZASBGhinCIPIEOennCINBSUqmnZXQDKKjbnSMAGTJarnPWWMIGlrxTMOFIUlrxTMOFAPaynMSNBNGuefLZAHOVoovLXDJNIpoaLZABLPkowLGWOKPkwqVAEUFGalbDLWUEXarhVYZPDQjtcLPHBNAknnDLWUEXarhVYZPDQjtcLPHBNAknnDLWUEXarhVYZPDQjtcLPHBNAknnDLWUEXarhVYZPDQjtcLPHJTJentFSQBLTaamFOJPWJkwoHVEEGQjocASOBYAkutUSSUHGwrcPWJUGQjerTXWLIPcmhZSJHTQphnNVWWEYdacLZASYQqdxKSJUTGhljUCKOEYdacLZASYQqdxKSJUTGhljUCKOEYdacLZASYQqdxKSJUTGhljUCKOEYdacLZASYQqdxKSJUTGhl
(...)
*** Assuming LPH -> STH (keyword = "*HEA*****")
K = *HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA*****
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = YelhJVGIOVasaDRGVIEanjPTUCYDlaiFMQFETnmkWEOGNVtocJVGKTCwauZOWXEIotoPMGVHKngeVNFGRUtajEHQNDKtijUIIJTNycwMLQPCQmmwODNGARofbBIVJDQyoqEOWDTEutuPUKPILuspDUVAOWoupXHCVEXeruPUFQDQntpFLNCNAonaXHCVEXeruPUFQDQntpFLNCNAonaMOQMFQrraGLGETKonoJNAQUTfayFCCPIPedaWOVKOPtiiFCCPTGraoFOWVOPthaDOTPETloyLEFKNAounSOQOIPevaSBGNIGvepIEOKNGvenBSUWMGstqDKKPBGliaGTJGRGiswMIGRRQmioFIURRQmioFAPGYGfonBNGAEYevaHOVUOOetdJNIVOTevaBLPQOPecwOKPQWJoweUFGGLUwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhJTJKNMyoqBLTGAFykjPWJQWHareEGQPOVtooBYAQUMnosUHGCRVisjUGQPEKmtwLIPIMAsojHTQVHGgrwWEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNL
*** Assuming LPH -> STH (keyword = "*HEA*****")
K = *HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA*****
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = YelhJVGIOVasaDRGVIEanjPTUCYDlaiFMQFETnmkWEOGNVtocJVGKTCwauZOWXEIotoPMGVHKngeVNFGRUtajEHQNDKtijUIIJTNycwMLQPCQmmwODNGARofbBIVJDQyoqEOWDTEutuPUKPILuspDUVAOWoupXHCVEXeruPUFQDQntpFLNCNAonaXHCVEXeruPUFQDQntpFLNCNAonaMOQMFQrraGLGETKonoJNAQUTfayFCCPIPedaWOVKOPtiiFCCPTGraoFOWVOPthaDOTPETloyLEFKNAounSOQOIPevaSBGNIGvepIEOKNGvenBSUWMGstqDKKPBGliaGTJGRGiswMIGRRQmioFIURRQmioFAPGYGfonBNGAEYevaHOVUOOetdJNIVOTevaBLPQOPecwOKPQWJoweUFGGLUwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhJTJKNMyoqBLTGAFykjPWJQWHareEGQPOVtooBYAQUMnosUHGCRVisjUGQPEKmtwLIPIMAsojHTQVHGgrwWEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNL
*** Assuming LPH -> STH (keyword = "*HEA*****")
K = *HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA*****
C = YLPHJVGIOVHWADRGVIEHRJPTUCYDSEIFMQFETUQKWEOGNVASCJVGKTCDEUZOWXEIVXOPMGVHKUKEVNFGRUAEJEHQNDKAMJUIIJTNFGWMLQPCQTQWODNGARVJBBIVJDQFSQEOWDTEBXUPUKPILBWPDUVAOWVYPXHCVEXLVUPUFQDQUXPFLNCNAVRAXHCVEXLVUPUFQDQUXPFLNCNAVRAMOQMFQYVAGLGETKVROJNAQUTMEYFCCPIPLHAWOVKOPAMIFCCPTGYEOFOWVOPALADOTPETSSYLEFKNAVYNSOQOIPLZASBGNIGCIPIEOKNGCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
P = YelhJVGIOVasaDRGVIEanjPTUCYDlaiFMQFETnmkWEOGNVtocJVGKTCwauZOWXEIotoPMGVHKngeVNFGRUtajEHQNDKtijUIIJTNycwMLQPCQmmwODNGARofbBIVJDQyoqEOWDTEutuPUKPILuspDUVAOWoupXHCVEXeruPUFQDQntpFLNCNAonaXHCVEXeruPUFQDQntpFLNCNAonaMOQMFQrraGLGETKonoJNAQUTfayFCCPIPedaWOVKOPtiiFCCPTGraoFOWVOPthaDOTPETloyLEFKNAounSOQOIPevaSBGNIGvepIEOKNGvenBSUWMGstqDKKPBGliaGTJGRGiswMIGRRQmioFIURRQmioFAPGYGfonBNGAEYevaHOVUOOetdJNIVOTevaBLPQOPecwOKPQWJoweUFGGLUwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhJTJKNMyoqBLTGAFykjPWJQWHareEGQPOVtooBYAQUMnosUHGCRVisjUGQPEKmtwLIPIMAsojHTQVHGgrwWEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNL
Some letter contacts seem pretty good. She figured out an interesting pattern:
(...)*HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA******HEA*****
(...)GCINBSUWMGZXQDKKPBGSMAGTJGRGPWWMIGRRQTMOFIURRQTMOFAPGYGMSNBNGAEYLZAHOVUOOLXDJNIVOTLZABLPQOPLGWOKPQWJVAEUFGGLUDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHBNAQNGDLWUEXGRAVYZPDQPTVLPHJTJKNMFSQBLTGAFFOJPWJQWHHVEEGQPOVASOBYAQUMUSSUHGCRVPWJUGQPEKTXWLIPIMAZSJHTQVHGNVWWEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNLCUCKOEYJAVLZASYQWDQKSJUTGNL
(...)GvenBSUWMGstqDKKPBGliaGTJGRGiswMIGRRQmioFIURRQmioFAPGYGfonBNGAEYevaHOVUOOetdJNIVOTevaBLPQOPecwOKPQWJoweUFGGLUwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhBNAQNGwhwUEXGRAouzPDQPTVelhJTJKNMyoqBLTGAFykjPWJQWHareEGQPOVtooBYAQUMnosUHGCRVisjUGQPEKmtwLIPIMAsojHTQVHGgrwWEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNLCnykOEYJAVevaSYQWDQdojUTGNL
The sequence GCIN
could be explained by a plaintext being even
, because the decrypt attempt was GCIN = Gven
.
By the way not decrypted letters are preserved in upper case on the plaintext.
Now she got a good assumption to test with the Hangman
:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=GCIN\
> --plaintext=even --key-len=9 --max-attempts=10
The output was:
*** The keyword was completely re-used 35 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'CHEA*****'.
*** Decrypt attempts assuming that 'GCIN' leads to 'EVEN'...
K C P
__________________
C Y w
H L e
E P l
A H h
* J J
* V V
* G G
* I I
* O O
C V t
__________________
The contacts seems good excepting by the H
being mapped to h
. Maybe YLPHJVG
could be WELCOME
. So, she:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=YLPHJVG\
> --plaintext=WELCOME --key-len=9 --max-attempts=20 --file-path=alice-bob-crap.txt
*** The keyword was completely re-used 0 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'CHEFVJC**'.
*** Decrypt attempts assuming that 'YLPHJVG' leads to 'WELCOME'...
K C P
__________________
C Y w
H L e
E P l
F H c
V J o
J V m
C G e
* I I
* O O
C V t
H H a
E W s
F A v
V D i
J R i
C G e
* V V
* I I
C E c
H H a
__________________
The sequence tasvi
does not remember anything written in English. So, with this clue, she started to consider only
YLP -> WEL
. If YLPH
is not WELC
maybe it could be WELL
:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=YLPH\
> --plaintext=WELL --key-len=9 --max-attempts=20 --file-path=alice-bob-crap.txt
*** The keyword was completely re-used 0 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'CHEW*****'.
*** Decrypt attempts assuming that 'YLPH' leads to 'WELL'...
K C P
__________________
C Y w
H L e
E P l
W H l
* J J
* V V
* G G
* I I
* O O
C V t
H H a
E W s
W A e
* D D
* R R
* G G
* V V
* I I
C E c
H H a
__________________
The letter contacts looks good excepting for tase
but she tried more decryptions considering this assumption:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=YLPH\
> --plaintext=WELL --key-len=9 --max-attempts=30 --file-path=alice-bob-crap.txt
*** The keyword was completely re-used 0 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'CHEW*****'.
*** Decrypt attempts assuming that 'YLPH' leads to 'WELL'...
K C P
__________________
C Y w
H L e
E P l
W H l
* J J
* V V
* G G
* I I
* O O
C V t
H H a
E W s
W A e
* D D
* R R
* G G
* V V
* I I
C E c
H H a
E R n
W J n
* P P
* T T
* U U
* C C
* Y Y
C D b
H S l
E E a
__________________
Yes, EHRJPT -> cannPT
suggests cannot
, so she tried it on hangman
:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=EHRJPT\
> --plaintext=cannot --key-len=9 --max-attempts=30 --file-path=alice-bob-crap.txt
*** The keyword was completely re-used 2 times before.
The keyword's letter at position #1 was used to encrypt it.
The effective keyword to encrypt the pattern was 'CHEWBA***'.
*** Decrypt attempts assuming that 'EHRJPT' leads to 'CANNOT'...
K C P
__________________
C Y w
H L e
E P l
W H l
B J i
A V v
* G G
* I I
* O O
C V t
H H a
E W s
W A e
B D c
A R r
* G G
* V V
* I I
C E c
H H a
E R n
W J n
B P o
A T t
* U U
* C C
* Y Y
C D b
H S l
E E a
__________________
Still good and it has revealed to her JVG -> ivG
. It strongly suggests ive [I've]
. Continuing she saw another obvious
pattern WADRGV -> secreGV
suggesting secret
. She tried this pattern:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --hangman --pattern=WADRGV\
> --plaintext=secret --key-len=9 --max-attempts=30 --file-path=alice-bob-crap.txt
*** The keyword was completely re-used 1 times before.
The keyword's letter at position #3 was used to encrypt it.
The effective keyword to encrypt the pattern was '**EWBACC*'.
*** Decrypt attempts assuming that 'WADRGV' leads to 'SECRET'...
K C P
__________________
* Y Y
* L L
E P l
W H l
B J i
A V v
C G e
C I g
* O O
* V V
* H H
E W s
W A e
B D c
A R r
C G e
C V t
* I I
* E E
* H H
E R n
W J n
B P o
A T t
C U s
C C a
* Y Y
* D D
* S S
E E a
__________________
Now all makes sense. So, she found the another keyword part, combining the two into one:
CHEWBA***
| **EWBACC*
---------
CHEWBACC*
Of course that the keyword is CHEWBACCA
now she can use another application mode called decrypt
.
The usage of it is pretty straigthforward. Look what Eve done:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --decrypt --key=chewbacca\
> --file-path=alice-bob-crap.txt
wellivegotasecreticannotsayblamemodernmovementtogiveitawayyouvegotsomethingiunderstandholditintightlycall
oncommandleapoffaithdoyoudoubtcutyouinijustcutyououtwhateveryoudodonttellanyonewhateveryoudodonttellanyon
elookforreflectionsinyourfacecaninedevotiontimecanteraseoutonthecornerlockedinyourroomineverbelievethemin
everassumestuckinbeliefthereisaliepromiseispromiseaneyeforaneyewevegotsomethingtorevealnoonecanknowhowitf
eelswhateveryoudodonttellanyonewhateveryoudodonttellanyonewhateveryoudodonttellanyonewhateveryoudodonttel
lithinkyoualreadyknowhowfaridgonottosayyouknowtheartisntgoneimtakingmysongtothegravewhateveryoudodonttell
anyonewhateveryoudodonttellanyonewhateveryoudodonttellanyonewhateveryoudodonttell
She cracked the ciphertext. The plaintext is the lyrics of the song The Lost Art of Keeping a Secret
from Queens of The Stone Age
.
This mode just applies the standard Vigenère
cipher. The usage is pretty simple, look:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --encrypt --key=chewbacca\
> --file-path=the-lost-art-of-keeping-a-secret.txt > out.txt
The riddler
mode can be used to generate puzzles for being cracked with the own vigcrack
. This mode
works by picking up a plaintext from a specified directory and encrypting it using a pseudo-random key.
Well, the basic usage of this mode is:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --riddler --save-as=challenge.txt
With the command shown above, the vigcrack
will find for a sub-directory called plaintexts
. It is also
expecting the existence of several .txt
files (the plaintexts) inside of this sub-directory.
Now, supposing that you organized it better, separating texts by language into other sub-directories, in this case:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --riddler --save-as=challenge.txt\
> --plaintexts-home=/usr/local/share/corpora/en
You can also specify the minimal and maximium keyword length:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --riddler --save-as=challenge.txt\
> --plaintexts-home=/usr/local/share/corpora/en --min-key-len=3 --max-key-len=5
You can also show the keyword, for cases when you send the challenge for someone:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --riddler --save-as=challenge.txt\
> --plaintexts-home=/usr/local/share/corpora/en --min-key-len=3 --max-key-len=5\
> --show-keyword
Maybe even during your own puzzles you want to save the keyword for consulting if it gets really hard:
eve@EDEN:~/src/tree/sin/curiosity# vigcrack --riddler --save-as=challenge.txt\
> --plaintexts-home=/usr/local/share/corpora/en --min-key-len=3 --max-key-len=5\
> --save-keyword=answer.txt
Well, "That's all folks..." enjoy! ;)