hchat
v1.0.1
Published
A simple command-line WhatsApp client with end-to-end RSA encryption, built on whatsapp-web.js.
Downloads
8
Maintainers
Readme
hchat
A simple command-line WhatsApp client using whatsapp-web.js with end-to-end RSA encryption for messages between users. This tool allows you to send and receive encrypted messages and exchange public keys with your contacts, all from your terminal.
Features
- Connects to WhatsApp Web via QR code authentication
- Generates an RSA key pair for your session
- Allows you to share your public key with contacts
- Encrypts outgoing messages with the recipient's public key
- Decrypts incoming messages encrypted with your public key
- Stores public keys received from contacts
- Simple terminal command interface
How It Works
- On first run, the script generates an RSA key pair for your session.
- You can share your public key with contacts (and receive theirs) via WhatsApp messages.
- When you send a message using the
!send <chatId> <message>command, the message is encrypted with the recipient's public key and sent via WhatsApp. - When you receive an encrypted message (prefixed with
🔒ENC:), it is automatically decrypted and displayed in your terminal. - You can view your stored public keys and your own public key at any time.
Project Structure
src/index.ts: Entry point. Run this file to start the app.src/commands.ts: Command handling logic for the terminal interface.src/utils.ts: Utility functions for encryption, decryption, and key checks.src/types.ts: TypeScript type definitions used throughout the project.
Setup
Install dependencies:
npm installStart the app:
npm run startScan the QR code with your WhatsApp mobile app to authenticate.
Terminal Commands
!pubkey— Show your public key (share this with contacts for encrypted messaging)!send <chatId> <message>— Send an encrypted message to a chat!keys— List stored public keys!ping— Test command!chats— List recent chats and their IDsexit— Quit the application
Security Notes
- Key Storage: Keys are kept in memory for the session only. If you restart the app, a new key pair is generated and previous keys are lost.
- Encryption: Only messages prefixed with
🔒ENC:are treated as encrypted. All other messages are sent/received as plain text.
Requirements
- Node.js v18 or higher
- WhatsApp account
