pyfino


Namepyfino JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryProof-of-Concept: Secure File Sharing via IPFS + Nostr DMs
upload_time2025-08-13 19:43:59
maintainerNone
docs_urlNone
authorarnispen
requires_python>=3.8
licenseNone
keywords nostr ipfs encryption file-sharing proof-of-concept innovation
VCS
bugtrack_url
requirements cryptography requests pynostr typer python-dotenv websockets rich ruff mypy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🔐📁 FiNo - Secure File Sharing via IPFS + Nostr

**FiNo** (File + Nostr) is a decentralized, secure file sharing tool that combines IPFS storage with Nostr messaging for truly anonymous and censorship-resistant file transfers.

## 🌟 Features

- **🔐 End-to-End Encryption**: AES-256-CBC + ECDH key exchange
- **🌐 Decentralized**: No central servers, works globally
- **🆓 Completely Free**: No API keys, no registration required
- **⚡ Real-Time**: Instant file sharing via Nostr DMs
- **🔒 Privacy-Focused**: No central servers, no tracking

## 🚀 Quick Start

### 1. Install FiNo
```bash
pip install pyfino
```

### 2. Install IPFS (one-time setup)
```bash
# macOS
brew install ipfs

# Linux
curl -O https://dist.ipfs.io/go-ipfs/v0.36.0/go-ipfs_v0.36.0_linux-amd64.tar.gz
tar -xvzf go-ipfs_v0.36.0_linux-amd64.tar.gz
sudo mv go-ipfs/ipfs /usr/local/bin/

# Windows
# Download from https://ipfs.io/docs/install/
```

### 3. Initialize IPFS (one-time setup)
```bash
ipfs init
brew services start ipfs  # macOS
# or: ipfs daemon &  # Linux/Windows
```

### 4. Generate your keys
```bash
fino gen-key
```

### 5. Send a file
```bash
fino send document.pdf --to npub1abc... --from nsec1xyz...
```

### 6. Receive files
```bash
fino receive --from nsec1xyz...
```

## 🤔 How It Works (ELI5)

### **The Problem**
- Traditional file sharing needs central servers (Google Drive, Dropbox)
- These can be shut down, censored, or hacked
- They know who you are and what you're sharing

### **The Solution**
FiNo splits file sharing into two parts:

1. **📁 File Storage (IPFS)**
   - Files are stored on a global network (like a giant, distributed hard drive)
   - No single point of failure
   - Files are accessible from anywhere in the world
   - **Free forever** - no company owns it

2. **📨 File Location (Nostr)**
   - The "address" of your file is sent via Nostr (like a decentralized email)
   - Only the person you send it to can find the file
   - No central server controls the messages

### **How It's Free**
- **IPFS**: Community-run network, no company owns it
- **Nostr**: Decentralized messaging protocol, no company owns it
- **No API keys**: You're not using anyone's service
- **No registration**: You're just using open protocols

## 🔐 Security Features

- **AES-256-CBC**: Military-grade file encryption
- **ECDH**: Perfect forward secrecy for metadata
- **Zero-knowledge**: No one can see your files except the intended recipient
- **End-to-end encryption**: Files encrypted before transmission
- **Decentralized**: No central point of failure

## 📦 Installation Details

### Requirements
- Python 3.8+
- IPFS daemon
- Internet connection

### Dependencies
- `cryptography`: Encryption
- `pynostr`: Nostr protocol
- `requests`: HTTP requests
- `rich`: Beautiful CLI
- `typer`: Command-line interface

## 🚨 Important Notes

- **Experimental software** - Use at your own risk
- **Keep your nsec private** - Never share your private key
- **Backup your keys** - If you lose them, you can't access your files
- **IPFS persistence** - Files may be removed if not pinned by someone

## 🔗 Useful Links

