|
Hala uğraşmaya devam ediyorum. Neler yapılabilir bilmiyorum ama araştırmaya devam ediyorum. İlk olarak aklıma şu geldi, operatörler yaptığım görüşmede WiFi SSID'lerini buradan ayıra |
|
Hala uğraşmaya devam ediyorum. Neler yapılabilir bilmiyorum ama araştırmaya devam ediyorum. İlk olarak aklıma şu geldi, operatörler yaptığım görüşmede WiFi SSID'lerini buradan ayırabiliriz sizin için dediklerinde TR-069 protokolünün açık olduğunu anladım. Daha sonra superonline hesap ayarlarında WiFi iyileştirme butonunun olduğunu gördüm ve buraya basınca modeme bir ayar komutu gelecekti. Neler gelebileceğini görmek için modemde loglara bakmam lazımdı ama Maintenance menüsü altında Log Setting başlığında modemin tutacağı log türlerinde TR-069 yoktu. Developer console ile herhangi bir ayarın (Attack) value'sunu TR-069 olarak değiştirip denedim ama olmadı, o yüzden bende python ile denemelere başladım ve istediğim ayarları açabilecek kodu sonunda üretmeyi başardım, gpt sağolsun. Aşağıdaki kod ile birlikte açık olmayan logları da enable yapabiliyoruz. import requests import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 🔹 Modem IP Adresi MODEM_IP = "192.168.1.1" # 🔹 Tarayıcıdan aldığın çerezler cookies = { "Session": "Browserda developer console açtıktan sonra, "Application" sekmesinde Cookies'nin altında yazıyor " } # 🔹 ZYSessionKey (Elle Gir) zysession_key = "Browserda developer console açtıktan sonra, "Application" sekmesinde "Local Storage" da yazıyor" # 🔹 AES Key (Base64 formatında) AES_KEY_B64 = "Browserda developer console açtıktan sonra, "Application" sekmesinde "Local Storage" da yazıyor" # 🔹 HTTP Başlıkları headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/133.0", "X-Requested-With": "XMLHttpRequest", "Referer": f"https://{MODEM_IP}/LogSetting", "Origin": f"https://{MODEM_IP}", "Host": MODEM_IP, "CsrfToken": zysession_key, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } json_data = { "Enable": True, "LogMode": "Local", "LogServer": "", "UDPPort": 514, "Interval": 60, "MailEnable": False, "MailTo": "", "MailSubject": "", "MailRef": "", "AlarmTo": "", "AlarmSubject": "", "WAN-DHCP": True, "DHCP Server": True, "PPPoE": True, "TR-069": True, "HTTP": True, "UPNP": True, "System": True, "ACL": True, "Wireless": True, "Voice": True, "MESH": True, "IGMP": True, "Account": True, "Attack": True, "Firewall": True, "MAC Filter": True, "systemLog": [ "WAN-DHCP", "DHCP Server", "PPPoE", "TR-069", "HTTP", "UPNP", "System", "ACL", "Wireless", "Voice", "MESH", "IGMP" ], "securityLog": [ "Account", "Attack", "Firewall", "MAC Filter" ] } # 🔹 Yeni IV Al def get_iv(): response = requests.get( f"https://{MODEM_IP}/cgi-bin/DAL?oid=logset", headers=headers, cookies=cookies, verify=False ) if response.status_code == 200: data = response.json() if "iv" in data: iv = data["iv"] print(f"✅ **Yeni IV Alındı:** {iv}") return iv print("\n❌ **Hata: IV alınamadı!**") return None # 🔹 JSON'u AES ile şifreleme def encrypt_data(data, iv): aes_key = base64.b64decode(AES_KEY_B64) iv_decoded = base64.b64decode(iv)[:16] json_string = json.dumps(data, separators=(",", ":")) cipher = AES.new(aes_key, AES.MODE_CBC, iv_decoded) encrypted_data = cipher.encrypt(pad(json_string.encode(), AES.block_size)) return base64.b64encode(encrypted_data).decode("utf-8") # 🔹 Yanıtı Çözüp Session Key'i Al def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None # 🔹 IV Al iv_base64 = get_iv() if not iv_base64: exit() # 🔹 JSON'u Şifrele encrypted_content = encrypt_data(json_data, iv_base64) # 🔹 Modeme Güncellenmiş Attack: False isteği gönder payload = { "content": encrypted_content, "iv": iv_base64 } print("\n📡 **Modeme Güncellenmiş İstek Gönderiliyor...**") response = requests.put( f"https://{MODEM_IP}/cgi-bin/DAL?oid=logset", headers=headers, cookies=cookies, json=payload, verify=False ) if response.status_code == 200: try: # Yanıt JSON formatında ve şifrelenmiş geliyor response_data = response.json() encrypted_content = response_data["content"] iv_base64 = response_data["iv"] # Şifre çözüp yeni sessionKey alalım new_session_key = decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") else: print(f"\n❌ **Hata! HTTP Kodu:** {response.status_code}") print(response.text) < Resime gitmek için tıklayın > Bu olduktan sonra yine operatör sayfasına gidip WiFi iyileştirme düğmesine bastım ve tekrar modeme dönüp logları kontrol ettim, anında yeni loglar geldi TR-069 altından. içinde set edilmiş bir cookie de bulunuyor. Amacım onların yetkisinda olup bizim yetkimizde olmayan şeyleri yapmak tabi ki. Yani SSID ayırmaya bile izin yok saçmalığından kurtulmak ta istiyorum. Neyse bu logların bilgilerini cookie vs kullanamadım açıkçası. Daha sonra bu şekilde ayar değiştirebildiğim için kullanıcı hesaplarıyla ilgili birşey yapılabilirmi diye bakınmaya başladım. Aşağıdaki kod ile kullanıcı hesaplarında basit değişiklikler yapmayı başardım, hesap aktif olsun veya olmasın, timeout süresi değişsin vs gibi, burda tabi ki hemen supervisor denedim ama maalesef bir sonuca ulaşamadım. Belki bu kısımları ilerleten birileri çıkabilir diye paylaşıyorum. import requests import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 🔹 Modem IP Adresi MODEM_IP = "192.168.1.1" # 🔹 Tarayıcıdan aldığın çerezler cookies = { "Session": "Session Key Buraya Yaz" } # 🔹 ZYSessionKey (Elle Gir) zysession_key = "Zysession Key Buraya Yaz" # 🔹 AES Key (Base64 formatında) AES_KEY_B64 = "AES Key buraya yaz" # 🔹 HTTP Başlıkları headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/133.0", "X-Requested-With": "XMLHttpRequest", "Referer": "https://192.168.1.1/UserAccount", "Origin": "https://192.168.1.1", "Host": MODEM_IP, "CsrfToken": zysession_key, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } # 🔹 Attack: False olacak JSON json_data = { "Index":1, "Enabled":True, "Username":"supervisor", "AccountRetryTime":0, "AccountIdleTime":3000, "AccountLockTime":0, "RemoteAccessPrivilege":"LAN,WAN", "group":"Administrator", "editId":"acc_editBtn0", "deleteId":"acc_deleteBtn0", "activeId":"userAccount-1", "Index":2, "Enabled":True, "Username":"admin", "AccountRetryTime":0, "AccountIdleTime":3000, "AccountLockTime":0, "RemoteAccessPrivilege":"LAN,WAN", "group":"Administrator", "editId":"acc_editBtn0", "deleteId":"acc_deleteBtn0", "activeId":"userAccount0", # 🔹 Yeni IV Al def get_iv(): response = requests.get( f"https://{MODEM_IP}/cgi-bin/DAL?oid=user_account&timedelay=1", headers=headers, cookies=cookies, verify=False ) if response.status_code == 200: data = response.json() if "iv" in data: iv = data["iv"] print(f"✅ **Yeni IV Alındı:** {iv}") return iv print("\n❌ **Hata: IV alınamadı!**") return None # 🔹 JSON'u AES ile şifreleme def encrypt_data(data, iv): aes_key = base64.b64decode(AES_KEY_B64) iv_decoded = base64.b64decode(iv)[:16] json_string = json.dumps(data, separators=(",", ":")) cipher = AES.new(aes_key, AES.MODE_CBC, iv_decoded) encrypted_data = cipher.encrypt(pad(json_string.encode(), AES.block_size)) return base64.b64encode(encrypted_data).decode("utf-8") # 🔹 Yanıtı Çözüp Session Key'i Al def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None # 🔹 IV Al iv_base64 = get_iv() if not iv_base64: exit() # 🔹 JSON'u Şifrele encrypted_content = encrypt_data(json_data, iv_base64) # 🔹 Modeme Güncellenmiş Attack: False isteği gönder payload = { "content": encrypted_content, "iv": iv_base64 } print(payload) print("\n📡 **Modeme Güncellenmiş İstek Gönderiliyor...**") response = requests.put( f"https://{MODEM_IP}/cgi-bin/DAL?oid=user_account&timedelay=1", headers=headers, cookies=cookies, json=payload, verify=False ) if response.status_code == 200: try: # Yanıt JSON formatında ve şifrelenmiş geliyor response_data = response.json() encrypted_content = response_data["content"] iv_base64 = response_data["iv"] # Şifre çözüp yeni sessionKey alalım new_session_key = decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") else: print(f"\n❌ **Hata! HTTP Kodu:** {response.status_code}") print(response.text) Modem dosyalarını da karıştırmaya başladım, yine chrome developer altında, Sources kısmında modemin hangi directory'leri var bakmaya başladım. Ufak bir backup dosyası buldum, kolayca indiriliyor, bilgileri denetledim ama ben bir yere varamadım belki siz varabilirsiniz --> https://192.168.1.1/cgi-bin/Backup_Restore?action=Backup Araştırmaya devam ediyorum. 192.168.1.1 adresinden herhangi bir istek gönderdiğinizde content ve iv verilerini içeren şifreli cevap geliyor, bu cevabı plain text olarak görmek isterseniz gelen cevabtaki boşlukların hepsini silip tek satır olacak şekilde düzenleyin, aşağıdaki kodu çalıştırın, şifreli veriyi istedinde yapıştırın ve komut satırında plain text halini gösterir. import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import unpad # 🔹 Güncellenmiş AES Key AES_KEY_B64 = "AesKey buraya Gir" def decrypt_response(encrypted_content, iv_base64): try: # AES Anahtarını ve IV'yi decode et aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] # Base64 hata düzeltme: veri uzunluğunu 4'ün katına getir missing_padding = len(encrypted_content) % 4 if missing_padding: encrypted_content += "=" * (4 - missing_padding) # Şifre çözme işlemi cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None except Exception as e: print(f"\n❌ **Hata:** {str(e)}") return None # 📌 Kullanıcıdan Şifreli JSON Verisini Al json_input = input("Şifreli JSON verisini girin:\n") try: # JSON içinden `content` ve `iv` değerlerini al data = json.loads(json_input) encrypted_content = data["content"] iv_base64 = data["iv"] # 📌 Şifre Çözme İşlemini Başlat decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Geçersiz JSON formatı!**") Araştırmaya devam ediyorum. Belki şu ana kadar yaptıklarım başkalarının çoktan yaptıklarıdır ama bişeyler yapmaya başladıkça daha kolay anlıyorum. Umarım ben veya başka birisi bir yerlere varabiliriz. |
|
Hala uğraşmaya devam ediyorum. Neler yapılabilir bilmiyorum ama araştırmaya devam ediyorum. İlk olarak aklıma şu geldi, operatörler yaptığım görüşmede WiFi SSID'lerini buradan ayırabiliriz sizin için dediklerinde TR-069 protokolünün açık olduğunu anladım. Daha sonra superonline hesap ayarlarında WiFi iyileştirme butonunun olduğunu gördüm ve buraya basınca modeme bir ayar komutu gelecekti. Neler gelebileceğini görmek için modemde loglara bakmam lazımdı ama Maintenance menüsü altında Log Setting başlığında modemin tutacağı log türlerinde TR-069 yoktu. Developer console ile herhangi bir ayarın (Attack) value'sunu TR-069 olarak değiştirip denedim ama olmadı, o yüzden bende python ile denemelere başladım ve istediğim ayarları açabilecek kodu sonunda üretmeyi başardım, gpt sağolsun. Aşağıdaki kod ile birlikte açık olmayan logları da enable yapabiliyoruz. import requests import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 🔹 Modem IP Adresi MODEM_IP = "192.168.1.1" # 🔹 Tarayıcıdan aldığın çerezler cookies = { "Session": "Browserda developer console açtıktan sonra, "Application" sekmesinde Cookies'nin altında yazıyor " } # 🔹 ZYSessionKey (Elle Gir) zysession_key = "Browserda developer console açtıktan sonra, "Application" sekmesinde "Local Storage" da yazıyor" # 🔹 AES Key (Base64 formatında) AES_KEY_B64 = "Browserda developer console açtıktan sonra, "Application" sekmesinde "Local Storage" da yazıyor" # 🔹 HTTP Başlıkları headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/133.0", "X-Requested-With": "XMLHttpRequest", "Referer": f"https://{MODEM_IP}/LogSetting", "Origin": f"https://{MODEM_IP}", "Host": MODEM_IP, "CsrfToken": zysession_key, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } json_data = { "Enable": True, "LogMode": "Local", "LogServer": "", "UDPPort": 514, "Interval": 60, "MailEnable": False, "MailTo": "", "MailSubject": "", "MailRef": "", "AlarmTo": "", "AlarmSubject": "", "WAN-DHCP": True, "DHCP Server": True, "PPPoE": True, "TR-069": True, "HTTP": True, "UPNP": True, "System": True, "ACL": True, "Wireless": True, "Voice": True, "MESH": True, "IGMP": True, "Account": True, "Attack": True, "Firewall": True, "MAC Filter": True, "systemLog": [ "WAN-DHCP", "DHCP Server", "PPPoE", "TR-069", "HTTP", "UPNP", "System", "ACL", "Wireless", "Voice", "MESH", "IGMP" ], "securityLog": [ "Account", "Attack", "Firewall", "MAC Filter" ] } # 🔹 Yeni IV Al def get_iv(): response = requests.get( f"https://{MODEM_IP}/cgi-bin/DAL?oid=logset", headers=headers, cookies=cookies, verify=False ) if response.status_code == 200: data = response.json() if "iv" in data: iv = data["iv"] print(f"✅ **Yeni IV Alındı:** {iv}") return iv print("\n❌ **Hata: IV alınamadı!**") return None # 🔹 JSON'u AES ile şifreleme def encrypt_data(data, iv): aes_key = base64.b64decode(AES_KEY_B64) iv_decoded = base64.b64decode(iv)[:16] json_string = json.dumps(data, separators=(",", ":")) cipher = AES.new(aes_key, AES.MODE_CBC, iv_decoded) encrypted_data = cipher.encrypt(pad(json_string.encode(), AES.block_size)) return base64.b64encode(encrypted_data).decode("utf-8") # 🔹 Yanıtı Çözüp Session Key'i Al def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None # 🔹 IV Al iv_base64 = get_iv() if not iv_base64: exit() # 🔹 JSON'u Şifrele encrypted_content = encrypt_data(json_data, iv_base64) # 🔹 Modeme Güncellenmiş Attack: False isteği gönder payload = { "content": encrypted_content, "iv": iv_base64 } print("\n📡 **Modeme Güncellenmiş İstek Gönderiliyor...**") response = requests.put( f"https://{MODEM_IP}/cgi-bin/DAL?oid=logset", headers=headers, cookies=cookies, json=payload, verify=False ) if response.status_code == 200: try: # Yanıt JSON formatında ve şifrelenmiş geliyor response_data = response.json() encrypted_content = response_data["content"] iv_base64 = response_data["iv"] # Şifre çözüp yeni sessionKey alalım new_session_key = decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") else: print(f"\n❌ **Hata! HTTP Kodu:** {response.status_code}") print(response.text) < Resime gitmek için tıklayın > Bu olduktan sonra yine operatör sayfasına gidip WiFi iyileştirme düğmesine bastım ve tekrar modeme dönüp logları kontrol ettim, anında yeni loglar geldi TR-069 altından. içinde set edilmiş bir cookie de bulunuyor. Amacım onların yetkisinda olup bizim yetkimizde olmayan şeyleri yapmak tabi ki. Yani SSID ayırmaya bile izin yok saçmalığından kurtulmak ta istiyorum. Neyse bu logların bilgilerini cookie vs kullanamadım açıkçası. Daha sonra bu şekilde ayar değiştirebildiğim için kullanıcı hesaplarıyla ilgili birşey yapılabilirmi diye bakınmaya başladım. Aşağıdaki kod ile kullanıcı hesaplarında basit değişiklikler yapmayı başardım, hesap aktif olsun veya olmasın, timeout süresi değişsin vs gibi, burda tabi ki hemen supervisor denedim ama maalesef bir sonuca ulaşamadım. Belki bu kısımları ilerleten birileri çıkabilir diye paylaşıyorum. import requests import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 🔹 Modem IP Adresi MODEM_IP = "192.168.1.1" # 🔹 Tarayıcıdan aldığın çerezler cookies = { "Session": "Session Key Buraya Yaz" } # 🔹 ZYSessionKey (Elle Gir) zysession_key = "Zysession Key Buraya Yaz" # 🔹 AES Key (Base64 formatında) AES_KEY_B64 = "AES Key buraya yaz" # 🔹 HTTP Başlıkları headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/133.0", "X-Requested-With": "XMLHttpRequest", "Referer": "https://192.168.1.1/UserAccount", "Origin": "https://192.168.1.1", "Host": MODEM_IP, "CsrfToken": zysession_key, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } # 🔹 Attack: False olacak JSON json_data = { "Index":1, "Enabled":True, "Username":"supervisor", "AccountRetryTime":0, "AccountIdleTime":3000, "AccountLockTime":0, "RemoteAccessPrivilege":"LAN,WAN", "group":"Administrator", "editId":"acc_editBtn0", "deleteId":"acc_deleteBtn0", "activeId":"userAccount-1", "Index":2, "Enabled":True, "Username":"admin", "AccountRetryTime":0, "AccountIdleTime":3000, "AccountLockTime":0, "RemoteAccessPrivilege":"LAN,WAN", "group":"Administrator", "editId":"acc_editBtn0", "deleteId":"acc_deleteBtn0", "activeId":"userAccount0", # 🔹 Yeni IV Al def get_iv(): response = requests.get( f"https://{MODEM_IP}/cgi-bin/DAL?oid=user_account&timedelay=1", headers=headers, cookies=cookies, verify=False ) if response.status_code == 200: data = response.json() if "iv" in data: iv = data["iv"] print(f"✅ **Yeni IV Alındı:** {iv}") return iv print("\n❌ **Hata: IV alınamadı!**") return None # 🔹 JSON'u AES ile şifreleme def encrypt_data(data, iv): aes_key = base64.b64decode(AES_KEY_B64) iv_decoded = base64.b64decode(iv)[:16] json_string = json.dumps(data, separators=(",", ":")) cipher = AES.new(aes_key, AES.MODE_CBC, iv_decoded) encrypted_data = cipher.encrypt(pad(json_string.encode(), AES.block_size)) return base64.b64encode(encrypted_data).decode("utf-8") # 🔹 Yanıtı Çözüp Session Key'i Al def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None # 🔹 IV Al iv_base64 = get_iv() if not iv_base64: exit() # 🔹 JSON'u Şifrele encrypted_content = encrypt_data(json_data, iv_base64) # 🔹 Modeme Güncellenmiş Attack: False isteği gönder payload = { "content": encrypted_content, "iv": iv_base64 } print(payload) print("\n📡 **Modeme Güncellenmiş İstek Gönderiliyor...**") response = requests.put( f"https://{MODEM_IP}/cgi-bin/DAL?oid=user_account&timedelay=1", headers=headers, cookies=cookies, json=payload, verify=False ) if response.status_code == 200: try: # Yanıt JSON formatında ve şifrelenmiş geliyor response_data = response.json() encrypted_content = response_data["content"] iv_base64 = response_data["iv"] # Şifre çözüp yeni sessionKey alalım new_session_key = decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") else: print(f"\n❌ **Hata! HTTP Kodu:** {response.status_code}") print(response.text) Modem dosyalarını da karıştırmaya başladım, yine chrome developer altında, Sources kısmında modemin hangi directory'leri var bakmaya başladım. Ufak bir backup dosyası buldum, kolayca indiriliyor, bilgileri denetledim ama ben bir yere varamadım belki siz varabilirsiniz --> https://192.168.1.1/cgi-bin/Backup_Restore?action=Backup Araştırmaya devam ediyorum. 192.168.1.1 adresinden herhangi bir istek gönderdiğinizde content ve iv verilerini içeren şifreli cevap geliyor, bu cevabı plain text olarak görmek isterseniz gelen cevabtaki boşlukların hepsini silip tek satır olacak şekilde düzenleyin, aşağıdaki kodu çalıştırın, şifreli veriyi istedinde yapıştırın ve komut satırında plain text halini gösterir. import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import unpad # 🔹 Güncellenmiş AES Key AES_KEY_B64 = "AesKey buraya Gir" def decrypt_response(encrypted_content, iv_base64): try: # AES Anahtarını ve IV'yi decode et aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] # Base64 hata düzeltme: veri uzunluğunu 4'ün katına getir missing_padding = len(encrypted_content) % 4 if missing_padding: encrypted_content += "=" * (4 - missing_padding) # Şifre çözme işlemi cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None except Exception as e: print(f"\n❌ **Hata:** {str(e)}") return None # 📌 Kullanıcıdan Şifreli JSON Verisini Al json_input = input("Şifreli JSON verisini girin:\n") try: # JSON içinden `content` ve `iv` değerlerini al data = json.loads(json_input) encrypted_content = data["content"] iv_base64 = data["iv"] # 📌 Şifre Çözme İşlemini Başlat decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Geçersiz JSON formatı!**") Araştırmaya devam ediyorum. Belki şu ana kadar yaptıklarım başkalarının çoktan yaptıklarıdır ama bişeyler yapmaya başladıkça daha kolay anlıyorum. Umarım ben veya başka birisi bir yerlere varabiliriz. |
|
Detaylı WAN bilgilerini alabileceğimiz kodu da yazdım, bu bilgilerin içinde açık şekilde superonline@fiber kullanıcı adı ve şifre de gösteriliyor, VLANID vs gibi birçok bilgi mevcut import base64 import json import requests from Crypto.Cipher import AES from Crypto.Util.Padding import unpad import re AES_KEY_B64 = "Application altındaki AesKey Buraya Yazın" MODEM_URL = "https://192.168.1.1/cgi-bin/DAL?oid=wan" SESSION = "Network altındaki herhangi bir objeye tıkladıktan sonra sağda çıkan Session anahtarını buraya yazın" headers = { "Accept": "application/json", "User-Agent": "Mozilla/5.0", "X-Requested-With": "XMLHttpRequest" } cookies = {"Session": SESSION} def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] encrypted_content += "=" * (4 - len(encrypted_content) % 4) cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) print(decrypted_bytes.decode("utf-8",errors="ignore").replace(",", ",\n").replace('"', "")) response = requests.get(MODEM_URL, headers=headers, cookies=cookies, verify=False) data = response.json() decrypt_response(data["content"], data["iv"]) |
|
Modemden bilgi alabileceğimiz benim bulduğum bütün URL'ler: /cgi-bin/ /cgi-bin/ARPTable_handle /cgi-bin/AtmOptinGet /cgi-bin/CardInfo /cgi-bin/CheckFsecureLicense /cgi-bin/CheckSfpLinkUp /cgi-bin/CheckVoipInuse /cgi-bin/CurrentTime /cgi-bin/DAL? /cgi-bin/DAL?oid=8021AG /cgi-bin/DAL?oid=8023AH /cgi-bin/DAL?oid=EDNS /cgi-bin/DAL?oid=ExtenderNetMAP /cgi-bin/DAL?oid=IPSecVPN /cgi-bin/DAL?oid=LanPortInfo /cgi-bin/DAL?oid=MultiWan /cgi-bin/DAL?oid=NAT_APPLICATION /cgi-bin/DAL?oid=OAMPING /cgi-bin/DAL?oid=OperatingModes /cgi-bin/DAL?oid=OperationMode /cgi-bin/DAL?oid=PINGTEST /cgi-bin/DAL?oid=RDM_OID_BRIDGING_BR /cgi-bin/DAL?oid=RDM_OID_BRIDGING_FILTER /cgi-bin/DAL?oid=RDM_OID_DEV_SEC_CERT /cgi-bin/DAL?oid=RDM_OID_IP_IFACE /cgi-bin/DAL?oid=RDM_OID_LOG_CATEGORY /cgi-bin/DAL?oid=RDM_OID_LOG_CLASSIFY /cgi-bin/DAL?oid=Traffic_Status /cgi-bin/DAL?oid=URL_BlackList /cgi-bin/DAL?oid=URL_WhiteList /cgi-bin/DAL?oid=URL_filter /cgi-bin/DAL?oid=VOIP_Status /cgi-bin/DAL?oid=VPNLite /cgi-bin/DAL?oid=apas /cgi-bin/DAL?oid=apas_macf /cgi-bin/DAL?oid=bandwidth_improvement /cgi-bin/DAL?oid=callblock /cgi-bin/DAL?oid=cardpage_status /cgi-bin/DAL?oid=cellular /cgi-bin/DAL?oid=cellwan_mapn /cgi-bin/DAL?oid=cellwan_sim /cgi-bin/DAL?oid=cellwan_status /cgi-bin/DAL?oid=content_filter /cgi-bin/DAL?oid=cyber_secure /cgi-bin/DAL?oid=ddns /cgi-bin/DAL?oid=dev_sec_cert /cgi-bin/DAL?oid=dns /cgi-bin/DAL?oid=dns_route /cgi-bin/DAL?oid=email_ntfy /cgi-bin/DAL?oid=ethctl /cgi-bin/DAL?oid=ethwanlan /cgi-bin/DAL?oid=firewall /cgi-bin/DAL?oid=firewall_acl /cgi-bin/DAL?oid=firewall_proto /cgi-bin/DAL?oid=gpon /cgi-bin/DAL?oid=gre_tunnel /cgi-bin/DAL?oid=igmp_mld /cgi-bin/DAL?oid=intf_group /cgi-bin/DAL?oid=ipalias /cgi-bin/DAL?oid=ipfilter /cgi-bin/DAL?oid=lan /cgi-bin/DAL?oid=lanadv /cgi-bin/DAL?oid=lanhosts /cgi-bin/DAL?oid=login_privilege /cgi-bin/DAL?oid=logset /cgi-bin/DAL?oid=macfilter /cgi-bin/DAL?oid=media_server /cgi-bin/DAL?oid=mgmt /cgi-bin/DAL?oid=mgmt_srv /cgi-bin/DAL?oid=mqtt_client /cgi-bin/DAL?oid=nat /cgi-bin/DAL?oid=nat_addr_map /cgi-bin/DAL?oid=nat_conf /cgi-bin/DAL?oid=nat_pcp /cgi-bin/DAL?oid=nat_trigger /cgi-bin/DAL?oid=one_connect /cgi-bin/DAL?oid=package_3rdParty /cgi-bin/DAL?oid=paren_ctl /cgi-bin/DAL?oid=phone /cgi-bin/DAL?oid=policy_route /cgi-bin/DAL?oid=portBindingSwitch /cgi-bin/DAL?oid=port_mirror /cgi-bin/DAL?oid=pppoe_setting /cgi-bin/DAL?oid=pptp /cgi-bin/DAL?oid=print_server /cgi-bin/DAL?oid=qos /cgi-bin/DAL?oid=qos_class /cgi-bin/DAL?oid=qos_policer /cgi-bin/DAL?oid=qos_queue /cgi-bin/DAL?oid=qos_shaper /cgi-bin/DAL?oid=quickWanSet /cgi-bin/DAL?oid=reboot_schedule /cgi-bin/DAL?oid=region /cgi-bin/DAL?oid=rip /cgi-bin/DAL?oid=scheduler /cgi-bin/DAL?oid=sensor /cgi-bin/DAL?oid=sip_account /cgi-bin/DAL?oid=sip_sp /cgi-bin/DAL?oid=sip_tls /cgi-bin/DAL?oid=sp_mgmt_srv /cgi-bin/DAL?oid=sp_trust_domain /cgi-bin/DAL?oid=speeddial /cgi-bin/DAL?oid=static_dhcp /cgi-bin/DAL?oid=static_route /cgi-bin/DAL?oid=status /cgi-bin/DAL?oid=time /cgi-bin/DAL?oid=tr369 /cgi-bin/DAL?oid=tr369_con /cgi-bin/DAL?oid=tr369_con_mtp /cgi-bin/DAL?oid=tr369_con_mtp_mqtt /cgi-bin/DAL?oid=tr369_mtp /cgi-bin/DAL?oid=tr369_mtp_mqtt /cgi-bin/DAL?oid=tr69 /cgi-bin/DAL?oid=tr69default /cgi-bin/DAL?oid=trust_domain /cgi-bin/DAL?oid=ttsamba_account /cgi-bin/DAL?oid=usb_filesharing /cgi-bin/DAL?oid=usb_info /cgi-bin/DAL?oid=user_account /cgi-bin/DAL?oid=vlan_group /cgi-bin/DAL?oid=vpnclient /cgi-bin/DAL?oid=wan /cgi-bin/DAL?oid=wan_adv /cgi-bin/DAL?oid=wifi_easy_mesh /cgi-bin/DAL?oid=wifi_macfilter /cgi-bin/DAL?oid=wifi_others /cgi-bin/DAL?oid=wifi_wds /cgi-bin/DAL?oid=wlan /cgi-bin/DAL?oid=wlan_chanhopping /cgi-bin/DAL?oid=wlan_sch_access /cgi-bin/DAL?oid=wlan_scheduler /cgi-bin/DAL?oid=wmm /cgi-bin/DAL?oid=wps /cgi-bin/Diagnostic_Result /cgi-bin/EthctlOptionGet /cgi-bin/Firmware_Upgrade /cgi-bin/GetMTDSize?from=config /cgi-bin/GetMTDSize?from=firmware /cgi-bin/GetMTDSize?from=wwan /cgi-bin/GetRouterLanPortMacList /cgi-bin/Home_Networking?action=WOLCommand /cgi-bin/Home_Networking?action=WOLParseTuple /cgi-bin/Home_Networking?oid=lan /cgi-bin/IgmpTbSt?action=get /cgi-bin/LAN_PORT_LIST_Get /cgi-bin/LogResult?action=GET_LOG&oid=RDM_OID_LOG_CLASSIFY&iid=[1,0,0,0,0,0] /cgi-bin/LogResult?action=GET_LOG&oid=RDM_OID_LOG_CLASSIFY&iid=[1,0,0,0,0,0]&category= /cgi-bin/LogResult?action=GET_LOG&oid=RDM_OID_LOG_CLASSIFY&iid=[2,0,0,0,0,0] /cgi-bin/LogResult?action=GET_LOG&oid=RDM_OID_LOG_CLASSIFY&iid=[2,0,0,0,0,0]&category= /cgi-bin/MULTI_USER_LIST_Get /cgi-bin/McastSt?action=get /cgi-bin/McastTbSt?action=get /cgi-bin/MenuList /cgi-bin/MultiLangSave /cgi-bin/NATSession_handle /cgi-bin/Online_FWInfoCheck /cgi-bin/Online_FWUpgradeAction /cgi-bin/Online_FW_Upgrade /cgi-bin/QosMonitor_handle /cgi-bin/RoutingTable_handle /cgi-bin/SIP?oid=RDM_OID_ETH_LINK /cgi-bin/SIP?oid=RDM_OID_IP_IFACE /cgi-bin/SIP?oid=RDM_OID_PPP_IFACE /cgi-bin/SNMP?oid=snmp /cgi-bin/SteeringStatus_handle /cgi-bin/System?oid=snmp /cgi-bin/TodayWlanSch /cgi-bin/Traffic_Status?mode=NATConntrack_handle /cgi-bin/Traffic_Status?mode=NATStatus_handle /cgi-bin/USB3SupportSave /cgi-bin/USB_Service?action=getIppPrinterName /cgi-bin/USB_Service?oid=RDM_OID_GUI_CUSTOMIZATION /cgi-bin/USB_Service?oid=RDM_OID_ZY_IPP_CFG /cgi-bin/USB_Service?oid=RDM_OID_ZY_SAMBA_DIR /cgi-bin/UserLoginCheck /cgi-bin/WAN_LAN_LIST_Get /cgi-bin/dslLineStatusGet /cgi-bin/getBasicInformation /cgi-bin/getCustomizationData /cgi-bin/getDefaultInformation /cgi-bin/getDefaultWANIP /cgi-bin/getWebGuiFlag /cgi-bin/loginAccountLevel /cgi-bin/snmp?oid=snmp /cgi-bin/xDSLProfileGet /cgi-bin/xDSLStatistics_handle?line= içlerine baktığım kadarıyla yararlı sayılacak bilgiler bu dosyalarda, yine birkaç farklı dosyada fiber kullanıcı adı ve şifre açıkça yazılmış durumda. Tabi açıkça diyorum ama content ve IV ile şifreleri çözünce ortaya çıkıyor. < Resime gitmek için tıklayın > /cgi-bin/ şekline yazdığım bütün urleleri cgi-bin-urls.txt dosyasına kaydederseniz ve aşağıdaki kodu çalıştırırsanız hepsini tek tek sorgulayıp, şifreleri çözüp, decoded_responses diye bir klasör oluşturacak ve içine sorguladıgi urllerin isminde txt dosyaları oluşturacak(görselde göründüğü gibi) import base64 import json import requests import os import re from Crypto.Cipher import AES from Crypto.Util.Padding import unpad AES_KEY_B64 = "AesKey Buraya Yaz" MODEM_IP = "192.168.1.1" SESSION = "Session Buraya Yaz" URLS_FILE = "cgi-bin-urls.txt" OUTPUT_DIR = "decoded_responses" headers = { "Accept": "application/json", "User-Agent": "Mozilla/5.0", "X-Requested-With": "XMLHttpRequest" } cookies = {"Session": SESSION} os.makedirs(OUTPUT_DIR, exist_ok=True) def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] encrypted_content += "=" * (4 - len(encrypted_content) % 4) cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) return decrypted_bytes.decode("utf-8", errors="ignore").replace(",", ",\n").replace('"', "") def sanitize_filename(url): filename = re.sub(r'[^\w\-]', '_', url.split("/cgi-bin/")[-1]) return filename if filename else "root" with open(URLS_FILE, "r", encoding="utf-8") as file: urls = [line.strip() for line in file.readlines() if line.strip()] for url in urls: full_url = f"https://{MODEM_IP}{url}" try: response = requests.get(full_url, headers=headers, cookies=cookies, verify=False) if response.status_code == 200: data = response.json() if "content" in data and "iv" in data: decrypted_text = decrypt_response(data["content"], data["iv"]) filename = sanitize_filename(url) + ".txt" file_path = os.path.join(OUTPUT_DIR, filename) with open(file_path, "w", encoding="utf-8") as f: f.write(decrypted_text) except Exception as e: print(f"❌ Hata: {e} - URL: {full_url}") |
|
Uzun süredir TR-069 server nasıl kurarım diye düşünürken https://forum.donanimhaber.com/mesaj/yonlen/159504183 konusunda @TolgaGazi3548 'in yapmış olduğu anlatıma göre belirtilen siteden hesap oluşturdum ve daha önce verdiğim yöntemle python kullanarak modemdeki TR-069 bilgilerini değiştirdim. Bahsedilen linkten modeme erişim sağladığımda ilk defa sUser kullanıcısını gördüm ama şifresi görünmüyordu. TR-069 komutunu kullanarak modemdeki sUser şifresini değiştirdim. Artık sUser olarak giriş yapabiliyorum. Ne değiştir birşey değişmedi, modem aynı rezaletliğini koruyor :) ama bu kadar uğraştan sonra artık rahatladım. Modemdeki bütün bilgileri çektikten sonra yeni router siparişi verdim ve elime ulaştı. OpenWRT kurarak ayarları yaptım ve artık yeni router ile online'ım. superonline'ın modemini de kenara kaldırdım. Benim tarafımdaki ayarlarda tek eksik olan vlan imiş. openWRT ayarlarında wan.0 yapınca IP adresi geldi ve online oldum. Bende kullanıcı adı@fiber + şifre + MAC Klon + vlan ile online oldum, farklı yerlerde farklı güvenlik önlemleri var. Aşağıda forumda belirtilen konudaki siteden üyelik oluşturup gerekli bilgileri aldıktan sonra kendi modeminize nasıl aktaracağınızın kodunu veriyorum. Dediğim gibi bence yine de iyi değil bu modem. import requests import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad # 🔹 Modem IP Adresi MODEM_IP = "192.168.1.1" # 🔹 Tarayıcıdan aldığın çerezler cookies = { "Session": "Session anahtarını buraya yaz" } # 🔹 ZYSessionKey (Elle Gir) zysession_key = "zySessionkey buraya yaz" # 🔹 AES Key (Base64 formatında) AES_KEY_B64 = "Aes anahtarını buraya yaz" # 🔹 HTTP Başlıkları headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7", "Cache-Control": "no-cache", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "CsrfToken": zysession_key, "Session": "Session anahtarını buraya da yaz", "Dnt": "1", "Host": "192.168.1.1", "If-Modified-Since": "Thu, 01 Jun 1970 00:00:00 GMT", "Origin": "https://192.168.1.1", "Referer": "https://192.168.1.1/", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", "X-Requested-With": "XMLHttpRequest", "sec-ch-ua-mobile" : "?0" } # 🔹 Attack: False olacak JSON json_data = { "EnableCWMP":True, "URL":"cloud.tr069.pro dan aldığın server adresini buraya yaz", "Username":"cloud.tr069.pro dan aldığın kullanıcı adını buraya yaz", "Password":"cloud.tr069.pro dan aldığın şifreyi buraya yaz", "ConnectionRequestUsername":"cloud.tr069.pro dan aldığın kullanıcı adını buraya yaz", "ConnectionRequestPassword":"cloud.tr069.pro dan aldığın şifreyi buraya yaz", "PeriodicInformEnable":True, "PeriodicInformInterval":86400, "PeriodicInformTime":"0001-01-01T00:00:00Z", "X_ZYXEL_ActiveNotifyUpdateInterval":30, "DebugLevelEnable":13, "FetureOptionEnable":2, "X_ZYXEL_ConnectionRequestPort":7547, "IPv6_Enable":False, "IPv4_Enable":True, "DisplaySOAP":False, "EnableAuthentication":None, "BoundInterfaceMode":"Multi_WAN", "BoundInterfaceList":"IP.Interface.2,IP.Interface.3", "ConnectionRequestURL":"", "CheckCert":False, "DataModelSpec":"TR-098", "Certificate":0, } # 🔹 Yeni IV Al def get_iv(): response = requests.get( f"https://{MODEM_IP}/cgi-bin/", headers=headers, cookies=cookies, verify=False ) if response.status_code == 200: data = response.json() if "iv" in data: iv = data["iv"] print(f"✅ **Yeni IV Alındı:** {iv}") return iv print("\n❌ **Hata: IV alınamadı!**") return None # 🔹 JSON'u AES ile şifreleme def encrypt_data(data, iv): aes_key = base64.b64decode(AES_KEY_B64) iv_decoded = base64.b64decode(iv)[:16] json_string = json.dumps(data, separators=(",", ":")) cipher = AES.new(aes_key, AES.MODE_CBC, iv_decoded) encrypted_data = cipher.encrypt(pad(json_string.encode(), AES.block_size)) return base64.b64encode(encrypted_data).decode("utf-8") # 🔹 Yanıtı Çözüp Session Key'i Al def decrypt_response(encrypted_content, iv_base64): aes_key = base64.b64decode(AES_KEY_B64) iv = base64.b64decode(iv_base64)[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) decrypted_bytes = unpad(cipher.decrypt(base64.b64decode(encrypted_content)), AES.block_size) decrypted_json = decrypted_bytes.decode("utf-8") print("\n✅ **Şifre Çözüldü!**") print(decrypted_json) # **Yeni Session Key'i çek** try: response_dict = json.loads(decrypted_json) if "sessionkey" in response_dict: new_session_key = response_dict["sessionkey"] print(f"\n🔑 **Yeni SessionKey:** {new_session_key}") return new_session_key except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") return None # 🔹 IV Al iv_base64 = get_iv() if not iv_base64: exit() # 🔹 JSON'u Şifrele encrypted_content = encrypt_data(json_data, iv_base64) # 🔹 Modeme Güncellenmiş Attack: False isteği gönder payload = { "content": encrypted_content, "iv": iv_base64 } print(payload) print("\n📡 **Modeme Güncellenmiş İstek Gönderiliyor...**") response = requests.put( f"https://{MODEM_IP}/cgi-bin/DAL?oid=tr69", headers=headers, cookies=cookies, json=payload, verify=False ) if response.status_code == 200: try: # Yanıt JSON formatında ve şifrelenmiş geliyor response_data = response.json() encrypted_content = response_data["content"] iv_base64 = response_data["iv"] # Şifre çözüp yeni sessionKey alalım new_session_key = decrypt_response(encrypted_content, iv_base64) except json.JSONDecodeError: print("\n❌ **Hata: Yanıt JSON formatında değil!**") else: print(f"\n❌ **Hata! HTTP Kodu:** {response.status_code}") print(response.text) |
|
1 dakika önce denemek için yine @TolgaGazi3548 'in bu konuyla alakalı mesajına denk geldim -- > https://forum.donanimhaber.com/mesaj/yonlen/160570090 3. adıma geçtiğimde tv+'ın ip adresi lazım oldu ama yeni router'a takılı değildi, onu taktım ve açınca nasıl hata verecek diye bakayım dedim ama hata gelmedi, canlı kanallar açıldı, film menüsünden filmler de açıldı, başka da önemli bir yer yok heralde orada kontrol edeceğim, yani tv+ ta çalıştı evet. |
|
@xilipro Hocam merhaba. Konudaki modeme bende sahibim. Ethernet bağlantısında nadir de olsa kopma yaşıyordum. Kablo değiştim ama düzelmedi. Kopma olduğu sırada modemi kontrol ettiğimde kendine restart attığını gördüm. Sorun modem de olabilir diye düşündüm o yüzden ve router sipariş verdim. Siparişten sonrada tam bu konuyu gördüm. Kullanıcı adı ve şifreyi konsoldan öğrenmiştim bu yüzden sıkıntısız bağlantı olur diye düşünmüştüm. Daha sonra sizin mesajları görünce siparişi iptal etmeden elimde olanda bir router da denemek istedim. Tenda ac5 v3 modeline kullanıcı adı şifre ve modem arayüzünde yazan mac değerini girdim ve bende bağlantı sıkıntısız gerçekleşti. Başka hiçbir ayar yapmadım. Router olarak da bu modeli satın aldım. Fiyatı uygun geldi ve tv+ vs kullanmıyorum. Stabil ethernet sağlasa benim için yeterli. Teslim alıp kurmayı denedikten sonra sonucu da yazarım. https://app.hb.biz/ltEfAUsRvHa3 |
telefon aç arıza kaydı bildir. bu ont cihazı kendi kendine bazen kapanıp açılıyor de. değiştirirler. tabi fişini sen çekeceksin arada bir. tabi sen doğrusunu söyle en iyisimi. hattımda kesintiler oluyor bu ont cihazından şüpheleniyorum de bari. :D ex3501'in lan portlarından sadece bir tanesi Gb destekliyormuş, ilginç. bağlantın hızın nedir? belki bununla ilgili bir sorun yaşıyor olabilir misin? "Modemin arkasında bulunan LAN portlarından sadece 1 tanesi Gigabit hız destekliyor. Diğer 2/3 port sadece 100 mbps verebiliyor. Port değiştirmeyi deneyin çözüm olabilir." https://www.technopat.net/sosyal/konu/zyxel-ex3501-t0-modem-ayarlari-nasil-olmali.3588863/#post-27341273 < Resime gitmek için tıklayın > |
|
100 mbit fiber üyesiyim. bende zte zxhn h298a modem kullanıyordum 5 6 senedir. wifi 6 özellikli ürünlerim olduğu için değişim talep ettim. modemi değiştirdiler bugün. tp link ex20 ax1800 gelir diye bekliyordum. zyxel ex3501 t0 verdiler. sizce nasıl? kullanan arkadaşlar olarak fikrinizi almak isterim. teşekkürler şimdiden |
|
Bu modemde kısıtlı root (dns vb değiştirme) izni elde etmeyi başardım https://forum.donanimhaber.com/zyxel-ex3501-t0-ana-konusu--160700087#160778191 bu mesajdaki gibi tr069 u kendi kontrolünüze aldığınızda InternetGatewayDevice.X_TTG.Users.User.2.Enable ı true ve InternetGatewayDevice.X_TTG.Users.User.2.Password ı da istediğiniz şifre yaparsanız root kullanıcı adı ile girebiliyorsunuz Eğer bu değerler gözükmüyorsa InternetGatewayDevice.X_TTG.Users olarak get çalıştırabilirsiniz ondan sonra gözükür tr069 sağlayıcısında (Resimdeki model farklı biliyorum ama aynı şekilde bu cihazdada oluyor) < Resime gitmek için tıklayın > < Resime gitmek için tıklayın > ssh ve telnet erişimi açılabiliyor ama zycli denen kısıtlı bir araç kullanılabiliniyor sadece ilginç olarak firmware guncellemesinde model ve sürüm kontrolü kapatılabiliyor zycli ile ama bendeki tek modem bu olduğundan ve firmware bulamadığımdan daha fazla kurcalamadım İlgilenen ve yapamayan olursa yazsın o mesajda belirtilen tr069.pro ile anlatım yazabilirim ben kendi sunucum olduğu içn ona genieacs kurarak yaptım işlemleri yapan curl request (genieacs için) curl -sS -X POST 'http://localhost:7557/devices/DEVICE_ID/tasks' -H 'Content-Type: application/json' --data '{"name":"setParameterValues","parameterValues":[ ["InternetGatewayDevice.X_TTG.Users.User.1.Password","ModemBizdedir#!!","xsd:string"], ["InternetGatewayDevice.X_TTG.Users.User.2.Enable",true,"xsd:boolean"], ["InternetGatewayDevice.X_TTG.Users.User.2.Password","ModBizdedirem#!!","xsd:string"] ]}' |
| Ben 7 ay boyunca kullandım ve sevmedim cihazı. wi-fi performansı kötüydü ve arada crash ediyordu. Google Mesh cihazlarımla sorun yaşıyordu. Nihayet ZTE 3600p ile değiştirdiler. Ben açıkçası sorunuzu pek anlamadım "bu cihaza iyimi Huawei BE3 Wi-Fi 7 Router, BE3600 Mbps" tam olarak ne kastettiniz? |
| https://www.youtube.com/watch?v=9D5GGJs4dp8 |
| Mesh sistemler direk ont cihazına bağlanamıyor diye biliyorum. PPoE için SOL şifreyi vermiyor. Bende de üçlü Google Nest Pro Wifi 6e Sistem var, Modem/Router'a bağlıyorsunuz, cihazlardan biri Router, diğer(ler)i AP olarak mesh oluşturuyor. Ancak bu şekilde Zyxel double NAT yapıp çöküyordu. ZTE'de şimdilik çökme olmadı. |
|
https://forum.donanimhaber.com/mesaj/yonlen/162386747 15 m cat6 kablo ile hiç bir ayar yapmadan aldığım sonuç buydu .santral sorunu gibi duruyor sizde |
|
Herkese selamlar. Uzun uğraşlar sonunda modemi rootlamayı başardım. Öncelikle başlıktaki tr069 metodunu keşfeden arkadaşlara teşekkür ederim. Bu yöntem ile ilerleyip modemi ttg ve zyxel global parametreleriyle rootlamaya çalışıyoruz. mantığı bu şekilde yani. daha uzun bir post yazmayı düşünüyorum bununla ilgili şimdilik sadece tr069-genieacs kodlarını vereceğim. ben "genieacs" kullandım dileyen cloud.tr069.pro dan da yapabilir. curl -i 'http://localhost:7557/devices/(DEVICE-ID)/tasks?connection_request' -X POST --data '{"name": "setParameterValues", "parameterValues": [ ["InternetGatewayDevice.X_TTG.Users.User.2.Password", "SIFREBURAYA09", "xsd:string"], ["InternetGatewayDevice.X_TTG.Users.User.2.Enable", true, "xsd:boolean"], ["InternetGatewayDevice.X_TTG.Users.User.2.X_ZYXEL_Privilege", "1", "xsd:unsignedInt"], ["InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Password", "SIFREBURAYA09", "xsd:string"], ["InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Enable", true, "xsd:boolean"], ["InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Privilege", "supervisor", "xsd:string"] ] }' localhost yazan yere eğer cloud kullanacaksanız cloud url girmelisiniz. curl ile veya parametre ile yapabilirsiniz. provision ile yapacaklar için onu da bırakıyorum. Eğer genieacs kullanacaksanız port da yazmalısınız. üstteki( localhost:7557 ) şeklinde. GENIEACS PROVISION: // --- AYARLAR --- const desiredPassword = "sifreburaya09"; // Şifreni buradan değiştirebilirsin log('Provision: Root yetkisi ve şifre tanımlama başlatılıyor...'); // 1. BLOK: Türk Telekom Özel Parametreleri (X_TTG) // InternetGatewayDevice.X_TTG.Users.User.2 declare("InternetGatewayDevice.X_TTG.Users.User.2.Password", {value: now}, {value: desiredPassword}); declare("InternetGatewayDevice.X_TTG.Users.User.2.Enable", {value: now}, {value: true}); declare("InternetGatewayDevice.X_TTG.Users.User.2.X_ZYXEL_Privilege", {value: now}, {value: 1}); // 2. BLOK: Zyxel Global Parametreleri (X_ZYXEL_EXT) // InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2 declare("InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Password", {value: now}, {value: desiredPassword}); declare("InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Enable", {value: now}, {value: true}); declare("InternetGatewayDevice.X_ZYXEL_EXT.LoginCfg.LogGp.1.Account.2.Privilege", {value: now}, {value: "supervisor"}); log('Provision: Root komutları işlendi.'); Son olarak ekran görüntüleri: < Resime gitmek için tıklayın > < Resime gitmek için tıklayın > < Resime gitmek için tıklayın > |
|
Teşekkürler hocam. Ben baktım klavuzunda var ama ortak klavuz olduğu için koymuşlar o kısmı, başka cihazlarda vardır ama bu cihazda o mod yok maalesef. iki mod var ap ve router modu olarak ama ikisinde de interneti kablolu alıyor. hb dan almıştım, sorular kısmında bu soruyu soran birine olur demişler ama olmuyor. iade ettim, wisp modu olan bir router bakıyorum. usb wifi alıcıların hızlı olanları router fiyatına geliyor, wifi6-7 bir router alsam ileride daha kullanışlı olur diye düşünüyorum. 2 bin lira vermişken. Everest EWR-X3000-V1 Cudy Wr3000 gibi cihazlara bakıyorum. Huawei BE3 de wisp yok ama ilk önce kablolu kurulum ypatıktan sonra kablosuz alıcı olarak kullanılabilir dediler. marka olarak daha güvenilir geldiği için bunu deneyeceğim sanırım. iyi günler. |
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.