GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - excanear/devkit

BranchesTags
Open more actions menu

Latest commit

 

History

19 Commits
19 Commits

Folders and files

NameName
Last commit message
Last commit date
docs/superpowers/plans
docs/superpowers/plans
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
devkit.asm
devkit.asm
 
 

Repository files navigation

╔══════════════════════════════════════════════╗
║                  DEVKIT                       ║
║        Developer & Security Toolkit           ║
╚══════════════════════════════════════════════╝

UM ARQUIVO. UM BINÁRIO. DEZENAS DE COMANDOS ÚTEIS.

Um canivete suíço de terminal para desenvolvedores, DevOps e profissionais de segurança — escrito inteiramente em Assembly x86-64 puro, sem libc, sem linkagem dinâmica, sem dependências. Só syscalls Linux, direto ao ponto.

Linguagem Plataforma Dependências Licença


Sumário

  • O que é o DEVKIT
  • Filosofia do projeto
  • Instalação e build
  • Uso básico
  • Flags globais
  • Referência completa de comandos
    • SYSTEM
    • FILES
    • NETWORK
    • DEVELOPMENT
    • GIT
    • UTILS
    • DIAGNOSTICS
    • Comando all
  • Códigos de saída
  • Cores e detecção de terminal
  • Arquitetura interna
  • Limitações conhecidas (por design)
  • Segurança
  • Estrutura do projeto
  • Licença

O que é o DEVKIT

O DEVKIT concentra em um único binário estático um conjunto de comandos pequenos, rápidos e extremamente úteis para o dia a dia de quem trabalha com tecnologia: informações de sistema, inspeção de arquivos, diagnóstico de rede, detecção de ferramentas e projetos, utilidades de Git, calculadora, geração de UUID/números aleatórios e um painel de diagnóstico completo do ambiente.

Tudo isso sem um único #include, sem libc, sem processos filhos desnecessários. Cada comando lê diretamente de /proc, /sys, faz stat/ioctl/socket ou parseia arquivos como /proc/net/tcp e .git/HEAD manualmente — a mesma informação que ferramentas como uname, free, ip, stat e git mostram, só que obtida diretamente pela via mais curta possível: a syscall.

$ devkit info
SYSTEM
────────────────────────────────

OS          Linux
Kernel      6.18.33.2-microsoft-standard-WSL2
Arch        x86_64
Hostname    DESKTOP-U9GDQN4
User        henry
CPU Cores   4
RAM         7 GB
Uptime      0d 0h

Filosofia do projeto

Princípio O que significa na prática
Um arquivo Todo o código-fonte vive em devkit.asm. Nada de src/, lib/, múltiplos .asm.
Assembly real Sem C escondido, sem wrappers. nasm -f elf64 compila o arquivo direto para objeto ELF64, ld linka.
Zero dependências Nenhuma biblioteca externa, nenhuma libc. Cada comando fala diretamente com o kernel via syscall.
Somente leitura O DEVKIT nunca apaga, nunca modifica configuração, nunca mata processo, nunca altera o Git, nunca instala nada. É 100% diagnóstico e inventário local.
Honestidade com os dados Nenhum valor é inventado. Quando uma informação não tem uma fonte local confiável (como estado de firewall), o DEVKIT diz isso explicitamente em vez de forjar um resultado.
stdout = dado, stderr = erro Toda saída útil vai para stdout; todo erro vai para stderr com prefixo [ERROR] — essencial para scripts e automação.
Rápido de verdade Sem runtime, sem garbage collector, sem VM. O binário sobe e termina em microssegundos.

Instalação e build

Pré-requisitos

  • NASM ≥ 2.x (testado com 3.01)
  • GNU ld (binutils, testado com 2.46)
  • Linux x86-64 (desenvolvido e testado sob WSL2 Ubuntu, funciona em qualquer distro moderna)

Compilando

git clone https://github.com/excanear/devkit.git
cd devkit
make

