def callback(ch, method, properties, body): ch.basic_ack(delivery_tag=method.delivery_tag) file_name = properties.headers['filename'] with open('{}/{}'.format(csv_store_path, file_name), 'wb') as write_csv: write_csv.write(body) tolog('[Server] {} {} got message...'.format(pg_queue_name, file_name))
def shiftRows(estado): log.tolog("\nShiftRows Estado Inicial:\n") imprimeMatrizHex(estado) for i in range(4): estado[i]=estado[i][i:]+estado[i][:i] log.tolog("\nResultado:\n") imprimeMatrizHex(estado) return estado
def main(): postgres_server = RabbitConsumer(pg_queue_name) channel = postgres_server.get_channel() tolog('[Server] {} starting...'.format(pg_queue_name)) channel.basic_consume(callback, queue=pg_queue_name) get_data(channel) postgres_server.close_connection()
def invShiftRows(estado): log.tolog("\nShiftRows Inverso Estado Inicial:\n") imprimeMatrizHex(estado) for i in range(4): estado[i]=estado[i][-i:]+estado[i][:-i] log.tolog("\nResultado:\n") imprimeMatrizHex(estado) return estado
def get_data(channel): try: channel.start_consuming() except KeyboardInterrupt: channel.stop_consuming() except ConnectionClosed: print('[Server] Crashed. Reconnecting...') tolog('[Server] Crashed. Reconnecting...', 'warn') main()
def byteSub(estado,matriz): log.tolog("\nByteSub Estado Inicial:\n") imprimeMatrizHex(estado) for i in range(4): for j in range(4): estado[i][j]=matriz[estado[i][j]] log.tolog("\nResultado:\n") imprimeMatrizHex(estado) return estado
def imprimeMatrizHex(matriz): a='' for filas in matriz: a=a+ "\n" for columnas in filas: a=a+"%02x"%columnas + " " for columnas in filas: a=a+" "+chr(columnas)+" " a= a+"\n" log.tolog(a)
def connect_host(self, host): self.connection = pika.BlockingConnection( pika.ConnectionParameters(host=host)) channel = self.connection.channel() channel.exchange_declare(exchange='direct', exchange_type='direct') for queue, ttl in self.queue_dict.items(): channel.queue_declare(queue=queue, arguments={'x-message-ttl': ttl}) tolog('Declared queue {} with TTL {}'.format(queue, ttl)) return channel
def reccfb(k,iv,connection,largo): log.tolog("\nIniciando desencriptacion CFB\n Clave:%s\nIV:%s\n"%(k,iv)) texto='' for i in range(largo/2): r=aes.encriptarAes(iv,k) c=connection.recv(2) log.tolog("\n %s XOR %s "%(c[0]+c[1],r[0]+r[1])) p=chr(ord(c[0])^ord(r[0]))+chr(ord(c[1])^ord(r[1])) #XOR dos primeros caracteres texto=texto+p #Juntando texto iv=iv[2:]+c #Rotacion vector print "Se ha recibido el mensaje: \"%s\""%texto return texto
def reccfb(k, iv, connection, largo): log.tolog("\nIniciando desencriptacion CFB\n Clave:%s\nIV:%s\n" % (k, iv)) texto = '' for i in range(largo / 2): r = aes.encriptarAes(iv, k) c = connection.recv(2) log.tolog("\n %s XOR %s " % (c[0] + c[1], r[0] + r[1])) p = chr(ord(c[0]) ^ ord(r[0])) + chr( ord(c[1]) ^ ord(r[1])) #XOR dos primeros caracteres texto = texto + p #Juntando texto iv = iv[2:] + c #Rotacion vector print "Se ha recibido el mensaje: \"%s\"" % texto return texto
def send_data(rabclient): while True: if rabclient.check_consumers('postgres'): for file in find_csv_filenames(csv_path): rabclient.send(read_file(file), file) print('[x] Sent %r' % file) tolog('[Client] Message sent') else: print('Consumer is not running!') tolog('[Client] Consumer is not running!', 'warn') sleep(sleep_time) rabclient.close_connection()
def addRoundKey(estado,k): log.tolog("\nAddRoundKey:\n") log.tolog("\nEstado:\n") imprimeMatrizHex(estado) log.tolog("\nClave:\n") imprimeMatrizHex(k) for i in range(4): for j in range(4): estado[i][j]=estado[i][j]^k[i][j] log.tolog("\nResultado:\n") imprimeMatrizHex(estado) return estado
def connect_host(self, host): while True: try: self.connection = pika.BlockingConnection( pika.ConnectionParameters(host=host)) channel = self.connection.channel() channel.queue_declare(exclusive=True) channel.exchange_declare(exchange='direct', exchange_type='direct') channel.queue_bind(exchange='direct', queue=self.queue, routing_key='csv') break except pika.exceptions.ChannelClosed: print('Queue {} not exists. Waiting...'.format(self.queue)) tolog('Queue {} not exists. Waiting...'.format(self.queue), 'warn') self.close_connection() sleep(10) # Sleep and wait for the client return channel
def desencriptarAes(texto,k): log.tolog("INICIANDO DESENCRIPTACION AES DEL TEXTO \"%s\", Clave \"%s\""% (texto,k)) estado=textoAEstado(texto) clave=expandeClave(k) #Ronda Inicial log.tolog("\nRONDA INICIAL\nEstado inicial:\n") imprimeMatrizHex(estado) log.tolog("Clave inicial:\n") imprimeMatrizHex(seleccionaClave(clave,0)) addRoundKey(estado,seleccionaClave(clave,10)) invShiftRows(estado) byteSub(estado,rsbox) for i in range(9,0,-1): log.tolog("\nRONDA %d\n Clave de la ronda:"%i) imprimeMatrizHex(seleccionaClave(clave,i)) rondaAesInv(estado,seleccionaClave(clave,i)) addRoundKey(estado,seleccionaClave(clave,0)) log.tolog("\nResultado Desencriptacion: %s"%estadoAtexto(estado)) return estadoAtexto(estado)
def enviocfb(texto,k,iv,sock): log.tolog("\nIniciando CFB\n Texto:%s\nClave:%s\nIV:%s\n"%(texto,k,iv)) textoInt=textoALista(texto) for i in range(len(textoInt)/2): log.tolog("\nEncriptacion CFB\n Clave:%s\nIV:%s\n"%(k,iv)) c=aes.encriptarAes(iv,k) log.tolog("\n %s XOR %s "%(c[0]+c[1],chr(textoInt[i*2])+chr(textoInt[i*2+1]))) c=chr(ord(c[0])^textoInt[i*2])+chr(ord(c[1])^textoInt[i*2+1]) #XOR dos primeros caracteres iv=iv[2:]+c #Rotacion vector enviar(c,sock)
def expandeClave(k): clave=textToClave(k) log.tolog("\nExpandiendo clave: %s\n"%k) log.tolog("\nMatrix inicial:") imprimeMatrizHex(clave) for i in range(4,44): aux=clave[i-1] if(i%4==0): aux=xorFilaFila(subByte(rotByte(aux)),Rcon[i%4]) clave.append(xorFilaFila(clave[i-4],aux)) log.tolog("\nResultado:") imprimeMatrizHex(clave) return clave
def expandeClave(k): clave=textoAEstado(k) log.tolog("\nExpandiendo clave: %s\n"%k) log.tolog("\nMatrix inicial:") imprimeMatrizHex(clave) for i in range(4,44): aux=clave[i-1] if(i%4==0): aux=xorFilaFila(subByte(rotByte(aux)),Rcon[i%4]) clave.append(xorFilaFila(clave[i-4],aux)) log.tolog("\nResultado:") imprimeMatrizHex(clave) return clave
def enviocfb(texto, k, iv, sock): log.tolog("\nIniciando CFB\n Texto:%s\nClave:%s\nIV:%s\n" % (texto, k, iv)) textoInt = textoALista(texto) for i in range(len(textoInt) / 2): log.tolog("\nEncriptacion CFB\n Clave:%s\nIV:%s\n" % (k, iv)) c = aes.encriptarAes(iv, k) log.tolog( "\n %s XOR %s " % (c[0] + c[1], chr(textoInt[i * 2]) + chr(textoInt[i * 2 + 1]))) c = chr(ord(c[0]) ^ textoInt[i * 2]) + chr( ord(c[1]) ^ textoInt[i * 2 + 1]) #XOR dos primeros caracteres iv = iv[2:] + c #Rotacion vector enviar(c, sock)
def mixColumns(estado,matriz): log.tolog("\nMixColumns Estado Inicial:\n") imprimeMatrizHex(estado) log.tolog("\nMatriz utilizada:\n") imprimeMatrizHex(matriz) aux=[0,0,0,0] for i in range(4): for j in range(4): aux[j]=estado[j][i] aux=mixColumn(aux,matriz) for k in range(4): estado[k][i]=aux[k] log.tolog("\nResultado:\n") imprimeMatrizHex(estado) return estado
def callback(ch, method, properties, body): ch.basic_ack(delivery_tag=method.delivery_tag) insert_redis(create_dict(body, 0), 0) insert_redis(create_dict(body, 1), 1) tolog('[Server] {} got message...'.format(redis_queue_name))
def encriptarAes(texto,k): log.tolog("INICIANDO ENCRIPTACION AES DEL TEXTO \"%s\", Clave \"%s\""% (texto,k)) #ronda inicial estado=textoAEstado(texto) clave=expandeClave(k) log.tolog("\nRONDA INICIAL\nEstado inicial:\n") imprimeMatrizHex(estado) log.tolog("Clave inicial:\n") imprimeMatrizHex(seleccionaClave(clave,0)) addRoundKey(estado,seleccionaClave(clave,0)) for i in range(1,10): log.tolog("\nRONDA %d\n Clave de la ronda:"%i) imprimeMatrizHex(seleccionaClave(clave,i)) rondaAes(estado, seleccionaClave(clave,i)) #Ronda final log.tolog("\nRonda Final:\n") byteSub(estado,sbox) shiftRows(estado) addRoundKey(estado,seleccionaClave(clave,10)) log.tolog("\nResultado Encriptacion: %s"%estadoAtexto(estado)) return estadoAtexto(estado)
def hiredis_checker(): if not HIREDIS_AVAILABLE: print('hiredis is not available. Better to install it.') tolog('hiredis is not available. Better to install it.', 'warn')