All Projects → krglaws → ShiTTYchat

krglaws / ShiTTYchat

Licence: MIT license
A bare-bones terminal chat room.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to ShiTTYchat

LAN-Messenger
Official open-source repository for LAN Messenger
Stars: ✭ 17 (-29.17%)
Mutual labels:  chatroom, client-server
chatRoom
从零开始实现一个聊天室客户端(用qt实现,在Windows和Linux环境下都行),和在Linux下实现服务器后台
Stars: ✭ 146 (+508.33%)
Mutual labels:  chatroom, client-server
ncurses
Ncurses bindings for Crystal
Stars: ✭ 20 (-16.67%)
Mutual labels:  ncurses
react-cool-virtual
😎 ♻️ A tiny React hook for rendering large datasets like a breeze.
Stars: ✭ 1,031 (+4195.83%)
Mutual labels:  chatroom
meeting
https://github.com/GrowthEase/NetEase_Meeting
Stars: ✭ 38 (+58.33%)
Mutual labels:  chatroom
AsciiBird
ASCII version of the addictive Flappy Bird game.
Stars: ✭ 34 (+41.67%)
Mutual labels:  ncurses
cAndroid
cAndroid is tool for control your PC by Android phone
Stars: ✭ 23 (-4.17%)
Mutual labels:  client-server
ncurses guide
NCurses Examples from the book "Programmer's Guide to NCurses" with improvements and fixes
Stars: ✭ 43 (+79.17%)
Mutual labels:  ncurses
11LiveChat
Another one-one live chatroom using pion webrtc with sfu mode
Stars: ✭ 30 (+25%)
Mutual labels:  chatroom
Pirates-Online-Rewritten
Official repository for the Pirates Online Rewritten source code.
Stars: ✭ 77 (+220.83%)
Mutual labels:  client-server
postmessagejs
postmessage-promise is a client-server like, WebSocket like, full Promise syntax (postMessage.then etc.) supported postMessage library. 一个类 client-server 模式、类 WebSocket 模式、全 Promise 语法支持的 postMessage 库
Stars: ✭ 33 (+37.5%)
Mutual labels:  client-server
xpllyn
个人网站项目。使用spring-boot搭建,集合了博客、书籍下载、留言、github page查询、Netty+WebSocket搭建的Web网页聊天室等功能。其中github page查询工具使用了github的api,Web聊天室使用Netty+Websocket+Redis+MySQL搭建服务,使用Shiro安全框架实现身份验证/登录,采用MySql作为网站的数据库,使用Redis用于聊天记录缓存,实现了群聊、单聊、查询用户、添加好友、聊天记录等功能。
Stars: ✭ 21 (-12.5%)
Mutual labels:  chatroom
node-vue-chat
🚀 🌠 Real Time Chat Application created with MEVN Stack
Stars: ✭ 89 (+270.83%)
Mutual labels:  chatroom
tide
Minimal Transmission CLI client
Stars: ✭ 49 (+104.17%)
Mutual labels:  ncurses
XAsyncSockets
XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.
Stars: ✭ 28 (+16.67%)
Mutual labels:  client-server
cxxcurses
Header only ncurses wrapper
Stars: ✭ 24 (+0%)
Mutual labels:  ncurses
qt-rat
Remote administration tool with Qt5
Stars: ✭ 37 (+54.17%)
Mutual labels:  client-server
MiniGBS
Small .gbs chiptune player for Linux
Stars: ✭ 15 (-37.5%)
Mutual labels:  ncurses
PongC
Classic game of Pong in the terminal made in C.
Stars: ✭ 18 (-25%)
Mutual labels:  ncurses
ngp
Ncurses code parsing tool
Stars: ✭ 52 (+116.67%)
Mutual labels:  ncurses

ShiTTYchat

ShiTTYchat is a barebones terminal chat room written in C. I wrote it for fun, and to learn more about the client-server architecture, sockets, and encryption.

ShiTTYchat is designed as a simple client-server model, meaning it is actually composed of two separate programs: a client and a server. The client and server communicate with each other using the Linux sockets API. After a brief handshake, all communication between the two is encrypted using a *textbook RSA algorithm that I implemented with the help of GNU's Multiple Precision Arithmetic Library. The client's user interface was written using the ncurses library.

Build and Run

pute:~$ git clone https://github.com/krglaws/shittychat
pute:~$ cd shittychat/
pute:~/shittychat$ make client
pute:~/shittychat$ ./client.out -u jeff -i 73.178.35.36

sampleoutput

Controls

Use ctrl+w to toggle the selected window (top or bottom). The up and down arrows are used to scroll the top window when the top window is selected. All four arrow keys may be used to navigate your text when the bottom window is selected.

Settings

Several important application settings may be modified (carefully) in the shared/include/settings.h header file, where you can change things like the encryption key bit length, the maximum number of users permitted into a server, the maximum username length, and others.

Dependencies

  1. ncurses sudo apt install libncurses5-dev
  2. GNU Multiple Precision Arithmetic Library sudo apt install libgmp3-dev

Notes

* "Textbook" meaning I ripped the algorithm straight off of Wikipedia, and is probably easily exploited if you know what you're doing. Obviously, you should NOT send sensitive information using this application, as its safety will not be guaranteed. I decided to encrypt the client-server communication for the sole purpose of learning a bit about encryption.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].