Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
platform_external_gptfdisk_AOSP10_r33_CVE-2021-0308 — Suíte de particionamento de disco para discos GPT e MBR, oferecendo ferramentas interativas e scriptáveis para criar, modificar e reparar tabelas de partição, incluindo correção de estruturas MBR corrompidas. | Kitploit
Ferramentas/GitHubGitHub/trinadh465/platform_external_gptfdisk_aosp10_r33_cve-2021-0308
Utilitários de Propósito GeralAnálise de VulnerabilidadesExploraçãoAnálise ForenseRecuperação de DadosAnálise de Binários
GitHubtrinadh465/platform_external_gptfdisk_aosp10_r33_cve-2021-0308

platform_external_gptfdisk_AOSP10_r33_CVE-2021-0308

Suíte de particionamento de disco para discos GPT e MBR, oferecendo ferramentas interativas e scriptáveis para criar, modificar e reparar tabelas de partição, incluindo correção de estruturas MBR corrompidas.

Ver Repositório
16há 4 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

GPT fdisk (aka gdisk, cgdisk, and sgdisk) e FixParts por Roderick W. Smith, [email protected]

Introdução

Este pacote inclui o código-fonte de quatro programas relacionados ao particionamento de discos:

  • gdisk — Este programa é inspirado no Linux fdisk, mas opera em discos com Tabela de Partição GUID (GPT) em vez dos discos MBR (Master Boot Record) que o fdisk modifica. Como tal, o gdisk é uma ferramenta interativa em modo texto para manipular partições, mas não faz nada com o conteúdo dessas partições (geralmente sistemas de arquivos, mas às vezes espaço de swap ou outros dados).

  • cgdisk — Este programa é inspirado no Linux cfdisk, mas opera em discos GPT em vez dos discos MBR que o cfdisk modifica. Sendo assim, o cgdisk é uma ferramenta em modo texto baseada em curses para manipular partições, ou seja, usa uma interface que depende de teclas de seta e uma exibição dinâmica em vez de letras de comando e exibição rolante como o gdisk.

  • sgdisk — Este programa é conceitualmente semelhante ao Linux sfdisk e ao FreeBSD gpt, mas seus detalhes operacionais diferem. Permite a manipulação de discos GPT usando opções de linha de comando, sendo adequado para uso em scripts ou por especialistas para executar tarefas específicas que exigiriam vários comandos no gdisk.

  • fixparts — Este programa, diferentemente dos três anteriores, opera em discos MBR. Ele se destina a corrigir certos problemas que podem ser criados por vários utilitários. Especificamente, pode corrigir partições estendidas com tamanho incorreto e partições primárias localizadas no meio de partições estendidas. Também permite alterar o status de partição primária vs. lógica (dentro dos limites legais no esquema MBR) e fazer algumas outras alterações menores. Não suporta a criação de novas partições; para isso, use fdisk, parted ou outra ferramenta.

Mais detalhes sobre as capacidades dessas ferramentas são fornecidos a seguir.

Todos os quatro programas dependem do mesmo conjunto de código subjacente; diferem apenas em suas interfaces de controle (definidas em gdisk.cc, cgdisk.cc, sgdisk.cc e fixparts.cc, respectivamente) e em qual código de suporte utilizam.

Detalhes do GPT fdisk (gdisk, cgdisk e sgdisk)

