Answering the question nobody asked: what if you wanted to text your friends using only ARP?

Related tags

Command-line chat arp
Overview

arpchat

so... you know arp? the protocol your computer uses to find the mac addresses of other computers on your network? yeah. that.

i thought it would be a great idea to hijack it to make a chat app :)

built in two days because i was sick and had nothing better to do.

screenshot of the tool in action

motivation

  1. once a year, i'm on a client isolated network that i want to chat with friends over
  2. i'm completely insane
  3. i'm a programmer

(i swear, i might actually briefly have a use for this! it might not be entirely useless! ... and other lies i tell myself)

limitations

yes

things i made arpchat do

you can send messages tens of thousands of characters long because i implemented a (naive) generalizable transport protocol on top of arp. there's also a bit of compression.

if you wanted, you could probably split off the networking part of this and use it instead of udp. please don't do this.

not only are join and leave notifications a thing, i built an entire presence discovery and heartbeat system to see an updated list of other online users. ironically, part of this serves a similar purpose to arp itself.

running

if you actually want to install this for some reason, you can get it from the releases page.

on windows, you probably need npcap. make sure you check "Install Npcap in WinPcap API-compatible Mode" in the installer!

on linux, you might have to give arpchat network privileges:

sudo setcap CAP_NET_RAW+ep /path/to/arpchat

interface selector

then just run the binary in a terminal. you know it's working properly if you can see your own messages when you send them. if you can't see your messages, try selecting a different interface or protocol!

have any issues? that really sucks. you can make an issue if it pleases you.

building

you don't really want to build this. anyway, it's tested on the latest unstable rust.

on windows, download the WinPcap Developer's Pack and set the LIB environment variable to the WpdPack/Lib/x64/ folder.

cargo build

banner

Comments
  • digital-copyright

    digital-copyright

    Hi arpchat!πŸ‘‹, I added this optional feature to digitally sign you source-code should you ever be audited or experience a software supply-chain attacks. See the kognise-digital-copyright for instructions on accessing your hash. Feel free to contact me directly to review any questions before accepting. ~~Best: [email protected]

    opened by JudeSafo 2
  • Configure github workflow

    Configure github workflow

    I think this will help determine which commits are suitable for assembly and which are not.

    https://docs.github.com/en/actions/using-workflows/triggering-a-workflow

    opened by BlitDev 2
  • Use Ethertype reserved for experimentation instead of IPv4 Ethertype

    Use Ethertype reserved for experimentation instead of IPv4 Ethertype

    i'm planning on experimenting with and adding settings for different arp packet types, since some routers might filter out the malformed ip packets i'm currently using.

    Looking at the list of Ethertype values, it appears that 88B5 and 88B6 are reserved for experimentation. From https://standards-oui.ieee.org/ethertype/eth.txt and referring to 88B5:

    Local Experimental EtherType 1 as defined in IEEE Std 802.  This EtherType
    value is available for public use and for prototype and vendor-specific    
    protocol development. 
    

    I think it would probably make more sense to use one of these as the protocol type in the ARP packet instead of IPv4. Thoughts?

    opened by charasyn 2
  • NoMarryMe - real issue before marriage - macos bad CPU type

    NoMarryMe - real issue before marriage - macos bad CPU type

    $arpchat $zsh: bad CPU type in executable: arpchat

    The CUP size/type did not suit my tastes yet, you may have to do some ajustments so it looks pretty.

    opened by anborg 1
  • "Error getting channel" on linux (CAP_NET_RAW)

    Really cool and fun project! Thanks! πŸš€

    Issue

    • Run arpchat
    • Select interface
    • On any key pressing Error getting channel

    image

    Solution

    Seems executable file should have CAP_NET_RAW capability and solved via:

    sudo setcap CAP_NET_RAW+ep /path/to/arpchat
    

    It would be good to add this to documentation.

    Env

    cargo +nightly build cargo 1.60.0-nightly (95bb3c92b 2022-01-18) Ubuntu 20.04.4 5.4.0-104-generic

    opened by mrkeuz 1
  • Duplicated messages on same host

    Duplicated messages on same host

    Again! Really fun project! πŸš€πŸš€πŸš€

    If you run two instances on same host you receive duplicated messages (ONLY on receiver side)

    image

    Env

    cargo +nightly build cargo 1.60.0-nightly (95bb3c92b 2022-01-18) Ubuntu 20.04.4 5.4.0-104-generic

    opened by mrkeuz 6
