lulzlabs/AirChat · GitHub

README######################################################## _ _ .__ .__ __ __| || |_______ |__|______ ____ | |__ _____ _/ |_ \ __ /\__ \ | \_ __ \_/ ___\| | \\__ \\ __\ | || | / __ \| || | \/\ \___| Y \/ __ \| | /_ ~~ _\(____ /__||__| \___ >___| (____ /__| |_||_| \/ \/ \/ \/ ########################################################## VIDEO: ##########################################################Why Airchat?Because we strongly believe communications should be free,Free as much as the air itself and all the waves should be.Free for everyone everywhere, free for those oppressed, free for the poor,free for the dissident, free for those living out of the boundariesof the infrastructure created for those who were lucky enough to have more than others.And free...well... because sometimes the non-free infrastructure itself fails.Several thousands years ago, we started shouting into the air tocommunicate, to build our first communities and to survive.Since then the power of our voices has travelled through the air,carrying poetry, intelligence, knowledge, art, emotions, science,revolutions, philosophy, faith, evil, war,Transmitting all those ideas, good or bad, which define us as human.We freely shouted to the air our very own existence.We shouted to the wind we were alive.Several thousands of years after we started this adventure, we have builtamazing and technologically sophisticated networks to serve usto communicate everywhere,Now the fire of our freedom is burning away.Our voices, once free, are subject to uncountable controls, financialfees, patents, rights, regulations, government censorship, etc.Today, we have acknowledged that, even after all these years of technology advance,we still need to meet in common public places to continue expressing ourselves in a free way,to build up our sense of community and stand up for our future and rights.Our so advanced communication infrastructure has failed to make us a better family, to make us better humans,to bring us openness, democratic access and freedom to think nor to speak.Our pay-to-participate infrastructure identifies us, targets us, monitors us, controls then, we will try to go to the origin of all and try to scale up all these really very human voicesto cover not only those tiny public spacesbut a whole community, a neighbourhood,a big town, a huge city, a remote region... the world.So...That's why Airchat,because next time you want shout your freedom to the wind, perhaps someone will hear you.WTF is AirChat then?!?!Airchat is a free communication tool, free as in 'free beer' and free as in 'jeremy hammond must be freed'.It doesn't need the internet infrastructure, nor does it need a cellphone network,instead it relies on any available radio link (or any device capable of transmitting audio -we even made a prototype working with light/laser based transmissions).This project was conceived not only from our lessons learned in the Egyptian, Libyan and Syrian revolutions,but also from the experience of OccupyWallStreet and Plaza del Sol.We have considered the availability of extremely cheap modern radio devices (like those handhelds produced in China),to start thinking about new ways in which people can free themselves from expensive, commercial,government controlled and highly surveilled infrastructure.AirChat is not only our modest draft or proposal for such a dream, but it is a working PoC you can use today.we hope you will enjoy it and we also hope that you too will be able to feel the beauty of free communications,free communications as in 'free beer' and free communications as in 'free yourself and your people forever'.User casesPeople who were protesting against their govt resulting in the their internet being cut off.Even worse govt decided to fuck with their cellphones networks too.They need basic communication tools to spread news and updates about their conditions,and with the aim to eventually relay that information to/from the internetwhen at least one of them is able to get a working internet connection.NGOs and medical teams working in Africa under poor conditions who want to build somebasic communication's infrastructure to coordinate efforts like the delivery ofmedication and food or to update on local conditionswithout being intercepted by regional armed groups etc.Dissident groups who mistrust the normal communication infrastructure and who want to coordinateregional activity and share updates about oppressive actions carried out by the authorities.Disaster response, rescue and medical teams who are working in devastated zones without the availabilityof standard telecommunication infrastructure. They want to keep updating their statuses,progress and resource availability between teams when there may be large overage zones between them.Yacht owners who are sailing and who wish to obtain news updates from some approaching coastlineor another ship which has internet access. There may just be a simple exchange of informationabout news, weather conditions, provisions, gear etc.Local populations who want to keep in touch with each other on a daily basis with the goal of developinga strong community capable of maximizing their resources,food or manpower to help improve sustainability and their quality of life.Street protests or any other street event where people would like to share their thoughts,anonymously and locally without relying on the internet. They may also wish to share themwith the world as a single voice using a simple gateway such as a unique Twitter account made for the occasion.Expedition basecamps who need a simplistic solution to build a common gateway for establishingradio communication and messaging service links with camps, remotely located basecamps and/orrescue teams to coordinate tasks such as logistics, rescue efforts, routes and schedules.Background: Dilemmas and decisionsEvery project is a fractalized representation of infinite dilemmas sparkling other new ones,glued to the futile decisions we make, to try to address all of them.Many ideas have crossed our minds when we tried to make this thingie.We experimented broadcasting UDP packets inside mesh network solutions.We experimented using patched wireless network card drivers to inject crafted wifi management frames.We also considered crafting TDMA packets via cellphones RF hardware.We thought about those many different possibilities. we saw there's so much potential on them.Sadly we found out how locked down and overregulated our communication devices are.So, we thought: 'Well some solutions would require that we ask people to root their phones or routers, andto then install custom firmwares with patched drivers, with the risk of getting people mad cause theywere bricking them'we also thought about a Wifi interconnected cellphone net approach, but the coverage range was frustrating.We saw people working on different mesh related projects and we thought'One solution shouldn't discard another one but it should try to complement it,to add interoperability and to allow heterogeneous systems'.As different serious projects are looking for solutions based on 802.11 standards we said,'WTF lets try to reinvent the wheel for exploration and fun'.But to reinventing the wheel you need freedom. a freedom which we don't have much of in on our worldof telecommunications, which is over-regulated by evil organizations like the FCC and similars shits around the world.So we choose the good ol' trusted ancient technology to start free.Radio transceivers.yeah, these shits rock.we chose to sacrifice bandwidth for freedom.Tune the frequency.Define a protocol.Transmit.Enjoy.So yeah we connected our 897Ds to our computers, we shouted out to our bros to tune in and then we started playing around.Initially AirChat used code from 'minimodem' and then from 'soundmodem' sources but after suggestionsfrom the ham radio people involved in ARES, we decided to make it modular to use the Fldigi software,a broadly deployed solution for use with ham radios.Fldigi is controlled by means of XML-RPC calls which can be made even between remote systems(example: One workstation, connected to radio equipments is dedicated to listening to the radio frequenciesconstantly while another system is running AirChat etc.)We are open to feedback about this decision, and we will offer different implementations if they're needed.We ended up with a simple protocol packet: the Lulzpacket. This simple packetcontains information to verify there was no corruption during the transmissionand a random code to pseudo-identify the packet. We define the addresses ofnodes in the net by their ability to decrypt a given packet. Addresses arederived from the hashes of asymmetric encryption keys, Every radio nodedefines its own address by the pair of keys it has generated for itself andthe addresses change if users choose to regenerate their keys. Each node onlycares for what is being received. No hardware identification, no transmitterplain identification. only packets matter. transmissions are anonymous. wheneveran address is needed to reply to a packet, it is encrypted inside the packet.Packets targetting specific addresses are encrypted and they must be decryptedby the private key only the target possesses. Anyone trying to spoof anaddress will not be able to decrypt the packet.Symmetrical encrypted packets are available also and can be used as an extralayer too. General non-encrypted packets also available by default for generalbroadcasting and community discussion. (also for those people on some countrieswhere laws forbid encryption on certain radio frequencies, etc).Disclaimer:we dont give a fucking shit about prohibitions over the use of encryption. fuck you NSA.So the choice is yours. You can use it with encryption or without.Encryption is part of the routing solution approach, non encrypted packets are linkedto general broadcast.(remember that when you are in the middle of a massive crisis you probably wouldn't care much about the stupid FCC)Airchat is our first service which implements this protocol. The current release right now focuses onmessaging and it can be used as a simplistic message board inside a LAN and to rely communicationsbetween radio nodes. It has built-in internet gateway capabilities to offer users access to some basics such as tweeting,retrieving twitter streams, downloading news, community related articles, etc.This gateway can can be used whenever an Airchat running station gains a working internet connection and choose to share it.(this internet access can be anonymized via Tor and the built in proxy support).The first release will be a minimal set of useful functionality, so that we can see what peoplecan do with it and what they would like to be able to do. We will continue to add more features based on your feedback.So far we have played interactive chess games with people at 180 miles away. we have shared picturesand established encrypted low bandwidth digital voice chats. We have 3D printed over distances of 80 miles andtransmitted medical orders at distances of over 100 miles.All without phones or internet access.So how does it feel when you are communicating freely?it feels great...fucking great.Quick StartSoftware SetupFreeBSD 10from a fresh server install:# pkg install make# pkg install perl-5.16.xx# perl install-modules-airchat-freebsd.plthen...# cpanpCPAN Terminal> i Net::Server --skiptestCPAN Terminal> i HTTP::Server::Simple::CGI::PreForkthat will get you the airchat server running,keep in mind installing fldigi requires a graphical environment aka Xso,1: you setup airchat to connect with a remote station running fldigi2: install X and then:# pkg install fldigi-3.xx.xxWindowsInstall Strawberry Perl >= 5.18 (the portable zip version fits well for example)from link: you get perl installed, run in your perl shell:# perl install-modules-airchat-windows.plThen install these modules via the cpanplus terminal:# cpanpCPAN Terminal> i Net::Server --skiptestCPAN Terminal> i HTTP::Server::Simple::CGI::PreFork --skiptestThen install fldigi from: (Debian / tested also on Ubuntu Trusty)Install some needed stuff:# apt-get install make libcpanplus-perl libhttp-server-simple-perl libcrypt-cbc-perl libcrypt-rijndael-perl librpc-xml-perl libxml-feedpp-perl liblwp-protocol-socks-perl libnet-twitter-lite-perl libnet-server-perl(There's an optional and commented "use Net::SSLGlue::LWP" before "use LWP::UserAgent" on (# apt-get install libnet-sslglue-perl),This magically fixes LWP for https requests issues, when for example you want to include feeds only available via proxy to a https address,if you don't have the updated libwww-perl 6.05-2 and liblwp-protocol-https-perl 6.04-2 available from repositories(should be available from the jessie repos thou)) but...We strongly recommend you look to update libwww-perl and liblwp-protocol-https-perl to their latest versions,cause using SSLGlue will eventually break https access to the twitter API.Check if you have updated packages for 'libnet-twitter-lite-perl' because you will need the Twitter API v1.1 perl^ this will install 'HTTP::Server::Simple::CGI::PreFork' (needed) and 'Net::Twitter::Lite::WithAPIv1_1'If you want to install Fldigi on the same machine than Airchat then:# apt-get install fldigi(running fldigi requires a graphical environment)MacOS XGet XCode.Launch XCode and bring up the Preferences panel. Click on the Downloads tab. Click to install the Command Line Tools. Check you got 'make' perl cpanpCPAN Terminal> i Net::Server --skiptestCPAN Terminal> i HTTP::Server::Simple::CGI::PreFork --skiptestGeneral NotesAirchat runs by default on port 8080, connect your browser to (for Example: http://localhost:8080). READ THE CODE.If you find some problem running airchat,please try updating modules and linked libraries.we've found some issues related to outdated implementations.(like '500 Bad arg length for Socket6::unpack_sockaddr_in6, length is 16, should be 28'happening in Ubuntu Precise when enabling the Twitter gateway)Fldigi Setuprun fldigi.skip everything if you want butyou must configure audio devices to make it work with your capture deviceand your audio output device. test if it's working capturing audio signals and playing audio.and that's all.(Note: keep your fldigi updated always)Hardware SetupRadio transceivers usually come with many different interfaces,Each brand deploys different connectors even within their own range of models andsadly there's usually no standard which they follow.We understand that some people have experience using more expensiveradio equipments and will know how to link those transceivers to their computers.As such we will focus on supporting the cheapest and most accesible models which are ableto offer the democratization of this solution worldwide even in the poorest regions.We have considered cheap chinese vhf/uhf fm handheld transceiversavailable worldwide at as low as $40 bucks each.These devices come with a Kenwood 2-pin connector composed by a 2.5mm jack and a 3.5mm one.The 2.5mm jack transports the speaker signal and the 3.5mm serves as the microphone input.We will make a very simple setup using the VOX function on the transceiver to avoid more complex PTT setups.First connect some 2.5mm male to 3.5mm male cable between the speaker output on the radio and themicrophone input on your computer.Then take a stereo 3.5mm male to 3.5mm male cable and cut all of the smallcables inside except the red one (It should be a red cable which is connected to the middle ring of the jack).Only the red cable with the signal coming from the ring of the 3.5mm jack should be connected and nothing else.(neither the tip, nor the ground (ground will be provided by the 2.5mm jack cable)).Once you are done, connect this customised cable to the microphone input on theradio transceiver and then to the speaker output of your computer.Finally, set the frequency everyone will use on the transceiver,Don't forget to enable the VOX function (adjust the sensitivity to medium).Modify the transmission timer to more than 2 minutes, set the radio speaker volume to approx. 50%,tune the microphone sensitivity on your computer to base levels with medium boost (if needed) and finalyset the computer headphones volume to around 70% or so and then you are ready to go. keep testing tillgetting the best audio quality for your transmission.Be careful about the quality of cables and soldering used, test the audio quality until getting themost optimal conditions possible, that will directly improve your transmissions.Some Questions...Audio transmission?Almost every single home in this world has a common AM and/or FM radio.In such cases when not everyone is able to get some cheap radio transceiver,everyone at least will be able to decode packets being transmitted via a pirate FM stations (or AM)AM doesn't suffer the capture effect of FM. so under certain circumstances people could accomodatearound 18 or 20 parallel different packet transmissions on the same bandwidth used for voice transmissions.also it turned out to be cheap and simple to link laptops and radios via the soundcard.simple enough to allow easy-to-make road warrior RF enabled mobile stations.Bandwidth?We traded bandwidth for freedom, or to be more exact we traded bandwidth for freedom, simplicity and low cost.which indeed are the real conditions needed to democratize this solution. so yeah. sorry about thebandwidth but we do not regret it. We will be looking for solutions to this in the future but keep in mind that'freedom, simplicity and low cost' won't be given up.Is 4K video streaming coming soon?no, pics?We love pix. pix support is coming ofc. We have tested image transfers using Google's WebP formatto try conserve bandwidth as much as possible, but the lack of support in several browsershas given us second thoughts. We will looking for further feedback about it.I want to cyber my girlfriend (who lives 20 miles away) without having NSA agents fapping to it, can I use this for it?ofc, man. thou we require your girlfriend to deliver tits or gtfo. (sorry but it's needed to help us on the datamining of frequenciesusage and transmission mode performance raw data through our Hadoop cluster of ARM servers, all those pix will be used for the datalink test..err...derp)What happened to Sabu?He ended up working as a male prostitute for FBI, he usually wears a pinkish silk kimono in the evenings and he resides in Chattanooga.He recently betrayed his male prostitute co-workers cause he was jelly they were getting more attention than him.His sentencing is still being delayed by FBI.Should Molly get on Jabber?Yes.FBI has been going after our bittie$. If you want to help, drop some penniez here:1Kx4wVYBvbL6khNhA3SmJKnT8ZLeJHPBxA^ bitcoins#lulzlabs2014. Anonymous. All Your Base Are Belong To Us.