O programa gdisk foi projetado como um programa semelhante ao fdisk (até certo ponto) para discos particionados com GPT, o cgdisk é similarmente um semelhante ao cfdisk, e o sgdisk fornece a maior parte da funcionalidade do gdisk em um programa mais amigável para scripts. Embora o libparted e os programas que o utilizam (GNU Parted, gparted, etc.) ofereçam a capacidade de lidar com discos GPT, eles têm certas limitações que o gdisk supera. Vantagens específicas do gdisk, cgdisk e sgdisk incluem:

  • A capacidade de converter discos particionados com MBR in-place para o formato GPT, sem perda de dados

  • A capacidade de converter disklabels BSD in-place para criar partições GPT, sem perda de dados

  • A capacidade de converter do formato GPT para MBR sem perda de dados (apenas gdisk e sgdisk)

  • Especificação mais flexível dos GUIDs de código de tipo de sistema de arquivos, que o GNU Parted tende a corromper

  • Identificação clara do número de setores não alocados em um disco

  • Uma interface de usuário familiar para usuários antigos do Linux fdisk e cfdisk (apenas gdisk e cgdisk)

  • O código do boot loader MBR é deixado intacto

  • A capacidade de criar um MBR híbrido, que permite que sistemas operacionais que não conhecem GPT acessem até três partições GPT no disco (apenas gdisk e sgdisk)

É claro que o GPT fdisk não está isento de limitações. Principalmente, falta-lhe o conhecimento de sistemas de arquivos e os recursos relacionados a sistemas de arquivos do GParted. Não é possível redimensionar o sistema de arquivos de uma partição ou criar uma partição com um sistema de arquivos já existente com o gdisk, por exemplo. Não existe uma versão GUI do gdisk.

O pacote GPT fdisk fornece três arquivos de programa: o gdisk interativo em modo texto, o cgdisk interativo baseado em curses e o sgdisk orientado por linha de comando. Os dois primeiros destinam-se ao uso em particionamento manual de discos ou alteração de detalhes de particionamento; o sgdisk destina-se ao uso em scripts para ajudar a automatizar tarefas como clonagem de disco ou preparação de vários discos para instalação do Linux.

Detalhes do FixParts

A criação deste programa foi motivada por pedidos de ajuda que vi em fóruns online de usuários que encontraram suas tabelas de partição corrompidas por várias ferramentas de particionamento defeituosas. Embora a maioria dos sistemas operacionais consiga lidar bem com os discos afetados, as ferramentas baseadas em libparted (GParted, parted, a maioria dos instaladores Linux, etc.) tendem a apresentar falhas ao serem apresentadas a esses discos. Normalmente, o sintoma é um disco que parece não conter partições; no entanto, às vezes a ferramenta libparted apresenta partições diferentes daquelas que o sistema operacional vê.

Observei quatro causas desses sintomas, três das quais o FixParts pode corrigir:

  • Dados GPT antigos — Se um disco é usado como disco GPT e depois reutilizado como disco MBR, os dados GPT podem ser apagados de forma incompleta. Isso acontece se o disco for particionado novamente com fdisk ou o instalador do Microsoft Windows, por exemplo. (Ferramentas baseadas em libparted removem corretamente os dados GPT antigos ao converter do formato GPT para MBR.) O FixParts verifica esse problema quando inicia e oferece a correção. Se você optar por apagar os dados GPT, essa remoção ocorre imediatamente, ao contrário de outras alterações que o programa faz.

  • Partições estendidas com tamanho incorreto — Algumas ferramentas criam uma partição estendida muito grande, geralmente terminando após o último setor do disco. O FixParts corrige automaticamente esse problema (se você usar a opção 'w' para salvar a tabela de partição).

  • Partições primárias dentro de uma partição estendida — Alguns utilitários criam ou movem partições primárias para dentro do intervalo coberto pela partição estendida. O FixParts geralmente pode corrigir esse problema transformando a partição primária em uma partição lógica ou alterando uma ou mais partições lógicas em primárias. Essas correções nem sempre são possíveis, pelo menos não sem excluir ou redimensionar outras partições.

  • Dados RAID residuais — Se um disco é usado em um array RAID e depois reutilizado como disco não RAID, alguns utilitários podem ficar confusos e não conseguir enxergar o disco. O FixParts não pode corrigir esse problema. Você deve destruir os dados RAID antigos ou, possivelmente, remover o pacote dmraid do sistema para corrigir esse problema.

