Andrea Ruggiero

Aka Pupax
Lecco

Articles

Argon - Electronic Class Register

By now every school, mine included, uses an electronic class register to manage grades and the topics of each lesson. Our school used the Argo register by Argo Software SRL. The website wasn’t responsive, so it was awkward to use on a smartphone, and it also lacked some basic features like calculating your grade average. So we decided to develop a small PHP parser that fetched the grades, saved them in a database and calculated the average for the first and second term, and it also sent an email notification whenever it detected a new grade.

The next step was creating a native Android app to access this data more easily. By analysing the official app (written in Cordova and costing €1.99) we discovered there was a JSON API that gave access to this data. At that point writing the app turned out to be child’s play: all it took was writing a service able to read the information and building a modern UI to display it.

Argo Registro on Android: subject averages for the first term and lesson topics

After an initial free closed beta we decided to publish it on the store at a price of €0.99 (compared to the official one’s price, €1.99).

Argon - Registro Elettronico on the Play Store, with screenshots of the orange app

Within a few months we realised that people were interested in the app and, despite the price, many decided to buy it.

This interest allowed us to add several features, among which, the most interesting from a technical point of view, the ability to change the main colour. Orange, however nice it might be, got tiring and heavy in the long run. With the brightness turned up it was truly terrible for your eyes.

And this is exactly where the problems start… We can’t know how much our app ate into the revenue of Argo’s official app but, judging by the effort they put into making the API “secure” and unusable, more than we could have imagined. They started introducing algorithms able to tell their app apart from ours (and from any other unofficial app), temporarily blocking its users. So we decided to copy the headers sent by the official app exactly (even the order in which we sent them). The problem seemed to be solved, until a few weeks later the app stopped working. Argo had decided to introduce a new algorithm to encrypt the key used to access the data.

Decompiled Java code of the algorithm Argo used to encrypt the API access key

Figuring out this algorithm from a compiled and obfuscated app was not easy at all. Once we released the update, the app went back to working for about a year. The year after, in fact, Argo decided to release its own app for free and to remove this strange and incomprehensible encryption algorithm.
This last update made us think that the only purpose of the encryption algorithm was solely to hold on to the users of their own app, but to this day we still can’t justify the technical and financial effort. I don’t think the users of our app reached even 1% of theirs. What was the point of building a system like that?

We even wrote to Argo asking for an explanation about all this, but they didn’t even bother to reply. Then again, this is Italy.. what can you expect

Update 03/02/2019

We’ve decided to make the app free. The little time we have doesn’t allow us to keep updating and maintaining the official app. Probably, building on the experience gained with React Native (from the Metodica-Mente app), we’ll create a new version for both platforms.