Quantcast
Channel: Wesley's Techblog » Qt
Viewing all articles
Browse latest Browse all 10

PolyKrypt 1.0.2 met Morse Decryptie

$
0
0

Mensen die met internet security bezig zijn kennen Rhican misschien wel. Rhican is één van de enige personen die alle security challenges op de security website net-force.nl heeft opgelost. Per toeval kwam ik Rhican gisteren tegen op het #qt IRC kanaal omdat hij blijkbaar tegenwoordig ook programma’s schrijft met Qt4/C++.

Hij heeft een programma (PolyKrypt) geschreven waarmee je allerlei zaken kan encrypten en decrypten. Het programma is gebaseerd op het Polycrypt (met een c) programma voor Windows van Goliath team.

De versie van Rhican werkt echter op zowat elk besturingssysteem en is open source. Ik heb van de gelegenheid gebruik gemaakt om de ontbrekende morse decryptie functie te schrijven voor PolyKrypt en sinds versie 1.0.2 is PolyKrypt dus beschikbaar met een Morse Decryptie functie :)

Voor de geïnteresseerden, dit is de morse decryptie functie:

// morse decryption algorithm by wesley@ubuntu.com
// based on rhican's morse encryption algorithm
void polyKryptMainWindow::morseDecrypt() {
    char * morse[]={"A",".-",    "B","-...",   "C","-.-.",  "D","-..",   "E",".",     "F","..-.",   "G","--.",
            "H","....",  "I","..",     "J",".---",  "K","-.-",   "L",".-..",  "M","--" ,    "U","..-",
            "N","-.",    "O","---",    "P",".--.",  "Q","--.-",  "R",".-.",   "S","...",    "T","-",
            "V","...-",  "W",".--",    "X","-..-",  "Y","-.--",  "Z","--..",  "0","-----",  "1",".----",
            "2","..---", "3","...--",  "4","....-", "5",".....", "6","-....", "7","--...",  "8","---..",
            "9","----.", ".",".-.-.-", ",","--..--"};

    QString padding="/";
    QMap<QString,char> morsemap;
    for (int i=0;i<38;++i)
        morsemap[morse[(i<<1)+1]]=*morse[i<<1];

    QString plain = textInMorse->toPlainText();
    QStringList wordMorse = plain.split(" ");
    QString cipher = "";
    QString word;
    QStringList lettersMorse;
    QString letter;
    foreach(word, wordMorse)
    {
        lettersMorse = word.split(padding);
        foreach(letter, lettersMorse)
        {
            if (letter.length()==0)
                cipher+=letter;
            else
                cipher+=morsemap[letter];
        }
        cipher+=" ";
    }
    textOutMorse->setPlainText(cipher);
}

Het programma en de broncode van het programma kan je downloaden op de website van Rhican.


Viewing all articles
Browse latest Browse all 10

Trending Articles