Quando executado, o FixParts apresenta uma interface semelhante ao fdisk, permitindo ajustar tipos de partição (primária, lógica ou omitida), alterar códigos de tipo, alterar o sinalizador de boot e assim por diante. Embora você possa excluir uma partição (omitindo-a), não pode criar novas partições com o programa. Se você está acostumado a particionar discos, especialmente com o Linux fdisk, dois recursos incomuns do FixParts exigem elaboração:

  • Sem partições estendidas — Internamente, o FixParts lê a tabela de partição e descarta dados de qualquer partição estendida que encontrar. Ao salvar a tabela de partição, o programa gera uma nova partição estendida. Esse design significa que o programa corrige automaticamente muitos problemas relacionados à partição estendida. Também significa que você não verá evidências de partições estendidas na interface do usuário do FixParts, embora ele acompanhe os requisitos e o impeça de criar layouts ilegais, como uma primária entre duas lógicas.

  • Numeração de partições — Na maioria das ferramentas Linux, as partições 1-4 são primárias e as partições 5 em diante são lógicas. Embora uma tabela de partição legal carregada no FixParts inicialmente esteja em conformidade com essa convenção, alguns tipos de tabela danificada podem não estar, e várias alterações que você fizer também podem causar desvios. Quando o FixParts escreve a tabela de partição, sua numeração será alterada para se adequar às convenções MBR padrão, mas você deve usar a rotulagem explícita das partições como primária ou lógica, em vez dos números das partições, para determinar o status de uma partição.

Instalação

