Jump to content

gnoo

Membros
  • Content Count

    145
  • Joined

  • Last visited

Community Reputation

71 Excellent

Recent Profile Visitors

1,039 profile views
  1. Olá @kassane tudo bem, o projeto que tu estás a indicar ele segue precisamente o caminho que eu não quero, eu não quero usar este tipo de utilitários do sistema, e como podemos ver no código do projeto em questão: def set_interface_mac(self, device, mac, port=None): """ Set the device's mac address. Handles shutting down and starting back up interface. """ # turn off device & set mac cmd = "ifconfig {} down hw ether {}".format(device, mac) subprocess.call(cmd.split()) # turn on device cmd = "ifconfig {} up".format(device) subprocess.call(cmd.split()) ele está a criar sub-processos, auxiliado com o programa " ifconfig ", eu quero ir um pouco mais fundo do que isso, aquilo que ele faz, isso eu já sei fazer qualquer das formas obrigado por mostrar esse projeto pode servir para outras coisas, nunca se sabe, tirar uma ideia... @Fernando Mercês obrigado pelas dicas com certeza vão ser muito úteis, na escolha do caminho a seguir, quando tiver pronto eu deixo ai o resultado, mas ainda vai demorar um bocado eu tenho outras prioridades no momento e não tenho cabeça para tudo, mas já vai dar para tentar desenhar uma estratégia de estudo e material a reunir, provavelmente vou ter que cair em cima do código do programa " ip ", para analisar isso melhor. Acho que vai ser interessante ficar a perceber como realmente funciona até para futuras ferramentas ou scripts que possam surgir... a estratégia de usar subprocess do python é um pouco primitivo, temos que refinar um pouco mais isso... Obrigado, abraço.
  2. @fredericopissarra não sei se me fiz entender bem. O que eu quero é fazer um script em C ou em python que altere o endereço MAC, e também não quero usar bibliotecas para executar comando do sistema, na realidade por motivos educacionais quero fazer a alteração do MAC diretamente na memória ( se for essa forma ). No exemplo que tu usaste com programa " ip " onde é que ele está a fazer essa alteração quando executamos o comando mencionado ? quando iniciamos o sistema o endereço que pertence à placa de rede deve ficar numa memória qualquer sem ser alterado, certo? onde? Questões a ponderar são: A alteração desse endereço deve ser feito ( " reescrito " ), na memória? Se deve ser "reescrito" na memória em que memória deve ser feita essa alteração? Se a opção for "reescrever" na memória riscos envolvidos nisso?
  3. Para além das dúvidas deveria ser uma área onde se FALASSE de assembly na área da programação os tópicos ficariam diluidos. Até porque este fórum tem foco na área de engenharia reversa e para mim ( apesar de não perceber nada do assunto ) não me faz muito sentido falar de engenharia reversa sem falar de assembly enrre outras coisas, especialmente quando o foco são iniciantes.
  4. Saudações, Eu queria tentar fazer um "mac changer", e tenho lido algumas coisas que me indicam que o mac poderá ser alterado na eeprom, eprom, talvez... Mas não compreendi muito bem. Alguém sabe como isso é feito na prática?
  5. Saudações, Falta uma área no fórum para conteúdo relacionado com assembly que é a base dos treinamentos do mente binária, e não se está a dar a devida atenção a essa matéria.
  6. Eu também faço o mesmo, não com assembly porque não tenho interesse ( pelo menos por agora ), ter várias fontes de informação é benéfico na maioria das vezes, o ponto de vista que eu quero deixar aqui tem a ver com a falta de objetividade ( na minha opinião ) em relação ao conteúdo que pode ajudar um individuo que queira iniciar ou complementar os seus estudos nessa área. Tópicos deste tipo devem ser pensados para disponibilizar informação de forma objetiva sobre um determinado tema, para fazer um "apanhadão" de assembly um utilizador não precisa vir aqui para encontrar fontes de informação, basta que abrir o seu browser preferido num motor de busca qualquer e fazer uma busca por " livros assembly PDF". Um tópico sobre assembly para ser entendido como um guia através da informação que nele é disponibilizado deve ser pensado de forma a que um iniciante obtenha a informação necessária e repito outra vez OBJETIVA em relação a como iniciar estudos nessa área, tem de haver um guia que seja consensual e prático ( no sentido de entendimento fácil ), para quem obtem essa informação. Exemplos: Como obter informação sobre o nosso processador ? Como escolher a versão ou tipo de assembly a usar mediante o processador que temos na nossa máquina ? Como obter informação sobre arquitetura de de computadores ( ULA, registadores, cache, barramentos, etc), fontes com informação objetiva, de linguagem simples ? Onde ir buscar informação sobre a arquitetura que vamos usar? É isso que uma pessoa que se inicia nesta matéria precisa... eu até acredito que os livros tragam alguma informação nesse sentido, mas será suficiente? não sei talvez ( eu não percebo nada disso)... NOTA: Eu não estou a pôr em causa o conteúdo deste tópico nem a fazer uma depreciação da participação dos seus intervenientes. Eu só acho é que se é para falar, que se fale realmente de assembly... exemplos, conceitos, demonstrações... não me parece que despejar aqui 30 gb de PDF's vá acrescentar alguma coisa.
  7. Eu acho que a solução não seria fazer um "apanhadão" de livros de assembly, mas sim quais são os melhores livros recomendados de forma consensual ( entre aqueles que estudam essa matéria ), ou seja, quais as fontes mais vezes citadas entre a comunidade ( pessoas que REALMENTE têm conhecimento de causa ). Eu também sei que as pessoas aprendem de formas diferente, e em ritmos diferentes, e o material de estudo para uns não é o melhor para outros e que o assembly segundo ouvi dizer "por aqui e por ali", tem varias versões e características diferentes... mas ... Eu há uns tempos também andava atrás de livros de redes feito louco à procura do livro que me iria abrir os olhos para o mundo e iluminar o meu caminho, e essas coisas poéticas que se costuma dizer, mas a realidade é que mesmo de uma forma diferente eles dizem mais ou menos a mesma coisa. Então o que eu fiz foi escolher dois que achei interessantes e comecei a estudar a matéria. Isso de andar à procura de PDF's a olhar o "table of contents" do livro a pensar "é mesmo este, é mesmo este", a ser redireccionado de página para página e os recursos da tua rede a serem utilizados pelo site em que estas a fazer o download não se sabe bem para quê, não é proveitoso em vez de um estudante de assembly passas a ser um caçador de livros profissional, com 10 gb de PDF's no disco e não leste nenhum deles em condições. Eu também já tive o hobby de caçar PDF's eu tenho à vontade uns 15 gb de PDF's que nunca li.
  8. Vocês levam mais tempo à procura de livros do propriamente a estudar a matéria ☺️
  9. Saudações, Este conteúdo está sujeito a erros de interpretação por parte da minha pessoa, se vires algum erro ou achas que tens algo a acrescentar deixa nos comentários para ser corrigido/adicionado... Os conceitos de redes aqui apresentados foram retirados desta página: https://tools.ietf.org/html/rfc792 Para complementar a informação da página acima indicada deve ser lido este ou outro livro da especialidade: NOTA: O script em python que aqui é apresentado apenas suporta os seguintes TIPOS de mensagem: TIPO 8 TIPO 0 TIPO 11 SCRIPT COM PYTHON #coding:utf-8 #!/usr/bin/env python3 from socket import * import struct import binascii ICMP_TYPE_NUMBERS = {8:'Echo request (8)', 0:'Echo reply (0)', 11:'Time Exceeded (11)'} def ethernet_frame(raw_dados): mac_destino, mac_fonte, protocolo = struct.unpack('! 6s 6s H', raw_dados[:14]) return byte_to_hex_mac(mac_destino), byte_to_hex_mac(mac_fonte), htons(protocolo), raw_dados[14:] def byte_to_hex_mac(mac_em_bytes): endereco = binascii.hexlify(mac_em_bytes).decode("ascii") return ":".join([endereco[i:i+2] for i in range(0,12,2)]) def dados_pacote_ipv4(payload): tupla_dados_ipv4 = struct.unpack("!BBHHHBBH4s4s", payload[:20]) versao_e_HLEN = tupla_dados_ipv4[0] tamanho_header = (versao_e_HLEN & 15) * 4 versao = versao_e_HLEN >> 4 tipo_servico = tupla_dados_ipv4[1] tamanho_total = tupla_dados_ipv4[2] identificacao = tupla_dados_ipv4[3] offset_fragmento = tupla_dados_ipv4[4] tempo_vida_ttl = tupla_dados_ipv4[5] protocolos = tupla_dados_ipv4[6] checksum_cabecalho = tupla_dados_ipv4[7] ip_origem = inet_ntoa(tupla_dados_ipv4[8]) ip_destino = inet_ntoa(tupla_dados_ipv4[9]) dados_ipv4_header = {'Versão':versao,'Tamanho do Header':tamanho_header, 'Tipo de Serviço': tipo_servico, 'Tamanho Pacote':tamanho_total, 'Identificação':identificacao, 'Fragmento':offset_fragmento, 'TTL':tempo_vida_ttl, 'Protocolo':protocolos, 'Checksum':checksum_cabecalho, 'IPv4 Orivgem':ip_origem, 'IPv4 Destino':ip_destino} return dados_ipv4_header, payload[20:] def mensagem_time_exceeded(payload_ipv4): tupla_dados_icmp = struct.unpack("!BBHi", payload_ipv4[:8]) print("Type: {} \nCode: {}\nChecksum: {}\nUnused: {}".format(ICMP_TYPE_NUMBERS[tupla_dados_icmp[0]], \ tupla_dados_icmp[1], tupla_dados_icmp[2], tupla_dados_icmp[3])) header_pacote_ipv4, _ = dados_pacote_ipv4(payload_ipv4[8:29]) print("{}\n".format(header_pacote_ipv4)) def icmp_header(tupla_dados_icmp): print("Type: {} \nCode: {}\nChecksum: {}\nIdentifier (BE): {}\nSequence Number (BE): {}\n".format(ICMP_TYPE_NUMBERS[tupla_dados_icmp[0]], \ tupla_dados_icmp[1], tupla_dados_icmp[2], tupla_dados_icmp[3], tupla_dados_icmp[4])) def dados_pacote_icmp(payload_ipv4): tupla_dados_icmp = struct.unpack("!BBHHH", payload_ipv4[:8]) if tupla_dados_icmp[0] == 8 or tupla_dados_icmp[0] == 0: icmp_header(tupla_dados_icmp) elif tupla_dados_icmp[0] == 11: mensagem_time_exceeded(payload_ipv4) else: pass sock = socket(AF_PACKET, SOCK_RAW, ntohs(0x0003)) while True: raw_dados, addr = sock.recvfrom(65536) mac_destino, mac_fonte, protocolo, payload = ethernet_frame(raw_dados) # A variavel (protocolo) está a referir-se ao # tipo de frame # Se for 8 vem ai pacote IP \0/ if protocolo == 8: dados_ipv4_header, payload_ipv4 = dados_pacote_ipv4(payload) if dados_ipv4_header['Protocolo'] == 1: dados_pacote_icmp(payload_ipv4)
  10. Existe alguém no mundo que ainda use windows ??? Temos que salvar essas pessoas rapidamente... = |
  11. O meu conhecimento de redes também não é grande coisa, mas vai-se aprendendo aos poucos :)
  12. @BrNaka Esse livro para introdução é bom, mas se quiseres um livro um pouco melhor para estudo do TCP / IP tens este:
×
×
  • Create New...