sh4dowb/eba-canli-ders-crossplatform

yeni güncelleme - örnek veri gerekli

sh4dowb opened this issue · 12 comments

e2bd0a5 'de yaptığım güncelleme çalışıyor mu bilmiyorum. görünüşe göre kod değiştirilmiş, &pwd= artık URL'nin içinde değil ayrı veriliyor (meeting.password)
(https://forum.pardus.org.tr/t/eba-canli-derse-giremiyorum/16396/3)

eba'ya giriş yapıp örnek bir "meeting" objesi atabilecek var mı?

Ara tatil olduğundan dolayı muhtemelen iki hafta sonra ancak çözülebilir. @Afacanc38 'in attığı görüntüde &pwd=.. vardı adreste ama o biraz garip şifre ile ilgili bir sorun yok muhtemelen -yerleri değişti sanırım ya da direk tek url olarak geliyor meetingjoinurl gibi bi placeholder vardı çünkü en son baktığımda-. Tatilden sonra bizim hocalar açarsa ebadan bakıp atabilirim.

image

{
	"operationMessage":"success",
	"operationCode":200,
	"success":true,
	"liveLessonInfo":
		{
			"frontEndUrl":"http://uygulama-ebaders.eba.gov.tr/ders/FrontEndService",
			"siteUrl":"http://ders.eba.gov.tr/ders",
			"adesUrl":"https://akademikdestek.eba.gov.tr/adestek/EBASSOLogin?from=ebaders",
			"redirectUrl":"https://www.eba.gov.tr",
			"name":"asd",
			"surname":"dsa",
			"serverTime":1606197239388,
			"studyTime":
				{
					"id":"studyid",
					"studyTimeId":"startid",
					"studyTimeTitle":"fizik",
					"studyTimeCurrNodeId":"nodeid",
					"ownerId":"ogretmen id",
					"ownerName":"ogretmen isim",
					"deleted":false,
					"term":"2020-2021",
					"schoolId":"okul id",
					"classroom":11,
					"startDate":1606198200000,
					"endDate":1606200000000,
					"createDate":1606164750000,
					"typeId":2,
					"courseName":"Fizik",
					"meetingId":"",
					"meetingPassword":"",
					"meetingDuration":0,
					"meetingStartUrl":"",
					"meetingJoinUrl":"",
					"studentId":"ogrenci id",
					"registrantId":null,
					"registrantJoinUrl":null,
					"modifiedDate":null,
					"courseCode":"fizy",
					"currNodeName":"Kuvvet ve Hareket"
				},
			"schoolName":"okul ad",
			"userRole":null,
			"adesUser":true
	}
}

Livemiddleware'de başlamadan önce böyle dönüyor registrantjoin olmadan (registrant ile ilgili bir sıkıntı yok başladıktan sonra da gelmedi)
Ayrıca ebanın büyük bir hatası var token olarak ne geliyor zannedersiniz start requestinde token bu geldi:

TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0OyBydjo4My4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzgzLjAxNjA2MTk4NDAxMTM5

base64 decode edelim

Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.01606198401139 cidden mi
firefox ta değil sadece chrome ve chromium da aynı
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.361606199749470

sorun bu, ondan ötürü invalid meeting hatası veriyor zaten (#6)... bunu bir şekilde çözmek lazım

Geçici olarak eba-sosyal apisinden şifre alınabilir sanırım registrant ayarını devredışı bırakmışlar token olmadan giriliyor olması lazım arkadaş ile deneyeceğiz şimdi. Registrant etkin şifre girdikten sonra kaydol'a atıyor.

{
	"operationMessage":"success",
	"operationCode":200,
	"success":true,
	"liveLessonInfo":
		{
			"frontEndUrl":"http://uygulama-ebaders.eba.gov.tr/ders/FrontEndService",
			"siteUrl":"http://ders.eba.gov.tr/ders",
			"adesUrl":"https://akademikdestek.eba.gov.tr/adestek/EBASSOLogin?from=ebaders",
			"redirectUrl":"https://www.eba.gov.tr",
			"name":"asd",
			"surname":"dsa",
			"serverTime":1606197239388,
			"studyTime":
				{
					"id":"studyid",
					"studyTimeId":"startid",
					"studyTimeTitle":"fizik",
					"studyTimeCurrNodeId":"nodeid",
					"ownerId":"ogretmen id",
					"ownerName":"ogretmen isim",
					"deleted":false,
					"term":"2020-2021",
					"schoolId":"okul id",
					"classroom":11,
					"startDate":1606198200000,
					"endDate":1606200000000,
					"createDate":1606164750000,
					"typeId":2,
					"courseName":"Fizik",
					"meetingId":"",
					"meetingPassword":"",
					"meetingDuration":0,
					"meetingStartUrl":"",
					"meetingJoinUrl":"",
					"studentId":"ogrenci id",
					"registrantId":null,
					"registrantJoinUrl":null,
					"modifiedDate":null,
					"courseCode":"fizy",
					"currNodeName":"Kuvvet ve Hareket"
				},
			"schoolName":"okul ad",
			"userRole":null,
			"adesUser":true
	}
}

Livemiddleware'de başlamadan önce böyle dönüyor registrantjoin olmadan (registrant ile ilgili bir sıkıntı yok başladıktan sonra da gelmedi)
Ayrıca ebanın büyük bir hatası var token olarak ne geliyor zannedersiniz start requestinde token bu geldi:

TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0OyBydjo4My4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzgzLjAxNjA2MTk4NDAxMTM5

base64 decode edelim

Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.01606198401139 cidden mi
firefox ta değil sadece chrome ve chromium da aynı
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.361606199749470

sorun bu, ondan ötürü invalid meeting hatası veriyor zaten (#6)... bunu bir şekilde çözmek lazım

bazı ders/sınıflarda ise registrantJoinUrl dolu geliyor direk o urlden erişilebiliyor derse
diğerlerinde tokeni bu şekilde bozmuşlar
az sonra eba uygulamasını reverse etmeyi deneyeceğim

@sh4dowb Reverse biz de denemiştik öğretmenler için caglarturali/eba_zoom_link#5. Github'da zoom SDK'sı ile yazılmış program bilginiz olsun. Visual C++ decompile edemedim bir türlü onu.

@sh4dowb collab'a gerek yok bence teşekkür ederim, gerek olursa PR ile halledilir tahminim.

Bir de reverse'de kolaylık olması için şunu vereyim Burp ile kaydettim
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ0VG01UXdCZ1RKeG8yZkJUYnFSUWlvakxSTzg0QWhMakZaSm8iLCJpYXQiOjE2MDYyMDM1MjksImV4cCI6MTYwODc5NTUyOSwidG9rZW5FeHAiOjE2MDg3OTU1Mjl9.7U6FieQfSxeQ_oKu0S7t2FGav82zXBYvtT62p2c0-tw
bu sdk'nın imzalanmış yetkilendirme tokeni içinde AppKey var JWT çözümünde:

{
  "appKey" : "tTm5QwBgTJxo2fBTbqRQiojLRO84AhLjFZJo",
  "iat" : 1606203529,
  "exp" : 1608795529,
  "tokenExp" : 1608795529
}

1 aylık imzalanıyor reverse yaparken bu key'i aramak iyi olabilir (imzalamak için api secret'i lazım). Bu token ile nonce arasında bir bağlam bulamadım. nonce sadece kontrol amaçlı kullanılsa benim adımı ve tokenimi nasıl doğru buluyor onu da anlayamadım. Burp muhtemelen kaçırıyor aradaki istekleri, sadece zoomdan istekle alınabilecek şifreyide aynı şekilde isteksiz alıyor gibi gözüküyor çünkü. Demo kodlarında proxy kullanılıp kullanılmadığını anlayan bir kısım vardı onunla alakalı sanırım.

Aynen Burp'un kaçırdığı şeyler varmış. Ayrıca Tam olarak binary reverse yapmamıza gerek yok. İlk açılınca program direk olarak EBA'ya bağlanıyor. TCPView diye bir alet var Windows tarafından yayınlanan oradan baktım ilk açılışta EBA'ya(85.111.38.13) bağlanıp bir sorgu yapıyor. YEĞİTEK yazdığı için muhtemelen proxy falan dinlemiyor bu kısım. (Burp ta çıkmadı yani)

Https kullanıyor içeriğine bakamadım ancak wireshark'tan baktım nereye nasıl gidiyor diye nonce tokeni burada etkili token vermeyince (Ör. ebazoom://o=join&m=1111111111) istek yapmıyor. https://uygulama.ebaders.gov.tr/ 'de bir adrese bağlanıp bu nonce'yi sorguluyor sanırım. Burp'a yönlendirmeyi deneyeyim bu isteği. Muhtemelen bu adresten bize lazım olan bütün parametreler gelecek.

@bytescreator Merhaba,

Projenizde kolaylık olması açısından EBA Zoom Client'ının gönderdiği veriyi mitmproxy ile yakaladım. Veri şu şekilde:

İstek: http://uygulama-ebaders.eba.gov.tr/FrontEndService/livelesson/nonce/<instudytime join response'undaki token>

Başka herhangi bir özel header vs yok.

Cevap:
"wXAQmFOIYjEyJjyf1vpWSpigGcAGvAAm4mTtifFi0dU.DQIAAAATlskOGxY5RmNjd3Q4blIxbVJSVm0wQmhLa3JBAAAAAAAAAAAAAAAAAAAAAAAAAAAA&pwd=YnVFK1R3U1Mvbmx4VFJEcUkzM3RIdz09|eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJOMHNBbTFmTU9LT05OTURBSUNqQzYyR0NRNERqNXhuMmUyNkoiLCJpYXQiOjE2MDYyMjU2MjgsImV4cCI6MTYwODgxNzYyOCwidG9rZW5FeHAiOjE2MDg4MTc2Mjh9.80ImRe7X4n6onK5nOBGD0MVqTnibxnr6ukqnS-Uznbw|a1ebd0|1.0.17|İSİM SOYİSİM|1606227120000|1606225630733"

(tırnaklar dahil görünüyordu)

@bytescreator gelen yanıtta ilk | bölümüne kadarki kısım token ve url. Query parameter olarak zoom katılma linkine ekleyince yönlendirdi beni.

@bytescreator gelen yanıtta ilk | bölümüne kadarki kısım token ve url. Query parameter olarak zoom katılma linkine ekleyince yönlendirdi beni.

aynen öyle, şimdi bir kaç hesaptan daha test edip commit atacağım. çok teşekkürler

@sh4dowb Rica ederim. Severek kullanıyorum eklentinizi :) Kolay gelsin.

@devygz 'a teşekkürler, sorun son commit ile çözülmüştür

@bytescreator gelen yanıtta ilk | bölümüne kadarki kısım token ve url. Query parameter olarak zoom katılma linkine ekleyince yönlendirdi beni.

Aynen disassembler'den bakıyordum bende tam onu yazacaktım 👍 , teşekkür ederim |'den sonrası zaman pek ilgilendirmiyor.
resim