O Makefile oferece os seguintes alvos:

Comando O que faz
make Build padrão — gera ./devkit
make debug Rebuild com símbolos de debug DWARF (-g -F dwarf), útil para gdb
make release Rebuild com otimização (-O2 no NASM)
make install Instala o binário em $(PREFIX)/bin (padrão /usr/local/bin)
make uninstall Remove o binário instalado
make clean Remove devkit.o e devkit

Build manual, sem make (equivalente ao que o Makefile faz por baixo):

nasm -f elf64 devkit.asm -o devkit.o
ld devkit.o -o devkit

Depois de make install, o comando fica disponível globalmente:

devkit info

Uso básico

devkit <comando> [argumentos] [--flags]

Sem nenhum argumento, o DEVKIT mostra o banner com a lista completa de comandos agrupados por categoria:

$ devkit
╔══════════════════════════════════════════════╗
║                  DEVKIT                       ║
║        Developer & Security Toolkit           ║
╚══════════════════════════════════════════════╝

Usage:

  devkit <command>

SYSTEM
  info          System overview
  cpu           CPU information
  ram           Memory information
  disk          Disk information
  uptime        System uptime

FILES
  size          File size
  type          Detect file type
  hex           Hex viewer
  strings       Extract strings
  lines         Count lines
  hash          File hash
  perms         File permissions

NETWORK
  ip            IP information
  interfaces    Network interfaces
  gateway       Default gateway
  ports         Listening ports

DEVELOPMENT
  tools         Detect developer tools
  project       Detect current project
  env           Environment information
  path          Show PATH

GIT
  git           Git repository overview
  branch        Current branch
  status        Repository status

UTILS
  calc          Calculator
  convert       Number conversion
  timestamp     Unix timestamp
  random        Generate random value
  uuid          Generate UUID

DIAGNOSTICS
  quick         Quick environment check
  doctor        Environment diagnostic

OPTIONS
  --help
  --version
  --json
  --minimal

Para ajuda detalhada de um comando específico, use devkit help <comando>:

$ devkit help strings
DEVKIT STRINGS

Usage:
  devkit strings <file> [--min N]

Description:
  Extracts and prints runs of printable ASCII characters from
  a file.

Options:
  --min N   Minimum run length to print (default 4)

Flags globais

Flag Efeito
--help / help (sem argumento) Mostra o banner completo com todos os comandos
help <comando> Mostra o uso detalhado de um comando específico
--version Mostra a versão do binário
--json Emite saída em JSON válido, sem formatação decorativa — disponível em info, tools, project e quick
--minimal Emite uma única linha condensada, ideal para prompts de shell e scripts — disponível em info

--json e --minimal nunca contêm códigos de cor ANSI, mesmo que o terminal suporte cores — são feitos para consumo por máquina, e nada de escape code deve vazar para dentro deles. Isso é validado explicitamente (ver Cores e detecção de terminal).

$ devkit info --json
{"os":"Linux","kernel":"6.18.33.2-microsoft-standard-WSL2","arch":"x86_64","hostname":"DESKTOP-U9GDQN4","user":"henry","cpu_cores":4,"memory_total":8311635968}

$ devkit info --minimal
Linux x86_64 | CPU:4 | RAM:7GB | User:henry

$ devkit tools --json
{"git":true,"gcc":true,"clang":false,"python":false,"python3":true,"node":false,"npm":true,"go":true,"rustc":false,"cargo":false,"java":false,"docker":false,"make":true,"cmake":false,"nasm":true,"gdb":false}

Referência completa de comandos

🖥 SYSTEM

Informações do sistema operacional, lidas diretamente de /proc, uname() e statfs().

