Explore the community Forums Lectora Inspire Tools Questions & Answers encrypted answer keys in XML

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #296933 Score: 0
    Profile photo of cpliu
    cpliu
    Member
    beginner
    intermediate
    contributor
    curious george
    wise owl
    Group Member
    2 pts
    @cpliu

    I created a tool to output answers from _tobj9303.xml for SME to review answers quickly. I upgraded to Letora 12 and found the answers are encrypted.

    For example: C. $100 becomes: s1vEx9v4t3vCt0t0t0x9rCp2

     

    Does anyone know or if Trivantis can provide the conversion table to decrypt the text in XML?

    Thanks,

     

     

    #296934 Score: 0
    Profile photo of cpliu
    cpliu
    Member
    beginner
    intermediate
    contributor
    curious george
    wise owl
    Group Member
    2 pts
    @cpliu

    It looks like too complex to decrypt. I will use version 11 to generate the file first then change it to 12 as a final. Is there a place I can disable the encryption on answers temporarily?

    I like the encryption feature. It will be hard for a student to cheat.

    #296940 Score: 1
    Profile photo of Sergey Snegirev
    Sergey Snegirev
    Member
    contributor
    intermediate
    advanced
    friend finder
    lab member
    junior moderator
    advocate
    LUC16
    LUC16 Attendee
    wise owl
    339 pts
    @ssneg

    Hey @cpliu, the code is not very hard. Every character is encoded with two characters, e.g. “A” is encoded as “s1” and “5” is encoded as “t5”. So “A5” would be encoded as “s1t5”. List of codes:

    ABCDEFGHIJKLMNOPQRSTUVQXYZ = s1s2s3s4s5s6s7s8s9sAsBsCsDsEsFr0r1r2r3r4r5r6r1r8r9rA
    abcdefghijklmnopqrstuvwxyz = q1q2q3q4q5q6q7q8q9qAqBqCqDqEqFp0p1p2p3p4p5p6p7p8p9pA
    0123456789 = t0t1t2t3t4t5t6t7t8t9
    delimiter = vC

    So e.g. “One” is “sFqEq5”
    and “One|Two” (in a multiple choice question) is “sFqEq5vCr4p7qF”

    So all you need is to build a simple function in your tool that reads encoded characters in pairs and matches them to real characters. Of course, it only covers 62 characters above 🙁 I strongly feel that this is a simple shift code but I need a bit more time to figure it out so that any Unicode character can be decoded.

    This post has received 1 vote up.
    #296941 Score: 1
    Profile photo of Sergey Snegirev
    Sergey Snegirev
    Member
    contributor
    intermediate
    advanced
    friend finder
    lab member
    junior moderator
    advocate
    LUC16
    LUC16 Attendee
    wise owl
    339 pts
    @ssneg

    Okay, I got it. Someone in Trivantis has obviously been a scout, because the algorithm is partly based on scouts’ reversed alphabet cypher 🙂

    To decode, say, “sE” into an actual character, you need to take the first letter (s), find its position in the alphabet (18 since we start with 0) and calculate its position in the reversed alphabet that starts with “wvutsrqp…” (26-3-1-18 = 4, note that we start with 0). Then you simply add the other character (E) and get “4E”. 4E is a Unicode (hex) code for “N”. Yay, we decoded “sE” into “N”, which is the correct answer.

    Let’s try with “vC”. “v” is “1”, and “1C” is “file separator character”. Looks like its working.

    Now anything that starts with “z” or “Z” is a special case and works a bit different (simpler). To decode “z170”, you simply ignore the “z”, and look for “170” (hex) in Unicode. It’s “Ű”, by the way.

    Voila, I think its cracked 🙂

    UPDATE. I wrote a simple decoder for you: http://jsfiddle.net/vhqb6oy5/ – it does not decode some very complex characters like Arabic or Chinese but it works for characters upto U+016F (see this table – http://unicode-table.com/en/) and that’s quite a lot.

    This post has received 1 vote up.
    #297057 Score: 0
    Profile photo of cpliu
    cpliu
    Member
    beginner
    intermediate
    contributor
    curious george
    wise owl
    Group Member
    2 pts
    @cpliu

    Sergey, you’re the hero. Thanks for the explanation. I originally thought it took the whole text into consideration when decoding it back. I tried your decoder, it worked except symbols (e.g. $, comma) and space get ignored. It’s still very helpful.

    Thanks!

     

    #297064 Score: 2
    Profile photo of Sergey Snegirev
    Sergey Snegirev
    Member
    contributor
    intermediate
    advanced
    friend finder
    lab member
    junior moderator
    advocate
    LUC16
    LUC16 Attendee
    wise owl
    339 pts
    @ssneg

    I’ve updated it so it recognizes space and the following symbols: !”#$%&'()*+,-./
    Try it here: http://jsfiddle.net/cafwt1g1/

    P.S. You know why it didn’t work? Because I used “wvutsrq…” as reversed alphabet string yet Lectora uses “”wuvtsrq…” 🙂

    This post has received 2 votes up.
    #297130 Score: 0
    Profile photo of cpliu
    cpliu
    Member
    beginner
    intermediate
    contributor
    curious george
    wise owl
    Group Member
    2 pts
    @cpliu

    Thank you. I should be able to adjust my tool to show the right answer. I will post if I have questions on how it works.

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.