Para compilar o GPT fdisk, você deve ter as ferramentas de desenvolvimento apropriadas instaladas, principalmente o GNU Compiler Collection (GCC) e seu compilador g++ para C++. Também testei a compilação com Clang, que parece funcionar; no entanto, não fiz testes extensivos dos binários resultantes, além de verificar alguns fundamentos. No Windows, o Microsoft Visual C++ 2008 pode ser usado como alternativa. Além disso, observe estes requisitos:

  • No Linux, FreeBSD, OS X e Solaris, o libuuid deve estar instalado. Este é o padrão no Linux e OS X, embora você possa precisar instalar um pacote chamado uuid-dev ou algo semelhante para obter os cabeçalhos. No FreeBSD, o port e2fsprogs-libuuid deve estar instalado.

  • A biblioteca ICU (http://site.icu-project.org), que fornece suporte para nomes de partição Unicode, é opcional em todas as plataformas, exceto Windows, onde não é suportada. Usar essa biblioteca era necessário para obter suporte adequado a nomes de partição UTF-16 nas versões do GPT fdisk anteriores à 0.8.9, mas a partir dessa versão não deve mais ser necessária. No entanto, você pode usá-la se estiver tendo problemas com o novo suporte a UTF-16. Esta biblioteca normalmente é instalada no Linux e OS X, mas pode ser necessário instalar os cabeçalhos de desenvolvimento (libicu-dev ou similar no Linux; ou o pacote Fink libicu36-dev no OS X). Para compilar com suporte a ICU, você deve modificar o Makefile: procure por linhas comentadas que se referem a USE_UTF16, -licuuc, -licudata ou -licucore. Descomente-as e comente as equivalentes que não possuem essas linhas.

  • O programa cgdisk requer a biblioteca ncurses e seus arquivos de desenvolvimento (cabeçalhos). A maioria das distribuições Linux instala ncurses por padrão, mas pode ser necessário instalar um pacote chamado libncurses5-dev, ncurses-devel ou algo semelhante para obter os arquivos de cabeçalho. Esses arquivos já estavam instalados no meu sistema de desenvolvimento Mac OS X; no entanto, podem ter sido instalados como dependências de outros programas que instalei. Se você estiver tendo problemas para instalar ncurses, pode compilar gdisk e/ou sgdisk sem cgdisk especificando apenas os alvos que deseja compilar para o make.

  • O programa sgdisk requer a biblioteca popt e seus arquivos de desenvolvimento (cabeçalhos). A maioria das distribuições Linux instala popt por padrão, mas pode ser necessário instalar um pacote chamado popt-dev, popt-devel ou algo semelhante para obter os arquivos de cabeçalho. Usuários de Mac OS podem encontrar uma versão do popt para Mac OS no Darwin Ports (http://popt.darwinports.com) ou Fink (http://www.finkproject.org); no entanto, primeiro será necessário instalar o DarwinPorts ou o Fink (instruções existem nas páginas dos respectivos projetos). Alternativamente, você pode compilar apenas gdisk e/ou cgdisk, sem sgdisk; o gdisk não requer popt.

Quando todas as ferramentas de desenvolvimento e bibliotecas necessárias estiverem instaladas, você pode descompactar o pacote e digitar "make" no prompt de comando no diretório resultante. (Talvez seja necessário digitar "make -f Makefile.mac" no Mac OS X, "make -f Makefile.freebsd" no FreeBSD, "make -f Makefile.solaris" no Solaris ou "make -f Makefile.mingw" para compilar usando MinGW para Windows.) Você também pode precisar adicionar diretórios de cabeçalho (include) ou bibliotecas definindo a variável de ambiente CXXFLAGS ou editando o Makefile. O resultado devem ser arquivos de programa chamados gdisk, cgdisk, sgdisk e fixparts. Digitar "make gdisk", "make cgdisk", "make sgdisk" ou "make fixparts" compilará apenas os programas solicitados. Você pode usar esses programas no local ou copiar os arquivos para um diretório adequado, como /usr/local/sbin. Você pode copiar as páginas de manual (gdisk.8, cgdisk.8, sgdisk.8 e fixparts.8) para /usr/local/man/man8 para disponibilizá-las.

Advertências

ESTE SOFTWARE É BETA! SE ELE APAGAR SEU DISCO RÍGIDO OU COMER SEU GATO, NÃO ME CULPE! Até o momento, testei o software em várias unidades flash USB, discos rígidos físicos e discos virtuais nos ambientes QEMU e VirtualBox. Muitos outros também já usaram o software em seus computadores. Acredito que todos os bugs de corrupção de dados foram eliminados, mas sei muito bem que as chances de eu ter deixado algo passar são altas. Isso é particularmente verdadeiro para unidades grandes (acima de 2 TiB); meus únicos testes diretos com esses discos são com discos virtuais QEMU e VirtualBox. No entanto, recebi relatos de usuários sobre sucesso com arrays RAID com mais de 2 TiB.

Minha principal plataforma de desenvolvimento é um sistema rodando a versão 64 bits do Gentoo Linux. Também testei em várias outras distribuições Linux de 32 e 64 bits, Mac OS X 10.5 e 10.6 baseados em Intel, FreeBSD 7.1 de 64 bits e Windows 7.

Redistribuição

Este programa é licenciado sob os termos da GNU GPL (consulte o arquivo COPYING).

Agradecimentos

Este código é principalmente meu; no entanto, usei três funções de dois outros programas licenciados pela GPL:

  • O código usado para gerar CRCs foi retirado do programa efone por Krzysztof Dabrowski e ElysiuM deeZine. (Veja os arquivos de código-fonte crc32.h e crc32.cc.)

  • Uma função para encontrar o tamanho do disco foi retirada do Linux fdisk por A. V. Le Blanc. Esse código foi subsequentemente bastante modificado.

Colaboradores adicionais de código incluem:

  • Yves Blusseau ([email protected])

  • David Hubbard ([email protected])

  • Justin Maggard ([email protected])

  • Dwight Schauer ([email protected])

  • Florian Zumbiehl ([email protected])

  • Guillaume Delacour (contribuiu com o script gdisk_test.sh)

Baixar ferramenta