Jump to content

ncaio

Apoiadores
  • Content Count

    46
  • Joined

  • Last visited

Posts posted by ncaio


  1. UART SERIAL EM EMBARCADOS

    UART é um CI utilizado para comunicação serial por uma porta serial. Esta comunicação geralmente é utilizada para debugar e realizar testes. Ter acesso a esta porta é bastante importante para que você seja capaz de acompanhar um processo de boot, ter acesso a um terminal,comunicação entre dispositivos sem “rede” e etc. Pode ser um CI separado ou já vir implementado em um CHIP. Quando conhecemos um CHIP, sua pinagem, é possível identificar os 4 pinos utilizados para esta comunicação serial: VCC, GND,TX e RX. Utilizando ganchos ou soldando fios, podemos criar conexões a serem utilizadas. No entanto, é comum encontrarmos CHIPS descaracterizados, dificultando este processo de localização.

    Padrão Quadrado - Circulo - Circulo - Circulo

    Primeiramente, desconheço que esta combinação impressa na placa de circuito seja, de fato, um padrão. Não existe algo oficializando. Mas sim, é possível identificar este pseudo padrão quadrado circulo circulo circulo. Vamos observar as imagens seguintes:

    TP Link TL-WRT740N ROUTER

    Untitled.png.51c8781b54180e2e36f14e5eec9c376e.png

    Dynavision Cybergame

    CI-03.thumb.png.e3989ddd74613867512819791d14c22a.png

     

    Criando acesso aos pinos

    Para facilitar o trabalho, é interessante criar conexões com as supostas portas. Isso irá te permitir uma forma mais fácil de identificar cada porta e conectar ferramentas de comunicação. 

    IMG_20191007_160932.thumb.jpg.72c55e60fbddc91aefd7caa6d29f5521.jpg

     

    Seu computador falando UART

    Você vai precisar de um conversor USB UART. Maiores informações no tópico [- UART - USB TTL SERIAL -], em :

     

    IMG_20191024_093024.jpg

    Um Pouco mais de interface UART

    Existem ótimas publicações detalhando o UART, este artigo escrito por Sjoerd Langkemper e disponível em: https://www.sjoerdlangkemper.nl/2019/03/20/usb-to-serial-uart/ é uma boa referência. Ele escreveu de uma forma bem didática e explicativa, os principais aspectos. É importante que você entenda o que é e como é. São 4 pinos/portas: VCC, TX, RX, GND.

    Onde:

    VCC: Voltagem que pode variar entre 3V e 5V. Geralmente não se utiliza este pino. Apenas GND, RX e TX, são necessários.
    TX: É do tipo transmissão de dados serial. A transmissão é dada da seguinte forma: 

    1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + STOP bit (1, 1.5, 2) 


    RX: É do tipo recepção de dados serial. A recepção é dada da seguinte forma:

    1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + 1 STOP bit 


    GND: Terra

    Baud Rate

    Baud rate determina a velocidade de uma comunicação serial. Mensurado em bytes por segundo (bps) e é necessário que as duas extremidades da comunicação estejam na mesma velocidade. Normalmente, nos deparamos com comunicações a 9600bps e dificilmente com algo maior que 115200. Quanto maior a velocidade de transmissão, maior será a exigência de uso de recurso do microcontrolador.  

    Conectando os Fios

    Como mencionado previamente neste documento, basicamente, precisamos apenas dos pinos RX,TX e GND. É necessário compreender que, o RX de uma extremidade conecta no TX da outra. Isso faz sentido, output conectado ao input.

    RX  ----  TX
    TX  ----  RX
    GND ----  GND

    Identificando 

    Para conectarmos corretamente os pinos do nosso device a nossa interface USB ligada ao computador. Evitando degradação de ambas as partes, é essencial que sejamos capazes de identificar cada pino. Vamos aqui detalhar algumas técnicas.

    Utilizando o multímetro

     Você vai precisar de um multímetro simples. Vamos observar características de cada porta, a começar com o terra.

    GND

    Iremos iniciar localizando o terra. Vamos precisar posicionar o nosso multímetro na posição teste de continuidade. E, para facilitar os testes, ter conexões fixadas nos pinos da interface UART a ser identificada.  Como podemos observar na imagem seguinte. No lado esquerdo, uma seta indicando a posição correta no multímetro e, lado direito, as conexões . 

    OBS: Não precisa energizar o equipamento para a identificação do terra.

    IMG_20191102_155144.thumb.jpg.7cb634b929f58e3ef4192af7567de3e2.jpg

    Segundo passo, é encontrar em nosso device um terra como referência. Geralmente, as carcaças são ligadas ao terra do circuito. O plug que recebe a alimentação externa, tem um ground. No nosso caso, iremos utilizar um ponto fácil de identificar. Podemos observar na imagem seguinte, que temos um array de leds. Neles é possível encontrar facilmente um terra que servirá como referência.

    Uma ponta do nosso multímetro vai terra de referência, do led, e a outra irá tocar um pino de cada vez. O pino com a menor resistência oferecida durante o teste de condutividade, nos leva a concluir que eles estão fisicamente conectados. em nosso caso. Encontramos o terra no terceiro pino, da direita para esquerda.

    IMG_20191102_155236.thumb.jpg.a7698d22ea6c43ca8974cd3ee80cf75f.jpg

    VCC

    Apesar de não ser um pino obrigatório a ser conectado para este tipo de comunicação, é importante encontrá-lo. Identificando o GND e o VCC, ficamos mais seguros na hora de determinar o RX e o TX. Temos 3 pinos a serem identificados: 

    * Um de alimentação, que vamos imaginar como uma porta que passa um fluxo continuo.

    * E duas portas que não.

    Em uma comunicação UART, com fluxo de entrada e saída, nós podemos deduzir, em um olhar bem generalista, que o TX terá mais atividade que o RX, em uma situação de BOOT e funcionamento posterior. Basicamente, a atividade RX deverá ser gerada por um TX externo. No nosso caso, não estamos enviando dado, até o momento.Como algumas aplicações/implementações UART variam entre 3V a 5V, o threshold máximo para determinar um 1 é qualquer coisa acima de 2V. Então, quando estamos procurando pelo VCC, estamos procurando por um pino que provavelmente terá a voltagem estável, no processo de boot e no decorrer do funcionamento.

    Conecte o terra no terra encontrado anteriormente. E realize uma varredura de portas a procura da porta estabilizada. É PRECISO ENERGIZAR O EQUIPAMENTO. No nosso exemplo, é o quarto pino da esquerda para direita na imagem que estamos utilizando como referência. Logo após o GND, são vizinhos.

    IMG_20191102_190748.thumb.jpg.60cb39bec149bea57f1ffab89644fa5b.jpg  

    RX e TX

    Garantindo que conhecemos o GND e o VCC, fica mais fácil continuar o nosso mapeamento. Novamente, uma ponta vai no terra e a outra vai sair mapeando os dois pinos restantes. Vai depender bastante de como a comunicação serial foi implementada, é recomendado acompanhar a atividade nessas portas após ligarmos o equipamento. Iremos perceber que a porta TX terá uma voltagem menor que o VCC, maior que 2V e quase sempre ativa. Ao contrário da RX, já que é uma porta de "INPUT".

    O nosso mapeamento fica:

    TX     ----    PIN1
    RX     ----    PIN2
    GND  ----    PIN3
    VCC   ----    PIN4

     

    Verificando o resultado

    Vamos verificar se os testes realizados para identificar as portas foram bem sucedidos. Podemos utilizar um analisador lógico para observar mais de perto. Utilizei um Saleae clone de 8 canais e o software Pulseview para fazer o decode.

    Onde:

    UART			Analisador Lógico
    GND				 GND
    TX					CH1
    RX					CH2

    2019-11-02_21-14-26_254.thumb.jpg.19bfd9bdc2f459cb05fed44e9aa8ef42.jpg

    Em seguida, temos a sequencia de telas do Pulseview.

    • Decoder para UART

    PulseView-01.thumb.png.3656b391bab032e2bd9996c690a73a5e.png

    • Configuração das portas

    PulseView-02.thumb.png.3dbc49c79e261cc2ee863ac1a6d46fc8.png

    • Leitura

    PulseView-03.thumb.png.c904194680aa34927fc2c32590fc42dc.png

    Existem outros parâmetros importantes, como velocidade do terminal e paridade, por exemplo. Neste momento, estamos nos limitando a identificação de portas, voltaremos a falar sobre estes parâmetros neste tópico. Na imagem seguinte, podemos observar um terminal utilizando o minicom referente a comunicação UART que acabamos de estabelecer.

     PulseView-04.thumb.png.d95c75b11905071108f2e06b0ff56bb0.png

     

    Utilizando um Arduino para mapear as portas.

    No passo anterior, nós utilizamos um multímetro para determinar GND, VCC, TX e RX. O conceito que utilizamos anteriormente é o "mesmo" que veremos agora. Iremos utilizar um Arduino UNO. Vamos abrir aqui um parentese, este mapeamento requer 4 portas analógicas, fecha parentese. Isso significa que você pode utilizar qualquer modelo de Arduino que satisfaça este pré requisito. 

    Conectando os fios

    No Arduino, conecte uma extremidade da conexão as portas A0,A1,A2 e A3. Já na outra extremidade, conecte nos 4 pinos a serem identificado. Assim como podemos observar nas imagens seguintes.

    IMG_20191103_182722.thumb.jpg.5f07b01b69bf7b28a924bec0de92dd49.jpgIMG_20191103_182958.thumb.jpg.1a75a43044cdabf579584ef5a761bdc2.jpg

     

    Parte lógica

    Com os cabos devidamente conectados nas extremidades. Passaremos para a preparação do Arduino. Primeiramente, certifique que o seu Arduino e a IDE estejam funcionando. Para este procedimento, vamos utilizar o código disponibilizado no repositório da https://securelayer7.net, na URL: https://github.com/securelayer7/PinNinja .  Você precisa apenas copiar a versão RAW e colar na sua IDE do Arduino.

    RAW: https://raw.githubusercontent.com/securelayer7/PinNinja/master/PinNinja/PinNinja.ino

    Realize o teste de compilação e envie o código para o seu Arduino. Abra a tela de visualização do terminal da IDE do Arduino , na velocidade 9600bs. E em seguida ligue o seu device. A saída esperada, é:

    arduino-01.thumb.png.358d2db89a7211a7724289f88dfb02f9.png

    Perfeito. Temos o mesmo resultado obtido no processo de identificação utilizando um multímetro. 

    OBS: Por segurança, para evitar queimar o seu Arduino, tente obter a voltagem com um multímetro. Por mais que a maioria dos routers wireless, por exemplo, tenham uma variação entre 3v para 5v no pino VCC, pode ocorrer casos inesperados. 


  2. [- Primeiros passos com exemplo -]

    Este tópico tem como finalidade esclarecer alguns pontos sobre hardware hacking. Se você é um hobbyist como eu, muitas das vezes, pelo o fato da informalidade, não temos a preocupação de explorar uma vulnerabilidade, quebrar alguma proteção, fazer auditoria ou engenharia reversa. Geralmente alteramos um hardware para uma necessidade particular ou apenas por curiosidade. Mas isso não significar fazer de qualquer forma, sem controle e sem motivação. Vale também salientar que é comum não ter progresso por falta da ferramenta certa ou de conhecimento.

    Neste tópico iremos discutir sobre passos a serem seguidos, tanto por iniciantes, como por intermediários. Assim como profissionais e amadores. Claro, contribua e compartilhe o seu conhecimento, por favor.

    1 - Escolher;
    2 - Motivação!?;       
    3 - Catalogar;
    4 - Identificar pontos;    
    5 - Qual caminho devo seguir ?.

    Escolher

    A escolha é motivada por vários fatores, assim como mencionado anteriormente. E claro, em alguns casos não temos escolhas, o hardware chega a sua mão via propósitos profissional, pessoal ou aquele pedido amigo/familiar. Se você é iniciante e pode escolher por onde começar, inicie com o básico. Dê preferência a dispositivos que estão em seu campo de conhecimento, um access point, um controle remoto do portão, controle da TV e etc. 

    Motivação!?

    Se você escolheu um hardware aleatório para estudar/observar/explorar, provavelmente você não tem um objetivo especifico. Neste caso, a sua motivação é explorar e progredir. Se na escolha do hardware você já identificou pontos de mudança, como por exemplo: Mudar a cor do led que representa o power do seu access point que é vermelho para a cor azul. Essa será a sua motivação, pelo menos inicialmente. 

    Catalogar

    É muito importante conhecer o seu alvo. Neste ponto é onde identificamos os componentes eletrônicos, conectores e etc. Muitas vezes precisamos abrir, desmontar equipamentos e fotografar. Com relação a placas e componentes eletrônicos, tirar fotografias te permitirá identificar modelos e esquemas com bastante facilidade. E claro, é uma fonte de consulta rápida. Inicialmente, comece a catalogar as informações mais acessíveis e disponibilizadas pelo fabricante, quando possível.

    Identificar pontos

    Depois de coletar informações importantes do seu hardware, comece a identificar pontos promissores. Tais como: 

    Qual é o chip principal
    Conexões seriais
    Jtag
    I/O
    Memória
    E etc

    Procure se aprofundar em cada item, datasheet é a palavra principal neste passo. 

    Qual caminho devo seguir ?

    É hora de expandir a árvore. Você tá na base da raiz, e é aqui que as portas abrem, ou não. Se você não tinha uma motivação e chegou até aqui, é bem provável que encontrou um motivo. A dica é universal, comece pelo lado mais fácil, que você encontrou mais informações, que você tem as ferramentas corretas para seguir em frente. Geralmente, voltamos a passos anteriores para conseguir avançar por aqui.

    UM EXEMPLO PRÁTICO

    1 - Escolher

    Vamos iniciar com algo bem aleatório. Simplesmente sai olhando o que tinha disponível e escolhi um console emulador que tenho guardado.

    2 - Motivação!?;

    Minha motivação é utilizar este dispositivo para exemplificar este tópico.

    3 - Catalogar

    Vamos dividir em sub tópicos.

    Informações básicos do equipamento

    Uma breve descrição: Dynavision CyberGame é um console que emula consoles, como: NES, SNES, MegaDrive e outras plataformas. É capaz de reproduzir vídeos e músicas. 
    Tipo do dispositivo: Emulador 
    Fabricante: Dynavision 
    Modelo: CyberGame 
    Versão: NA

    Destaques do Hardware

    CPU:
    PLACA MÃE:
    MEMÓRIA FLASH:
    SDRAM:
    NETWORK:
    ------------X-----------------X-------------X-------------X------------X--------------X-------------
    INTERFACE SERIAL:
    JTAG:
    FIRMWARE:
    BOOT:
    FOTOS:
    REFERÊNCIAS:

    Qual é a cara do device ?

    Fotografe o equipamento antes de desmontar. Alias, fotografar é um processo continuo. Para a sua organização, crie um diretório para guardá-las. Daqui para frente, irei adicionar imagens relevantes ao processo. O seu celular pode te auxiliar neste processo. 

    Visão externa

    Não apresenta acesso a parafusos de fixação. É necessário remover as abas laterais para ter acesso aos 2 parafusos de fixação.

    IMG_20191007_152137.thumb.jpg.088a27e78e8f748acad079598496e7eb.jpg

    IMG_20191007_152206.thumb.jpg.24d774c8a945d4f79d03e53569b3ce84.jpg

    Visão interna geral

    Existem três partes. A placa principal e 2 periféricas. Uma periférica com RCA e alimentação, outra com o botão RESET POWER e o sensor do controle remoto.

    IMG_20190929_111247.thumb.jpg.5109b0d71d13a8f7e62dd38009c3711e.jpg

    Visão da placa principal - Face Superior

    Já podemos identificar visualmente alguns componentes e conexões interessantes. Identificar  o  fabricante da placa é importante para pesquisar por modelo e ficha técnica, por exemplo. Não neste caso. Eu particularmente não obtive sucesso na minha busca. E para dificultar ainda mais, temos o CPU descaracterizado, sem identificação. 

    board-front.thumb.jpg.01ed73714b5a767c592bae9b09dd2986.jpg

    Visão da placa principal - Face Inferior

    Temos o modelo e fabricante da placa e um chip de memória da SAMSUNG.

    IMG_20191007_153112_(1).thumb.jpg.3d3ac2579aca4fa96a2b7eb7f8702d86.jpg

     

    Postos de Destaque

    Como mencionado anteriormente, algumas informações foram "ofuscadas" e outras não. Vamos pegar cada um destes postos e discutir sobre eles.

    CPU - CHIP PRINCIPAL!?

    Temos um suposto chip principal, sem informações relevantes impressas nele. Até o momento,  não sabemos que chip é este e sua função. Mas deduzimos, pela justa posição na placa e o enorme  número de conexões/trilhas conectadas ao chip, que temos aqui um forte indicio para deduzir isso.

    CPU.thumb.png.32a97ad33ee0bee9cee9b72581e6cfdd.png

    Um chip de memória

    Instalado na face inferior da placa.

    CI-02.thumb.png.d75cf931b1a87188d5c93cda4a952876.png

     

    Interface Serial !?

    Temos aqui um suposto UART serial. Para melhor entendimento, consulte o tópico: 

    CI-03.thumb.png.564e371e3e17e1829dac7ad638755aa0.png

     

    Identificar esta interface UART fez toda a diferença no processo de identificação e catalogação. Foi possível acompanhar o processo de boot e salvar em um arquivo para visualização posterior. Segue em anexo o log.

    cutecom.log

    Vamos observar e tomar nota em alguns trechos do log. Iniciando pelas primeiras linhas. Temos informações relevantes a criação da ROM e informações sobre a memória NAND que conseguimos visualizar diretamente no chip.

    ü+++MMP RomCode ver 8000.4.0 2009/02/18
    pwrc_cfg=a0000006
    vic1_rawSts=00000020
    keyscan4=00001980
    iotraps=00000000
    Read Id : ec-dc-c1-15-54-ec-dc-c1-15-54
    NAND_TYPE: SAMSUNG
    u16PageNoPerBlk               :64
    u16PyldLen                    :2048
    u16TotalBlkNo                 :4096
    ecc_mode                      :0
    Start to read DRAM_Init code from flash...
    Enter Load_PF
    u16PageNoPerBlk               :64
    u16PageSize                   :2112
    u16PyldLen                    :2048
    u16TotalBlkNo                 :4096
    ecc_mode                      :0

    Já entre as linhas  235-260, temos informações sobre o bootstrap: Red Hat Embedded Debug and Bootstrap (RedBoot),  podemos observar a possibilidade de interação com o RedBoot  == Executing boot script in 0.010 seconds - enter ^C to abort. E informações sobre a imagem de boot.

    RedBoot(tm) bootstrap and debug environment [ROM]
    ^MNon-certified release, version v2_0_28 - built 17:41:15, Apr 27 2010
    
    ^MPlatform: SUNPLUS_MMP (ARM 9) 
    ^MCopyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
    ^MCopyright (C) 2003, 2004, eCosCentric Limited
    
    ^MCopyright (C) 2008, Sunplusmm v1.0.0.3
    
    ^MRAM: 0x00000000-0x00f00000, [0x00200000-0x00f00000] available
    ^MLoad the kernel file: /Rom/image/8000_mmi.rap
    ^MLoad image from romfs!
    ^MFound the image entry point: 0x280040
    ^Mg_Cfg_s.redbootCfg:0xc0000004
    ^M== Executing boot script in 0.010 seconds - enter ^C to abort
    ^MRedBoot> go -c 0x280040
    ^Mg_Cfg_s.redbootCfg:0xc0000004
    ^M+do_go
    ^Mimage sel: 0, image_sel_set: 0
    ^Mrmvb enable!
    ^MMask interrupts on all channels
    ^MID-CACHE sync and invalidate
    ^Mset up a temporary context. workspace_end=0x00f00000, entry=0x00280040
    ^Mswitch context to trampoline. workspace_end=0x00efffb0

    Informações como : Load the kernel file: /Rom/image/8000_mmi.rap, Platform: SUNPLUS_MMP (ARM 9) e o datasheet, chegamos a conclusão que estamos que estamos diante de um chip/ic SPMP8000. 


  3. Entendo. Não tem hdmi, é uma caixa com conexão USB. No meu caso, este device ajuda bastante. Consigo fazer leituras Jtag, serial e mapeamento de portas, com muita facilidade. Até hoje, como hobista, nunca precisei de algo mais profissional. 

    • Curtir 1

  4. Neste rápido tutorial, apresento como adicionar um conector SMA fêmea/pigtail em um ESP8266 ESP-01. Isso vai proporcionar adicionar mais ganho ao seu projeto, possibilitando a adição de uma antena.

    O que você vai precisar:

    Um módulo ESP8266 ESP-01
    Um pigtail SMA fêmea
    Equipamento para soldagem

    A antena no módulo é de apenas um polo. Você tem a opção de fazer um corte, com o proposito de dividir este polo em dois. Eu optei por não dividir o polo, mesmo sabendo de todas as implicações. Ficando da seguinte forma:

    IMG_20191011_181633.thumb.jpg.bbbd0196bb3c56eab564934d301a12d2.jpg

    Teste número 1 - Sem antena

    Utilizando um terminal e conexão serial com o ESP8266 ESP-01, fiz a primeira leitura sem antena. Utilizei o SSID Network como referência.

    AT+CWLAP="Network"
    +CWLAP:(3,"Network",-53,"c0:25:e9:9b:6e:4a",6,-29,0)

    O nível de sinal são -53dBm. Vamos aos teste.

    Teste número 2 - Antena omni direcional de ganho 3 dBi

    IMG_20191011_213450.thumb.jpg.f7584f6b7cca9023167b4a30ed37b671.jpg

     

    O resultado foi como esperado, o ganho de +3 dBm com relação a medição anterior. Ou seja, -50 dBm

    AT+CWLAP="Network"
    +CWLAP:(3,"Network",-50,"c0:25:e9:9b:6e:4a",6,-29,0)

     

    Teste número 3 - Antena 3 dBi - Placa como terra

    Caso você opte por dividir e utilizar a sua placa como terra, interrompa, faça o corte na antena original, coloque os polos nas posições corretas, como observado na imagem seguinte:

    2019-10-12_12-38-27_021.thumb.jpg.9d973e9970666eefa92885673e3854e6.jpg

    2019-10-12_13-16-24_336.thumb.jpg.3a621a79a888b8dd944fb8bd7060a5e1.jpg

     Interessante neste teste, é que o valor com antena ficou sempre abaixo de -49 dBm. Nota mental, toda antena precisa de um terra.

    Teste número 4 - Antena de 9 dBi - Placa como terra

    Testes com valores satisfatórios / média de -46 dBm

    AT+CWLAP="Network"
    +CWLAP:(3,"Network",-46,"c0:25:e9:9b:6e:4a",6,-27,0)

    IMG_20191012_133620.thumb.jpg.aab4ef8b6facff9c01dff5493a68804b.jpg

    • Curtir 1

  5. -> Espaço dedicado a ferramentas e instrumentações utilizadas no processo de Hardware Hacking;
    -> Este não é um guia de como utilizar cada ferramenta;
    -> A organização de um laboratório inicial para Hardware Hacking pode ser um pouco caro. Este tópico procura focar em baratear este custo e evitar gastos desnecessários. 
    -> EM BREVE NOVAS FERRAMENTAS - FIQUE A VONTADE PARA COLABORAR/SOLICITAR NOVOS ITENS NESTA LISTA.
    • [- Multímetro -]
    • [- Ferro de solda, Sugador, Suportes e Estanho -]
    • [- Alicates e Chaves em Geral -]
    • [- Fios e conectores -]
    • [- UART - USB TTL SERIAL -]
    • [- Analisador Lógico -]
    • [- Programador FPGA e Serial Configuration Device -]
    • [- Programador de Memória -]

    [- MULTÍMETRO -]

    Com certeza você já ouviu falar sobre o multímetro. Ferramenta quase que obrigatória para testar componentes eletrônicos e circuitos. Voltagem, amperagem, resistência e condutividade, são grandezas elétricas que podemos medir com um Multímetro. Esta ferramenta pode ser do tipo Digital e Analógico. Se você precisa de medições exatas, a recomendação é o uso de um multímetro do tipo analógico. Por ser mais fácil de manusear, os multímetros digitais são mais recomendados para iniciantes.

    Qual multímetro comprar ?

    Primeiro é importante levar em consideração o seu perfil. Sabemos que o multímetro digital é recomendado para iniciantes. No entanto, iniciantes podem se depararem com cenários básicos, onde a medição mais detalhada seja necessária. Com o decorrer do tempo, pessoas adquirem multímetros digitais mais caros, que são bem próximos dos analógicos em seu detalhamento. Ou simplesmente, tem os dois tipos. Se você vai adquirir o seu primeiro multímetro, a recomendação é: Compre um Digital.

    A cara do multímetro

    Aquela caixinha, em sua grande maioria, de coloração amarela, com um par de fios. Um cabo vermelho e o outro preto. Com uma chave seletora no centro e um display no topo. Este é o perfil do tradicional modelo de multímetro que encontramos com facilidade em nosso mercado.

    Multímetro DigitalIMG_20191010_133328.thumb.jpg.943524d9cdfa132a7b5b983891de0cb0.jpg

     

    Existem outros modelos de multímetros, modelos estes que vão além da mensuração. Multímetros capazes de identificar automaticamente componentes eletrônicos e seus respectivos valores. Alguns modelos utilizam o chip Atmega328 e são facilmente encontrados no AliExpress, por exemplo. String para consultar sobre este modelo: mega328 m328 lcr-t4.

    Este dispositivo é bastante eficaz para identificar componentes diretamente na placa e componentes difíceis de identificar a olho nu. Estes componentes são descaracterizados pelos fabricantes para evitar engenharia reversa.

    IMG_20191010_161904.thumb.jpg.3e86703fdb632a013a6846e5df9bf4ee.jpg

     

    [- Ferro de solda, Sugador, Suportes e Estanho -]

    Ferro de solda

    Ferramenta utilizada no processo de unir/separar dois componentes metálicos. O ferro de solda aquece e fornece o calor necessário para derreter o material que irá unir dois metais. Este material é conhecido como solda. Geralmente, temos os termos: Ferro de solda - O equipamento, Solda - A substancia utilizada para unir dois metais e Soldagem - A técnica de unir/fixar. 

    Qual ferro de solda comprar ?

    Primeiramente, assim como outros equipamentos eletrônicos, a tensão. Seu ferro de solda vai ser para 127V ou 220V ? Próximo passo é determinar a voltagem, o quanto o seu ferro de solda vai esquentar. A recomendação para componentes eletrônicos padrões, comummente encontrados no mercado e que provavelmente são iguais ao que você trabalha ou pretende trabalhar, é entre 20W - 60W. No mercado brasileiro, a opção de 40W é a mais ofertada. 40W é um valor bastante interessante, se adapta a ambientes climatizados ou ventilados, perde menos calor. E não é tão quente ao ponto de interferir na soldagem de componentes alojados relativamente próximos uns aos outros.


    A cara do ferro de solda

    Bem parecido com uma caneta, com um fio longo. Existem modelos a gás, sem fio e de mesa. Complexas estações de soldagem, também. Alguns ferros de solda apresentam ajuste de voltagem.

    IMG_20191011_153512.thumb.jpg.84bbf28735f2bdd1c171d617ac75598c.jpgIMG_20191011_143300.thumb.jpg.dcfca88a66341f6c753e9a1085cf6e01.jpg

    Sugador

    Ferramenta utilizada no processo reverso de soldagem. Ele vai te auxiliar a remover a solda, proporcionando o desacoplamento de dois metais.

    Qual sugador comprar ?

    Este é um equipamento simples, mas existem alguns detalhes. Podemos encontrar sugadores com proteção estática, por exemplo. Entre as observações com relação a qual sugador comprar, o destaque é para a substituição do bico. Este componente é o que mais desgasta em sugador, por estar em contato com altas temperaturas. Dê preferencia a sugadores que permitem a troca do bico.

    A cara do sugador

    De formato cilíndrico, que pode ser engatilhado e disparado para sugar a solda aquecida pelo ferro de solda ou assoprador térmico. Possui um bico plástico.

    IMG_20191011_153539.thumb.jpg.a0788945a69388cac649192fd4d1ce44.jpg

    Suportes

    Este equipamento serve como base protetora para proteger você e o objetos do calor gerado pelo ferro de solda.

    Qual suporte comprar ?

    Geralmente, alguns ferros de solda acompanham uma base metálica simples. Que serve como quebra galho. No entanto, a proximidade que o ferro e a superfície base tem no caso dos suportes simples, não os tornam recomendados para a sua segurança. Opte pela base de mesa com suporte em espiral. Assim como você pode observar nas imagens seguintes.

    A cara do suporte

    Pode ser uma chapinha de metal, uma base com suporte protetor ou até mesmo uma base sofisticada com braços auxiliares modulares.

    IMG_20191011_150717.thumb.jpg.f10142b18daa02edc7db0377991011a8.jpgIMG_20191011_150818.thumb.jpg.69b796dc8da60c9f6274bd83504f8c9d.jpg

    Solda

    Substancia metálica utilizada para unir metais e protege-los. Geralmente apresentada no formato de fio/arame. Estanho e chumbo são as substâncias base, em variadas proporções. E encontramos este fio em vários diâmetros.

    Qual solda comprar

    Para a maior parte do seu trabalho, você provavelmente irá utilizar estanho de diâmetro 1.0mm.

    A cara da solda

    Geralmente vendida em tubinhos ou rolos. É possível comprar porções menores, no metro, por exemplo, em casas do ramo.

    IMG_20191011_170511.thumb.jpg.1e63e63c5349b83740849041e743a522.jpg

    [- Alicates e Chaves em Geral -]

    Alicates e chaves nunca são demais. São ferramentas fáceis de encontrar e baratas. De vários tamanhos e marcas. Estas ferramentas são itens indispensáveis em sua oficina.

    Quais chaves e alicates comprar ?

    Sem sombra de duvidas, aqueles kits de ferramentas X em 1 que facilmente encontramos em lojas do segmento e até em supermercados. Com o decorrer do seu progresso, algumas chaves específicas irão ser necessárias.

    A cara das ferramentas e alicates

    Diversos formatos, diversas formas e várias combinações.

    IMG_20191013_114403.thumb.jpg.853c9a13d32caa695fc2dbe43c052117.jpg


    [- Fios e conectores -]

    Utilizado para unir componentes eletrônicos e dispositivos variados. Cabos/fios são itens obrigatórios na caixa de ferramentas. É fácil de encontrar e geralmente são reaproveitáveis. Existem cabos com conectores, por exemplo. Estes são bastante úteis para interligar duas pontas com pinos conectores presentes.

    Quais fios e conectores comprar ?

    O mercado é repleto de opções. De inicio, você pode utilizar os fios presentes em cabos UTP, que você irá facilmente encontrar para descarte ou ali, jogado no canto de uma sala. Reutilizar fios é um bom habito. No entanto, muitas vezes precisamos do cabo certo para a conexão certa. Procure sempre pesquisar por alternativas. Procure ter várias opções disponíveis de fios e conectores. O Arduino trouxe ao mercado os jumpers, e é aconselhável tê-los a disposição.

    A cara dos fios e conectores

    Provavelmente, em sua pesquisa por fios e conectores, os jumpers irão brotar em sua tela. Vamos observar alguns modelos.

    IMG_20191013_124017.thumb.jpg.0e7f7bc32400f90cc7f930ba5fe2f50a.jpg


    [- UART - USB TTL SERIAL -]

    Interface USB conversora para RS232/RS422/RS485, que serve, por exemplo, para realizar update de dispositivos legado, transferência de dados e interfaceamento MCU/PLD/FPGA. Você irá utilizá-lo em conjunto com um terminal serial, minicom ou putty, por exemplo. Este conversor é conectado ao hardware nas portas “seriais”.

    Qual UART - USB TTL SERIAL comprar ?

    Existem vários modelos e fabricantes. No entanto, existem 2 chips principais que são utilizado. O FT232R e o PL2303. Você também pode utilizar um Arduino como interface conversora.

    A cara do UART - USB TTL SERIAL

    Como exemplo, duas interfaces com chip PL2303. Uma é uma placa com pinos ea outra, algo meio que integrado, o circuíto é menor e já tem as conexões na extremidade.

    IMG_20191013_140355.thumb.jpg.0995a662a1e2eb8d65bb304a22c8c08b.jpg


    [- Analisador Lógico -]

    Ferramenta utilizada para observar sinais digitais e geralmente com mais portas de que um osciloscópio. Bastante utilizado em comunicações seriais e para observar formas de ondas digitais.

    Qual analisador lógico comprar ?

    A marca mais utilizada pelos principais players, tipo: Tesla, SpaceX, Google e etc, é a Saleae. Inclusive, é a marca mais copiada pelo mercado paralelo. Você pode iniciar com um clone Saleae, por exemplo. Ele tem 8 canais - 24Mhz de amostragem.

    A cara do analisador lógico

    IMG_20191013_184146.thumb.jpg.ab72f64cb09208b459afe9b22f2a4703.jpg
     

     

    [- Programador FPGA e Serial Configuration Device -]

    O uso de circuitos integrados FPGA Field Programmable Gate Array é adotado em dispositivos de redes, por exemplo. São circuitos que podem ter vários desenhos, pode operar como uma placa de vídeo, um processador, ou ambos. Tem um custo mais elevado, por isso não é muito comum encontrá-lo em um access point domestico. Mas posso citar um que tem. O AP Dlink DWL 900AP tem um PLD Altera da família MAX3000A. Isso é um forte indicio de implementação IEEE Std. 1532.


    Qual Programador FPGA e Serial Configuration Device comprar ?

    Os baratos, que utilizam o chip STM32F101, também conhecidos como USB-BLASTER, são bem fáceis de encontrar. É comum relatos negativos sobre este chip, o STM32F101. Caso procure por algo mais estável, opte por um Terasic USB BLASTER ou um Altera oficial.

    A cara do Programador FPGA e Serial Configuration Device

    Modelo barato disponível no mercado.

    IMG_20191015_173257.thumb.jpg.7fe3b9a0792c9c0272980aec55315447.jpg


    [- Programador de Memória  -]

    Estas ferramentas são necessárias para fazer download e upload de firmwares de I2C EEPROMS e SPI FLASH (25 SPI BIOS e 24 I2C EEPROM). 

    Qual Programador de Memória comprar ?

    A opção barata e funcional é o programar CH341A.  É um chip que emula porta paralela padrão, porta paralela de memória, UART e synchronous serial (I2C, SPI).

    A cara do programador de Memória 

    O legal do CH341A é a possibilidade de ajustes e conexões disponíveis.

    2019-10-17_18-20-49_767.thumb.jpg.d328f10736e7a0a4f98ecdcbb016857f.jpg

     

    <EM BREVE NOVAS FERRAMENTAS - FIQUE A VONTADE PARA COLABORAR/SOLICITAR NOVOS ITENS NESTA LISTA>

     


  6. ====== Bem-vindo a bordo ======


    Este é um repositório/espaço aberto/livre de conteúdo referente a hardware hacking em geral. Sinta-se a vontade para contribuir e retirar suas dúvidas. Assim como em outros espaços de conhecimento compartilhado na Internet, este Fórum tem regras. Algumas delas, são:

      * Seja educado(a) e respeitoso(a);
      * Pesquise antes;
      * Seja claro(a) e descritivo(a);
      * Esteja preparado(a) para compartilhar informações relevantes a sua dúvida;
      * Não fuja do foco;
      * Referencie autores;
      * E etc.

    • Curtir 1

  7. Em 09/05/2019 em 01:24, jldias59 disse:

    Se não forem exe como trata-los com debug? Como posso ler a estrutura desses arquivos?

     

    file mx25l1606e.bin 
    mx25l1606e.bin: data

    São binários. 

    Pode utilizar o binwalk, por exemplo.

    binwalk ./Multilaser/eeprom/RE160V/mx25l1606e.bin 
    
    DECIMAL       HEXADECIMAL     DESCRIPTION
    --------------------------------------------------------------------------------
    42916         0xA7A4          LZMA compressed data, properties: 0x5D, dictionary size: 16777216 bytes, uncompressed size: 202164 bytes
    131072        0x20000         TRX firmware header, little endian, image size: 950272 bytes, CRC32: 0x1683C44C, flags: 0x0, version: 1, header size: 28 bytes, loader offset: 0x1C, linux kernel offset: 0x0, rootfs offset: 0x0
    131100        0x2001C         LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, uncompressed size: 2540940 bytes
    1972428       0x1E18CC        eCos RTOS string reference: "ecos_name=ecos"
    1972438       0x1E18D6        eCos RTOS string reference: "ecos"
    2070732       0x1F98CC        eCos RTOS string reference: "ecos_name=ecos"
    2070742       0x1F98D6        eCos RTOS string reference: "ecos"

     

    Em 09/05/2019 em 01:24, jldias59 disse:

    2- E também se depois de atualizar os firmwares ,é possível por engenharia reversa os mesmos  voltarem ao formato do firmware antigo(antes da atualização)  ?Ou seja existe a possibilidade de desatualizar para que ele seja como era antes da atualização.

    Este controle é realizado por release. É mais fácil ter cópias de cada versão. Remover features, fazer changelog reverso, não é uma boa ideia.

     

     

    • l33t 1

  8. Teve sim. Eu estava achando que as minhas pesquisas estavam precisando de uma abstração para ficarem mais claras. Foi quando cheguei para um amigo e perguntei a ele quais eram as linguagens atuais e que ele me falasse sobre elas e mostrei o que queria. Ele me indicou algumas, entre elas, go. Fiz o tour e me identifiquei. 


  9. 8 horas atrás, Leandro Fróes disse:

    Opa, vou reviver esse post aqui. De uns tempos pra cá as vezes ando brincando com Go e tenho que dizer,  a linguagem é muito interessante. Eu curti muito essa pegada única dela de interagir com API e ao mesmo tempo ser robusta e bem estruturada.

    Vocês fizeram algo com Golang? Acho que até agora só fiz scripts pra interagir com API e uns programas pra agilizar meu trabalho 😅.

    Abs.

    Rapaz, dei uma pausa. A minha função atual não requer programação e estou um pouco parado nas pesquisas. Mas sim, cheguei a fazer algumas coisas. A última foi uma tool para fazer uma verificação rápida de segurança em MTA/X. https://github.com/ncaio/mxmap


  10. Hallo. O protocolo SMTP tem comandos. E é utilizando comandos SMTP que você descobre isso. Quando você vai enviar um e-mail, você inicia este procedimento com o seu STMP server com um helo, por exemplo.

    Vamos utilizar aqui um SMTP server do google, por exemplo. Utilizando o comando telnet <ipdoservidorsmtp> <porta>

    telnet 74.125.24.26 25

    Trying 74.125.24.26...
    Connected to 74.125.24.26.
    Escape character is '^]'.
    220 mx.google.com ESMTP f31-v6si5644201plb.212 - gsmtp
    helo mentebinaria.com
    250 mx.google.com at your service

    MAIL FROM: <gnoo@dominio.com>
    250 2.1.0 OK f31-v6si5644201plb.212 - gsmtp
    RCPT TO: <maria@gmail.com>
    550-5.1.1 The email account that you tried to reach does not exist. Please try
    550-5.1.1 double-checking the recipient's email address for typos or
    550-5.1.1 unnecessary spaces. Learn more at
    550 5.1.1 https://support.google.com/mail/?p=NoSuchUser f31-v6si5644201plb.212 - gsmtp
    RCPT TO: <joaocarlos@gmail.com>                                           
    250 2.1.5 OK f31-v6si5644201plb.212 - gsmtp

    Normalmente, se utiliza o comando RCPT (recipiente) para verificar se a conta existe. Possibilitando enumeração. Veja que maria@gmail.com não existe e joaocarlos@gmail.com, sim.

    Essa é a razão. Você pode listar os usuários do domínio dessa forma. Alguns sistemas utilizam contas "locais" como base de usuários de e-mail e etc. Isso não significa que no servidor SMTP exista um usuário de sistema chamado joaocarlos, mas pode ser que sim. Por isso se testa enumeração utilizando uma base comum de usuários de sistema, like: www-data, root, postmaster e etc. 

    Eu tenho uma ferramenta que faz uma leve auditoria em servidores SMTP de forma simplificada. Se for do seu interessee, https://github.com/ncaio/mxmap

    _\,,/

    • Agradecer 2

  11. Eita, muita hora nessa calma. =]

    Se você não tem um adaptador wireless e vai adquirir um que entre em modo monitor, você deverá comprar o adaptador baseado em uma pesquisa que você irá fazer sobre compatibilidade. Provavelmente, este link estará no resultado de sua busca: https://www.aircrack-ng.org/doku.php?id=faq#what_is_the_best_wireless_card_to_buy

    É claro que você não vai arriscar comprar um adaptador e fazer o teste em casa via linha de comando. valeu   


  12. hello @Valeyard,

    Citar

    Eu estava pesquisando sobre o VIM, e vi que dá pra adicionar plugins nele, vocês acham necessário colocar? Se sim, quais?

    Quando você se tornar um usuário Vim, sim. Provavelmente você precise utilizar algo a mais. Minha IDE de programação é o Vim e 'plugins' para facilitar na hora de programar/desenvolver.  

    http://coderoncode.com/tools/2017/04/16/vim-the-perfect-ide.html

    Se você não usa o Vim como IDE, usa como um administrador de sistemas operacionais ou para editar/criar/manipular arquivos eventuais, por exemplo, talvez não precise de Plugins. Mesmo sem plugins, o editor é bastante poderoso. 

     


  13. #
    #
    #	Ncaio - caiogore $! gma1l (..) com
    #	FALANDO SOBRE OOM
    #       REVISÃO 01 31/10/2017 - TXT AND FILES-> http://8bit.academy/doc/OOM/
    #
    #
    
    John Von Neumann serrou o pulso e declarou: "Um computador é composto de três partes fundamentais: o processador, os dispositivos de entrada/saída 
    e a memoria.". Ele mudou de forma radical o conceito de computadores em meados de 1930. Estamos falando de calculadoras. Infelizmente, a ideia de 
    armazenar um programa em memória junto com a parte de dados, demorou a entrar em prática por falta de tecnologia para se construir dispositivos de 
    memória. Enquanto isso, os processadores não pararam de evoluir. Isso talvez explique o motivo dos processadores estarem, de longe, mais evoluídos 
    em comparação aos dispositivos de memória. Sistemas operacionais lidam elegantemente com essa diferença de velocidade entre dispositivos de memória 
    primária e processadores. E este delay tem nome, se chama wait states. Bem, mas este assunto rende muito pano para manga. Dentro deste contexto, o 
    assunto segurança não fica de fora. Este documento fala sobre um dos tópicos da filosofia de segurança Linux que é, inclusive, adotada pelo(a) 
    Android:
    
    Ensures that user A does not exhaust user B's memory. https://source.android.com/security/overview/kernel-security
    
    Em resumo, sistemas operacionais multiusuários como o Linux, por exemplo, o que fazer para evitar que um usuário não monopolize todo o 'espaço'
    disponível de memória, que não comprometa o sistema operacional e/ou os outros demais utilizadores ? Sabemos que erros ocorridos no processo de 
    desenvolvimento de uma aplicação podem resultar em um alto consumo de memória em sua execução, assim como intencionalmente ( ou não ), um usuário 
    pode desencadear este consumo. Quando um processo ameaça o funcionamento de um computador que utiliza Linux como sistema operacional por causa de 
    sua fome incontrolável de memória, um mecanismo chamado Out of Memory (OOM) Killer entra em ação. O OOM é um cão de guarda que observa a consumação 
    de memória de um processo e o ataca quando ele passa dos limites. Isso significa que o Linux sempre diz sim quando um programa pede mais memória 
    (malloc())! Com isso, ele consegue, ou tenta, executar mais programas. Estamos agora falando de over-commit de memória. Vamos aqui abrir um espaço para 
    falarmos sobre memória virtual. Memória virtual é uma abstração da memória física que possibilita mecanismos de segurança, extensão e compartilhamento, 
    por exemplo, de forma mais eficiente de quê o acesso direto. O over-commit no Linux vem ativo por padrão! Por isso, um pedido de espaço na memória 'nunca'
    é respondido como NULL. Isso é motivo de muita discussão na comunidade em geral e o que nos interessa no momento, é:
    
    * Por padrão, o valor da flag over-commit é zero no Kernel do Linux ( https://www.kernel.org/doc/Documentation/vm/overcommit-accounting );
    * Se um aplicativo pede memória, o Linux responde positivamente;
    * E quando este pedido de memória perde o controle, o OOM killer entra em ação e assassina o processo.
    
    Claro que é um resumo genérico e existem algumas entrelinhas. No entanto, este é o conhecimento base para continuarmos a falar sobre o mecanismo OOM.
    
    LAB
    
    Para acompanhar estes procedimentos de forma prática, é recomendado o uso de uma máquina virtual com o sistema operacional Linux instalado. 
    NÃO execute estes procedimentos fora da máquina virtual! 
    
    Certifique que a flag de over-commit é zero.
    
    
    cat /proc/sys/vm/overcommit_memory
    0
    O valor esperado é zero. Como alterar este valor  ?
    
    
    echo "0" > /proc/sys/vm/overcommit_memory
    Os vídeos aqui anexados, apresentam 4 telas de terminais que representam o mesmo host, onde:
    
    * Terminal superior esquerdo: É executada a criação de estrutura com o mkdir;
    * Terminal inferior esquerdo: Pontuação do OOM;
    * Terminal superior direito: A saída do comando free -m;
    * Terminal inferior direito: Tabela de processamento.
    
    Telas: http://8bit.academy/doc/OOM/img-6.png
    
    LAB 01 - NA VIDA REAL
    
    Vamos pegar um exemplo do dia a dia de um administrador para a construção de situações que envolvem memória. 
    
    Chico do Pentest recebeu a seguinte missão: Criar uma estrutura de diretórios com características:  
    
    Exemplo da estrutura de diretórios: http://8bit.academy/doc/OOM/lista-dir.txt
    
    São duas camadas de dez(10) diretórios (0 - 9) que, dentro deles, tem outra camada de dez diretórios. Chico tem um bom conhecimento em shell e 
    utiliza para este procedimento, expansão de variáveis. Como ele criou estes dois níveis ? 
    
    
    mkdir -p {0..9}/{0..9}/
    De forma simples, Chico resolveu o problema proposto no laboratório 1
    
    LAB 02 - FATIANDO O PROBLEMA
    
    Não demorou muito para a equipe de desenvolvimento descobrir que a estrutura de pastas solicitadas não atenderia aos requisitos do sistema. O chamado 
    retornou para a fila de atendimento de Chico, solicitando a adição de mais quatro níveis. Contabilizando agora, seis níveis. Chico aceita  o desafio e 
    logo pensa em aproveitar a linha de comando anterior, adicionando a quantidade de níveis solicitada. E assim fez.
    
    
    mkdir -p {0..9}/{0..9}/{0..9}/{0..9}/{0..9}/{0..9}/
    bash: /usr/bin/mkdir: Argument list too long
    Vídeo: http://8bit.academy/doc/OOM/6-levels.webm
    
    Temos aqui dois problemas:
    
    * Dez elevado a sexta potência, igual a 1 milhão de strings para serem carregadas na memória (10^6=1000000);
    * 1 milhão de strings é um valor muito alto de argumentos para um único comando mkdir.
    
    O Linux faz over-commit de memória, isso significa que o problema número um seria descartado do processo de resolução de problemas de Chico, se não 
    houvesse memória suficiente e que isso fosse degradar o funcionamento do sistema operacional, ele já sabia que o cão e guarda OOM Killer entraria em 
    ação. Esta é uma situação que muitos administradores já passaram ou passarão no decorrer de suas carreiras. E a recomendação para este caso é fatiar o 
    seu problema. Chico agora tem duas situações:
    
    Utilizar FOR e realizar a criação unitária em 10^6 ciclos. O  exemplo a seguir mostra como o problema 1 não impacta no sistema operacional utilizado. 
    Ele foi capaz de carregar 1 milhão de strings na memória  e passar uma por uma ao comando mkdir.
    
    
    for i in {0..9}/{0..9}/{0..9}/{0..9}/{0..9}/{0..9}/; do mkdir -p $i; done
    Utilizar o comando xargs. Este comando irá passar para o mkdir, por exemplo, apenas a quantidade de argumentos que ele suporta naquele momento. 
    Em comparação a utilização do FOR, é de longe a solução mais recomendada.
    
    Chico também aprendeu:
    
    * Limitação de recursos é uma prática importante;
    * Aprendeu sobre o comando ulimit;
    * Aprendeu sobre ARG_MAX ( https://www.in-ulm.de/~mascheck/various/argmax/ ).
    
    PAUSA PARA O OOM
    
    A ideia de cão de guardar foi entendida por Chico. No entanto, ele precisou descobrir mais sobre o comportamento do OOM. Principalmente sobre a 
    heurística que determina se um processo passou ou não dos limites. Em sua pesquisa, Chico chegou a seguinte conclusão sobre como a pontuação OOM é 
    calculada.
    
    * O primeiro modelo publicado em 2009 não se mostrou efetivo. Já que saia matando qualquer processo e quando necessário, continuava a matar processo 
    sem descrição de importância;
    * O modelo de 2010 é o que utilizamos hoje;
    * Existe uma proposta de melhoria para o modelo atual, publicado em 2013;
    * Cada processo tem sua pontuação;
    * A abstração fica em proc/<pid>/oom_score;
    * A pontuação é baseada na porcentagem de uso de memória RAM + SWAP ;
    * O valor 1000 significa 100% de uso da memória;
    * 0 significa 0% de uso da memória;
    * Para processo root, subtrair 3% da pontuação;
    * Existe como desativar um processo da ação matadora do OOM;
    * Existe como marcar um processo como alvo preferencial para o OOM;
    * Este arquivo é /proc/<pid>/oom_score_adj
    
    Links de referência:
    https://lwn.net/Articles/317814/
    https://lwn.net/Articles/391222/
    https://lwn.net/Articles/548180/
    
    LAB 03 - O CURIOSO
    
    Chico resolveu seu problema anterior utilizando o FOR e aprendeu que poderia resolver de outra forma, com o xargs, por exemplo. Descontente e curioso, 
    ele tem a ideia de mandar mais argumentos para o mkdir. Neste caso, ele enviou a criação de oito níveis.
    
    
    mkdir -p  {0..9}/{0..9}/{0..9}/{0..9}/{0..9}/{0..9}/{0..9}/
    Vídeo: http://8bit.academy/doc/OOM/08-levels.webm
    
    O vídeo de exemplo mostra que o gatilho Argument list too long não foi disparado. E com isso, o mkdir começou a pedir memória para armazenar as 
    10 ^ 8 = 100000000 strings. Que equivalem mais ou menos, contando com NULL e SLASHES -> 15 bytes, 15 * 100000000 = 1500000000 bytes ou 1.3 GigaByte. 
    No canto superior direito ( free -m ) é possível observar o decremento da memória RAM E SWAP, enquanto no canto inferior esquerdo, a pontuação OOM só 
    aumenta, até chegar ao ponto que o interpretador de comandos, no canto superior direito, ser assassinado pelo OOM.  
    
    OBS: Chico utilizou uma sequência de comandos para esvaziar o CACHE da memória virtual.
    
    
    echo "3" > /proc/sys/vm/drop_caches
    Chico não para de se perguntar: Por qual motivo 10^6 argumentos geram um Argument list too long e 10^8, não ?
    
    LAB 04 - O REVOLTADO
    
    Chico desabilita o over-commit e chega a conclusão que é perigoso. Ele tem o receio que o seus programas sejam mortos antes de concluírem seus ciclos de 
    execução. Sem over-commit, o processo é morto, por padrão, quando utiliza 50% da memória física.
    
    Vídeo: http://8bit.academy/doc/OOM/disable-overcommit.webm
    
    LAB 05 - O MORTO VIVO
    
    Para finalizar, Chico teve a brilhante ideia de executar o comando mkdir para a criação de uma estrutura de 8 níveis e desabilitar o OOM do processo 
    executor. 
    
    Vídeo: http://8bit.academy/doc/OOM/score-prio.webm
    
    E para sua surpresa, a pontuação não foi incrementada, o processo consumiu toda a memória RAM + SWAP e mesmo assim foi morto. Até então, tudo ocorreu 
    bem, a não ser pelo fato de do suposto PID assassinado continuar na tabela de processamento com o status Z (zombie process).
    
    Depois dos laboratórios, Chico do Pentest aprendeu que tudo precisa de limites e que sempre deve levar o assunto de segurança de recursos a sério.
    • Curtir 1

  14. Olha só, se preocupe em fazer o deauth. Pode ser com o airplay, jammer ou manual (desativa interface de rede do cliente e ativa novamente).  No entanto, o lab vai ocupar seu adaptador de redes com o hostap, ou seja, talvez você precise de outro adaptador para injetar o detauth ¬¬


  15. Olá @Ceoz, obrigado pelo interesse na postagem. Cara, isso aí pode ser duas coisas:

    1. Você vai precisar para o serviço de gerenciamento de rede da sua distribuição.
      1. debian /etc/init.d/network-manager stop
      2. slackware /etc/rc.d/rc.networkmanager stop
    2. Seu adaptador wireless não suporta o modo AP
      1. Para saber, você vai precisar executar comandos para descobrir ou pesquisar sobre a relação seu modelo e modo AP.

     

    • Agradecer 1
×
×
  • Create New...