diff --git a/README.md b/README.md index 080de51..363618e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # FileImgSwap +

+中文 | EN +

**[FileImgSwap](https://github.com/fzxx/FileImgSwap) 文图变**是一款可以把文件与 PNG 图像进行互转的工具,支持加密、图种(附加压缩包)功能,可将任意文件隐藏在 PNG 图像中,也能从生成的 PNG 图像中还原出原始文件。 ![](FileImgSwap.gif) diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..867a499 --- /dev/null +++ b/README_EN.md @@ -0,0 +1,89 @@ +# FileImgSwap + +

+Chinese | EN +

+**[FileImgSwap](https://github.com/fzxx/FileImgSwap)** is a tool that enables mutual conversion between files and PNG images. It supports encryption and image-seed (appending compressed packages) functions, allowing you to hide any file in a PNG image and restore the original file from the generated PNG image. + +![](FileImgSwap.gif) + +## Features + +- **File to PNG**: Convert any type of file (such as text, documents, compressed packages, etc.) into a PNG image, with file data encoded into the image's pixels. +- **PNG to File**: Extract and restore the original file from a PNG image generated by this tool. +- **Encryption Protection**: Encryption protection via a password/key file with the **same name as the main program in the same directory**. +- **Image-seed Function**: Append a compressed package to the end of the generated PNG image to achieve the "image-seed" effect. +- **Metadata**: The image retains the original file's name and modification time. + +## Technical Details + +- Encryption algorithm: AES-CTR +- Key algorithm: Key derivation using PBKDF2-SHA256 and HKDF-SHA256 +- Image format: PNG + +## User Guide + +Drag and drop files/folders onto the program icon, or run via the command line. + +#### File to PNG + +Convert ordinary files to PNG images: +```bash +# Convert a single file +FileImgSwap file.pdf + +# Convert multiple files +FileImgSwap image.jpg data.zip notes.txt +``` + +A PNG file with the `.fis.png` extension will be generated after conversion. For example, `document.pdf` will generate `document.fis.png`. + +#### Restore File + +Restore the original file from a PNG image: +```bash +# Restore a single PNG +FileImgSwap file.fis.png + +# Restore multiple PNGs +FileImgSwap file1.fis.png file2.tz.png +``` + +The restored file will use the original file name. If a file with the same name exists, it will be automatically renamed (with a sequence number added). + +#### Encryption Function + +To enable encrypted conversion, **create one of the following files in the same directory as the program** (both can also exist): +- Password file: `.fisp.txt` with the same name as the program (e.g., `FileImgSwap.fisp.txt`), where the first line is the password. +- Key file: `.fisp.key` with the same name as the program (e.g., `FileImgSwap.fisp.key`), which stores the binary key. + +The program will automatically detect and use these files for encryption/decryption. **No encryption will be applied if none are detected**. + +#### Image-seed Function + +Use the `-append` parameter to append a compressed package (zip/rar) to the end of the generated PNG. **Separation is not supported**; extraction requires a compression tool. +```bash +FileImgSwap video.mp4 -append archive.zip +``` + +The generated file will have the `.tz.png` extension. It can be viewed as a normal image and also extracted as a compressed package (zip/rar formats are recommended; rename the extension and use WinRAR for extraction). + +## Changelog + +[Changelog](CHANGELOG.md) + +## Notes + +- Encrypted files can only be restored using the **same password/key file**. +- File-Image Swap + image-seed compressed packages can be encrypted with different passwords to achieve "one image, two decryptions". +- 32-bit programs support a maximum single file size of 2GB, and 64-bit programs support a maximum single file size of 5GB. + +## Related Projects + +[XiangYue - Text encryption for free expression](https://github.com/fzxx/XiangYue) + +[NaughtyDamagePack - Make compressed packages look corrupted](https://github.com/fzxx/NaughtyDamagePack) + +## Download Link + +https://github.com/fzxx/FileImgSwap/releases \ No newline at end of file