C# şifreli excelden veri aktarmak

Başlatan hasankara, 01 Şubat 2015, 06:39:13

hasankara

Başlıkta da belirttiğim gibi; elimde şifreli excel dosyası var bunun içerisinden c# a veri çekmek istiyorum ama dosya açılırken hata alıyorum. hata : "System.Data.OleDb.OleDbException (0x80004005): Dosyanın şifresi çözülemedi.

ilgili excel dosyası : https://www.silabs.com/Support Documents/Software/Si4432 Register Settings_RevV-v26.xls bu linkten indirilebilir. Bu şifreyi kırma ihtimalimiz nedir? daha önce ilgilenen oldu mu? veya daha önce araştırıp bu dosyanın şifresiz halini bulan oldu mu?

hasankara

#1
Dünden beri uğraşıyorum bazı gelişmeler var yalnız c# da hala kullanamıyorum.

kısmen şifre kırabiliyorum ancak sanki adamlar bu şifre kırma metotlarına göre excel hazırlamışlar. mesela;

https://www.youtube.com/watch?v=mx0_SKQUNe8 bu link sayesinde excel kırabildim ancak gizli bir sayfa olduğu için o sayfasız işlemler çalışmıyor ve bu şekilde kırılan excel dosyalarında gizli sayfalar kayboluyor.

diğer bir metot ise makro metodu; bununla da şu an için sayfaları kırabiliyorum. ancak excel dosyasının sayfadan bağımsız koruması için şu an bir şey yapamadım. sayfanın geneli için makro çalıştırmayı düşündüm ama böyle bir şeyin olup olmadığını dahi bilmiyorum. dosyanın genelinde ki şifreden dolayı c# dosyaya yine erişemiyor. ilgili makroyu da paylaşayım;

Sub SifreAc()
Dim i As Integer, j As Integer, k As Integer 
Dim l As Integer, m As Integer, n As Integer 
Dim i1 As Integer, i2 As Integer, i3 As Integer 
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next 
For i = 65 To 66 
For j = 65 To 66 
For k = 65 To 66 
For l = 65 To 66 
For m = 65 To 66 
For i1 = 65 To 66 
For i2 = 65 To 66 
For i3 = 65 To 66 
For i4 = 65 To 66 
For i5 = 65 To 66 
For i6 = 65 To 66 
For n = 32 To 126 
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _ 
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _ 
& Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
If ActiveSheet.ProtectContents = False Then 
MsgBox "One usable password is " & Chr(i) & Chr(j) _ 
& Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) _ 
& Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
Exit Sub 
End If 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
Next 
End Sub



mesaj birleştirme:: 01 Şubat 2015, 11:26:37

Yine kendin pişir kendi ye oldu madem konu açtık yazdık faydalanan olur diye sonucu da yazıyorum. Makro sayesinde şifre tamamen kırıldı ve c# da özgürce kullanılabiliyor. Bahsi geçen excel dosyası; https://mega.co.nz/#!H5FkhYoa!vFmc98J7RCqtNW1um6J4rg5gydCDxnsaTdAlJheivvo linkinden indirilebilir.

excel kırma hakkında ise;
1. aşağıdaki sayfa adlarından herhangi birisine sağ tıklayıp kod görüntüle tıklanır.
2. açılan visual basic application penceresinde ki VBAProject ufak penceresinde ki "BuÇalışmaKitabı" na çift tıklanarak program yazılacak pencere açılır.
3. bir önceki yorumumda paylaştığım makro kodu olduğu gibi bu pencereye yapıştırılır.
4. f5 tuşuna yada yukarıdaki çalıştır butonuna (yeşil üçgen) tıklanır.
5. excel penceresi önünde açılan dialog penceresinde tek kullanımlık şifre yazar bu şifre bir kenarda saklanır.
6. Visual basic penceresi kapatılır. Excel penceresinde gözden geçir sekmesinde çalışma kitabını koru seçeneğine tıklanır. açılan ufak dialog penceresinde istediği şifre yerine 5. aşamada elde edilen şifre elle yazılır ve tamam a tıklanır.

Sayfalar üzerindeki şifreleri ayrıca kırılması gerekebilir benim ilgilendiğim bu dosyada olduğu gibi. Aynı metot ile sadece 2. aşamada, "BuÇalışmaKitabı" değil de ilgili sayfa ismine iki kez tıklanarak aynı işlemler yapıldığında ilgili sayfa şifresi kırılabiliyor.

Bu metot ile dosyaya hiç bir zarar vermeden ben dosya üzerindeki tüm şifreleri iptal edebildim. Ancak bir mesuliyet kabul etmem bu sebeple yedek dosya üzerinden çalışmanızı öneririm.