Releases(v1.0.0)
Owner
Kognise
hello yes i do things, i am the computer person. why do you ask.
Kognise
Bruteforce connecting to a specific Sea of Thieves server. Useful if you want to be in the same server as your friends.

SoT Server Finder Find which Sea of Thieves server you're connected to. Useful if you want to be in the same server as your friends. Setup Download so

Martin 4 Mar 19, 2023
Putting the 1992 Putnam Test question A-6 into code.

Problem If you choose 4 points on a sphere and consider the tetrahedron with these points as it's vertices, what is the probability that the center of

Elias 3 Sep 17, 2023
An implementation of Piet's text interface using cosmic-text

piet-cosmic-text Implements piet's Text interface using the cosmic-text crate. License piet-cosmic-text is free software: you can redistribute it and/

John Nunley 7 Mar 12, 2023
Dura - You shouldn't ever lose your work if you're using Git

Dura Dura is a background process that watches your Git repositories and commits your uncommitted changes without impacting HEAD, the current branch,

Tim Kellogg 4.1k Jan 8, 2023
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022
Sero is a web server that allows you to easily host your static sites without pain. The idea was inspired by surge.sh but gives you full control.

sero Lightning-fast, static web publishing with zero configuration and full control ?? Table Of Contents ?? Table Of Contents ?? Tools ❓ About The Pro

Dmitry Miasnenko 6 Nov 13, 2023
Check the reproducibility status of your Arch Linux packages (read-only mirror)

arch-repro-status A CLI tool for querying the reproducibility status of the Arch Linux packages using data from a rebuilderd instance such as reproduc

Arch Linux 12 Nov 16, 2022
A complete imgui-rs example using dependencies only from crates.io.

Dear imgui-rs, hello. This is a fairly basic, but complete and standalone example application for the Rust version of dear imgui (https://github.com/o

null 0 Nov 30, 2022
Tumour-only somatic mutation calling using long reads

smrest smrest is a prototype somatic mutation caller for single molecule long reads. It uses haplotype phasing patterns for tumour samples that have a

Jared Simpson 16 Mar 1, 2024
That program use on platform windows. And if you write any text on uncorrect keyboard layout, that program for that.

?? This program is designed to translate text into the correct layout when typing is incorrect. ?? Example ghbdtn -> ΠΏΡ€ΠΈΠ²Π΅Ρ‚ Just (by default) pressing

Gest Se 5 Jan 26, 2023
FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config.

Connect quickly to your services ?? FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config. Instal

Julien 85 Dec 14, 2022
Deadliner helps you keep track of the time left for your deadline by dynamically updating the wallpaper of your desktop with the time left.

Deadliner Watch the YouTube video What's Deadliner? Deadliner is a cross-platform desktop application for setting deadline for a project and keeping t

Deadliner 34 Dec 16, 2022
A Yocto setup and management tool that helps you keep your environment up-to-date and in-sync with your team

yb (Yocto Buddy) yb is designed to make it easy to setup and (perhaps more importantly) keep Yocto environments up-to-date and in-sync with your team.

null 13 Oct 31, 2022
A filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!

BlackboardFS Blackboard: noun A website so bad that it might as well be a network drive. BlackboardFS is a filesystem driver that allows you to view y

null 22 Sep 4, 2023
create and test the style and formatting of text in your terminal applications

description: create and test the style and formatting of text in your terminal applications docs: https://docs.rs/termstyle termstyle is a library tha

Rett Berg 18 Jul 3, 2021
Amp: A text editor for your terminal.

Amp: A text editor for your terminal. Heavily inspired by Vi/Vim. Amp aims to take the core interaction model of Vim, simplify it, and bundle in the e

Jordan MacDonald 3.3k Jan 3, 2023
A robust, customizable, blazingly-fast, efficient and easy-to-use command line application to uwu'ify your text!

uwuifyy A robust, customizable, blazingly-fast, efficient and easy-to-use command line application to uwu'ify your text! Logo Credits: Jade Nelson Tab

Hamothy 43 Dec 12, 2022
Attempt to summarize text from `stdin`, using a large language model (locally and offline), to `stdout`

summarize-cli Attempt to summarize text from stdin, using a large language model (locally and offline), to stdout. cargo build --release target/releas

null 4 Aug 23, 2023
A rust crate for rendering large text to the terminal using font8x8 and ratatui.

tui-big-text tui-big-text is a rust crate that renders large pixel text as a ratatui widget using the glyphs from the font8x8 crate. Installation carg

Josh McKinney 7 Sep 7, 2023