Telefoncuların hayatını kolaylaştıracak bir program hazırladım, açık kaynak olarak paylaşıyorum dileyen kullansın


IMEI Sorgulayıcı - Program Özellikleri

Ne İşe Yarar:
  • USB'ye bağlanan iPhone'un IMEI numarasını otomatik alır
  • e-Devlet IMEI sorgulama sayfasını açar ve IMEI'yi otomatik doldurur
  • Telefonun kayıtlı/kaçak durumunu kontrol etmenizi sağlar
Temel Özellikler:
  • Otomatik IMEI algılama - Telefon takılınca IMEI'yi anında okur
  • Otomatik form doldurma - e-Devlet sayfasına telefonun IMEI'sini yazar
  • Panoya kopyalama - Aynı zamanda en günccel IMEI her zaman Ctrl+V ile yapıştırılmaya hazır
  • Akıllı cihaz takibi - Telefon çıkarılınca tarayıcıyı kapatır
  • Sürekli çalışma - Program açık kaldığı sürece yeni telefonları algılar
  • Çoklu cihaz desteği - Farklı telefonları art arda sorgulayabilir
Kullanım Senaryosu:
  • Telefon alım-satımı yapanlar için idealdir
  • IMEI kontrolü gereken işlemlerde zaman kazandırır
  • Manuel IMEI girme zahmetini ortadan kaldırır
Not: CAPTCHA varsa manuel girmek gerekir, sonrasını program halleder.


Kullanılan kütüphaneler:
selenium
webdriver-manager
pymobiledevice3
pyperclip


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
IMEI Sorgulayıcı v1
Tarih: 14 Kasım 2025
Not: Chrome driver otomatik indirilir, elle kurma gerek yok
"""
import sys
import time
import threading
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# pip install pymobiledevice3 selenium webdriver-manager pyperclip
try:
    from pymobiledevice3.usbmux import list_devices
    from pymobiledevice3.lockdown import create_using_usbmux
except:
    print("pymobiledevice3 kurulu değil! pip install pymobiledevice3")
    sys.exit(1)
try:
    import pyperclip
    PANO_VAR = True
except:
    PANO_VAR = False
    print("Uyarı: pyperclip yok, pano özelliği çalışmayacak")
from webdriver_manager.chrome import ChromeDriverManager
# Sabitler
EDEVLET_URL = "https://www.turkiye.gov.tr/imei-sorgulama"
SONUC_URL = "https://www.turkiye.gov.tr/imei-sorgulama?asama=1"
BEKLEME_SURESI = 60  # sonuç sayfasında bekle
MAX_CAPTCHA_BEKLE = 300  # 5 dk captcha için bekle
driver = None
son_imei = None
calisiyormu = True
def iphone_baglidmi():
    """iPhone bağlı mı kontrol et"""
    try:
        cihazlar = list_devices()
        return len(cihazlar) > 0
    except:
        return False
def imei_oku():
    """Bağlı iPhone'dan IMEI al"""
    global son_imei
    
    try:
        cihazlar = list_devices()
        if not cihazlar:
            return None
            
        cihaz = cihazlar[0]
        lockdown = create_using_usbmux(serial=cihaz.serial)
        imei = lockdown.get_value(key='InternationalMobileEquipmentIdentity')
        
        # panoya kopyala
        if PANO_VAR and imei and imei != son_imei:
            try:
                pyperclip.copy(imei)
                print(f"[+] IMEI panoya kopyalandı: {imei}")
            except:
                pass  # pano hatası önemli değil
                
        son_imei = imei
        return imei
        
    except Exception as e:
        # print(f"IMEI okuma hatası: {e}")  # debug için aç
        return None
def tarayici_ac_ve_sorgula(imei):
    """Chrome aç ve IMEI sorgula"""
    global driver
    
    try:
        # eski tarayıcı varsa kapat
        if driver:
            try:
                driver.quit()
            except:
                pass
        
        # Chrome ayarları
        opts = webdriver.ChromeOptions()
        opts.add_argument('--disable-blink-features=AutomationControlled')
        opts.add_experimental_option("excludeSwitches", ["enable-automation"])
        opts.add_experimental_option('useAutomationExtension', False)
        # opts.add_argument('--headless')  # arka planda çalıştırmak için
        
        print("[*] Tarayıcı açılıyor...")
        driver = webdriver.Chrome(
            service=webdriver.chrome.service.Service(ChromeDriverManager().install()),
            options=opts
        )
        
        # sayfayı aç
        driver.get(EDEVLET_URL)
        print("[*] e-Devlet sayfası yüklendi")
        
        # IMEI kutusunu bul ve doldur
        wait = WebDriverWait(driver, 10)
        imei_input = wait.until(EC.presence_of_element_located((By.ID, "txtImei")))
        imei_input.clear()  # önce temizle
        imei_input.send_keys(imei)
        print(f"[*] IMEI girildi: {imei}")
        
        # Captcha var mı kontrol et
        try:
            driver.find_element(By.CSS_SELECTOR, "label[for='captcha_name']")
            print("[!] CAPTCHA VAR - Manuel giriş gerekli!")
            print("[!] Güvenlik kodunu gir ve Sorgula'ya bas")
        except:
            # captcha yok, otomatik sorgula
            btn = driver.find_element(By.CLASS_NAME, "submitButton")
            btn.click()
            print("[*] Sorgula butonuna tıklandı")
        
        # Sonuç bekle
        basla = time.time()
        while (time.time() - basla) < MAX_CAPTCHA_BEKLE:
            if driver.current_url == SONUC_URL:
                print("[✓] Sonuç sayfasına geçildi!")
                time.sleep(BEKLEME_SURESI)  # sonucu göster
                break
            time.sleep(0.5)
            
            # cihaz çıkarıldı mı kontrol et
            if not iphone_baglidmi():
                print("[!] Cihaz çıkarıldı, tarayıcı kapatılıyor")
                driver.quit()
                driver = None
                return
                
    except Exception as e:
        print(f"[X] Hata: {e}")
        if driver:
            driver.quit()
            driver = None
def ana_dongu():
    """Ana program döngüsü"""
    global driver, calisiyormu
    
    print("="*50)
    print("IMEI SORGULAYICI - Cihaz bekleniyor...")
    print("Çıkmak için Ctrl+C")
    print("="*50)
    
    onceki_durum = False
    islem_yapildi = {}  # hangi cihazlar için işlem yapıldı
    
    while calisiyormu:
        try:
            simdiki_durum = iphone_baglidmi()
            
            # Cihaz yeni takıldı
            if not onceki_durum and simdiki_durum:
                print("\n[+] iPhone algılandı!")
                imei = imei_oku()
                
                if imei and imei not in islem_yapildi:
                    print(f"[+] IMEI: {imei}")
                    tarayici_ac_ve_sorgula(imei)
                    islem_yapildi[imei] = True
                elif not imei:
                    print("[!] IMEI okunamadı - Telefon kilitli olabilir")
            
            # Cihaz çıkarıldı
            elif onceki_durum and not simdiki_durum:
                print("\n[-] Cihaz çıkarıldı")
                if driver:
                    driver.quit()
                    driver = None
            
            onceki_durum = simdiki_durum
            time.sleep(0.5)
            
        except KeyboardInterrupt:
            print("\n[*] Program kapatılıyor...")
            calisiyormu = False
            if driver:
                driver.quit()
            break
        except Exception as e:
            print(f"[X] Beklenmeyen hata: {e}")
            time.sleep(2)
if __name__ == "__main__":
    try:
        ana_dongu()
    except:
        if driver:
            driver.quit()
        sys.exit(0)