- [IPFS Documentation](https://docs.ipfs.io/)
- [Nostr Protocol](https://github.com/nostr-protocol/nostr)
- [FiNo GitHub](https://github.com/yourusername/fino)

## 📄 License

MIT License - see LICENSE file for details.

---

**⚠️ Disclaimer**: This is experimental software for innovation research only. Use responsibly and in accordance with local laws.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyfino",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "nostr, ipfs, encryption, file-sharing, proof-of-concept, innovation",
    "author": "arnispen",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/43/a7/509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b/pyfino-0.2.1.tar.gz",
    "platform": null,
    "description": "# \ud83d\udd10\ud83d\udcc1 FiNo - Secure File Sharing via IPFS + Nostr\n\n**FiNo** (File + Nostr) is a decentralized, secure file sharing tool that combines IPFS storage with Nostr messaging for truly anonymous and censorship-resistant file transfers.\n\n## \ud83c\udf1f Features\n\n- **\ud83d\udd10 End-to-End Encryption**: AES-256-CBC + ECDH key exchange\n- **\ud83c\udf10 Decentralized**: No central servers, works globally\n- **\ud83c\udd93 Completely Free**: No API keys, no registration required\n- **\u26a1 Real-Time**: Instant file sharing via Nostr DMs\n- **\ud83d\udd12 Privacy-Focused**: No central servers, no tracking\n\n## \ud83d\ude80 Quick Start\n\n### 1. Install FiNo\n```bash\npip install pyfino\n```\n\n### 2. Install IPFS (one-time setup)\n```bash\n# macOS\nbrew install ipfs\n\n# Linux\ncurl -O https://dist.ipfs.io/go-ipfs/v0.36.0/go-ipfs_v0.36.0_linux-amd64.tar.gz\ntar -xvzf go-ipfs_v0.36.0_linux-amd64.tar.gz\nsudo mv go-ipfs/ipfs /usr/local/bin/\n\n# Windows\n# Download from https://ipfs.io/docs/install/\n```\n\n### 3. Initialize IPFS (one-time setup)\n```bash\nipfs init\nbrew services start ipfs  # macOS\n# or: ipfs daemon &  # Linux/Windows\n```\n\n### 4. Generate your keys\n```bash\nfino gen-key\n```\n\n### 5. Send a file\n```bash\nfino send document.pdf --to npub1abc... --from nsec1xyz...\n```\n\n### 6. Receive files\n```bash\nfino receive --from nsec1xyz...\n```\n\n## \ud83e\udd14 How It Works (ELI5)\n\n### **The Problem**\n- Traditional file sharing needs central servers (Google Drive, Dropbox)\n- These can be shut down, censored, or hacked\n- They know who you are and what you're sharing\n\n### **The Solution**\nFiNo splits file sharing into two parts:\n\n1. **\ud83d\udcc1 File Storage (IPFS)**\n   - Files are stored on a global network (like a giant, distributed hard drive)\n   - No single point of failure\n   - Files are accessible from anywhere in the world\n   - **Free forever** - no company owns it\n\n2. **\ud83d\udce8 File Location (Nostr)**\n   - The \"address\" of your file is sent via Nostr (like a decentralized email)\n   - Only the person you send it to can find the file\n   - No central server controls the messages\n\n### **How It's Free**\n- **IPFS**: Community-run network, no company owns it\n- **Nostr**: Decentralized messaging protocol, no company owns it\n- **No API keys**: You're not using anyone's service\n- **No registration**: You're just using open protocols\n\n## \ud83d\udd10 Security Features\n\n- **AES-256-CBC**: Military-grade file encryption\n- **ECDH**: Perfect forward secrecy for metadata\n- **Zero-knowledge**: No one can see your files except the intended recipient\n- **End-to-end encryption**: Files encrypted before transmission\n- **Decentralized**: No central point of failure\n\n## \ud83d\udce6 Installation Details\n\n### Requirements\n- Python 3.8+\n- IPFS daemon\n- Internet connection\n\n### Dependencies\n- `cryptography`: Encryption\n- `pynostr`: Nostr protocol\n- `requests`: HTTP requests\n- `rich`: Beautiful CLI\n- `typer`: Command-line interface\n\n## \ud83d\udea8 Important Notes\n\n- **Experimental software** - Use at your own risk\n- **Keep your nsec private** - Never share your private key\n- **Backup your keys** - If you lose them, you can't access your files\n- **IPFS persistence** - Files may be removed if not pinned by someone\n\n## \ud83d\udd17 Useful Links\n\n- [IPFS Documentation](https://docs.ipfs.io/)\n- [Nostr Protocol](https://github.com/nostr-protocol/nostr)\n- [FiNo GitHub](https://github.com/yourusername/fino)\n\n## \ud83d\udcc4 License\n\nMIT License - see LICENSE file for details.\n\n---\n\n**\u26a0\ufe0f Disclaimer**: This is experimental software for innovation research only. Use responsibly and in accordance with local laws.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Proof-of-Concept: Secure File Sharing via IPFS + Nostr DMs",
    "version": "0.2.1",
    "project_urls": {
        "Homepage": "https://github.com/arnispen/fino",
        "Issues": "https://github.com/arnispen/fino/issues",
        "Repository": "https://github.com/arnispen/fino"
    },
    "split_keywords": [
        "nostr",
        " ipfs",
        " encryption",
        " file-sharing",
        " proof-of-concept",
        " innovation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "92e930794ef5f1dcb2b1cc03b33be8b48c622f4a9d5251d080fbbb0e10e2436b",
                "md5": "a24b38ce632d035d4ea116da4abc310f",
                "sha256": "55b87137338d8c0ca7ec3c6bdd94c6de8e5d93c8350456a78c8e25062a482331"
            },
            "downloads": -1,
            "filename": "pyfino-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a24b38ce632d035d4ea116da4abc310f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 18225,
            "upload_time": "2025-08-13T19:43:58",
            "upload_time_iso_8601": "2025-08-13T19:43:58.348536Z",
            "url": "https://files.pythonhosted.org/packages/92/e9/30794ef5f1dcb2b1cc03b33be8b48c622f4a9d5251d080fbbb0e10e2436b/pyfino-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "43a7509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b",
                "md5": "5e1d86057ee79243d75772408d4f6512",
                "sha256": "03b0d7e31274e358c3d2bf41de06136480128a64c803033c23dfcd5af8a02813"
            },
            "downloads": -1,
            "filename": "pyfino-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "5e1d86057ee79243d75772408d4f6512",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 16895,
            "upload_time": "2025-08-13T19:43:59",
            "upload_time_iso_8601": "2025-08-13T19:43:59.264933Z",
            "url": "https://files.pythonhosted.org/packages/43/a7/509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b/pyfino-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 19:43:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "arnispen",
    "github_project": "fino",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "cryptography",
            "specs": [
                [
                    ">=",
                    "41.0.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.28.0"
                ]
            ]
        },
        {
            "name": "pynostr",
            "specs": [
                [
                    ">=",
                    "0.0.20"
                ]
            ]
        },
        {
            "name": "typer",
            "specs": [
                [
                    ">=",
                    "0.9.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "websockets",
            "specs": [
                [
                    ">=",
                    "11.0.0"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    ">=",
                    "13.0.0"
                ]
            ]
        },
        {
            "name": "ruff",
            "specs": [
                [
                    ">=",
                    "0.6.0"
                ]
            ]
        },
        {
            "name": "mypy",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        }
    ],
    "lcname": "pyfino"
}
        
Elapsed time: 1.81548s