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
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
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 2 Sep 5, 2022
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 82 Nov 15, 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 32 Nov 15, 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
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.2k Nov 23, 2022
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 40 Nov 18, 2022
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

M4jrT0m 1 Dec 24, 2021
Shellfirm - Intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification

shellfirm Opppppsss you did it again? ?? ?? ?? Protect yourself from yourself! rm -rf * git reset --hard before saving? kubectl delete ns which going

elad 647 Nov 22, 2022
This automatically patches the RoPro extension for you, allowing you to have pro_tier for free.

RoPro Patcher This automatically patches the RoPro extension for you, allowing you to have pro_tier for free. NOTE Chrome, Brave (and possibly other b

Stefan 6 Oct 28, 2022
Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers.

unosolo Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers. Disclaimer This is my first Rust p

Vittorio Romeo 26 Jul 9, 2021
A concurrent, append-only vector

The vector provided by this crate suports concurrent get and push operations. Reads are always lock-free, as are writes except when resizing is required.

Ibraheem Ahmed 18 Nov 27, 2022
try to find the correct word with only first letter and unknown letter count.

MOTUS Current dictionaries are provided in french and can contain some words not included in the official Motus dictionary. Additionally, dictionaries

Alexandre 6 Apr 11, 2022
Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp 9.8k Dec 4, 2022
Display a random Shiba from your terminal whenever you feel the need to. Because why not?

Shiba CLI Command-line interface (CLI) to display a random Shiba Inu whenever needed, by just running shiba on your terminal. How To Use โ€ข How Does It

null 17 Sep 25, 2022
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
A CLI companion tool for paste.misterio.me, allowing you to easily upload and manage your pastes

This is a CLI companion tool for paste.misterio.me, allowing you to easily upload and manage your pastes, as well as download any pastes you want.

Gabriel Fontes 1 Jan 26, 2022