# Reverse engineering [Campus UGA](https://app-campus.univ-grenoble-alpes.fr/web/)
## Login
Le MdP est codé avec l'algo "AES128 CBC PKCS7", la clé `jfkgltshGD6_\"hrj` et le vecteur d'initialisation `fgghjhgkdthykhjg`^[C'est absolument pas un dev qui a tapé sur son clavier au hasard] (exprimé·es en binaire ASCII). Je ne sais pas à quoi sert ce chiffrement vu que la clé est unique et publique...
```bash
xh 'https://app-campus.univ-grenoble-alpes.fr/api/auth/login' \
Accept:application/json \
DeviceId:null \
DeviceVersion:20100101 \
DeviceOs:Web \
'DeviceManufacturer;' \
'DeviceModel;' \
X-App-version:1.11.0 \
etab=UGA username=onghenae password="$PW"
```
```json
{
"userId":"onghenae",
"directory":"TRIODE",
"nom":"Onghena",
"prenom":"Edgar",
"email":"Edgar.Onghena@etu.univ-grenoble-alpes.fr",
"genre":"MALE",
"nationalite":"FRENCH",
"annee":"L2",
"etablissement":"UGA",
"filiere":"GRENOBLE - INGENIEUR ECOLE POLYTECH SPECIALITE INFORMATIQUE - ANNEE 3",
"tel":"[REDACTED STRING]",
"rights":"USER",
"role":{
"key":"USER",
"rights":[
"canConnect",
"canExpandSearchOnMapWithOSM",
"canChangeThemeColor",
"canSeeDiagnostics",
"canSearchOnMap",
"canSeeMapTab",
"canChangeTimetableColor",
"canChangeTimetableStartDate",
"canSeeTimetableTab",
"canHideEventsFromTimetable",
"canVote",
"canSeeContactsTab",
"canSeeEventsTab",
"canBookEvent",
"canUseTimetableAssistance",
"canSeeServicesTab",
"canSwitchToDebugMode",
"canSearchContact",
"canEditProfile",
"canSeeMailLink"
]
},
"modificationEmailEnAttente":false,
"restrictedToSources":[
],
"tester":false,
"canFindAllVets":false,
"vetExp":null,
"customEtabVet":null,
"customEtabVetMap":null,
"preferences":{
"mailPublishNotif":false,
"pushPublishNotif":true,
"mailInfoNotif":false,
"pushInfoNotif":true,
"preferredCategories":[
],
"siteGeographique":{
"title":"Grenoble",
"lat":45.19230550239402,
"lng":5.7708048820495605,
"shortId":"GRE",
"htmlBgColor":"#53a2a6",
"radius":55.0
},
"mailAdeNotif":null,
"pushAdeNotif":null
},
"sessionId":"[REDACTED UUID]",
"cgu":"CGU_READ",
"biperId":"[REDACTED INT]",
"roles":[
{
"type":"ETUDIANT",
"user_id":"[REDACTED INT (n° étudiant)]",
"helico_id":null,
"etab":"UGA",
"mailUrl":"https://webmail.etu.univ-grenoble-alpes.fr/mail",
"servicesInfos":{
"bu":{
"borrowing":[
],
"bus":[
"BU Droit Lettres",
"BU Valence Latour-Maubourg",
"Bib. DSDA Valence Briffaut",
"Bib. DSDA Valence Rabelais",
"Bib. IUT-IAE de Valence",
"Bibliothèque de l'Institut d'urbanisme et de géographie alpine",
"Bibliothèque des Langues",
"Bibliothèque universitaire Joseph-Fourier",
"Bibliothèque universitaire Médecine Pharmacie",
"Bibliothèque universitaire Professorat éducation Bonneville",
"Bibliothèque universitaire Professorat éducation Chambéry",
"Bibliothèque universitaire Professorat éducation Grenoble",
"Bibliothèque universitaire Professorat éducation Valence",
"Centre De Ressources Olivier de Serres - Pradel (Ardèche)",
"Ense3 GreEn-ER - Médiathèque",
"Fac de Droit",
"Faculté d'Economie de Grenoble",
"G@el",
"GIPSA-Lab bibliothèque mutualisée (site ENSE3 Ampère)",
"Grenoble IAE",
"Génie Industriel - bibliothèque",
"IREM - bibliothèque",
"IUT1 - Site Saint-Martin-d'Hères - bibliothèque",
"Institut Fourier - bibliothèque",
"Institut de la Communication et des médias",
"L'R DLST",
"PAGORA - CTP Bibliothèque Anselme-Payen",
"Phelma - bibliothèque",
"UFR Arts et Sciences humaines",
"UFR LLASIC BULLES"
],
"footers":[
"Rendez-vous sur Beluga (Bibliothèque En Ligne UGA, sur https://beluga.univ-grenoble-alpes.fr) pour gérer vos prêts, effectuer des recherches, et bien plus!"
],
"hasError":false
},
"print":{
"buyTicketsUrl":"https://impression.univ-grenoble-alpes.fr/",
"remaining":18.1227,
"quota":0.0,
"unit":"EURO",
"serverType":"PAPERCUT"
},
"pool":{
"remaining":null,
"onlineTicketing":null,
"soldes":[
]
},
"accessControl":{
"active":false
},
"opposition":{
"oppositionSteps":[
],
"canRequestOpposition":true
},
"izly":{
"activated":null,
"activationUrl":null
}
},
"vetList":[
],
"vetListWithoutInteraction":[
],
"vetMap":{
}
}
],
"photo":null,
"availableCategories":{
"actu":"Actualités",
"spor":"Sports",
"sant":"Santé / Bien être",
"spec":"Spectacle / Concert",
"expo":"Exposition / Patrimoine",
"cine":"Cinéma / Projection",
"conf":"Conférence / Débat",
"fest":"Animation / Festival"
},
"current_timestamp":1658139510191,
"cms_infos":{
"anonymizedCsn":"80...1904",
"active":true,
"etab":"UGA",
"userId":"[REDACTED INT]",
"euroUrl":"http://esc.gg/[REDACTED UUID]",
"unicampusAvailable":true,
"waitingCardReleaseCode":null
},
"savedAdeRsc":false,
"diagnosticsAvailable":null,
"adeManager":false
}
```
On s'intéresse à `sessionId` qui devra être passé en entête HTTP dans toutes les requêtes futures (c.f. ci-dessous).
## Events
```bash
xh 'https://app-campus.univ-grenoble-alpes.fr/api/events-manager/event' \
Accept:application/json \
DeviceId:null \
DeviceVersion:20100101 \
DeviceOs:Web \
'DeviceManufacturer;' \
'DeviceModel;' \
X-App-version:1.11.0 \
session:[session UUID]
```
```json
[
{
"eventId": "HE-1641305178080",
"title": "Escape juillet 2022 - Sport et fraîcheur !",
"description": "Escape est un lieu de vie étudiant situé dans le quartier du polygone scientifique de Grenoble.\n\nEscape est ouvert en juin et juillet selon ces horaires d'ouverture: \n\n- En juin, ouvert du lundi au vendredi de 17h à 22h\nmais fermé exceptionnellement ces jours : lundi 27 juin\n\n- En Juillet, ouvert le lundi 9h30-12h30/13h30-17h30 -les mardis et mercredis de 14h à 22h\n\nLa participation aux activités d’Escape et l’accès au lieu sont gratuits pour tous les étudiants (quel que soit leur cursus).\n\nProgramme de juin à juillet 2022\n\nBadminton\n• Les mardis de 18h à 20h\n\nVolley \n• Les mardis de 20h à 22h \n\nBeach Volley \n• Les mercredis de 19h à 22h\n\nBasket\n• Les mercredis de 18h à 20h\n\nFutsal\n• Les mercredis de 20h à 22h\n\nPing-Pong\n• En accès libre pendant les horaires d'ouverture\n\nEt aussi, pendant les heures d'ouverture, en libre accès : \"ESCAPE sur mer\" (jeux d'eau, transats, parasols, dans le jardin)\n\nInfos pratiques : \nContact : Claire Barabé\nMail : escape@crous-grenoble.fr\nESCAPE\n64 Avenue des Martyrs\n38000 Grenoble\nTram B arrêt Marie-Louise Paris CEA\n\nEn savoir plus : https://www.crous-grenoble.fr/culture-sport-animation/escape/",
"link": null,
"imageUrl": "https://app-campus.univ-grenoble-alpes.fr/web/imgs/event_313066/cover.jpg?ts=1656316551870",
"dateFrom": 1656626400000,
"dateTo": 1659218400000,
"creationDate": 1641305178000,
"publicationDate": 1656666060000,
"notificationSilent": true,
"notificationTitle": null,
"notificationBody": null,
"place": {
"address": "62 Avenue des Martyrs, 38000, Grenoble, Isère, Auvergne-Rhône-Alpes, FRA",
"title": "Escape",
"position": {
"lat": 45.2004915587059,
"lng": 5.70717751979828
}
},
"counts": null,
"booking": null,
"published": true,
"scheduled": null,
"source": "EVT-UGA",
"restriction": "ETUDIANT",
"categories": [
"Animation / Festival",
"Sports",
"Gratuit"
],
"siteGeographique": {
"title": "Grenoble",
"lat": 45.19230550239402,
"lng": 5.7708048820495605,
"shortId": "GRE",
"htmlBgColor": "#53a2a6",
"radius": 55.0
}
},
...
```
## Timetable
`/api/timetable/getLastFromResources`