Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.510
  • Registro em

  • Última visita

  • Dias Ganhos

    164

Tudo que Fernando Mercês postou

  1. Tudo bem e você? Tem comando no Linux pra isso. 😉 Outra opção (online) é o CyberChef. Abraço!
  2. Ah, você precisa do xcopy então. O xcopy copia um diretório e todos os seus subdiretórios e arquivos para um dado destino. Isto é chamado de cópia recursiva. 😉
  3. Hi @Mohsen. Welcome to our community. 🙂 A few things you should consider: Please edit your current post and format your C code as code by selecting it and clicking the <> button in the text editor. 😉 To your main problem: you are returning a pointer to a local (stack-allocated) buffer that only exists while get_time() is running. You can't do that. In C, you have a few options: Declare you return variable in the function that calls the desired function (in your case, it'd be in main()) and pass it to the desired function as reference. Here's an example: void get_time(char *currentTime) { // 3. receive the buffer as reference snprintf(currentTime, 80, "%s", "my text"); // 4. write to the buffer } int main(void) { char currentTime[80]; // 1. declare/allocate the buffer before calling the function get_time(_timstamp, dt, currentTime); // 2. pass a reference to the buffer printf("current time: %s \n", currentTime); // 5. buffer contains the string set by get_time() return 0; } As you will notice, I didn't complete the exercise for you. Instead, I've pointed out one way to solve it. 😉 You could also use a global variable or a dynamically-allocated buffer, but your solution depends on what you've studied. If you never studied pointers, then use a global variable. If you didn't study dynamic memory allocation, then use the pointer reference as shown. Other important fixes in your code: You mixed C and C++ headers and functions and this can become very messy very quickly. For example, string is different from char*. Mixing them will thrown errors. So, choose one language and stick with it. In your case, I recommend choosing C. Here's the fixes you need for that: Replace <string> by <string.h>. Remove <iostream>. Remove <cstring>. Remove the using directive. Don't use string. Use char* instead. Replace main() by main(void). sprintf() is insecure and decprecated. Use snprintf() instead. The latter needs the maximum number of characters to write (use the same size you've declared the buffer with). Surely there's more room for improvement, but I'll stop here for now. 🙂 Good luck!
  4. Fernando Mercês

    Duolingo

    O Duolingo é um app para smartphone que ajuda muito no estudo de um idioma. Todo dia uns 30 minutinhos de treino e em poucos meses seu nível de inglês vai pra outro patamar.
  5. @edummoreno se entendi bem, você quer copiar todos os arquivos de uma pasta para uma pasta um nível acima. Neste caso, não precisa descobrir os nomes de arquivos com força bruta (tentar todas as possibilidades até acertar), nem mesmo entrar na pasta. A partir da pasta destino dos arquivos, você faz (em batch): copy pasta1\*.* . copy pasta2\*.* . O “asterisco ponto asterisco” expande para todos os arquivos do diretório. Já o "ponto" significa "diretório atual". Isso resolve seu problema? Abraço!
  6. Salve, pessoal! Pra quem viu a palestra na BHack hoje e quiser os slides, aqui está. Quem não viu e se interessar pelos slides também, aqui está também! kkkk Abraço! Dominando_ER_Linux_BHack.pdf
  7. Opa. Um intervalo são dois números, certo? Por que você tá lendo três números? Não ficou claro pra mim. Abraço, Fernando
  8. O endereço MAC da máquina não. No entanto, as seguintes informações podem estar disponíveis, dependendo do formato de exeuctável em uso e das opções configuradas no compilador e linker: Caminho completo de onde os arquivos de código-fonte estão armazenados, o que pode conter o nome de usuário da máquina. Versão do compilador e do linker utilizado, seja em texto puro, ou seja por padrões que permitam identificação, como os utilizados pelo DIE. Por exemplo, este arquivo contém a lógica que o DIE utiliza para identificar versões do Visual Studio. Data e hora que o arquivo executável foi gerado (somente em PE). Idioma de resources, o que pode sugerir o idioma do Windows de quem compilou o binário (somente em PE). Em tempo, sempre que postar código aqui, use o botão <> para formatar seu código como código. Olha a diferença: Sem formatação: #include <stdio.h> printf("Olá, mundo!\n"); Com formatação: #include <stdio.h> printf("Olá, mundo!\n"); Valeu!
  9. Olá! Bom, tem algumas coisas para serem esclarecidas aí 🙂 Em C, a função strlen() aceita um char* (não um char) como argumento. Este é um ponteiro para um tipo primitivo e é o jeito oficial de se implementar strings em C. Já em C++, a classe std::string é completamente diferente. Para determinar seu tamanho, ela possui uma função (método) length(). Aqui tem um exemplo de como utilizá-la. O trecho de código que você postou declara um array de objetos string com dez elementos (e não uma única string). Sendo assim, cada elemento do seu array pode ser uma string com tamanho diferente. PS.: C++ também trabalha com os tipos primitivos e com C strings. Abraço!
  10. até
    Primeira edição do Tempest Academy Conference! Bem vindo! 😎 Inscrições e mais informações aqui.
  11. até
    11a edição da BHack, em Belo Horizonte. Mais informações em https://www.bhack.com.br.
  12. até
    Treinamento presencial de dois dias em São Paulo/SP. Mais informações aqui.
  13. Situação: você quer estudar engenharia reversa em algum programa, analisar um arquivo suspeito ou dar uma olhada na memória daquele joguinho pra ver se econtra algo. O que você faz? Começa a buscar na internet programas que possam te ajudar. Faz download, descomprime, joga diretório pra lá, arquivo pra cá, configura e a esta altura já quase não tem mais paciência pra começar. Se identificou? 😄 E se alguém pegasse vários programas de análise, colocasse todos juntos num instalador só, de modo que você baixasse um único arquivo e instalasse tudo o que precisa? Não facilitaria? Além disso você poderia baixar uma vez só e instalar em máquinas virtuais sempre que precisar, né? Para estes casos temos o retoolkit, que hoje chega a sua quarta versão, a 2022.10. Além de te oferecer dezenas de ferramentas num único instalador, ele te permite escolher quais ferramentas você quer instalar, como mostra a figura: Nesta versão foram incluídas as ferramentas AutoIt-Ripper, Bazzar (do @anderson_leite), ExtremeDumper, HxD, HyperDbg, OpenHashTab e WinAPI Search. Difícil escolher qual a mais legal, mas o HyperDbg é um debugger novo para Windows, assistido pelo hypervisor (ring -1) para kernel (ring 0) e user land (ring 3). Coisa muito chique, gente! Outro destaque desta edição é o menu de documentação, com vários links úteis no estudo da arte: Os programas mais populares para engenharia reversa no Windows também estão lá, claro! Um bom exemplo é o x64dbg, que já é instalado e configurado com vários plugins: Aproveitando que o retoolkit é nosso, também não perdi a oportunidade de colocar nossas ferramentas lá! Desde a primeira versão ele conta com o manw do @Leandro Fróes e o pev, por exemplo. Listar todas as ferramentas aqui demoraria muito. Mais fácil você baixar, instalar e ver o bicho em ação né? Uma listagem completa das ferramentas disponíveis no kit pode ser acessada aqui. Happy hacking! 😎
  14. Estamos de volta, bem antes do esperado. Agora de servidor novo, com softwares atualizados! Tudo só é possível porque você nos apoia, patrocina ou faz nossos treinamentos. Muito obrigado! 💚
  15. Olá! Considere o seguinte: Inclua a <stdio.h>. Use uma função por linha. Fica melhor pra ler o código. Você não usa nenhuma função da <stdlib.h> nem da <string.h>. Pode remover esses includes. ? A variável flag é testada no while mas não é inicializada antes. Recomendo utilizar do/while, o que vai fazer com que sua condição fique no final. Alternativamente, você pode inicializar a variável flag com 1 na declaração. Você usou a variável aux para contar quantos produtos foram inseridos. O problema é que você a incrementa fora do for. Uma solução rápida é colocar i<4 na condição do for (já que tem um if com break no fim dele) e o incremento da aux logo após a leitura do produto, antes da chamada à printf(). Isso deve ser suficiente para corrigir o programa seguindo a sua lógica. Uma vez corrigido, se quiser saber mais, eu teria outras sugestões. Dá pra resolver a leitura com um loop só ao invés de dois e tem outras melhorias também. Abraço.
  16. Nosso site ficará offline da meia-noite da próxima terça-feira, dia 4 de Outubro, até às 18h do mesmo dia para uma manutenção programada (uma migração de servidor). ? Obrigado por estar conosco! ^^ Um abraço, Fernando
  17. Versão 0.2

    9 downloads

    Interface gráfica para o packer MPRESS.
  18. Fernando Mercês

    MPRESS

    Versão 2.19

    11 downloads

    Compressor (packer) de executáveis similar ao FSG e UPX. Por algum motivo o link para download desapareceu do site oficial, por isso vou deixá-lo aqui. Talvez você também queira baixar uma interface gráfica para o MPRESS.
  19. Versão 1.7f

    10 downloads

    ImpRec (Imports Reconstructor) foi o mais popular reconstrutor de IAT por mais de uma década e é utilizado com executáveis PE de 32-bits até hoje, apesar de o Scylla ser o padrão atual.
  20. Maria, por favor leia: Aí edita o seu tópico pra se adaptar à essas boas práticas pra gente poder te ajudar. ?
  21. Breno, leia aqui e edite seu tópico de acordo por favor: Do contrário, vai ficar muito complicado te ajudar.
  22. Não consigo imaginar uma forma sem assinatura digital. O Zendesk teria que assinar a mensagem a meu ver, mas não sei se ele faz isso. ?
×
×
  • Criar Novo...