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())
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
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
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