Ferramenta, linguagem e decodificadores para trabalhar com dados binários.
TLDR: pretende ser jq, hexdump, dd e gdb para arquivos combinados em um.
O uso básico é fq . file
, fq d file
ou fq 'some query' file ...
.
Para obter detalhes, consulte uso.md.
fq é inspirado na ferramenta e linguagem jq e permite trabalhar com formatos binários da mesma maneira. Além de usar expressões jq, ele também pode apresentar estruturas de árvore decodificadas, transformar, fatiar e concatenar dados binários. Ele também suporta formatos aninhados e apresenta um REPL interativo com preenchimento automático de funções e nomes.
Ele foi originalmente projetado para consultar, inspecionar e depurar codecs de mídia e contêineres como MP4, FLAC e JPEG, mas desde então foi estendido para suportar uma variedade de formatos como executáveis, capturas de pacotes (com remontagem TCP) e formatos de serialização como JSON, YAML, XML , CBOR, protobuf. Além disso, também possui funções para trabalhar com URLs, converter de/para hexadecimal, bases numéricas, pesquisar padrões etc.
aac_frame, adts, adts_frame, aiff, amf0, apev2, apple_bookmark, ar, asn1_ber, av1_ccr, av1_frame, av1_obu, avc_annexb, avc_au, avc_dcr, avc_nalu, avc_pps, avc_sei, avc_sps, avi, avro_ocf, bencode, bitcoin_blkdat, bitcoin_block, bitcoin_script, bitcoin_transaction, bits, bplist, bsd_loopback_frame, bson, bytes, bzip2, caff, cbor, csv, dns, dns_tcp, elf, ether8023_frame, exif, fairplay_spc, fit, flac, flac_frame, flac_metadatablock, flac_metadatablocks, flac_picture, flac_streaminfo, gif, gzip, hevc_annexb, hevc_au, hevc_dcr, hevc_nalu, hevc_pps, hevc_sps, hevc_vps, html, icc_profile, icmp, icmpv6, id3v1, id3v11, id3v2, ipv4_packet, ipv6_packet, jp2c, jpeg, json, jsonl, leveldb_descriptor, leveldb_log, leveldb_table, luajit, macho, macho_fat, markdown, matroska, midi, moc3, mp3, mp3_frame, mp3_frame_vbri, mp3_frame_xing, mp4, mpeg_asc, mpeg_es, mpeg_pes, mpeg_pes_packet, mpeg_spu, mpeg_ts, msgpack, negentropy, nes, ogg, ogg_page, opentimestamps, opus_packet, pcap, pcapng, pg_btree, pg_control, pg_heap, png, prores_frame, protobuf, protobuf_widevine, pssh_playready, rtmp, sll2_packet, sll_packet, tap, tar, tcp_segment, tiff, tls, toml, tzif, tzx, udp_datagram, vorbis_comment, vorbis_packet, vp8_frame, vp9_cfm, vp9_frame, vpx_ccr, wasm, wav, webp, xml, yaml, zip
Ele também pode funcionar com alguns formatos de texto comuns, como URLs, hexadecimal, base64, PEM, etc., e para alguns formatos de serialização, como XML, YAML, etc., pode transformar valores de e para jq.
Para obter detalhes, consulte formatos.md e uso.md.
Use um dos métodos listados abaixo ou baixe uma versão pré-construída para macOS, Linux ou Windows. Desarquive-o e mova o executável para PATH
etc.
No macOS, se você não instalar usando um dos métodos abaixo, talvez seja necessário permitir manualmente a execução do binário. Isso pode ser feito tentando executar o binário, ignorar o aviso e então entrar na preferência de segurança e permitir. O mesmo pode ser feito com este comando:
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
No macOS, fq
também pode ser instalado via MacPorts. Mais detalhes aqui.
sudo port install fq
fq
pode ser instalado via scoop.
scoop install fq
fq
pode ser instalado a partir do repositório extra usando pacman:
pacman -S fq
Você também pode compilar e instalar o pacote de desenvolvimento (VCS) usando um auxiliar AUR:
paru -S fq-git
nix-shell -p fq
Use a porta fq.
Atualmente em testes de borda, mas também deve funcionar bem no modo estável.
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
Certifique-se de ter a versão 1.22 ou posterior instalada.
Para instalar diretamente do repositório git (não é necessário clone do git):
# build and install latest release
go install github.com/wader/fq@latest
# build and install latest master
go install github.com/wader/fq@master
# copy binary to $PATH if needed
cp " $( go env GOPATH ) /bin/fq " /usr/local/bin
Para compilar, executar e testar a partir do código-fonte:
# build and run
go run .
# build and run with arguments
go run . -d mp3 . file.mp3
# just build
go build -o fq .
# run all tests and build binary
make test fq
Veja dev.md
Este projeto não teria sido possível sem a implementação jq do itchyny, gojq. Também quero agradecer ao HexFiend pela inspiração e ideias e ao stedolan por inventar a linguagem jq.
tshark -T json
).mediainfo --Output=JSON
e mediainfo --Details=1
).Veja TODO.md
fq
é distribuído sob os termos da licença MIT.
Consulte o arquivo LICENSE para obter detalhes da licença.
Licenças de dependências diretas: