IT Yönetimi / Siber Güvenlik · Kasım 24, 2025 0

NetExec (nxc) LDAP Modülünde “PyAsn1UnicodeEncodeError” ve Karakter Sorunu

Giriş: Yerel Karakterler ve Pentest Araçları

Sızma testi (Pentest) uzmanlarının en sık kullandığı araçlardan biri olan NetExec (nxc), Active Directory ortamlarında bilgi toplama ve yanal hareket (lateral movement) için kritik bir rol oynar. Ancak, CrackMapExec mirasını devralan bu güçlü araç, bazen Latin alfabesi dışındaki karakterleri (Türkçe, Rusça, Çince vb.) işlerken beklenmedik hatalar verebilir.

Özellikle ldap modülü kullanılırken karşılaşılan ve süreci yarıda kesen PyAsn1UnicodeEncodeError, AD grup isimlerindeki özel karakterlerden kaynaklanmaktadır. Bu makalede, bu sorunun nedenini ve tek satırlık hızlı çözümünü paylaşıyoruz.


🔍 Hatanın Analizi: Neden Çöküyor?

NetExec, LDAP protokolü üzerinden Active Directory ile iletişim kurarken arka planda pyasn1 adlı bir Python kütüphanesini kullanır. Sorun tam olarak bu kütüphanenin varsayılan karakter kodlama ayarından kaynaklanmaktadır.

Teknik Detaylar

  • Hata Mesajı: PyAsn1UnicodeEncodeError

  • Senaryo: Active Directory içerisinde, isminde Latin olmayan karakterler (Örn: “İnsan Kaynakları”, “Dış Ticaret”, veya Kiril alfabesiyle yazılmış grup adları) bulunan gruplar sorgulanırken araç çöker.

  • Kök Neden: pyasn1 kütüphanesinin univ.py dosyasında varsayılan kodlama (encoding) tipi modern UTF-8 yerine, daha eski bir standart olan iso-8859-1 olarak ayarlanmıştır. Bu standart, genişletilmiş karakter setlerini desteklemez.


🛠️ Teknik Özet

Kategori Detaylar
Etkilenen Araç NetExec (nxc)
Sorunlu Modül LDAP / pyasn1 kütüphanesi
Hata Türü PyAsn1UnicodeEncodeError
Çözüm Yöntemi Kütüphane Encoding Ayarını (ISO-8859-1 -> UTF-8) Değiştirme

🚀 Çözüm: Tek Satırda Düzeltme (Hotfix)

Bu sorunu çözmek için kütüphanenin kaynak kodundaki kodlama tanımını değiştirmemiz gerekiyor. Eğer NetExec’i pipx ile kurduysanız (önerilen yöntem), aşağıdaki komut sorunu kalıcı olarak çözecektir.

Linux / macOS (sed Komutu ile):

Aşağıdaki komutu terminalinizde çalıştırın. Bu komut, ilgili dosyadaki iso-8859-1 ibaresini utf-8 ile değiştirir.

sed -i "s/encoding = 'iso-8859-1'/encoding = 'utf-8'/g" \
~/.local/pipx/venvs/netexec/lib/python3.*/site-packages/pyasn1/type/univ.py

Not: Python sürümünüze bağlı olarak dosya yolu (python3.11, python3.12 vb.) değişebilir. Yukarıdaki komut joker karakter (*) kullanarak bunu otomatik yakalamaya çalışır.

Manuel Düzeltme (Alternatif):

Eğer komut çalışmazsa veya farklı bir kurulum yönteminiz varsa:

  1. pyasn1/type/univ.py dosyasını bulun.

  2. Herhangi bir metin editörü ile açın.

  3. encoding = ‘iso-8859-1’ satırını bulun.

  4. encoding = ‘utf-8’ olarak değiştirip kaydedin.


🛡️ Neden Önemli?

Sızma testlerinde araçların kararlılığı hayati önem taşır. Bir AD ortamında binlerce grup olabilir ve tek bir Türkçe karakter yüzünden tüm taramanın durması, zaman kaybına yol açar. Bu düzeltme, NetExec’in global ortamlarda sorunsuz çalışmasını sağlar.


CUMBUR.NET sitesinden daha fazla şey keşfedin

Subscribe to get the latest posts sent to your email.

CUMBUR.NET sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin