Jump to content

Fernando Mercês

Administrators
  • Posts

    1,523
  • Joined

  • Last visited

  • Days Won

    173

Everything posted by Fernando Mercês

  1. Oi Vinicius, tudo bem? Olha, se você não sabe começar, acho que o ideal então é eu te recomendar leituras. Aqui vai: Estrutura de Dados e Algoritmos em C - https://www.cos.ufrj.br/~rfarias/cos121/ Você vai precisar estudar bastante para poder concluir este trabalho. O quanto você sabe de C? Variáveis, funções, ponteiros, isso você já sabe? Se não souber, vai precisar de um material básico de programação também. Abraço!
  2. Caramba. Olha, eu não sei se é intencional, mas a descoberta é importante. Não é incomum fabricantes colocarem backdoors em seus dispositivos. Em geral a hipótese mais comentada é a de espionagem estatal, mas nessa seara tudo é muito difícil de se afirmar, a não ser quando ocorrem vazementos tipo o que o Snowde fez. ?
  3. Parece bom sim. Só o system("pause") aí que só funciona no Windows (ou DOS hehe), mas acho que a ideia do trabalho é testar sua lógica, então tá tudo certo. Parabéns!
  4. You will never find my command without debugging ?
  5. Oi @SpaceHoll0w, Talvez isso ajude: https://mentebinaria.gitbook.io/engenharia-reversa/o-formato-pe/enderecamento Abraço!
  6. Oi Antonio, tudo bem? Dá uma olhada aqui antes: Abraço, Fernando
  7. Pra facilitar seus testes, você pode escrever um arquivo texto com todas as entradas para o programa e depois só redirecionar a entrada ao executar seu programa. Por exemplo, o arquivo anexo pode ser usado da seguinte maneira no Prompt de Comando (no Windows) ou no shell do Linux: No examplo do arquivo anexo, ele vai criar: Produto de código 1. Produto de código 2. Cliente de código 1. Cliente de código 2. Cliente de código 3. Cliente de código 4. Venda para o cliente de código 2 do produto de código 1 de 5 unidades a 2.50 cada. Venda para o cliente de código 1 do produto de código 4 de 3 unidades a 5.00 cada. Venda para o cliente de código 1 do produto de código 2 de 1 unidade a 3.00. Ou seja, é o mesmo que você digitar tudo isso, só que não precisar digitar toda hora. ? Valeu. entrada.txt
  8. Opa, tudo bem? Para nos ajudar, pode editar seu tópico e formatar a parte do código como código? É o botãozinho <> no editor. ? Eu achei a lógica meio complexa, mas te recomendo examinar o valor da variável soma na iteração do loop na função mais_vendido. Se você souber colocar breakpoint de depurar, ótimo. Se não, pode usar um: printf("%f\n", soma); Bom, acredito que o problema esteja na seguinte parte: if(soma>mais_vendido){ mais_vendido=produtos[b]; } Aí você está comparando soma (que tem o total faturado por todas as vendas de determinado produto) com o código do produto. Na real você precisa armazenar quanto um produto vendeu e comparar soma com esta nova variável. Boa sorte!
  9. Montar uma máquina virtual para analisar malware no Windows pode ser bastante demorado devido à quantidade de ferramentas que precisamos baixar e configurar. Mesmo existindo soluções que as baixam automaticamente, a banda de internet necessária pode ser bem grande, já que algums programas possuem muitos gigabytes. Pensando em otimizar este tempo, criamos o retoolkit, um conjunto de ferramentas pré-configurado que você baixa uma vez e usa sempre, em quantas máquinas virtuais quiser. A lista de ferramentas é grande, por isso criamos uma wiki no respositório do projeto no Github falando sobre cada uma delas, inclusive com exemplos de uso. Além de acelerar o setup de uma VM nova, você pode utilizar o retoolkit simplesmente para conhecer mais sobre algumas ferramentas utilizadas na área. ?
  10. Muitas vezes quando analisando processos suspeitos estes criam arquivos e podem apagá-los depois. Algumas famílias de ransomware chegavam a escrever a chave usada para encriptar os arquivos no disco e depois apagar com o recurso de shredding (substituindo os bytes com zero ou com bytes aleatórios) para evitar a recuperação. Da necessidade de recuperar estes arquivos que "tocam" o filesystem surgiu, em 2014, o FileGrab, um software para monitorar a criação de arquivos no Windows e copiar assim que este for "fechado" (ter todo o seu conteúdo escrito). Na monitoração, é possível especificar um padrão de arquivos específicos para monitorar, utilizando a expansão tradicional do Windows (como *.exe) ou expressões regulares: Os nomes de arquivos que casarem sofrerão uma ação, se especificada na aba Capture. Esta pode ser a cópia para uma outra pasta, drive de rede ou um servidor FTP: O FileGrab é particularmente útil em máquinas virtuais para análise de malware e sandboxes. O código-fonte, assim como binários para Windows estão disponíveis no repositório do Github.
  11. Opa, na verdade basta uma estrutura (struct) com as coordenadas cartesianas e um código que converta, que você já tem. ? Algo assim: struct coord { float x; float y; }; Aí você declara assim: struct coord c; Após declarar, você acessa os membros da uma struct com o operador . (ponto). Por exemplo, para colocar valores nos membros: c.x = 9.1; c.y = 3.4; Você vai precisar adaptar isso na sua chamada à scanf(). Depois de ter os valores preenchidos na sua struct declarada, é só converter, acessando da mesma maneira e imprimir os resultados. Se já souber usar ponteiros, pode fazer uma função que receba a struct e substitua os valores, ou que receba duas structs (uma com as coordenadas cartesianas e a outra vazia, para preencher as coodernadas polares). Mas se ainda não trabalhou com ponteiros, ou não é exigido pelo exercício, pode fazer na main() mesmo. Um abraço e boa sorte!
  12. O vx-underground notou que o site do Ministério da Defesa Russo, https://mil.ru, está devolvendo um código de erro HTTP 418 para quem tenta acessá-lo de fora da Rússia, como mostra captura de tela abaixo: Mensagem de erro ao tentar acessar o site em 24/02/2022 às 15h51 UTC-3 Esse código de retorno foi parte de uma piada de primeiro de abril implementada na RFC do HTTP em 1998. De acordo com a documentação, o código HTTP 418 significa “Eu sou um bule de chá”, brincando com o fato de não poder fazer café por tal motivo. A única razão pela qual um webserver emitiria esse erro é trollar quem tenta acessar. Historicamente, alguns administradores de servidores web configuram seus servidores para emitirem este erro quando o webserver detecta scripts automatizando acessos (crawlers). Se um site oficial do governo russo o faz, é justamente para trollar o mundo, pois é algo configurado manualmente. A piada vem em momento de muito mal gosto, já que ontem a Rússia invadiu a Ucrânia, atacando a capital Kiev com mísseis, o que deu início a uma guerra. Diversas personalidades no mundo da tecnologia já se pronunciaram a respeito da guerra iniciada pela Rússia. Um dos criadores da criptomoeda Ethereum, o russo-canadense Vitaly Dmitriyevich "Vitalik" Buterin, disse num tweet que "O Ethereum é neutro, mas eu não". "Muito triste com a decisão do Putin de abandonar a possibilidade de solução pacífica na disputa com a Ucrânia e partir para a guerra. Isso é um crime contra os cidadãos ucranianos e russos. Eu espero que todos fiquem seguros, embora eu saiba que não vai haver segurança. Glória à Ucrânia.", diz no seu segundo tweet.
  13. O que é o radare2? O framework radare2 é um conjunto de poderosas ferramentas para engenharia reversa totalmente open source e multiplataforma que conta com inúmeras funções desde de um poderoso disassembler, debugger, decompiler, emulação de código, uma interface para scripting e criação de plugins, assim como suporte para vários formatos de arquivos. O curso O curso abordará os conceitos iniciais e intermediários do framework radare2, desde de à mais superficial análise de arquivos até emulação e scripting usando r2pipe, além de ser feito à análise de alguns arquivos usando features de debugging e scripting para automação de atividades em RE. O instrutor @anderson_leite (Buzzer no Discord) é um profissional da segurança da informação, com grande ênfase e prática em desenvolvimento, engenharia reversa e análise de malwares, utiliza o radare2 e o Cutter no seu dia a dia como ferramenta de trabalho para analisar diversas ameaças que atingem sistemas macOS e Windows. Pré-requisitos VM com Ubuntu 20.04. Conhecimento básico de programação, especialmente Python e C. Ter feito o Programação Moderna em C e o CERO, nessa ordem. Familiaridade com arquitetura de computadores e engenharia reversa. Aulas publicadas Aula 0 - Instalação do r2 Aula 1 - Trabalhando com o rax2 e o rahash2 Aula 2 - Navegando e resolvendo um crackme Aula 3 - Referências de chamadas e modo visual (Parte 1) Aula 4 - Referências de chamadas e modo visual (Parte 2) Aula 5 - Scripting com r2pipe (Parte 1) Aula 6 - Scripting com r2pipe (Parte 2) Aula 7 - Debugging Aula 8 - Conhecendo o Cutter Aula 9 - Reconstruindo structs e navegando pelo binário Aula 10 - Debugando e reconhecendo ponteiros
  14. Opa, Vamos preicsar de mais que o enunciado. ? Dá uma lida ó: Valeu!
  15. O fato de você estar compilando com gcc no Windows pelo Git Bash faz com que várias coisas sejam adicionadas no binário final, por conta do MinGW (Minimalist GNU for Windows). Fica mais complicado aprender assim. Eu recomendaria usar nasm e ld somente, de preferência num Linux virtual, ou via WSL2. Outra opção é usar ferramentas nativas para Windows. Aí recomendaria o fasm. Mas o livro é muito bom mesmo, então segui-lo como o autor propõe é a melhor recomendação, creio. ? Abraço.
  16. Opa, quando a gente fala "binário" é em referência ao arquivo executável (ou biblioteca), mas não precisa dar a saída em sistema binário de numeração não. ? Na verdade a melhor saída pra ver isso é com um disassembler, então você pode ou anexar o arquivo aqui (hello.o) ou postar a saída do seguinte comando: $ objdump -d hello.o Valeu!
  17. É outro label sim, porque tem dois underscores. Mas não vejo onde ele está sendo definido. Talvez esteja vazio? Como fica no binário depois de assemblado? Abraço!
  18. Não acho que dê. Que eu saiba, o NASM não suporta a sintaxe da AT&T usada pelo GAS. Eu insistiria no seu exemplo anterior com o ld mesmo. ? Abraço.
  19. Ah, você pode tentar linkar com o ld também: ld -o assembly assembly.obj
  20. Olha, eu não tenho certeza, mas acho que o NASM requer símbolos globais começando com underscore. De qualquer forma, como você tá usando o gcc, acho que ele vai buscar a main. Então tenta aí: bits 64 global main main: mov eax, 777 ret Ou tenta com _main ao invés de main (altera nos dois lugares). Boa sorte!
  21. Oi Marvin, Acho que idade não tem grilo algum. Tá tudo certo. Sobre entrar para a área de segurança, acho que o caminho é por computação tradicional, senão fica muito inconsistente. Recomendo você buscar um curso de Ciência da Computação. É bem capaz que no terceiro ano você já consiga um emprego na área. Aí você continua os estudos e vai ter uma formação forte para uma carreira sólida. ? Vale também dar uma olhada no nosso Guia de Estudos e Profissões em https://menteb.in/guia também, para se guiar no que estudar no auto-estudo. Conta com a gente! Abraço!
  22. É sempre bom quando me deparo com um projeto de software livre criativo. E é a cara do Brasil ser o berço de softwares assim. Aqui no Mente Binária, além de trabalharmos muito pela formação tecnológica no Brasil, também mantemos vários projetos de software livre e para isso contamos não só com a comunidade, mas também com dois estagiários que começaram conosco ano passado. São dois estudantes de programação que, além de trabalharem nos nossos projetos, também desenvolvem seus próprios. E é justamente sobre um caso desse que venho falar hoje: o OPM (Oxidized Packager Manager) é um gerenciador de pacotes de pacotes DEB, então pode ser usado em sistemas como Ubuntu, Debian, Kali, etc. No entanto, o FallAngel, principal desenvolvedor, pretende estender este suporte a outros tipos de pacote, como o RPM. Os seguintes sub-comandos são suportados pelo OPM: clear – Limpa o cache do OPM help – Exibe a ajuda install – Instala um pacote remove – Remove um pacote search – Busca por um pacote update – Atualiza o cache do OPM O OPM gerencia as dependências, assim com o APT. O código, escrito em Rust, é super enxuto e o desenvolvedor não vê a hora de receber contribuições. Se você conhece da linguagem ou está a fim de aprender, ou mesmo tem só a curiosidade de saber como um gerenciador de pacotes funciona, tá aí sua oportunidade, isso porque o desenvolvedor é brasileiro e acessível. Downloads, código e mais informações podem ser obtidas no repositório do OPM no Github. Velocidade Se tem uma coisa que chama atenção no OPM é a velocidade. Uma busca em todos os pacotes disponíveis dura menos que um segundo! Olha só: # export PKG_FMT=deb $ time sudo target/release/opm search ht | grep -i editor ht - Viewer/editor/analyser (mostly) for executables real 0m0.067s user 0m0.051s sys 0m0.015s Olha a velocidade de instalar o tmux... 0 segundos! $ sudo ./target/release/opm install tmux Installing tmux for debian ... Looking up for dependencies ... Done Installing 2 NEW package libevent-core-2.1-7 tmux After this operation, 561.26KiB of additional disk space will be used. Do you want to continue? [Y/n] y Done Installing libevent-core-2.1-7 ... Done Installing tmux ... Running pre-install script ...Done Running post-install script ...Done Installed tmux in 0 seconds Compatibilidade O OPM é genérico e foi feito principalmente para permitir a instalação de pacotes personalizados. No entanto, com a variável de ambiente PKG_FMT=deb, ele passa a utillizar os repositórios do APT. Inifinitas possibilidades Imagine um sistema embarcado onde manter a infraestrutura de um DPKG, RPM ou APT seja muito custosa (espaço, performance, etc)... O OPM parece ser ideal. ? Ou ao desenvolver seu próprio Linux, por que não ir de OPM? Comunidade Falando em ser acessível, junto com outros membros do servidor do Mente Binária no Discord (e possivelmente outros), o desenvolvedor do OPM e outros amigos criaram a comunidade CoffeCode no Discord, pública para quem quiser trocar ideia sobre programação e aprender. Não por coincidência, Rust tá no topo dos canais, mas também há canais para C/C++, Python, Assembly, Java e Golang. ?
  23. Opa, a gente tem bastante coisa sobre Assembly aqui mesmo: https://www.mentebinaria.com.br/search/?q=assembly&quick=1&type=downloads_file A maioria dos autores usa a sintaxe Intel, mas pode ter algumas comparações lá. Dá uma olhada. ? Valeu!
×
×
  • Create New...