• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created about 10 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pinwheel (aka GIlga Meshenger: Connecting the Mobile Radio Babylon!)

Pinwheel Messenger (formerly known as Gilga aka gilgamesh)

Pinwheel (formerly known as Gilgamesh) is an experimental app that is a proof-of-concept of the Wind nearby network concept (https://github.com/n8fr8/WindFarm). It utilizes bluetooth and wifi device names to enable "status casting", otherwise known as Twitter-over-Bluetooth.

Learn more at: https://github.com/n8fr8/gilgamesh and http://github.com/n8fr8/WindFarm

Some notes on the implementation, aka the glorious hack of Bluetooth Device Names. This application was original based on the Android SDK BluetoothChat sample. It used insecure (unpaired) and secure (paired) Bluetooth RFComm sockets to allow for short messages to be sent between devices. The primary modification that this project has made has been to add support for a "Broadcast" mode, that uses the Bluetooth device name, that is public visible during the Discovery process, as the message transport itself.

The design goals of this project are:

  • A truly decentralised application that requires only Bluetooth connectivity and has no central user registry
  • Incredible ease of use that ensures all "mesh" connectivity happens with as little user involvment as possible
  • Ability to enable trust or reputation for specific users or devices you message with
  • A very transient app that stores no data permanently
  • Ability to share the app easily between devices
  • A "fire and forget" mode, where the user can enter a message, put the phone in their pocket, and walk around and area and have it broadcast to all devices it encounters

Android app:

alt alt

Pinwheel also supports Linux: https://github.com/n8fr8/gilgamesh/blob/master/docs/gilgamesh.sh

The key innovations/hacks/revelations that led us to this point were:

  • As of recent Android versions, you can call an API to set your the device's Bluetooth visibility to a very long time ~1 hour
  • You can dynamically change the Bluetooth device name, and it can be long - up to 248 bytes encoded as UTF-8
  • That the first two things above could be wrapped mostly in API calls the user did not have to see or worry about

Finally, some thoughts on security, privacy and reputation:

  • This app supports both a public broadcast mode, and a private, direct message mode. It is easy to use to both. The direct message mode is optionally secured and encrypted at the Bluetooth level if you have paired with the device/user you are connected with.
  • Impersonation is combatted by simplified user id's to a short (6 character alphanumeric) value, based on the device's unique Bluetooth ID. This makes them speakable and easy to remember. If someone says "trust messages from A1BC99" then likely you will be able to rememember that.
  • If you pair with a user (using standard Bluetooth pairing settings), their userid will be appended with a *, to make it even easier to know this is someone you should trust
  • The app ONLY works in Bluetooth mode, so though is no confusion when it might be using 3G/4G, Wifi or some other mode, and possibly go through a centralised server
  • The code is open-source, very small, and the entire app is only 28kb making it easy to audit, test and share
  • We make it easy to "retweet" a message by long pressing on it, which enables reputation for something to be built up by multiple people resharing it. If the user has paired with the user, you will also see the * next to the name to further indicate trust.

More Repositories

1

talks

Talks, presentations, and more
50
star
2

AndroidEmojiInput

Android library for adding emoji, stickers and other rich media input and display
Java
31
star
3

WindFarm

Information the Wind concept, spec and upcoming events
23
star
4

georeport-android

gReporter: Geotagging Multimedia Field Reporting Client for Android (based on VoteReport & Inauguration Report codebase)
Java
12
star
5

qranime

Multi-frame QR codes stores as animated gifs and mp4s
Shell
8
star
6

orbotconnect

Orbot Connect - an extremely simple, VPN focused app based on Orbot
C
7
star
7

storycam

Java
5
star
8

W204Samples

Mobile Secure Programming
Java
4
star
9

Tibetan-AnySoftKeyboard

Tibetan (Dzongkha) Language Pack add-on for AnySoftKeyboard
4
star
10

PanicKitSamples

Sample PanicKit Triggers / Patterns
Java
4
star
11

UpOnApp

just hacking around
Java
4
star
12

copperwall

Wallpapers for CopperheadOS
4
star
13

onionthings

My ideas on the Internet of Onion Things or Using Tor Hidden Services to improve IoT security
4
star
14

CryptoCatBot

THIS IS A DEPRECATED PROJECT. PLEASE SEE CRYPTOCAT OFFICIAL ANDROID APP
4
star
15

JavaMediaHasher

java based hashing of photo and video
Java
3
star
16

TorButton2Go

torbutton for fennec
JavaScript
3
star
17

Ghosts-vs.-Monsters

Template for physics-based games like Angry Birds, made with Corona SDK
3
star
18

securereader

Secure Reader app for Android
Java
3
star
19

pluggable-transports-threat-modeling

Pluggable Transports Threat Modeling
3
star
20

chimeapp

Chime: the wind network discovery app
Java
2
star
21

NYCGAMobile

2
star
22

nysenatecio-newsclips

This is our Java newsclips project built on the Daylife.com API for generating topical news reports
2
star
23

ssh-1

Guardian SSH-1 (Nexus One) Device Setup Scripts
Shell
1
star
24

Unveillance

Your own private J3M Backend for InformaCam (formerly InformaCam-Service)
Python
1
star
25

ITP2800-App-Demo

Demo code, template for class
1
star
26

securereaderlibrary

Library Project for Secure Reader Core
Java
1
star
27

LibSecureShare

A refactoring of https://github.com/StoryMaker/SecureShareLib
Java
1
star
28

OpenStreetMic

simple mobile phone audio broadcasting
1
star
29

OccupyMobileWeb

mobile web UI for #Occupy* info
1
star
30

UnveillanceViewer

Visualizing engine for Unveillance
JavaScript
1
star
31

LittleBitLouder

A multi-device bluetooth megaphone system for protests and rallies without traditional amplification
Java
1
star