Comando Descrição Fonte de dados
devkit info Visão geral: SO, kernel, arquitetura, hostname, usuário, núcleos de CPU, RAM, uptime /proc/cpuinfo, /proc/meminfo, /proc/uptime, uname(), /proc/sys/kernel/hostname
devkit cpu Número de núcleos de CPU /proc/cpuinfo
devkit ram Memória total instalada /proc/meminfo
devkit disk Espaço total e livre em disco (/) statfs()
devkit uptime Tempo desde o boot, em dias e horas /proc/uptime
$ devkit cpu
CPU Cores   4

$ devkit ram
RAM         7 GB

$ devkit disk
Disk        1006 GB total, 996 GB free

$ devkit uptime
Uptime      0d 0h

devkit info aceita --json e --minimal (ver Flags globais).

📁 FILES

Ferramentas de inspeção de arquivo — sem depender da extensão, sem confiar em metadados que podem mentir.

Comando Descrição
devkit size <arquivo> Tamanho em bytes, com conversão automática para KB/MB/GB
devkit type <arquivo> Detecta o tipo real do arquivo pelos magic bytes (assinatura binária), não pela extensão
devkit hex <arquivo> Hex dump: offset, 16 bytes em hexadecimal e gutter ASCII
devkit strings <arquivo> [--min N] Extrai sequências de caracteres ASCII imprimíveis (padrão: mínimo 4 caracteres)
devkit lines <arquivo> Conta linhas (ocorrências de \n)
devkit hash <arquivo> Calcula o hash SHA-256 do arquivo (implementação própria, sem OpenSSL)
devkit perms <arquivo> Mostra permissões rwx de owner/group/other e o valor octal
$ devkit size devkit
77656 bytes (75 KB)

$ devkit type devkit
ELF executable

$ devkit hex devkit | head -4
00000000  7F 45 4C 46 02 01 01 00  00 00 00 00 00 00 00 00   | .ELF............
00000010  02 00 3E 00 01 00 00 00  00 10 40 00 00 00 00 00   | ..>.......@.....
00000020  40 00 00 00 00 00 00 00  98 2D 01 00 00 00 00 00   | @........-......
00000030  00 00 00 00 40 00 38 00  03 00 40 00 07 00 06 00   | [email protected]...@.....

$ devkit hash devkit
SHA256:
effd5dfefc1475d16014095c5bdf8908d970aaf67b3ca021ecb204e6fd3a0f8b

$ devkit perms devkit
rwxrwxrwx
Octal   777

$ devkit lines devkit.asm
Lines: 2921

Tipos de arquivo reconhecidos por assinatura binária: ELF, PNG, JPEG, GIF (87a/89a), PDF, ZIP, GZIP, RAR, 7Z, SQLite, WAV, MP3, MP4. Qualquer outro conteúdo é reportado como Unknown / Data — o DEVKIT nunca chuta um tipo que não conseguiu confirmar pelos bytes reais.

🌐 NETWORK

