dosyanın 1 satırı ile 2. dosyanın 2 satırı beraber birleşiyor ve fazla satırlı olan dosyanın satırları bitene kadar 2. dosya devretmeye devam ediyor
ama bizim istediğimiz
1.dosyanın 1.satırı ile 2. dosyanın bütün satırları tek tek birleşsin
sonra 1. dosyanın 2. satırı ile 2. dosyanın bütün satırları tek tek birleşsin
sonra 1. dosyanın 3. satırı ile 2. dosyanın bütün satırları tek tek birleşsin
sonra 1. dosyanın bütün satırları ile 2. dosyanın bütün satırları kombinasyonu tamamlanmış olur.
[Then_Shiffman] beyin hazırladığı kod çalışıyor ama bütün dosya tek sütuna yazılınca emeditör dahil hiç bir dosya sonucu tam açamıyor
belki [Then_Shiffman] hazırladığı kod bütün sonucu tek sütuna değilde birden fazla sütuna bölünebilirse dosyanın açılabilmesi daha rahat olur
dediğiniz gibi bu hazırladığımız dosyalar çok fazla yer kapladığı için açılması çok zor bu nedenle
pythonda şöyle birşey yapmak mümkün mü?
"Elimizde bulunan 1.txt(10 basamaklı sayı) ve 2.txt(6basamaklı sayı) dosyalarındaki verileri hazırladığınız kodlardaki gibi kombinasyon şeklinde birleştirsin ve yeni oluşan(16 basamaklı sayıyı) veriyi 3.txt dosyasında kayıtlı olan verilerle mukayese etsin
şayet
yeni oluşan 16 basamaklı veriler 3.txt dosyasındaki veriyle örtüşüyorsa bunu hemen 4.txt dosyasına yazdırsın
Birinci dosyada ilk 10 basamağı oluşturan sayıların bulunduğu liste var
İkinci dosyada ise son 6 basamağı oluşturan sayıların bulunduğu liste var
Üçüncü dosya ise şifrelenmiş bilgilerin bulunduğu dosya
Amacımız ilk dosyada bulunan 10 basamaklı sayılar ile ikinci dosyada bulunan son 6 basamaklı sayıları birleştirip sonra bunları Üçüncü dosya içerisinde bulunan şifreli verilerle aynı formata çevirip kıyaslamak
ve çeviri sonrası üçüncü dosyayla çakışan sayıları dördüncü bir dosyaya kaydetmek
ilk etabımız 1. ve 2. dosyalardaki sayıların kombinasyonunun bulunduğu 3. dosyayı oluşturma
(bunu bir nebze başardık lakin bu defa dosyalar çok büyük olduğu için açıp incelemek ve bunları depolamak çok büyük problem)
ikinci etabımız hex formatında hazırladığımız bu dosyaları adres formatına çevirmek
üçüncü etabımız çevirdiğimiz adresleri elimizde bulunan dosyada yer alan adreslerle çakıştırmak
ve çakışan varsa bunu ayrı bir dosyaya kaydettirmek
Tabi 1. etap sonrası
yaptığımız kombinasyon sonucunda oluşan sayılar çok fazla olduğu için
bunları depolamak yerine
yazılacak bir kod ile bunlar ara bellekte birleştirilip
istenen formata çevrilecek
ve hedef dosyadaki adreslerle çakıştırılacak
eğer sonuç pozitif ise harici bir dosyaya kaydettirilecek
negatif ise boşuna kaydedip yer kaplamayacak
Birinci ikinci dosyayı birleştir, şifreli dediğin bir diğer üçüncü dosyada olup olmadığını kontrol et ve o dosyada varsa eşleşenleri dördüncü bir dosyaya kaydet.
Ama zaten bir ve iki yi kombine ettik.
Elimizde bir anahtar dosya var(birleştirip oluşturduğumuz), bunu neden şifre dosyanızla karşılaştırıp doğrudan çakışanları bir başka dosyaya almıyoruz?
Ki bu da sonuçta şimdi iterasyon sayısını yine şifre dosyanızdaki kadar çarpan artıracak.
split komutu ile dosyanızı parçalara bölmeyi deneyin.
Bakalım satırlardan bölebiliyor mı emin değilim ama en azında bir kaç satır elle düzeltir ana dosyanızı da okunabilir halde bir kaç dosyaya bölmüş olursunuz.
İmkansız diye bir şey yok ama büyük dosya işlemlerini ben burada teyit edemiyorum.
Doğru çalıştığından emin olmadan kod paylaşmam.
Ama bu kadar dosyayı da sürekli deneyemiyorum, o kadar zamanım olmuyor.
bize verilen anahtar dosya olan 3. dosya sha256 ile kodlandığı için ona denk geleni bulamıyoruz
düz 2lik 8lik veya 16lık sistem kodlanmış olsaydı dediğiniz gibi tümden gelim yöntemi ile anahtar dosyadan geri gelerek bulabilirdik
Lakin malumunuz sha256 geri döndürülemediği için yapamıyoruz
Eğer bize 1. ve 2.yi birleştirip 3.ye yazanı yazdığınız kodu “her 100.000 veya 200.000 olunca ilave dosya aç yaz” şeklinde yazabilirseniz oda bizim için büyük bir yardım olur
Artık bizde mecbur oluşturulan küçük dosyaları tek tek inceleriz
yada " Birinci ikinci dosyayı birleştir, şifreli dediğin bir diğer üçüncü dosyada olup olmadığını kontrol et ve o dosyada varsa eşleşenleri dördüncü bir dosyaya kaydet. " yapabilirsek o daha iyi olur
Şimdi birinci ve ikincinin kombine edilmişine benzeyen ama arada hileli satırlar olan üçüncü dosya. Yani bu dosya sizin sha256 şifreli dosyayı temsil ediyor.
Programı çalıştırdığımda aldığım sonuç:
Yani bir le ikinin birleştirilmiş halini bir dosyaya yazmak yerine, üçüncü dosyanın içinde arıyor, eşleşirse dördüncü dosyaya yazıyor.
Ama büyük dosyada denemedim artık ne kadar sürerse sizin fantazinize kalmış.
filehandle1 = open('file1.txt', 'r') # First file
filehandle2 = open('file2.txt', 'r') # Second file
filehandle3 = open('file3.txt', 'r') # Check for combine
filehandle4 = open('file4.txt', 'w') # Equal list file
print("Wait for counting records first file...")
filecount = len(filehandle1.readlines())
filehandle1.close() # Don't ask why...
filehandle1 = open('file1.txt', 'r')
count =0
while True:
line1 = filehandle1.readline()
count = count+1
if not line1:
break
while True:
line2 = filehandle2.readline()
if not line2:
filehandle2.close()
filehandle2 = open('file2.txt', 'r')
break
compare_key = ( line1.strip() + line2.strip()+'\n')
print(compare_key)
while True:
line3 = filehandle3.readline()
if not line3:
filehandle3.close()
filehandle3 = open('file3.txt', 'r')
break
if line3 == compare_key:
filehandle4.write(line3)
print("Processing: %"+"%0.4f"% ((count/filecount)*100))
filehandle1.close()
filehandle2.close()
filehandle3.close()
filehandle4.close()
Aklınızda başka varyasyon varsa çekinmeyin onu da deneyelim
Abi mükemmel hazırlamışsın
kod çok güzel çalıştı
Ellerine sağlık
Beş dakikada örnek hazırladığım dosyada sonuçları buldu
Çok teşekkür ederim
Geriye son etabımız kaldı
Birinci ve ikinci dosyalardaki Hexdecimal kodları ara bellekte birleştirdikten sonra oluşan yeni veriyi Wallet(compressed/uncompressed) haline çevirip 3. dosyada bulunan wallet(compressed/uncompressed) adreslerle karşılaştırıp aynı olanları yazdırmak