Beispiel #1
0
 def test_Encode(self):
     msg1 = "KB2BBC KA1AAB DD44"
     msg2 = "KA1AAB KB2BBC DD44"
     expectedresult1 = np.array([34, 20, 5, 42, 26, 9, 3, 5, 60, 6, 24, 22])
     expectedresult2 = np.array(
         [34, 16, 49, 31, 2, 9, 16, 22, 41, 38, 24, 22])
     result1 = jt.encode(msg1)
     result2 = jt.encode(msg2)
     self.assertEqual(len(result1), len(expectedresult1))
     self.assertEqual(len(result2), len(expectedresult2))
     self.assertEqual(result1.tolist(), expectedresult1.tolist())
     self.assertEqual(result2.tolist(), expectedresult2.tolist())
Beispiel #2
0
def jt65encodemessages(jt65msgs, verbose=False):
# Encode valid text into array of JT65 data
    jt65data = []

    for index, value in enumerate(jt65msgs):
        legitjt = jt.encode(value)
        legitpacket = jt.prepmsg(legitjt)

        if verbose:
            print "JT65 legit message " + str(index) + " : " + value
            print "Encoded as : " + str(legitjt)
            print "Legit channel symbols with RS :" + str(legitpacket)

        jt65data.append(legitpacket)

    return jt65data
Beispiel #3
0
def validatesteg(jt65msg, rxsymbols, hidekey, errordetectionthreshold, verbose=False):
# Determines if a given set of symbols contain steganography or are a
# normal JT65 message

    errorcount = 0

    # Determine what the symbols would be if there were no errors
    truesymbols = jt.prepmsg(jt.encode(jt65msg))

    # Determine how many symbols where steg should be hidden contain errors
    for i in hidekey:
        if rxsymbols[i] != truesymbols[i]:
            errorcount += 1

    if errorcount >= errordetectionthreshold:
        return True

    return False
Beispiel #4
0
def createciphermsgs_none(jt65msgcount, stegmsg, verbose=False):
# Packs hidden message into JT65 symbols with no cipher

    ciphermsgs = []

    # Can we fit your hidden message?
    if jt65msgcount * 13 < len(stegmsg):
        print(
            "Length of hidden message exceeds capacity of number of valid JT65 messages provided")
        sys.exit(0)

    for index in range(jt65msgcount):
        secretjt = jt.encode(stegmsg[index * 13:index * 13 + 13])
        secretjtfec = jt.prepsteg(secretjt)

        if verbose:
            print "Secret message " + str(index) + " : " + stegmsg[index * 13:index * 13 + 13]
            print "Secret message " + str(index) + " encoded : " + str(secretjt)
            print "Secret message " + str(index) + " encoded with FEC : " + str(secretjtfec)

        ciphermsgs.append(secretjtfec)

    return ciphermsgs