Autor
|
Tema: Cifrar de forma segura una Pass en el Source (Leído 9,717 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Hola buenas, estoy haciendo un sistema para enviar emails desde un form, y tengo que ceder mi contraseña para que se puedan mandar emails correctamente, tengo una duda, hay alguna forma de cargar externamente un recurso si que de problemas? Es decir, por ejemplo, en mi hosting meto un htaccess y un txt (el htaccess bloquea el acceso según el user-agent (por si alguien se infiltra) y luego que haya alguna forma de que el WindowsForms si pueda sacar ese TXT).. Edito: Se me ha ocurrido una idea, que es darle permisos dentro de mi FTP... (Con chmod) Voy a ver si hago algo... Y por si fuera poco pues añado esto: Function SendEmail(ByVal Recipients As List(Of String), _ ByVal FromAddress As String, _ ByVal Subject As String, _ ByVal Body As String, _ ByVal UserName As String, _ ByVal Password As String, _ Optional ByVal Server As String = "smtp.gmail.com", _ Optional ByVal Port As Integer = 587, _ Optional ByVal Attachments As List(Of String) = Nothing) As String Dim Email As New MailMessage() Try Dim SMTPServer As New SmtpClient For Each Attachment As String In Attachments Email.Attachments.Add(New Attachment(Attachment)) Next Email.From = New MailAddress(FromAddress) For Each Recipient As String In Recipients Email.To.Add(Recipient) Next Email.Subject = Subject Email.Body = Body SMTPServer.Host = Server SMTPServer.Port = Port SMTPServer.Credentials = New System.Net.NetworkCredential(UserName, Password) SMTPServer.EnableSsl = True SMTPServer.Send(Email) Email.Dispose() Return "Email to " & Recipients(0) & " from " & FromAddress & " was sent." Catch ex As SmtpException Email.Dispose() Return "Sending Email Failed. Smtp Error." Catch ex As ArgumentOutOfRangeException Email.Dispose() Return "Sending Email Failed. Check Port Number." Catch Ex As InvalidOperationException Email.Dispose() Return "Sending Email Failed. Check Port Number." End Try End Function Private Function GenerateHash(ByVal SourceText As String) As String 'Create an encoding object to ensure the encoding standard for the source text Dim Ue As New UnicodeEncoding() 'Retrieve a byte array based on the source text Dim ByteSourceText() As Byte = Ue.GetBytes(SourceText) 'Instantiate an MD5 Provider object Dim Md5 As New MD5CryptoServiceProvider() 'Compute the hash value from the source Dim ByteHash() As Byte = Md5.ComputeHash(ByteSourceText) 'And convert it to String format for return Return Convert.ToBase64String(ByteHash) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Recipients As New List(Of String) Recipients.Add("Email a enviar, es decir, el mío") Dim FromEmailAddress As String = Recipients(0) Dim Subject As String = "Test From VB." Dim Body As String = "email body text, if you are reading this from your gmail account, the program worked." Dim UserName As String = "Email sin el @gmail.com" Dim Password As String = GenerateHash("Contraseña que se saque de un TXT cifrada en Base64") 'Aquí debería estar la magia del ChMod... Me gustaría saber como resaltar una línea de code... :-\ Dim Port As Integer = 587 Dim Server As String = "smtp.gmail.com" Dim Attachments As New List(Of String) SendEmail(Recipients, FromEmailAddress, Subject, Body, UserName, Password, Server, Port, Attachments) End Sub
Un saludo.PD: Este es mi mensaje 1000! PDS: Todo esto lo hago porque luego puede venir cualquier gracioso y sacarla con el Net Reflector... Esto no va con .NET, en parte no:Tengo una duda, con el chmod: http://www.onlineconversion.com/html_chmod_calculator.htmSe necesita ejecutarse para que Form lo pueda leer, o con la propiedad Read ya basta? Mejor dicho, Execute que hará? Voy a buscar... xD =========== http://es.wikipedia.org/wiki/ChmodEjecución | Ejecutar el archivo. | Recorrer su árbol para acceder archivos y subdirectorios, pero no ver los archivos dentro del directorio (excepto que se le de el permiso de lectura) |
Es decir, que si pongo permisos 111, VB.NET va a poder hacer algo? Creo que no... PD: Efectivamente, después de leer 3 veces esa cita, finalmente no va a leer nada.. Pero como le digo a la app que es el Owner (con Chmod a 400) y no cualquier otro grupo o visitante?
|
|
« Última modificación: 26 Julio 2013, 19:22 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
¿Y todo eso que propones lo consideras seguro? Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Hombre no mucho, pero por lo menos a los noobs que estén empezando a crackear no les va a resultar muy fácil, o eso creo... Por lo menos, dime como lo puedo hacer , o si quieres alguna recomendación o algo más seguro que se te ocurra Gracias.
|
|
« Última modificación: 26 Julio 2013, 15:02 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
¿Por qué debes de proporcionar tus credenciales? ¿Por qué no pides que lo ingresen los usuarios?
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
¿Por qué debes de proporcionar tus credenciales? ¿Por qué no pides que lo ingresen los usuarios?
|
|
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Es para registrar las cosas que hagan los usuarios, y por eso necesitan ser mis credenciales...
No se usar MySQL en VB.NET xD Y ademáas, si me borran el hosting pues por lo menos, tengo el respaldo de los emails..
|
|
« Última modificación: 26 Julio 2013, 19:08 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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...
|
|
« Última modificación: 26 Julio 2013, 19:25 pm por EleKtro H@cker »
|
En línea
|
|
|
|
~
|
Resultaría más práctico hacer un hash sobre los valores concatenados de usuario y contraseña y almacenar solamente eso.
Así, cuando se ingrese el usuario y contraseña, se calcularía, por ejemplo, el hash MD5 de esos valores con el hash MD5 almacenado en el código fuente.
Aunque todo esto podría no servir de nada si alguien más tiene acceso a la aplicación y si ese alguien es capaz de eliminar ese paso de seguridad, a menos que todos los datos estén cifrados también usando ese valor MD5 como "semilla" de cifrado, como mínimo por ejemplo, de una combinación alterada del "alfabeto" de Base64.
Así que si los caracteres de Base64 son originalmente:
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
que se determine dinámicamente un orden diferente con algún algoritmo, que resultaría en una cadena como:
"CDEFGHopIJKLMPtuQRST34UVWXABYZabcdefghijklNOmnqrsvwxyz01256789+/="
Aunque esto seguiría sin servir de nada tan pronto alguien más tuviera acceso al programa, y a los valores de nombre de usuario y contraseña.
|
|
|
En línea
|
|
|
|
El Benjo
|
Es decir, por ejemplo, en mi hosting meto un htaccess y un txt (el htaccess bloquea el acceso según el user-agent (por si alguien se infiltra) y luego que haya alguna forma de que el WindowsForms si pueda sacar ese TXT)..
Para esto te recomiendo que lo hagas mediante un script en tu servidor que lea el contenido de ese TXT cuando se llame con una contraseña exclusiva para ese propósito como parametro. Después llamas al script desde tu aplicación con un HTTPRequest y pasando la contraseña como parámetro para eso (Contraseña que no escribirías como constante en tu aplicación para evitar que sea vista con ingeniería inversa). El script te devolverá el contenido del TXT cuando le pases la contraseña correcta.
|
|
|
En línea
|
www.es.neftis-ai.comSí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
"Hostearía" código servidor que reciba las información por query string y lo guardaría en una base de datos.
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
navegar de forma segura
Dudas Generales
|
jesusarturoes
|
3
|
4,740
|
14 Diciembre 2010, 20:42 pm
por Aberroncho
|
|
|
Cifrar huellas como forma de borrar rastro
Hacking
|
Gambinoh
|
0
|
3,362
|
29 Agosto 2011, 21:38 pm
por Gambinoh
|
|
|
Programa para cifrar mensajes de forma paseudo-aleatoria.
Programación C/C++
|
Stakewinner00
|
8
|
4,489
|
25 Enero 2013, 21:38 pm
por Stakewinner00
|
|
|
Cifrar variables o textos de forma sencilla.
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Meta
|
11
|
8,904
|
1 Abril 2018, 20:22 pm
por Meta
|
|
|
[Resuelto] [Pregunta]: ¿cifrar contraseñas con "SHA-512" es una forma segura?
Desarrollo Web
|
Leguim
|
9
|
5,628
|
5 Septiembre 2019, 05:42 am
por Leguim
|
|