Diskuze: Bakaláři API
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 32 zpráv z 32.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Taky jsem si chtěl napsat aplikaci pro bakaláře, ale nikde jsem nenašel nic použitelného. Díky za zmínku o tomhle API, podívám se na to Taky to zkusím a napíšu ti, jak to bude fungovat mě.
Ahoj, nečekal bych, že by to někdo někdy použil
Je to úplně jednoduché, není to vůbec skutečné API, funguje to tak, že
se posílají requesty na server a tváří se to jako uživatel, takže to
jakoby posílá obsah formulářů, načítá HTML a to se pokouší
parsovat.
To ale má tu masivní nevýhodu, že to funguje většinou jen pro jednu verzi
webové aplikace, tím víc pro takovou prasárnu jako jsou bakaláři.
To je také důvod, proč to je jen napůl rozpracovaná knihovna, v momentě,
kdy se mi tohle podařilo rozchodit a chtěl jsem na tom postavit aplikaci se
změnila verze bakalářů a než abych pro každou verzi přepisoval parser
jsem to vzdal.
Proč? Je to jednoduché, bakaláři nemají veřejně přístupné API.
Teoreticky bys mohl udělat to, že si vezmeš kód, co tě přihlásí a dá ti
platnou session (věř mi, byl docela oříšek přijít na to, co poslat za
data) a potom napsat parser. To je ale špatný nápad, nedělej to.
Co můžeš tedy dělat?
I kdyby se ti nakrásně podařilo rozběhat to skutečné API, oni mohou
pořád prostě změnit verzi.
Konečné doporučení: Kašli na to.
Ahoj, zajímavé, že dost lidí má podobné nápady.
My jsme něco zkoušeli přepsat do C# podle tohoto návrhu https://github.com/…ter/index.js a funguje to výborně.
Dostaneme klasicky XML se všema informacema (rozvrh apod.)
Vyjádření oddělení vývoje systému Bakaláři k tomuto tématu:
„Oficiální REST API k aplikaci Bakaláři existuje. Za předpokladu, že
vytváříte nějakou nadstavbu pro svou školu, je možné Vám ho poskytnou.
Je ale nutné, aby nás kontaktoval někdo ze školy s požadavkem.
Nepředpokládám, že API potřebuje pro tvorbu komerční nadstavby pro
aplikaci. Využití API je v takovém případě zpoplatněné.“
Ha, docela by mě zajímalo, jak zpoplatňují to API. Protože Bakaláři AFAIK běží na serveru školy .
Autoři systému bakalari, by spíše měli platit za to, že to někdo používá.. Ne ještě zpoplatnovat api
Odposlouchat provoz by asi nic nepřineslo. Naše škola bohužel přešla
minulý měsíc na HTTPS, takže podívat se co se tam děje doopravdy už
nemůžu, ale vím že dřív se párkrát stalo, že aplikace vyhodila chybu
že používáme starý web (nebo tak něco), v té době jsme sice běželi
ještě na tom dost starém webovém UI, ale vůbec bych se nedivil, kdyby ta
aplikace fungovala úplně stejně jako ta tvoje knihovna, obzvlášť když se
do appky zadávala URL login stránky bakalářů.
Zase když říkají, že maj API, tak tam asi nějaké bude, ale otázka je
jestli je přímo implementované v každém serveru nebo se dá doinstalovat,
případně jestli je jen v těch nejnovějších verzích.
Další věc je, že zatímco dřív běželi bakaláři na serveru u nás ve
škole, tak teď je jen udělaný tunel, a ačkoliv se to pořád tváří že
server je u nás, tak to ve skutečnosti běží někde u nich. Takže třeba to
API funguje jenom na školy hostované u nich.
Ještě bych se rád zeptal, jestli nemáte větší znalosti ohledně legality dekompilace apk souboru? Něco o tom píšou Piráti, ale nevím, jestli se ještě vejdu do vymezených hranic... Zdrojový kód bych chtěl zkoumat za účelem zjištění adresy již dříve zmiňovaného API bez nutnosti kontaktovat správce školní sítě.
Já třeba analyzoval protokol Strava.cz i bez dekompilace, s https. Je to docela jednoduché, na PC si nainstaluješ Fiddler, zapneš ho jako proxy, vygeneruješ certifikát pro android. Na android nainstaluješ tento certifikát a připojíš se na stejnou síť s tím, že tam dáš rozšířené možnosti a nastavíš tam jako proxy adresu PC s fiddlerem + port proxy
Nebo se prostě díváš do network tabu v developer tools v prohlížeči
Vít Kološ myslím, že bakaláři mají přímo v licenci, že to nesmíš dekompilovat. Ale jestli to nebudeš používat ke komerčním účelům, zřejmě to nikdo řešit nebude a maximálně to bude přestupek.
S webem Bakalářů problém není – ten se dá odposlouchávat různě (i přes developer tools). Horší je to však s aplikací. Tyto requesty totiž nechtějí putovat přes Fiddler. Zkoušel jsem i aplikaci Drony, ale nemůžu přijít na to, jak s její pomocí získat plnou url adresu dotazu.
Je tu možnost, při prvním přihlášení v aplikaci se to zeptá, jestli důvěřuješ tomu certifikátu, tudíž je tam možnost podstrčit vlastní a provoz dešifrovat. Ale pravda je, že bych to moc nehrotil a prostě to decompiloval
A také je pravda, že i když provoz dešifruješ, dostaneš adresu, která má v jednom z parametrů hash (SHA-512). Pokud aplikaci nedekompiluješ, nemáš šanci zjisti, jakým způsobem hash vznikl (z čeho byl sestaven) – až na metodu pokus-omyl.
No jako.. rozhodně nemám webovou verzi s licencí takže.. pššt a nepiš mi rozhodně PM
Nie je mi celkom jasne prečo im neskúsite napísať a poprosiť ich o prístup k API. Myslím ze je to rozumnejšie ako lámať ich zabezpečenie ...
Jde mi pouze o porozumění programu a API. Jakmile ho budu chtít používat
v rámci školního bota, kontaktuji správce školní sítě, abych měl k
datovému konektoru oprávněný přístup.
Neaktivní uživatel brutal force bych tomu neříkal.
Ondřej Langr (andysekcze) aha?
Dominik Gavrecký Tobě je směřována tato zpráva. Lámat zabezpečení není
třeba.
Jsem zároveň v kontaktu s jejich testerem, takže nemám problém s nimi
komunikovat o svých záměrech.
Tak čistě vzato by sis to mohl rozebrat nebo minimálně testovat u sebe třeba na virtuálce
Předpokládám, že rozebrat = dekompilovat.
Nechápu, co myslíš tím testováním.
Pokud nám jde o zjištění adresy API, jsou tři způsoby:
Vy jste se tu nějak hodně bavili, co jsem tu nebyl. Nakonec jsem použil Node.js balíček, který zde někdo ukazoval. Alespoň jsem se naučil pracovat s Node.js, je to pěkný.
Dokonce se dá ten balíček implementovat jako normální JS na straně klienta. Celé (ne moc elegantní) řešení najdete na becko-odkazy.wz.cz/bakapi.zip.
Ahoj, nečekal jsem, že lidi budou hvězdičkovat můj repozitář, tak jsem
se koukal a narazil na tento thread
Pokud by měl někdo zájem, tak jsem schopen poskytnout i výpis z
burpsuite.
Celé to API běží vždy na login.aspx, takže stačí vědět tu základní URL a odkaz na API už najdeš. Určitě bych dal najevo správci systému / firmě, pokud chceš nějak výrazně přistupovat k API, by pak mohli změnit ten hash
Ještě pokud by ses chtěl vrhnout na screen-scraping jako takový, tak se můžeš ještě podívat na tohle:
čau dokáže to někdo udělat ?
Př.: vstup: +, 4
výstup: ++++
+++
++
+
Jakou odpověď čekáš, "ano"? Když to dáš do nového vlákna a ne k diskuzi o Bakalářích a pošleš co máš již hotového a co přesně ti nejde, tak ti tu určitě někdo pomůže.
Vím, jakým způsobem tvé API funguje, proto bych se raději přiklonil k
vlastní "bezpečnější" varantě (alespoň mám přehled o tom, co se s
přihlašovacími údaji děje).
Firma mi hash asi nezmění, maximálně jsou schopni zpřístupnit nějaký
jednodušší přístup k API (ve stylu skolar.duong.cz/api) vše je to však podmíněno
kontaktováním vedení školy, což zatím neplánuji.
Pokud to ještě někoho zajíma, tak tady:
https://github.com/…bakalari-api
Ahoj Davide, narazil jsem na tvůj https://skolar.docs.apiary.io/ . Řeším právě teď stejný problém. V čechách není školní IS s normálním API. Všichni dodavatelé si syslí všechny funkce pro sebe (i nesmysly jako kalendář, emaily, formuláře, testy), ale kvalitou z doby kamenné. Naše škola jede na G-Suite, ale otroci (učitelé) důležité záznamy ručně přepisují do skolaonline.
Kam jsi se s tím dostal? Viděl jsem, že jsi zatím zpracoval fetch příkazy. Zkoušel jsi napsat nějakou push funkci? Je to opravdu předem prohraná bitva?
Zobrazeno 32 zpráv z 32.