Diagnóstico de rede local via socket()/ioctl() e parsing de /proc/net/*. Somente leitura, somente inventário — nada aqui faz scan, ataque ou qualquer operação ofensiva.

Comando Descrição
devkit ip Endereços IPv4 das interfaces (exclui loopback)
devkit interfaces Todas as interfaces com IP e estado (UP/DOWN)
devkit gateway Gateway padrão da rota atual
devkit ports Portas TCP locais em estado LISTEN
$ devkit interfaces
NETWORK INTERFACES

lo  127.0.0.1  UP
eth0  172.28.225.180  UP

$ devkit gateway
172.28.224.1

$ devkit ports
LISTENING PORTS

53
53

🛠 DEVELOPMENT

Detecção de ferramentas instaladas e reconhecimento do projeto no diretório atual — nunca assume nada, sempre verifica.

Comando Descrição
devkit tools Verifica se 16 ferramentas de desenvolvimento estão disponíveis no PATH
devkit project Detecta o tipo de projeto no diretório atual pelos arquivos característicos
devkit env [--names] Mostra USER, HOME, SHELL, TERM, PWD, PATH
devkit path Lista o conteúdo de PATH, um diretório por linha

Ferramentas verificadas por devkit tools: git, gcc, clang, python, python3, node, npm, go, rustc, cargo, java, docker, make, cmake, nasm, gdb.

$ devkit tools
DEVELOPMENT TOOLS

git           ✓
gcc           ✓
clang         ✗
python        ✗
python3       ✓
node          ✗
npm           ✓
go            ✓
rustc         ✗
cargo         ✗
java          ✗
docker        ✗
make          ✓
cmake         ✗
nasm          ✓
gdb           ✗

Arquivos reconhecidos por devkit project: package.json (Node/npm), Cargo.toml (Rust/cargo), go.mod (Go), pyproject.toml/requirements.txt (Python), Makefile/ CMakeLists.txt (C/C++), composer.json (PHP), pom.xml (Java/Maven).

$ devkit project
Project          C/C++ (Make)
Language         C/C++
Package Manager  make
Git Repository   YES
Files            10
Total Size       324222 bytes

devkit tools --json e devkit project --json também estão disponíveis para uso em scripts.

🔀 GIT

Leitura direta de .git/HEAD e do diretório de trabalho — nenhum comando git é executado como subprocesso, e o repositório nunca é modificado.

Comando Descrição
devkit git Visão geral: existe repositório? Qual branch?
devkit branch Apenas o nome da branch atual (ou hash em detached HEAD)
devkit status Branch, estado (limpo/sujo) e contagem de arquivos modificados/não rastreados/deletados
$ devkit branch
main

$ devkit status
Repository       YES
Branch           main
Status           DIRTY
Modified         0
Untracked        7
Deleted          0

Fora de um repositório Git, devkit branch e devkit status retornam erro com código de saída 5 (operação não suportada neste contexto); devkit git reporta Repository NO e encerra normalmente com código 0.

🧮 UTILS

Utilitários de uso geral — calculadora, conversão numérica, timestamp e geração de valores aleatórios via CSPRNG do kernel (getrandom()).

Comando Descrição
devkit calc "<expressão>" Avalia uma expressão aritmética: + - * / ( ) e menos unário
devkit convert <número> Mostra o número em decimal, hexadecimal, binário e octal
devkit timestamp Timestamp Unix atual (segundos desde a epoch)
devkit random Número aleatório de 64 bits, gerado pelo CSPRNG do kernel
devkit uuid UUID v4 válido (RFC 4122), com bits de versão/variante corretos
$ devkit calc "(2+3)*4"
20

$ devkit calc "10/0"
[ERROR] Division by zero        # código de saída 1

$ devkit convert 255
DEC  255
HEX  FF
BIN  11111111
OCT  377

$ devkit timestamp
1787941981

$ devkit random
14289423577810694248

$ devkit uuid
30025a30-ba28-4244-a7a2-71d793d8d425

A calculadora usa um parser recursivo-descendente completo (precedência de operadores, parênteses aninhados, menos unário) e trata divisão/módulo por zero como erro controlado — nunca deixa o processo travar.

🩺 DIAGNOSTICS

Painéis de diagnóstico que agregam informação de várias fontes ao mesmo tempo.

Comando Descrição
devkit quick Resumo condensado com ✓/✗ por seção (sistema, rede, ferramentas, projeto, segurança)
devkit doctor Diagnóstico completo linha a linha, terminando em contadores de erros/avisos/saudável
$ devkit quick
DEVKIT QUICK CHECK
──────────────────

SYSTEM
  ✓ Linux x86_64
  ✓ CPU Cores: 4
  ✓ RAM: 7 GB

NETWORK
  ✓ Interface: eth0 (172.28.225.180)
  ✓ Gateway: 172.28.224.1

DEVELOPMENT
  ✓ git
  ✓ gcc
  ✗ python
  ✗ node
  ✗ docker

PROJECT
  ✓ Git repository (branch: main)
Working tree: DIRTY

SECURITY
Listening ports: 2
Firewall status unknown (no reliable local signal)

STATUS: READY
$ devkit doctor
  ✓ Linux x86_64 detected
  ✓ CPU cores: 4
  ✓ RAM: 7 GB
  ✓ Active network interface: eth0 (172.28.225.180)
  ✓ Default gateway: 172.28.224.1
  ✓ git found in PATH
  ✓ gcc found in PATH
  ⚠ python not found in PATH
  ⚠ node not found in PATH
  ⚠ docker not found in PATH
  ✓ Git repository detected (branch: main)
  ⚠ Working tree has uncommitted changes
  ✓ Listening ports: 2
  - Firewall status unknown (no reliable local signal)

ERRORS:   0
WARNINGS: 4
HEALTHY:  9

devkit doctor só diagnostica — ele nunca corrige nada automaticamente. devkit quick também aceita --json para consumo por scripts de CI/automação.

Comando all

Roda, em sequência, todos os comandos que não exigem argumento (21 no total — todo o SYSTEM, NETWORK, DEVELOPMENT, GIT, UTILS e DIAGNOSTICS), com um cabeçalho antes de cada seção. Ideal para um snapshot completo do ambiente em um único comando:

$ devkit all
=== INFO ===

SYSTEM
────────────────────────────────

OS          Linux
Kernel      6.18.33.2-microsoft-standard-WSL2
Arch        x86_64
Hostname    DESKTOP-U9GDQN4
User        henry
CPU Cores   4
RAM         7 GB
Uptime      0d 0h

=== CPU ===

CPU Cores   4

=== RAM ===
  ...

Fora de um repositório Git, as seções BRANCH e STATUS mostram Not a git repository (skipped) em vez de interromper a execução — o all sempre roda até o final, mesmo quando uma seção individual não tem o que reportar.

Comandos que exigem um argumento explícito (size, type, hex, strings, hash, perms, calc, convert) não fazem parte do all, já que não existe um valor padrão sensato para rodá-los sozinhos.


Códigos de saída

O DEVKIT segue uma tabela de códigos de saída consistente em todos os comandos — essencial para automação e scripts:

Código Significado Exemplo
0 Sucesso Qualquer comando executado com êxito
1 Erro em tempo de execução na própria operação devkit calc "10/0" (divisão por zero)
2 Erro de uso — argumento ausente/inválido, comando desconhecido, erro de sintaxe devkit calc "1+", devkit frobnicate
3 Arquivo não encontrado ou ilegível devkit size /nao-existe
4 Permissão negada devkit hex arquivo-sem-permissao
5 Operação não suportada neste contexto devkit branch fora de um repositório Git

Toda mensagem de erro é escrita em stderr com o prefixo [ERROR]; a saída normal sempre vai para stdout. Isso permite compor o DEVKIT livremente em pipelines:

devkit info --json | jq .cpu_cores
devkit hash arquivo.bin 2>/dev/null | tail -1
devkit size arquivo || echo "arquivo não encontrado"

Cores e detecção de terminal

O DEVKIT detecta automaticamente se a saída está indo para um terminal real (via ioctl(TCGETS) no stdout) e só emite códigos de cor ANSI quando isso é verdade:

  • Em um terminal interativo: cabeçalhos aparecem em negrito/ciano, sucessos (✓) em verde, falhas (✗) em vermelho, avisos (⚠) em amarelo, e mensagens [ERROR] em vermelho.
  • Em um pipe ou redirecionamento (devkit doctor > log.txt, devkit quick | grep ✓): as cores são automaticamente desativadas, sem nenhum código de escape sujando a saída.
  • --json e --minimal nunca têm cor, sob nenhuma circunstância — mesmo que você force um terminal colorido, essas saídas são garantidamente texto puro, prontas para jq, python3 -m json.tool ou qualquer parser.

Arquitetura interna

O DEVKIT é organizado em um único arquivo (devkit.asm), mas internamente segue uma separação clara por seções comentadas — a mesma organização usada por qualquer projeto multi-arquivo, só que dentro de um arquivo só:

CLI            → parsing de argv, dispatch de comandos, --help/--version
COLORS         → detecção de TTY e helpers de impressão colorida
SYSTEM         → info, cpu, ram, disk, uptime
FILES          → size, type, hex, strings, lines, hash, perms
NETWORK        → ip, interfaces, gateway, ports
DEVELOPMENT    → tools, project, env, path
GIT            → git, branch, status
UTILITIES      → calc, convert, timestamp, random, uuid
DIAGNOSTICS    → quick, doctor, all
OUTPUT         → print_string, print_number, print_hex, print_label...
STRING UTILS   → strlen, strcmp, strncmp, memcpy, memcmp
FILE UTILS     → open_file, read_file, close_file, stat_file
EXIT           → exit_success, exit_error, die_usage, die_file, die_perm

Nenhuma dependência externa. Toda a interação com o sistema operacional acontece via instrução syscall direta — sem libc, sem crt0, sem link dinâmico. As mesmas informações que você veria com uname, free -h, ip addr, ss -tln, stat, sha256sum ou git status são obtidas lendo diretamente /proc, /sys, chamando stat()/socket()/ioctl() ou parseando o formato binário do .git — nunca invocando esses binários como subprocesso.

Disciplina de registradores documentada. Cada rotina do arquivo documenta explicitamente quais registradores ela modifica ("clobbers") logo acima da sua definição — uma convenção essencial em Assembly puro, onde não existe um compilador para avisar sobre um valor sendo sobrescrito sem querer. Por exemplo, todas as rotinas de impressão (print_string, print_error, print_number, print_hex, print_label) modificam rax, rdi, rsi, rdx, rcx, r8, r11; as rotinas de string (strlen, strcmp, strncmp, memcpy, memcmp) modificam apenas rax, rcx, r8, r9. Qualquer chamador que precise preservar um valor através dessas chamadas usa a pilha ou um registrador callee-saved (rbx, r12–r15).

Limitações conhecidas (por design)

  • devkit tools mostra presença, não versão. O comando verifica se cada ferramenta existe no PATH (✓/✗), mas não imprime números de versão — isso exigiria fork/exec de cada binário e parsing da sua saída, uma dependência frágil e não-determinística que foi deliberadamente evitada em uma ferramenta que só usa syscalls diretas.
  • Sem sinal real de firewall. devkit quick e devkit doctor mostram "Firewall status unknown (no reliable local signal)" em vez de um resultado de firewall, porque não existe uma fonte local, confiável e sem dependências para esse dado no Linux puro. Seguindo a regra de nunca inventar dados, o DEVKIT prefere dizer "não sei" a chutar uma resposta.
  • devkit status conta apenas arquivos não rastreados de forma completa. Contagem de arquivos modificados/deletados usa uma heurística simplificada (sem parsing binário completo do índice do Git) — suficiente para um panorama rápido, mas não substitui git status completo para decisões críticas.

Segurança

O DEVKIT foi desenhado para ser seguro por padrão:

  • ✅ Local — nunca faz chamadas de rede, nunca envia telemetria
  • ✅ Somente leitura — nunca apaga, modifica ou instala nada
  • ✅ Nunca altera configuração de firewall, Git, permissões ou processos
  • ✅ Funcionalidades de rede são estritamente diagnóstico/inventário — nenhum scan, nenhuma operação ofensiva

Estrutura do projeto

devkit/
├── devkit.asm    # todo o código-fonte — um único arquivo NASM
├── Makefile      # build, install, uninstall, clean
├── README.md     # este arquivo
└── LICENSE       # MIT

Licença

Distribuído sob a licença MIT. Veja LICENSE para o texto completo.


DEVKIT — Um Binário. Um Comando. Muito Menos Trabalho.

About

No description, website, or topics provided.

Resources

Readme
MIT license
Activity

Stars

1 star

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.