Outil, langage et décodeurs pour travailler avec des données binaires.
TLDR : il vise à être jq, hexdump, dd et gdb pour les fichiers combinés en un seul.
L'utilisation de base est fq . file
, fq d file
ou fq 'some query' file ...
.
Pour plus de détails, voir utilisation.md.
fq s'inspire de l'outil et du langage jq et vous permet de travailler avec les formats binaires de la même manière. En plus d'utiliser des expressions jq, il peut également présenter des structures arborescentes décodées, transformer, découper et concaténer des données binaires. Il prend également en charge les formats imbriqués et propose un REPL interactif avec saisie semi-automatique des fonctions et des noms.
Il a été initialement conçu pour interroger, inspecter et déboguer les codecs et conteneurs multimédias tels que MP4, FLAC et JPEG, mais a depuis été étendu pour prendre en charge une variété de formats tels que les exécutables, les captures de paquets (avec réassemblage TCP) et les formats de sérialisation tels que JSON, YAML, XML. , CBOR, protobuf. De plus, il dispose également de fonctions permettant de travailler avec des URL, de convertir vers/depuis l'hexadécimal, des bases numériques, de rechercher des modèles, 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, octets, 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, nda, 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
Il peut également fonctionner avec certains formats de texte courants tels que les URL, hexadécimal, base64, PEM, etc. et pour certains formats de sérialisation comme XML, YAML, etc., il peut transformer à la fois depuis et vers des valeurs jq.
Pour plus de détails, voir formats.md et usage.md.
Utilisez l'une des méthodes répertoriées ci-dessous ou téléchargez une version prédéfinie pour macOS, Linux ou Windows. Désarchivez-le et déplacez l'exécutable vers PATH
etc.
Sur macOS, si vous n'installez pas à l'aide de l'une des méthodes ci-dessous, vous devrez peut-être autoriser manuellement l'exécution du binaire. Cela peut être fait en essayant d'exécuter le binaire, en ignorant l'avertissement, puis en accédant aux préférences de sécurité et en l'autorisant. La même chose peut être faite avec cette commande :
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
Sur macOS, fq
peut également être installé via MacPorts. Plus de détails ici.
sudo port install fq
fq
peut être installé via scoop.
scoop install fq
fq
peut être installé à partir du référentiel supplémentaire en utilisant pacman :
pacman -S fq
Vous pouvez également créer et installer le package de développement (VCS) à l'aide d'un assistant AUR :
paru -S fq-git
nix-shell -p fq
Utilisez le port fq.
Actuellement en test de pointe, mais devrait également fonctionner correctement en version stable.
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
Assurez-vous que Go 1.22 ou une version ultérieure est installé.
Pour installer directement à partir du référentiel git (aucun clone git nécessaire) :
# 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
Pour créer, exécuter et tester à partir des sources :
# 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
Voir dev.md
Ce projet n'aurait pas été possible sans l'implémentation gojq d'Itchyny. Je tiens également à remercier HexFiend pour l'inspiration et les idées et Stedolan pour avoir inventé le langage jq.
tshark -T json
).mediainfo --Output=JSON
et mediainfo --Details=1
).Voir TODO.md
fq
est distribué selon les termes de la licence MIT.
Voir le fichier LICENSE pour les détails de la licence.
Licences de dépendances directes :