O proxy age como intermediario entre o servidor local e requisicoes da internet, facilitando a nagevagacao, controlando o acesso e fornecendo anonimato.Criando um HTTP Proxy:Nesse proxy, vamos criar uma funcao start() para fazer conexao entre o navegador e o servidor web.import socket, sys, thread, httplib, redef start(): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('', 8001)) s.listen(10) print "[+] Ouvindo as conexoes..." except Exception, e: print "[-] Nao foi possivel iniciar o socket. :(" sys.exit(3) while True: try: conn, addr = s.accept() data = conn.recv(4096) thread.start_new_thread(conn_string, (conn, addr, data)) except KeyboardInterrupt: s.close() print "\n[-] Servidor Proxy finalizando..." print "[-] Saindo...\n" sys.exit(1)No codigo acima, o modulo thread vai manter os dados atualizados enviando para a funcao conn_string o que for recebido. A funcao conn_string vai filtrar a url dos dados recebidos.def conn_string(conn, addr, data): try: firstline = data.split('\n')[0] url = firstline.split(' ')[1] http_pos = url.find('://') temp = url[(http_pos+3):] # armazena a url completa port_pos = temp.find(':') webserver_pos = temp.find('/') # encontra o final da url if webserver_pos == -1: webserver_pos = len(temp) webserver = "" port = -1 if (port_pos == -1 or webserver_pos < port_pos): port = 80 webserver = temp[:webserver_pos] # site raiz proxy_server(temp, webserver, port, conn, addr, data) except Exception, e: passNesse proxy vamos filtrar a palavra "youtube" nos enderecos requisitados. Se for encontrada, ele ira bloquear o acesso retornando a mensagem: "Acesso nao autorizado!".def proxy_server(temp, webserver, port, conn, addr, data): ip_host=socket.gethostbyname(webserver) consite=httplib.HTTPSConnection(webserver) consite.request("GET","/") r1=consite.getresponse() print "\n[+] HOST:", webserver print "[+] HOST_IP:", ip_host print "[+] STATUS: ", r1.status, r1.reason consite.close() try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((webserver, port)) s.send(data) if re.match(".*youtube.*", temp): print "\n[!] YOUTUBE: ", temp html='Acesso nao autorizado!' conn.send(html) conn.close() s.send(html) s.close() while True: reply = s.recv(4096) if (len(reply)>0): conn.send(reply) conn_server(reply) else: break s.close() conn.close() except socket.error, (value, message): s.close() conn.close() sys.exit(2)start()Para testar, basta configurar o seu navegador para usar o proxy manual no endereco: 127.0.0.1:8001. Esse foi um exemplo bem simples de um servidor proxy http, baseado no codigo do null-byte. Nesse artigo vou falar como exportar e importar uma vm do Citrix Xenserver via USB.1) Primeiro temos que determinar o dispositivo USB a ser usado para exportar a vm:# fdisk -l Device Boot Start End Blocks Id System/dev/sdd1 * 1 121601 976760000+ 7 HPFS/NTFS 2) Depois e preciso criar um ponto de montagem e montar o drive USB:# mkdir /mnt/usb# mount -v /dev/sdd1 /mnt/usb 3) Formatando o dispositivo:# mkfs t ext3 /dev/sdd1 4) Exportando:Para listar as vms e assim obter o uuid ou nome da vm a ser exportada:# xe vm-listuuid ( RO) : ef30f232-8306-6614-b19f-40843884411e name-label ( RW): KALI01 power-state ( RO): halteduuid ( RO) : 7364cb99-c245-8511-9e91-6c0fc6ced47d name-label ( RW): KALI02 power-state ( RO): haltedPodemos usar o uuid ou name-label para a exportacao:# xe vm-export vm=KALI01 filename=/mnt/usb/KALI-EXPORT.xvaou# xe vm-export vm=ef30f232-8306-6614-b19f-40843884411e filename=/mnt/usb/KALI-EXPORT.xva5) Importando:Para importar precisamos saber os repositorios de armazenamento:# xe sr-listuuid ( RO) : ba17d358-dd6e-4e8d-8731-b88a3c496c91 name-label ( RW): DVD drives name-description ( RW): Physical DVD drives host ( RO): Xenserver6 type ( RO): udev content-type ( RO): isouuid ( RO) : 1ba0a7df-1bee-d8f3-bca3-dc32aeccbcb4 name-label ( RW): Removable storage name-description ( RW): host ( RO): Xenserver6 type (