Stealth Posted December 19, 2009 Share Posted December 19, 2009 L2 Account Master Information: L2 Account Master is an application that can help you create or update accounts on your server easily. The algorithm for password encoding of the accounts is embedded into the application. You can also update the accounts with the new password just with a single click. Its also a great replacement for the normal SQLAccountManager script. Many new features are coming. Screenshots: Downloads: Download Source: Imports L2_Account_Master.IniFile Imports System.Security.Cryptography Public Class Form1 Private version As String = "0.3beta" Private title As String = "L2 Account Master " & version Private Connection As New MySql.Data.MySqlClient.MySqlConnection Private Command As New MySql.Data.MySqlClient.MySqlCommand Private Adapter As New MySql.Data.MySqlClient.MySqlDataAdapter Private config As String = Application.StartupPath & "\config.ini" Private connectionstring As String Public Function RecreateINI() If IO.File.Exists(config) Then Else IO.File.CreateText(config) End If End Function Private Function Encode(ByVal value As String) As String Dim sha As SHA1 = New SHA1Managed() Dim encDataByte As Byte() = New Byte(value.Length - 1) {} Return Convert.ToBase64String(sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(value))) End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = title Command.Connection = Connection End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then TextBox9.PasswordChar = Nothing Else TextBox9.PasswordChar = "*" End If End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Connection.State = ConnectionState.Open Then mysqlconnstatus.Text = "Active" mysqlconnstatus.ForeColor = Color.Green ToolStripStatusLabel2.Visible = False Button6.Enabled = False Else Button6.Enabled = True ToolStripStatusLabel2.Visible = True mysqlconnstatus.Text = "Inactive" mysqlconnstatus.ForeColor = Color.Red End If End Sub Private Sub ToolStripStatusLabel2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripStatusLabel2.Click TabControl1.SelectedTab() = TabControl1.TabPages(2) End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If IO.File.Exists(config) Then Dim ini As New IniFile(config) TextBox7.Text = ini.GetString("MySQL", "Hostname", "") TextBox8.Text = ini.GetString("MySQL", "Username", "") TextBox9.Text = ini.GetString("MySQL", "Password", "") TextBox10.Text = ini.GetString("MySQL", "Database", "") Else RecreateINI() Dim ini As New IniFile(config) ini.WriteString("MySQL", "Hostname", TextBox7.Text) ini.WriteString("MySQL", "Username", TextBox8.Text) ini.WriteString("MySQL", "Password", TextBox9.Text) ini.WriteString("MySQL", "Database", TextBox10.Text) End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If IO.File.Exists(config) Then Dim ini As New IniFile(config) ini.WriteString("MySQL", "Hostname", TextBox7.Text) ini.WriteString("MySQL", "Username", TextBox8.Text) ini.WriteString("MySQL", "Password", TextBox9.Text) ini.WriteString("MySQL", "Database", TextBox10.Text) Else RecreateINI() Dim ini As New IniFile(config) ini.WriteString("MySQL", "Hostname", TextBox7.Text) ini.WriteString("MySQL", "Username", TextBox8.Text) ini.WriteString("MySQL", "Password", TextBox9.Text) ini.WriteString("MySQL", "Database", TextBox10.Text) End If End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click connectionstring = "Server=" & TextBox7.Text & ";Database=" & TextBox10.Text & ";Uid=" & TextBox8.Text & ";Pwd=" & TextBox9.Text & ";" Connection.ConnectionString = connectionstring Try Connection.Open() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() End Sub Private Sub TabPage3_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage3.Enter If IO.File.Exists(config) Then Dim ini As New IniFile(config) TextBox7.Text = ini.GetString("MySQL", "Hostname", "") TextBox8.Text = ini.GetString("MySQL", "Username", "") TextBox9.Text = ini.GetString("MySQL", "Password", "") TextBox10.Text = ini.GetString("MySQL", "Database", "") Else RecreateINI() Dim ini As New IniFile(config) ini.WriteString("MySQL", "Hostname", TextBox7.Text) ini.WriteString("MySQL", "Username", TextBox8.Text) ini.WriteString("MySQL", "Password", TextBox9.Text) ini.WriteString("MySQL", "Database", TextBox10.Text) End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox2.Text = TextBox3.Text Then Command.CommandText = "INSERT INTO `accounts` (`login`, `password`, `lastactive`, `accessLevel`, `lastIP`, `lastServer`) VALUES ('" & TextBox1.Text & "', '" & Encode(TextBox2.Text) & "', '1', '0', '0.0.0.0', '1')" MsgBox("Account created!") Try Command.BeginExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Else MsgBox("The two passwords don't match!", MsgBoxStyle.Critical) End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If TextBox4.Text = TextBox5.Text Then Command.CommandText = "UPDATE `accounts` SET `password`='" & Encode(TextBox5.Text) & "' WHERE (`login`='" & TextBox6.Text & "')" MsgBox("Account updated!") Try Command.BeginExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Else MsgBox("The two passwords don't match!", MsgBoxStyle.Critical) End If End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() End Sub End Class Public Class IniFile ' API functions Private Declare Ansi Function GetPrivateProfileString _ Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, ByVal lpDefault As String, _ ByVal lpReturnedString As System.Text.StringBuilder, _ ByVal nSize As Integer, ByVal lpFileName As String) _ As Integer Private Declare Ansi Function WritePrivateProfileString _ Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, ByVal lpString As String, _ ByVal lpFileName As String) As Integer Private Declare Ansi Function GetPrivateProfileInt _ Lib "kernel32.dll" Alias "GetPrivateProfileIntA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, ByVal nDefault As Integer, _ ByVal lpFileName As String) As Integer Private Declare Ansi Function FlushPrivateProfileString _ Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As Integer, _ ByVal lpKeyName As Integer, ByVal lpString As Integer, _ ByVal lpFileName As String) As Integer Dim strFilename As String ' Constructor, accepting a filename Public Sub New(ByVal Filename As String) strFilename = Filename End Sub ' Read-only filename property ReadOnly Property FileName() As String Get Return strFilename End Get End Property Public Function GetString(ByVal Section As String, _ ByVal Key As String, ByVal [Default] As String) As String ' Returns a string from your INI file Dim intCharCount As Integer Dim objResult As New System.Text.StringBuilder(256) intCharCount = GetPrivateProfileString(Section, Key, _ [Default], objResult, objResult.Capacity, strFilename) If intCharCount > 0 Then GetString = objResult.ToString End Function Public Function GetInteger(ByVal Section As String, _ ByVal Key As String, ByVal [Default] As Integer) As Integer ' Returns an integer from your INI file Return GetPrivateProfileInt(Section, Key, _ [Default], strFilename) End Function Public Function GetBoolean(ByVal Section As String, _ ByVal Key As String, ByVal [Default] As Boolean) As Boolean ' Returns a boolean from your INI file Return (GetPrivateProfileInt(Section, Key, _ CInt([Default]), strFilename) = 1) End Function Public Sub WriteString(ByVal Section As String, _ ByVal Key As String, ByVal Value As String) ' Writes a string to your INI file WritePrivateProfileString(Section, Key, Value, strFilename) Flush() End Sub Public Sub WriteInteger(ByVal Section As String, _ ByVal Key As String, ByVal Value As Integer) ' Writes an integer to your INI file WriteString(Section, Key, CStr(Value)) Flush() End Sub Public Sub WriteBoolean(ByVal Section As String, _ ByVal Key As String, ByVal Value As Boolean) ' Writes a boolean to your INI file WriteString(Section, Key, CStr(CInt(Value))) Flush() End Sub Private Sub Flush() ' Stores all the cached changes to your INI file FlushPrivateProfileString(0, 0, 0, strFilename) End Sub End Class Encryption part: Private Function Encode(ByVal value As String) As String Dim sha As SHA1 = New SHA1Managed() Dim encDataByte As Byte() = New Byte(value.Length - 1) {} Return Convert.ToBase64String(sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(value))) End Function Quote Link to comment Share on other sites More sharing options...
Apithanos Posted December 19, 2009 Share Posted December 19, 2009 answeme waiting for the tool keep the good job dude. :) Quote Link to comment Share on other sites More sharing options...
Rin4a Posted December 20, 2009 Share Posted December 20, 2009 actually, I don't see anything that difficult... nor I see a reason, why it shouldn't be a freeware... it takes like 30 minutes to make one... but good luck with this app. Quote Link to comment Share on other sites More sharing options...
Stealth Posted December 20, 2009 Author Share Posted December 20, 2009 actually, I don't see anything that difficult... nor I see a reason, why it shouldn't be a freeware... it takes like 30 minutes to make one... but good luck with this app. Ok make one in 30 minutes and pm me. It took me 5 hours to make this. Plus the fixes. The thing that i have made it simple does not mean that its easy to code too. Quote Link to comment Share on other sites More sharing options...
Street-Gamer Posted December 20, 2009 Share Posted December 20, 2009 w000ww Awesome... Thanks a lot dude. keep it updated. Quote Link to comment Share on other sites More sharing options...
Rin4a Posted December 20, 2009 Share Posted December 20, 2009 Stealth, I just pulled those 30 minutes out of the air... OK, one hour maybe, because what I see from the screenshots is that you have 2 sections, that are worth exploring... first one is for connection... making a connection string takes like a minute... running additional queries takes like 5 minutes. Password encoding could be a challenge, but it wouldn't take more than 20 minutes. Making the UI would take 5-10 minutes, so yeah... it would take me about 30 minutes to an hour. I don't know, how many resources would this app consume, because I'm working with delphi, but simple workarounds would make it less memory consuming. Quote Link to comment Share on other sites More sharing options...
Stealth Posted December 20, 2009 Author Share Posted December 20, 2009 You know what?Screw it , I will go open source again, even if I am just wasting my time in here and my work is ignored. The file will be uploaded in a couple minutes. EDIT: File uploaded. EDIT2: Source uploaded. Quote Link to comment Share on other sites More sharing options...
Cloud Posted December 20, 2009 Share Posted December 20, 2009 Stealth great program,i rly approciate ur work..but when i saw that u wont share it for free i was sad.U meaned that the program will be not free for others right?anyway downloading Quote Link to comment Share on other sites More sharing options...
HolySmoke Posted December 20, 2009 Share Posted December 20, 2009 Awesome tool Stealth.Karma is yours w00t.Downloading.. Quote Link to comment Share on other sites More sharing options...
Stealth Posted December 20, 2009 Author Share Posted December 20, 2009 Stealth great program,i rly approciate ur work..but when i saw that u wont sahre it for free i was sad.U meaned that the program will be not free for others right?anyway downloading It is for free now. Anyway. Quote Link to comment Share on other sites More sharing options...
Cloud Posted December 20, 2009 Share Posted December 20, 2009 i didn't understand how to use it,can u explain me?i have to import all the code in mysql before open program? Quote Link to comment Share on other sites More sharing options...
Stealth Posted December 20, 2009 Author Share Posted December 20, 2009 i didn't understand how to use it,can u explain me?i have to import all the code in mysql before open program? First of all this tool is a replacement for the old SQLAccountManager.bat. Fill in your sql data then click connect and create/update any account. More options coming soon. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.