"Yanlış dolgu" yalnızca "eksik dolgu" anlamına gelmez, aynı zamanda (ister inanın ister inanmayın) "yanlış dolgu" anlamına gelebilir.
Önerilen "dolgu ekleme" yöntemleri işe yaramazsa, sondaki bazı baytları kaldırmayı deneyin:
lens = len(strg)
lenx = lens - (lens % 4 if lens % 4 else 4)
try:
result = base64.decodestring(strg[:lenx])
except etc
Güncelleme: Dolgu ekleme veya olası kötü baytları sondan kaldırma ile ilgili herhangi bir uğraş, herhangi bir boşluk kaldırıldıktan SONRA yapılmalıdır, aksi takdirde uzunluk hesaplamaları altüst olur.
Kurtarmanız gereken verilerin (kısa) bir örneğini bize göstermeniz iyi bir fikir olacaktır. Sorunuzu düzenleyin ve sonucunu kopyalayın / yapıştırın print repr(sample)
.
Güncelleme 2: Kodlamanın url güvenli bir şekilde yapılmış olması mümkündür. Böyle bir durumda, verilerinizde eksi ve alt çizgi karakterleri görebileceksiniz ve bunu kullanarak kod çözebilmelisiniz.base64.b64decode(strg, '-_')
Verilerinizde eksi ve alt çizgi karakterleri göremiyorsanız, ancak artı ve eğik çizgi karakterlerini görebiliyorsanız, o zaman başka bir sorununuz var ve eklenti dolgusu veya kaldırma hilelerine ihtiyacınız olabilir.
Verilerinizde eksi, alt çizgi, artı ve eğik çizgi görmüyorsanız, iki alternatif karakteri belirlemeniz gerekir; [A-Za-z0-9] içinde olmayanlar onlar olacak. Ardından, ikinci bağımsız değişkeninde hangi sıranın kullanılması gerektiğini görmek için denemeniz gerekir.base64.b64decode()
Güncelleme 3 : Verileriniz "şirket gizliyse":
(a) bunu önceden söylemelisiniz
(b) sorunu anlamanın başka yollarını keşfedebiliriz ki bu, büyük olasılıkla hangi karakterlerin yerine +
ve hangi karakterlerin kullanıldığıyla ilgilidir /
. kodlama alfabesi veya diğer biçimlendirme veya yabancı karakterlerle.
Böyle bir yol, verilerinizde hangi "standart" olmayan karakterlerin bulunduğunu incelemek olabilir, örneğin
from collections import defaultdict
d = defaultdict(int)
import string
s = set(string.ascii_letters + string.digits)
for c in your_data:
if c not in s:
d[c] += 1
print d
base64.b64decode(strg, '-_')
? Bu, herhangi bir örnek veri sağlamaya gerek kalmadan, probleminize en olası Python çözümüdür. Önerilen "yöntemler", DEBUG önerileridir, sağlanan bilginin yetersizliği göz önüne alındığında GEREKLİ "isabet ve ıskalama".