Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.510
  • Registro em

  • Última visita

  • Dias Ganhos

    165

Tudo que Fernando Mercês postou

  1. Opa, não vem nenhum campo com ID da transação nesse POST da Cielo? Não é uma boa ideia. Pode ser falsificado também. ? Abraço.
  2. Oi Nicholas. Acho que seu único equívoco é achar que precisa saber o tamanho do de stdin antes. ? A real é que como você não sabe quantos bytes receberá de entrada, vai precisar alocar memória dinamicamente. Uma abordagem possível é: Alocar um buffer qualquer. Realocá-lo em 256 bytes (aumentá-lo nessa quantidade). Ler 256 bytes para este buffer. Equanto o número de bytes lidos for positivo, ir para 2. No final você terá um buffer com todo o conteúdo de stdin. Não sei se esta é a melhor opção, no entanto. Abraço!
  3. Oi @Meloo1, tudo bem? Isso parece um trabalho de escola/faculdade. Eu chutaria que seu professor ou professora esteja querendo que você use a função strtok. ? Mas pra ter certeza, talvez seja interessante você olhar no material que te foi entregue? Apostila, aulas passadas, etc. Boa sorte!
  4. Opa, é jogo de Windows, @Eletro? PE?
  5. De nada. É, pra Delphi acho que é o melhor. Não precisa de outro programa. Dá pra encontrar uma code cave com o próprio x64dbg. No canal temos um vídeo sobre injeção de código, mas serve para injeção de dados também: Se não houver "holes" utilizáveis (o que é raro), dá pra criar uma seção também (assunto coberto no vídeo da parte 2). Mas não deixa de seguir o CERo até o final. Tu vai curtir! Abraço e boa sorte!
  6. Humm.. neste caso em específico eu acho mais fácil criar um registro para o SERVIDOR no DNS interno e simplesmente mapear producao$ para o novo lugar. Assim nem precisa alterar o programa. ? Se realmente for partir pra engenharia reversa, bem, já passei por um caso parecido. Eu diria que sua linha de pensamento de buscar a string no executável está certa. O que eu faria: Usaria o IDR para buscar o endereço do evento BtAdicionarClick. Usaria o x64dbg para colocar um breakpoint no endereço conseguido no passo acima. Seguiria a execução até encontrar onde a string é carregada. Certamente o CERO vai te ajudar. Se preferir ler, tem o livro gratuito Fundamentos de Engenharia Reversa também. Se tiver dúvidas durante o processo, pode postar aqui que a galera ajuda (screenshots, trechos de código, etc são bem vindos). ? Abraço e boa sorte!
  7. Código interessante! Acho que o @Felipe.Silva vai curtir também! Ele publicou um artigo recentemente sobre alocação de memória aqui no Mente Binária. :) Marta, ao que me parece, sua myFree() não está funcionando. Criei uma main() básica: int main(void) { int *p = myMalloc(sizeof(int)); scanf("%d", p); printf("Before freeing it: %d\n", *p); myFree(p); printf("After freeing it: %d\n", *p); return 0; } E o conteúdo de p é impresso na tela, mesmo depois da chamada à myFree(): % ./marta <<< 42 Before freeing it: 42 After freeing it: 42 Em que momento você recebe um runtime error? Abraço, Fernando
  8. Imagina. Foi uma sugestão mesmo, pra ficar melhor pra todos. Tá tudo certo. ;) Acho que neste caso precisaria ser alguém que conheça de Arduino. Eu não sei o que são essas DDRD, PORTC, etc. Você sabe? Talvez ajude relembrar os operadores em C. Por exemplo, o código abaixo: PORTD |= (1<<3); É o mesmo que: PORTD = PORTD | 8; Ou seja, é uma operação OU do valor desta variável/porta com "1 com 3 bits deslocados para a esquerda", que dá no mesmo que "multiplicar por 2 três vezes", que seria 1x2x2x2 que é igual a 8. O resultado é atualizado na própria variável/porta. Os links vão te ajudar a entender. Agora a razão pela qual o código faz isso, não sei te dizer. :( Vou ver se consigo ajuda de alguém que entenda de Arduino. Abraço, Fernando
  9. Opa! Seria legal você editar seu post pra formatar seu código como código (é o botão com os símbolos <> aqui no editor) e usar a opção de realce de sintaxe em C. Porque aí fica assim ó: unsigned int i,n,k,d,y; unsigned long previousTime = 0; byte hours = 12; // start time byte minutes = 15; byte seconds = 00; int val; void setup() { DDRD = 0xFE; DDRB = 0xFF; DDRC = 0xFE; PORTC = 0x01; PORTD = 0x03; PORTB = 0x00; if(hours == 12) hours = 0; } Muito melhor de ler. :) Sobre o programa em si, a sua dúvida é aonde exatamente? Qual parte do código que você não entendeu? Abraço, Fernando
  10. A Hex-Rays surpreendeu todo mundo agora. Liberou a versão mais recente do IDA, a 7.6, no modelo freeware. Só isso já seria muito bom, mas eles foram além: O IDA 7.6 freeware inclui um descompilador online (cloud-based) gratuito! Pois é, pessoas... Parece que a concorrência exercida pelo Ghidra realmente está sendo saudável para a comunidade. Ao disparar o plugin de descompilação (F5), o programa deixa claro que este recurso na versão gratuita suporta somente binários de 64-bits, dentre outros avisos: Ao continuar, a descompilação é concluída e códiogo em pseudo-C é exibido ao lado. Veja o exemplo descompilando o notead.exe nativo do Windows: Os recursos de interação como renomear variáveis e funções no descompilador estão habilitados, uma notícia muito boa para a comunidade! Além do descompilador, a versão 7.6 do IDA freeware inclui: Modo escuro Tá na moda né? E o IDA não ficou de fora. Se você for em Options -> Colors e mudar o Theme para dark, vai ter um visual assim: Organização de dados em pastas Sendo um disassembler interativo, a versão 7.6 oferece a opção de organizar os dados em pastas. Isso vale para vários locais. Um deles é a janela de funções. É possível agora criar pastas e organizar as funções dentro delas. Para isso, basta clicar com o botão direito do mouse na janela de funções e escolher Show folders. Depois é só selecionar as funções desejadas e escolher Create folder with items. E mais: Suporte a binários compilados em Go. Suporte ao novo Apple M1. Rebasing mais rápido. Sincronização entre o descompilador online e o disassembly. Lembando que o disassembler em si suporta binários de 32-bits também (PE, ELF e Mach-O). Só o descompilador que não.
  11. Interessante. Temos aqui também: https://mentebinaria.gitbook.io/engenharia-reversa/apendices/ferramentas#disassemblers Abraço!
  12. Avançou bem! :) Algumas observações aí: Você não precisa desse "funcionário fantasma" (kkkkk) só pra manter a soma. Basta uma variável do tipo int (que precisa ser declarada na main) e no final do segundo loop você pode fazer algo como soma = soma + func[i].salario; No seu printf no final você tá assumindo que o primeiro elemento do array (vetor) func tá na posição 1, mas na verdade arrays em C começam em zero, logo, o primeiro elemento é func[0] e o segundo é func[1]. Ainda no printf, parece que tem mais "percents" do que variáveis para substituí-los. Confere aí. O número de "percents" tem que ser igual ao número de argumentos depois dessa string que tem os "percents". Uma dica pra ajudar a não se perder é pular linha no printf pra deixar mais legível. C permite isso. Só prestar atenção nas vírgulas e não esquecer de fechar parênteses no fim. Tipo: printf("%s : R$ %d\n%s : R$ %d\n", func[0].nome, func[0].salario, func[1].nome, func[1].salario); Boa sorte!
  13. Olá! Que bom que você está tentando. Vira e mexe aparecem pessoas aqui que só querem as repostas. O problema disso é que não aprendem. :( Indo ao assunto, bom, você vai precisar adicionar uma função. No momento o seu programa só tem uma função, a main. Para completar esse exercício você vai precisar de mais uma, que o exercício já te dá o nome, salarioCargo. Ela retorna o total pago, então você já sabe que o retorno da função é do tipo int (já que tá usando este tipo para o salário no programa todo). A função recebe 2 parâmetros: um vetor para a estrutura de funcionários e uma string. A declaração então ficaria mais ou menos assim: int salarioCargo(Funcionario *funcionarios, char *cargo) { // seu código daqui } No código, você vai precisar iterar (usando um loop, tipo for ou while) pelo vetor de funcionários e comparar seus cargos com o cargo passado para a função. A partir daí somar os valores de seus salários. Pontos importantes: Na main, o jeito como você tá preenchendo as informações dos 5 funcionários é pouco otimizado. Seria melhor declarar um vetor de funcionários e fazer um loop para preencher as informações deles (for i=0; i<5; i++). Assim você já vai ter o vetor pra passar pra função salarioCargo também. O exercício é seu, por isso por favor, nunca peça para alguém fazê-lo (não to dizendo que você fez isso - pelo contrário, você não fez, mas só deixando claro que ninguém vai fazer pra você, afinal você é a futura programadora que está se formando e o mercado vai contar com você ☺️). Pode contar com a gente para todas as suas dúvidas. Pode ser que você precise revisitar suas notas, reler livros etc para entender sobre funções, arrays (vetores), ponteiros e loops para completar este exercício. Abraço, Fernando
  14. Opa! O exercício é esse mesmo! A coluna que você destacou exibe a posição dos bytes em grupos de 16 bytes. Analisemos a posição 0x210 por exemplo. Nela, há o byte 0x58. Já na posição 0x211, temos o byte 0x03, entende? Vai contando pra direita de um em um. ? Quando chegar no fim da linha, no caso da linha da posição 0x210, será o byte na posição 0x21F, que é 0x00. O próximo já é a posição 0x220, que é o byte 0x44. E assim segue... E aí. Qual é o byte na posição 0x2f4? ? Abraço!
  15. 234 downloads

    Esta obra apresenta de maneira introdutória, prática e dirigida o uso do programa gnuplot. São explorados diversos recursos a partir da apresentação de gráficos gerados com base em funções matemáticas e de recursos diretamente do programa e de arquivos de dados. Este livro é material ideal para reforçar o estudo de funções a estudantes de segundo grau e para programadores de computador que necessitam implementar o uso de gráficos em seus sistemas. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/gnuplot-5-introducao-e-aplicacao Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/
  16. 281 downloads

    LISP designa uma grande família de linguagens de programação para computadores, como: Run, Cloujure, Racket, Scheme, AutoLISP, Emacs LISP, Common LISP, entre outras. Nesta obra faz-se introdução ao dialeto Common LISP (LISP comum) referenciado neste texto como CL. Não é foco explorar a linguagem em sua totalidade, a intenção é fornecer um caminho de aprendizagem e orientação básica ao público brasileiro carente de obras neste contexto. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/linguagem-lisp Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/
  17. 394 downloads

    Este livro apresenta em linguagem direta e simples as instruções para uso do interpretador de português estruturado ILA+, favorável ao ensino de lógica de programação de computadores para as aulas de: Lógica de Programação e Algoritmos ao fazer uso de uma versão de linguagem de programação codificada em português estruturado. Neste trabalho são abordados os recursos para definição e uso de: variáveis, constantes, operadores aritméticos, expressões aritméticas, operação de entrada, operação de processamento, operação de saída, uso de condições, tomada de decisão, operadores relacionais, operadores lógicos, laços, variáveis indexadas (matrizes), sub-rotinas e passagens de parâmetro. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/ila Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/.
  18. Versão 10

    158 downloads

    Máquina virtual do Windows 10 para desenvolvedores, disponibilizada pela própria Microsoft com licença válida por 3 meses. Tem 20 GB o download mas ela já vem com o seguinte: Windows 10 Windows 10 SDK Visual Studio 2019 com UWP, .NET desktop e Azure workflows habilitados, além da extensão do Windows Template Studio Visual Studio Code Windows Subsystem for Linux com Ubuntu instalado Modo desenvolvedor habilitado Pode ser uma mão na roda pra criar uma VM de análise de malware.
  19. Oi Jose! Muito obrigado pelas palavras. Sobre novos cursos, sim, estamos conversando sobre: pentest, programação básica (Lua ou Go), Assembly... mas ainda não chegamos a um consenso. Abraço!
  20. Fernando Mercês

    Autoclicker

    Versão 1.0.0

    133 downloads

    Autoclicker experimental feito por mim. Vídeo: Código-fonte: https://github.com/mentebinaria/autoclicker
  21. Passei um tempo usando o Windows 10 depois de anos em Linux e macOS. Logo percebi dificuldades específicas com shell, instalação de programas, etc. Mas também percebi que é possível deixar o Windows muito próximo, no quesito de usabilidade, de um Linux com shell completo ou macOS. Neste artigo vou mostrar as ferramentas e configurações que mais me ajudaram. Boa leitura! ? Gerenciador de pacotes Vou começar falando dele por um motivo muito simples: outros programas podem ser instalados com ele. Pois é, parece que a Microsoft aprendeu com as distros Linux e projetos como o Chocolatey, já que finalmente anunciou seu gerenciador de pacotes, o winget. Para instalar, baixe o arquivo com extensão .appxbundle na área de releases do repositório do projeto no Github. Após isso você pode abrir qualquer terminal (Command Prompt / cmd.exe ou Powershell) e digitar winget pra ver seu novo gerenciador de pacotes: Vamos buscar por exemplo os programas que que tenham a palavra "security" em seu nome ou descrição, para testar: Qualquer um desses programas pode ser instalado com um simples "winget install". Faça o teste com o Notepad++ por exemplo: winget install notepad++ Os comandos list (listar os programas instalados) e upgrade (atualizar os programas instalados) ainda são experimentais, mas você pode habilitá-los da seguinte maneira: Digite winget settings no terminal. Um arquivo settings.json se abrirá. Nele, adicione: "experimentalFeatures": { "list" : true, "upgrade" : true }, O meu aqui tá assim: A lista de programas disponíveis está aumentando cada vez mais, já que o winget é de código aberto. ? Terminal decente Mas na real, a primeira coisa de que senti falta foi um terminal decente. Graças a Deus encontrei o Windows Terminal. Para instalar com o winget (não se assuste - dá pra usar a tecla Tab para autocompletar): winget install Microsoft.WindowsTerminalPreview Aí olha só quem chega na festa: Este terminal concentra tudo em um: Prompt de Comando, Powershell e Linux (rodando via WSL), e é multi-abas. Claro que tá longe de um Terminator ou iTerm2, mas também tá longe de um cmd.exe né? Deus me livre e guarde! kkkk O novo Windows Terminal também tem uma configuração baseada em JSON e uns recursos interessantes como a divisão automática da janela do terminal. Ao apertar Alt+Shitft+D, olha o que acontece: terminal_split.mp4 A divisão da janela (split) funciona para janelas com qualquer shell. Hashes Eu sempre curti um software pra Windows chamado TotalHash, que adiciona os hashes de arquivos em suas propriedades, mas este infelizmente tem dois problemas: não é livre nem suporta plugins (logo, não consigo extender para suportar os hashes que preciso), é pago e não é scriptável. Resolvi isso com o cmdlet Get-FieHash do Powershell. Por padrão ele exibe o SHA-256 de um arquivo, mas há várias opções, como se pode observar na imagem: Sniffer Por essa nem o futuro esperava! O Windows 10 agora tem um sniffer nativo: o pktmon. Se liga: E sim, ele suporta filtros. Por exemplo, para logar somente pacotes IPv4 na porta 80/tcp: pktmon filter add HttpPuro -d ipv4 -t tcp -p 80 Você pode adicionar mais de um filtro se quiser e com qualquer nome (aqui chamei o meu de HttpPuro). Depois, é só iniciar a captura pedindo para logar os eventos: pktmon start --etw Para parar a captura, o comando é o stop: pktmon stop Por padrão o pktmon cria um arquivo chamado PktMon.etl num formato próprio. Este pode ser convertido para texto: pktmon format PktMon.etl -o log.txt Ou para o formato PCAP-NG, suportado pelo Wireshark e outros analisadores de pacotes: pktmon pcapng PktMon.etl -o capture.pcap Há várias outras opções que valem serem exploradas. É de fato um sniffer completo. Em breve vou falar mais sobre as seguintes ferramentas: PowerToys Sysinternals O novo diskusage.exe. WSL 2.0. Por hora é isso. Conforme eu encontre coisas novas, vou adicionando aqui. Se souber de alguma novidade ou algo que ache que precise ser citado aqui, por favor comente aí embaixo! Espero que seja útil para quem precisa usar o Windows por algum tempo, por qualquer motivo. ?
×
×
  • Criar Novo...