|
8631
|
Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets)
|
en: 31 Julio 2013, 15:01 pm
|
yo en mi vida, he tomado a nadie por Noob en el tema de la programación Ahá... xD Que bueno es saber CSS y HTML y un poco de PHP. Es la ostia los noobs que son algunos.
[Offtopic] No subestimar a los demás, alguien podría estar pensando lo mismo sobre ti en .NET  PD: La otra cita es para que recuerdes el buen consejo de Novlucker. Si quieres aceptar mi consejo hazlo, sino pues no lo hagas, pero ya te he dicho lo que pienso y tu también lo acabas de hacer, ya no es necesario que sigamos haciendo más offtopics. Saludos
|
|
|
8632
|
Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets)
|
en: 31 Julio 2013, 02:16 am
|
Me parece indignante leer comentarios de tus codes como "esto no tengo ni p**a idea de para q sirve", etc... En el code de VB un fallo muy grave: r.Next(0, 35) 'Esto no se muy bien que hace xD
Claro, que como de costumbre no te has molestado en buscar que coño significa, pus asi vas. Significa que el número se va a generar desde el 0 hasta el 35, pero tu cadena de caracteres tiene una longitud de 62 caracteres...con lo cual no es nada aleatorio, ya que sólo escojerá entre los primeros 35 digitos... En cambio en el code de PHP es correcto porque priméramente se obtiene la longitud de la cadena (variable $size) para usarlo como margen total del número random, cosa que no haces en VB y no sabes ni para que sirve pero en PHP si que lo haces así que debemos suponer que en PHP si que sabes para que sirve cuando ex exáctamente lo mismo?...
...Así que doy por supuesto que usas copy/paste para todos los lenguajes sin enterarte de nada de lo que haces, es algo que se nota a simple vista, y me parece muy mal Ikillnukes, y como he dicho, indignante, para serte aún más sincero no me extraña que algunas personas se enfaden cuando presumes de saber un lenguaje, no eres quien para llamar noobs a los que no saben PHP, porque viendo esto... tu no eres más, intenta ser un poco más humilde. PD: A cualquiera que se haga llamar programador le molestaría darse cuenta de las cosas que me doy cuenta yo día a día contigo. Sabes o espero que sepas que no te tengo mania, pero yo estas cosas no las tolero. Aparte de eso, no estás definiendo el tipo de valor que devuelves en la función, pero bueno, eso es una minucia comparado con lo que verdaderamente importa. En fin, aquí tienes mi versión con dicho error corregido, ale, a copiar se ha dicho... : Private Function Random_String(ByVal Length As Int32, _ Optional ByVal Characters As String = _ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" _ ) As String Select Case Length Case Is < 1 ' Is 0 or negative Throw New Exception("Length must be greater than 0") Case Else ' Is greater than 0 Dim str As String = String.Empty Dim rand As New Random, rand_length As Int32 = Characters.Length Do Until str.Length = Length str &= Characters.Substring(rand.Next(0, rand_length), 1) Loop Return str End Select End Function
PD2: Quizás sea beneficioso crear un método parecido pero usando LINQ para procesar más rápido cadenas extremádamente largas.
|
|
|
8634
|
Programación / .NET (C#, VB.NET, ASP) / Re: Recibir comandos en el formulario por línea de comando
|
en: 29 Julio 2013, 19:56 pm
|
Los argumentos los puedes encontrar almacenados aquí: My.Application.CommandLineArgs Ejemplo: ' Loop through all the command line arguments given. For I As Integer = 0 To My.Application.CommandLineArgs.Count - 1 ' If an argument equals "/m" If My.Application.CommandLineArgs.Item(I).ToLower = "/m" Then MsgBox("You have used /m") Else ' If it doesn't equal "/m" MsgBox("Incorrect CMD Argument.") End If Next
Si estás usando un WinForm y quieres recibir argumentos puedes hacer dos cosas: 1. Setear el proyecto como "ConsoleApp", lo cual adjuntará una molesta ventana del a CMD cada vez que inicies tu app. 2. Adjuntar una instancia de la consola manualmente si tu proyecto es llamado desde la CMD. Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean Declare Function FreeConsole Lib "kernel32.dll" () As Boolean AttachConsole(-1) ' Attach the console System.Console.Writeline("I am writing from a WinForm to the console!") FreeConsole() ' Desattach the console
Para saber si tu aplicación se ha llamado desde la consola puedes hacer esto: #Region " App Is Launched From CMD? " ' [ App Is Launched From CMD? Function ] ' ' // By Elektro H@cker ' ' Examples: ' MsgBox(App_Is_Launched_From_CMD) ' If App_Is_Launched_From_CMD() Then Console.WriteLine("Help for this application: ...") Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean Declare Function FreeConsole Lib "kernel32.dll" () As Boolean Private Function App_Is_Launched_From_CMD() As Boolean If AttachConsole(-1) Then FreeConsole() Return True Else Return False End If End Function #End Region
Saludos...
|
|
|
8637
|
Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets)
|
en: 27 Julio 2013, 11:07 am
|
Comprobar si un archivo es un archivo de registro válido (version 5.0) #Region " Is Registry File " ' [ Is Registry File Function ] ' ' // By Elektro H@cker ' ' Examples : ' MsgBox(IsRegFile("C:\RegistryFile.reg")) ' IsRegistryFile Private Function IsRegFile(ByVal RegistryFile As String) As Boolean Dim Regedit_Signature As String = "windows registry editor version 5.00" Return IO. File. ReadAllText(RegistryFile ). ToLower. Trim. StartsWith(Regedit_Signature ) End Function #End Region
El núcleo de mi programa REG2BAT, mejorado para soportar caracteres inválidos por Batch (para escaparlos) #Region " Reg2Bat " ' [ Reg2Bat Function ] ' ' // By Elektro H@cker ' ' Examples : ' MsgBox(Reg2Bat("C:\Registry.reg")) Public Enum REG2BAT_Format As Int16 BINARY = 1 DWORD = 2 QWORD = 3 EXPAND_SZ = 4 MULTI_SZ = 5 REG_SZ = 0 End Enum ' Reg2Bat Private Function Reg2Bat(ByVal Reg_File As String) As String ' Source Input ' Join he lines, delete the Regedit linebreaks characters: "\ ", and then split the lines. Dim RegFile() As String = Split( _ String. Join("@@@Reg2Bat@@@", IO. File. ReadAllLines(Reg_File )) _ .Replace("\@@@Reg2Bat@@@ ", "") _ .Replace("@@@Reg2Bat@@@", Environment.NewLine), _ Environment.NewLine) Dim RegLine As String = String.Empty ' Where the Regedit Line will be stored. Dim RegKey As String = String.Empty ' Where the Regedit Key will be stored. Dim RegVal As String = String.Empty ' Where the Regedit Value will be stored. Dim RegData As String = String.Empty ' Where the Regedit Data will be stored. Dim Batch_Commands As String = String.Empty ' Where the decoded Regedit strings will be stored. Batch_Commands &= ":: Converted with REG2BAT by Elektro H@cker" Batch_Commands &= Environment.NewLine & Environment.NewLine Batch_Commands &= "@Echo OFF" Batch_Commands &= Environment.NewLine & Environment.NewLine ' Start reading the Regedit File For X As Int64 = 0 To RegFile.LongLength - 1 RegLine = RegFile(X).Trim Select Case True Case RegLine.StartsWith(";") ' Comment line Batch_Commands &= Environment.NewLine Batch_Commands &= String.Format("REM {0}", RegLine.Substring(1, RegLine.Length - 1).Trim) Batch_Commands &= Environment.NewLine Case RegLine.StartsWith("[-") ' Key to delete RegKey = RegLine.Substring(2, RegLine.Length - 3).Trim Batch_Commands &= String.Format("REG DELETE ""{0}"" /F", RegKey) Batch_Commands &= Environment.NewLine Case RegLine.StartsWith("[") ' Key to add RegKey = RegLine.Substring(1, RegLine.Length - 2).Trim Batch_Commands &= String.Format("REG ADD ""{0}"" /F", RegKey) Batch_Commands &= Environment.NewLine Case RegLine.StartsWith("@=") ' Default Value to add RegData = Split(RegLine, "@=", , CompareMethod.Text).Last Batch_Commands &= String.Format("REG ADD ""{0}"" /V """" /D {1} /F", RegKey, RegData) Batch_Commands &= Environment.NewLine Case RegLine.StartsWith("""") _ AndAlso RegLine.Split("=").Last = "-" ' Value to delete RegVal = RegLine.Substring(1, RegLine.Length - 4) Batch_Commands &= String.Format("REG DELETE ""{0}"" /V ""{1}"" /F", RegKey, RegVal) Batch_Commands &= Environment.NewLine Case RegLine.StartsWith("""") ' Value to add ' Check data type: Select Case RegLine.Split("=")(1).Split(":")(0).ToLower Case "hex" ' Binary RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.BINARY)) RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.BINARY) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_BINARY"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine Case "dword" ' DWORD (32 bit) RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.DWORD)) RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.DWORD) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_DWORD"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine Case "hex(b)" ' QWORD (64 bIT) RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.QWORD)) RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.QWORD) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_QWORD"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine Case "hex(2)" ' EXPAND SZ RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.EXPAND_SZ)) RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.EXPAND_SZ)) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_EXPAND_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine Case "hex(7)" ' MULTI SZ RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.MULTI_SZ)) RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.MULTI_SZ)) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_MULTI_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine Case Else ' REG SZ RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.REG_SZ)) RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.REG_SZ)) Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData) Batch_Commands &= Environment.NewLine End Select End Select Next Return Batch_Commands End Function ' Get Regedit Value Private Function Get_Regedit_Value(ByVal Line As String, ByVal REG2BAT_Format As REG2BAT_Format) As String Dim str As String = Nothing Select Case REG2BAT_Format Case REG2BAT_Format.BINARY : str = Split(Line, "=hex:", , CompareMethod.Text).First Case REG2BAT_Format.DWORD : str = Split(Line, "=dword:", , CompareMethod.Text).First Case REG2BAT_Format.QWORD : str = Split(Line, "=hex(b):", , CompareMethod.Text).First Case REG2BAT_Format.EXPAND_SZ : str = Split(Line, "=Hex(2):", , CompareMethod.Text).First Case REG2BAT_Format.MULTI_SZ : str = Split(Line, "=Hex(7):", , CompareMethod.Text).First Case REG2BAT_Format.REG_SZ : str = Split(Line, """=""", , CompareMethod.Text).First Case Else : Return Nothing End Select If str.StartsWith("""") Then str = str.Substring(1, str.Length - 1) If str.EndsWith("""") Then str = str.Substring(0, str.Length - 1) Return str End Function ' Get Regedit Data Private Function Get_Regedit_Data(ByVal Line As String, ByVal REG2BAT_Format As REG2BAT_Format) As String Dim Data As String = Nothing Select Case REG2BAT_Format Case REG2BAT_Format.BINARY Return Split(Line, (Split(Line, "=hex:", , CompareMethod.Text).First & "=hex:"), , CompareMethod.Text).Last.Replace(",", "") Case REG2BAT_Format.DWORD Return "0x" & Split(Line, (Split(Line, "=dword:", , CompareMethod.Text).First & "=dword:"), , CompareMethod.Text).Last.Replace(",", "") Case REG2BAT_Format.QWORD Line = StrReverse(Split(Line, (Split(Line, "=hex(b):", , CompareMethod.Text).First & "=hex(b):"), , CompareMethod.Text).Last.Replace(",", "")) For Each [byte] In Line.Split(",") : Data &= StrReverse([byte]) : Next Return Data Case REG2BAT_Format.EXPAND_SZ Line = Split(Line, (Split(Line, "=Hex(2):", , CompareMethod.Text).First & "=hex(2):"), , CompareMethod.Text).Last.Replace(",00", "").Replace("00,", "") For Each [byte] In Line.Split(",") : Data &= Chr(Val("&H" & [byte])) : Next Return Data.Replace("""", "\""") Case REG2BAT_Format.MULTI_SZ Line = Split(Line, (Split(Line, "=Hex(7):", , CompareMethod.Text)(0) & "=hex(7):"), , CompareMethod.Text).Last.Replace(",00,00,00", ",\0").Replace(",00", "").Replace("00,", "") For Each [byte] In Line.Split(",") If [byte] = "\0" Then Data &= "\0" ' Line separator for multiline. Else Data &= Chr(Val("&H" & [byte])) End If Next Return Data.Replace("""", "\""") Case REG2BAT_Format.REG_SZ Data = Split(Line, (Split(Line, """=""", , CompareMethod.Text)(0) & """="""), , CompareMethod.Text).Last Data = Data.Substring(0, Data.Length - 1) Return Data Case Else Return Nothing End Select End Function ' Format Regedit String Private Function Format_Regedit_String(ByVal str As String) As String str = str.Replace("%", "%%") If Not str.Contains("""") Then Return str str = str.Replace("\""", """") Dim strArray() As String = str.Split("""") For num As Long = 1 To strArray.Length - 1 Step 2 strArray(num) = strArray(num).Replace("^", "^^") ' This replace need to be THE FIRST. strArray(num) = strArray(num).Replace("<", "^<") strArray(num) = strArray(num).Replace(">", "^>") strArray(num) = strArray(num).Replace("|", "^|") strArray(num) = strArray(num).Replace("&", "^&") ' strArray(num) = strArray(num).Replace("\", "\\") Next Return String.Join("\""", strArray) End Function #End Region
|
|
|
8638
|
Programación / .NET (C#, VB.NET, ASP) / Re: Cifrar de forma segura una Pass en el Source
|
en: 26 Julio 2013, 19:19 pm
|
De alguna forma todo lo que se compila se debe poder descompilar para ser procesado por el engine del framework, sinó la app no se podría leer/ejecutar. PD: Iba a pasarte un enlace sobre esto, era muy interesante, pero hace ya tiempo que me documenté y no recuerdo el enlace. Lo que comentas del .NET Reflector, es inevitable, .NET Reflector no es un super programa que craquea las aplicaciones, no, es solo es una GUI para el reflector, otro ejemplo será el "simple assembly Explorer", deberías leer sobre el término "Reflection" para entenderlo mejor. Con esto te quiero decir que... como es inevitable yo no perdería mucho el tiempo a la hora de buscar la protección perfecta, porque no existe, el mejor cracker siempre va a poder averiguar tus credenciales si se propone el reto. No soy un experto en el tema de la ingenieria inversa, pero aquí va mi consejo: Si estás tán convencido de querer usar tus credenciales pues, lo que te recomiendo es que añadas una protección mínima dentro del proyecto para las credenciales, por ejemplo usar algún tipo de hash como MD5 para tu contraseña, y luego, después de esa protección mínima, usar algún software profesional para proteger tu proyecto como por ejemplo "Crypto Obfuscator" o "Smart Assembly", por más códigos que encuentres con intención de hacer copy&paste para proteger tu app ninguno va a ser tán eficaz como este tipo de aplicaciones profesionales, que además de ofuscar, encriptan y comprimen, todo a niveles extremos ...tanto que si no lo usas bien podrías corromper el executable (pero siempre puedes volver a intentarlo usando niveles más bajos de protección  ). Saludos...
|
|
|
8639
|
Programación / .NET (C#, VB.NET, ASP) / VisualStudio me ha creado la misma GUID para 2 aplicaciones distintas!
|
en: 26 Julio 2013, 19:04 pm
|
Hola. He hecho dos aplicaciones distintas, las dos son single-instance, y a la hora de intentar ejecutarlas al mismo tiempo no he podido. No quería creermelo pero lo que sucedia parecia ser muy obvio así que lo primero que se me ha ocurrido es ir a las propiedades de los proyectos para comprobar si las GUIDS eran iguales, y ...efectívamente!! las dos aplicaciones tenian la misma GUID, toma ya! ¿Como es esto posible?Las dos aplicaciones han sido creadas desde cero, quiero decir que no he copiado archivos sueltos de un proyecto a otro, y además son diferentes en todo menos en los recursos de imágenes utilizados, algunas subrutinas, y el nombre de la Class principal. No entiendo como ha pasado esto. Me gustaría que alguien me explicase que motivos pueden causar que VS use la misma GUID para dos aplicaciones complétamente distintas. Un saludo!
|
|
|
8640
|
Programación / .NET (C#, VB.NET, ASP) / Re: Comprimir proceso en la RAM
|
en: 26 Julio 2013, 01:22 am
|
tengo pensado hacer que cada 200 contactos la app se renicie y libere la memoria acumulada y siga con el proceso.  . . .Parece que lo que te digan no sirve para nada, déjate de chorradas de reiniciar procesos o comprimir kiwis en la RAM, lee de nuevo el comentario de Kubox, porque como último recurso no necesitas más, lee acerca de la class "GC" (garbage collector) http://msdn.microsoft.com/en-us/library/system.gc%28v=vs.80%29.aspx...Encima ayer te pasé un código por privado, por skype, incluso te di instrucciones, era un snippet, y era muy eficaz, ¿Lo has intentado usar?. Saludos...
|
|
|
|
|
|
|