Tunneling Wikipedia through WhatsApp to (maybe?) get around WiFi restrictions
alexanderell.is
alexanderell.is
My comment is about something else: net neutrality, as someone already mentioned.
I was teaching English in Laos for school kids. I was amazed that some of their families struggle with providing (nutritious enough) food for their children, yet, everyone had smartphones with always-on 4G,even in the countryside - however, no WiFi almost anywhere.
The brains of these kids are like sponge. They WANT to learn, they're shy, but they want to speak, to read, to practice English. They also like to (constantly) sing (something that is badly missing from western schools), so at one point I referred them to "simple English Wikipedia", where they can research their favorite singers with easy-to-process articles.
Empty stares.
"so instead of Wikipedia.org, you go to simple.wikipedia.org."
Still nothing.
I had to realize later that even if they knew that this free, always available encyclopedia exists, it's NOT included in their 4G subscription.
Yes, you guessed correctly: those subscriptions are sponsored by big US / Chinese corps, so all these kids had were Facebook, Instagram, WhatsApp and TikTok, everything else costs ~10$ which is days worth of meals for whole families there.
It seems mobile wikipedia is zero-rated in many countries, but by no means all, as indicated by the table on this page: https://en.wikipedia.org/wiki/Zero-rating
Though many countries don't have any info in the above table (including Laos), and I think the "Zero Wikipedia" column may be obsolete as that project was apparently shut down in 2018.
>Kiwix is an offline reader for online content like Wikipedia, Project Gutenberg, or TED Talks. It makes knowledge available to people with no or limited internet access. The software as well as the content is free to use for anyone.
Also from your comment, I feel that I definitely fail to communicate what the actual problem is.
The problem is NOT that the kids (and their teachers) cannot access certain sites. Although they might not be able to afford it, if they want.
The problem is that they DON'T KNOW that internet sites exist. For a kid who was born into the era where a magical handheld thing can show his friends' life and funny videos, a "website" means nothing. I even didn't want to write handheld television screen, because most of them haven't even seen a television before.
They don't know that wikipedia exists at all.
Another anecdote (maybe I should summarize it in a post somewhere) is that the teachers were using Oxford Press's Headway [1] books. Excellent series, many of us in Europe learned English from these books. It improves your vocabulary a lot, teaches you words like "coin", "train conductor", "mp3 player" and so on.
Now let's see what does NOT exist in Laos, at all: - mp3 players - TRAINS!!! - and, well, coins (Lao Kips start at 1.000 bills (10¢) IIRC and last time coins were issued was 40years ago. In the 2mo I stayed there, never saw a coin, nor the kids I was teaching).
It's really a different world, it took me some time to even start my head wrap around it
[1] https://elt.oup.com/student/headway/?cc=nl&selLanguage=en
Facebook tried the same in India but was quickly shutdown: https://www.wired.com/2016/02/facebooks-free-basics-app-is-n...
But then you read about the success of Facebook in emerging markets in Africa and it becomes even murkier. Basics has caused Facebook to become utterly dominant in many African countries[0], and that’s precisely what net neutrality tries to prevent. That’s so much power. I don’t know what the right answer is.
[0] https://www.theguardian.com/technology/2022/jan/20/facebook-...
Insofar as the short term success of their users is considered, it's an unequivocal yes. There are an unbelievable number of African businesses that exist only because of the platform.
As you correctly call out, it's the longer timelines that make it a dubious proposition.
Less fortunate people, whose (only?) entertainment is TikTok/YouTube/Facebook constantly on their phones. Well, Claro (cell provider with one of the best 3G/4G coverage on Galapagos) greets you with a Facebook(!!!) page explaining that Facebook&sister apps are brought to you for free.
There is zero incentive from any sides to fix this situation. The provider is not interested in ditching Meta, Meta is not interested in promoting anything else, and unfortunately most probably one of them (or both) already paid some gobernadores to shut up and keep the status quo of pointing people to ads, ads, and more ads.
”AT&T is subjecting our kids to blasphemy” is a real PR problem in many countries
> proxy
These are solutions for ME and YOU when we are there as tourists (if we really want to chop off that $10 from our travel budget). Probably not a solution for people who have never heard of websites like Wikipedia.
vpns have "set and forget" autoconnect functionality
it's quite common practice for the more liberal East. how do you think they access the wider internet otherwise?
Why are you then comparing to rich people in China where VPN is commodity?
I don't think any of those four products includes free VPN. You'd need to tunnel Wikipedia through WhatsApp instead, or something.
I don't think a telecoms company or phone manufacturer could reliably restrict the ever changing landscape of internet access without affecting usability and social media consumption
I don't think they are using customised iPhones where perhaps such limits may be imposed
I don't think any determined Laotian kid would consider a free vpn an obstacle
I don't think it's unreasonable to say where there's a will there's a way
I don't think it's an impossible feat
Plenty of Android phones don't come with Google preinstalled.
> thus cache/AMP access to Wikipedia
Even if you have Google on your phone, that doesn't mean you won't need a paid data plan to actually use it.
> I don't think a telecoms company or phone manufacturer could reliably restrict the ever changing landscape of internet access without affecting usability and social media consumption
But that's the point? If you want better usability, you're expected to pay for full internet access.
Right now it's unreal to even think about VPNs and proxies and customized phones etc. It's not a technical obstacle for that Lao kid, it's a different universe, they never even heard of, nor their peers, parents, teachers, or anyone in their surroundings.
They obviously charge for anything that is no whitelisted
And the IP of the VPN all the traffic would pass through is definetly not whitelisted...
If they allow Google you could MAYBE host a VPN on google cloud but besides that there is absolutely no way this changes anything
The flight crew (BA) knew what's up. They specifically warned us to check which package we were getting, because evidently they get a lot of complaints when people buy the message-only bundle and are surprised that nothing works.
Singapore gave out free passes for single devices last time I flew with them. It was possible to rotate MAC addresses by forgetting the connection and then re-joining. The connection was quite good, you could watch YouTube in potato resolution. It's quite fun to chat to people and send them photos out of the window.
The other added benefit is that all my other devices already have my AP's wifi creds and will connect to it automatically.
I use my Samsung S10 for exactly this as it has multiple radios that allows connecting to wifi and hotspotting to share that connection with other devices. Great for Chromecasting.
Also works well if your 2nd device doesn’t support captive portals (Chromecast, Tesla car).
It's quite frustrating as it's ideal on paper but they fall on the last mile to make it practically open.
It really is. Where I live when you run into the limit of your data package, your network is usually throttled to 100kbps. I changed my plan to just 3GB per month because I was staying at home most of the time due to the pandemic. Now I'm pretty much back to my old routines, but I didn't change my plan yet. I have a 45 minute train commute and 3GB can be used up in a few days just browsing reddit and loading news sites.
Anyway, google search, hacker news and facetime audio work as normal at 100kbps. Google maps works with a bit of patience. Virtually nothing else will load. 5 years ago most text-based things worked at this speed albeit slowly. Now everything is so bloated and so much content will not load show until fonts and things are loaded.
The connection was pretty damn good, considering I was somewhere over the Atlantic. It was shocking to me how much more enjoyable the flight was, makes me wonder how hooked I am to being connected. (I also had extra legroom and an empty seat next to me though.)
The only issues ended up being that 1) WhatsApp messages are limited to 1600 characters
Concidentally, that's not much bigger than the MTU of standard Ethernet. I don't know how "transparent" the data channel is with respect to non-ASCII (and probably Unicode), but if you use one of the various binary-to-text encodings that exist, you could probably implement Ethernet over WhatsApp. ;-)
In my country we have a telecom service provider law, which states, among other things:
ARTICLE 57. - Network neutrality. Prohibitions. Service Providers shall not:
a) Block, interfere, discriminate, hinder, degrade or restrict the use, sending, reception, offering or access to any content, application, service or protocol except by court order or explicit request of the user.
The problem is always going to be bandwidth as doing any kind of communication across systems optimized for human text will throttle you: you'll trigger spam warnings, rate limits, etc - and the modern web is extremely demanding
My first priority is to get an LED blinking, and keep it blinking. Every other feature is less important.
No, needs work.
Part 1 - No system can be 100%, then you hit the Two Generals' Problem..
Part 2 - Just because you can send a bit, that doesn't mean you can send 8 in a row. So you write a protocol, then they block that protocol, you adapt, they adapt etc etc
Maybe something like ~ any system where you have any control over information flow someone has written a protocol to send porn over it.
That's just jumping of Rule 34, you could change porn to something else
For airport wifi I use a DNS tunnel or simple MAC rotation, for in-flight... well if they could make it quality someday maybe but every time I've shelled out like 50 bucks for an hour or whatever the ripoff deal is it doesn't work well enough to do anything. I hear the DNS tunnel method does work on some of them though, I should try that someday.
As a side note those in-flight screens in the backs of seats are interesting in this 'why the hell would they do this' kind of way. I managed to crash one when I noticed it had a USB port (bad idea on their part)... It was super easy, I tried to read the USB key but then just removed it when it was accessing the thing and the whole thing just went down. Apparently it was running x-windows on some type of *nix because I could see that default background with an X for the cursor. They should really get rid of those because I'm sure that they could be misused for nefarious ends.
https://en.wikipedia.org/wiki/Wikipedia:Database_download
https://download.kiwix.org/zim/
Some other ways to search and read Wikipedia offline:
XOWA: (S: XOWA)
WikiTaxi: S: WikiTaxi (for Windows)
aarddict: S: Aard Dictionary
BzReader: S: BzReader and MzReader (for Windows)
Selected Wikipedia articles as a printed document: Help:Printing
Wiki as E-Book: S: E-book
WikiFilter: S: WikiFilter
Wikipedia on rockbox: S: Wikiviewer for Rockbox“the basic free accounts I was using rate-limit to ~1QPS” That is 400kbit/s. Can we have multiple accounts? 40 accounts would give us a theoretical maximum speed of 16Mbit/. Would probably closer to 10Mbit/s in real life, enough to watch movies.
Example library for sending/receiving WhatsApp text: https://github.com/open-wa/wa-automate-python
Once you do that, you can tunnel into your VPS through the airlines open port or SSH into the machine. If you create a SOCKS5 proxy, then all traffic in your browser will tunnel through the VPS.
Haven't tried this, but just a thought.
It worked, for a bit. They closed the default port and I could not spend time on a dedicated public internet terminals to " test" open ports so yeah, I have done exactly that.
Used foxyproxy btw
HAProxy is also really useful for this purpose, I dare say more-so. For my use-case it solved this problem: "Using 1 port on the remote server (port 443), how can I serve HTTPS (serve a website) and SSH or SOCKS5 (use the server as a proxy)?". HAProxy was good for the task. It could be used to tunnel SSH through HTTPS too, in the case where a corp firewall is using DPI to block standard SSH. What I'm not sure of though... can it tunnel SSH through HTTPS, and, serve a website at the same time? That's a question for the reader.
The idea of serving a website at the same time was for the purpose of providing a plausible reason for traffic exists from that server. Like, you know, if the admin's see traffic on 443 from an ip/domain with no website, that's got to be a magnitude of suspicion higher than an ip/domain with an actual website being served on it.
Certain ports sometimes have laxer filtering/restrictions, for example 53, 80, and 443 - but you already know these in advance.
You aren't going to find out that port 18741 magically gets you an unrestricted internet connection.
1. Setting my useragent to iOS Safari and trying to download the Gogo Player app to watch one of the free films. If you have Android this just serves the APK but on iOS it just has to dump you to the App Store. This seemed to give me a good half hour of connectivity.
2. I went on the live chat and asked for a free connection. The agent gave it to me.
If it's DNS based, there should be simpler workarounds, so I guess it's just IP based?
While this doesn't directly address Delta's captive portal implementation, on many TP-Link Omada wireless APs, there is a feature that allows you to create a captive portal, and when doing this, you can either whitelist a website by its hostname or by its IP address. I was curious as to how it was filtering by hostname, so I ran a few DNS queries, which all resolved normally, indicating that it wasn't a DNS-based whitelist. Seeing as the whitelisting also worked over HTTPS, I assumed it was TLS-SNI. It turns out that anyone can whitelist any IP address by visiting any website while sending the SNI of a whitelisted hostname. This caused the AP's software to create a firewall rule allowing access to the IP address associated with the spoofed SNI. After doing this, it was then possible to connect to any website hosted on that IP address with any SNI hostname.
There are lots of possible ways to identify WhatsApp traffic, but I never had a chance to figure out what they were really doing. During that time period, if I was on a flight, I was usually with my young child and it's hard to keep focus for debugging networking on a plane, anyway. What I saw when I was looking was more like what joshvm describes elsewhere. The messaging only plans seem to allow most low bandwidth connections, with high latency, but they'll actively supress some things, and others stall beyond some threshold; sometimes you could get a couple media files to transfer, but then it would stop, etc. WhatsApp was engineered to work with the world's terrible networks, so it will usually work ok for messaging as long as packets get through eventually; connection and ping timeouts are long on client and server, because sometimes it takes a lot of seconds. If DNS doesn't work, that's fine too. Multimedia would usually retry and resume enough to work even if connections didn't last long, so I'd guess there was something actively supressing that, but I don't really know.
FWIW, chat isn't TLS, so SNI isn't the answer there, although at least in the past, the protocol was very identifyable. Been gone for a while and don't regularly tcpdump my connections to WA anymore, so I don't know if that changed though. Multimedia is https, and probably has SNI, although that used to vary by platform.
And you say there's no segregation between chat and media - and I trust your out of date info more than my completely made up guesses.
You also need to make sure the DNS server will only resolve the domains you want it to, because if you allow unfiltered dns requests to arbitrary domains, anyone can then tunnel their traffic over DNS, as another comment on this thread pointed out.
I would also assume that Whatsapp might change the servers used with updates of the app. How would Delta deal with that? Just wait for the complaints to come in?
Since on a flight it's likely everyone will use the same resolver on the ground somewhere in Delta's infrastructure a simple mechanism to resolve the IP periodically and update a whitelist (or to cache one VIP location and always return that) might work. Alternatively, as other commenters have suggested, it'd be better to identify traffic with SNI or other profiling.
Updates to the app almost certainly won't change the address it connects to.
Well, they have before. There's four generations of hostnames that were used before g. But g seems likely to work for quite a while.
also just in case someone is wondering, a more ergonomic solution specifically for reading wikipedia on a plane is https://kiwix.org
Google used to have a way to ask for searches via SMS a while ago: https://www.youtube.com/watch?v=J937N9m-XtE
But "tunneling" to me implies some transparent layer allowing you to browse Wikipedia via the same way of interaction.
While obviously not super convenient, it'd be interesting to type commands and get results.
Of course any interactive terminal wouldn't work, but for simple commands, executing scripts and seeing logs etc. this should work.
https://www.fortinet.com/resources/cyberglossary/dpi-deep-pa...
take a screenshot of the website and send it back as a compressed base64 text or what ever will produce smallest result
then decode that image from the text on your phone
But OP method has lesser moving parts and more easily reproducible if coding is not the barrier.
[1] https://abishekmuthian.com/send-and-receive-whatsapp-message...
Also, why not construct a Whatsapp to HTTP gateway, since pictures and other binary data can be transformed with ease into text by something like base64 encoding. Sure, it would still not be practical, but it would be a better proof of concept.
Then we could learn anything we needed.
IM, Mail, Text web, ebook reading...
In my opinion, just pay for the service. Satellite internet systems are not cheap to stand up or operate.
But it's hard for me to celebrate someone whose motivation seems to be that they are simply too cheap to pay for something that other, more honest, people are willing to pay for. In this case, it probably doesn't affect anyone else if the author only downloads a few articles, but in general, if internet bandwidth on an airplane is a limited resource, then using large amounts up in this way to the detriment of others would just be stealing.