Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - n-utz

#1
Seguridad / FTPS - TLS/SSL
29 Octubre 2018, 18:56 PM
Buenas chicos,

Vengo con una consulta bastante simple. La primera vez que me meto con este protocolo, y no me queda claro la información que encuentro en otras fuentes, por eso recurro a ustedes.

Desarrollé un FTP, y quiero cifrar la comunicación con TLS/SSL para que pase a ser FTPS, y la verdad tengo nulo conocimiento en esto.

Estoy usando una libreria que levanta el certificado desde un archivo *.pfx, pero no me queda claro qué debo alojar ahí (del lado del servidor), y qué le tengo que disponibilizar al cliente para que pueda comunicarse correctamente. Por si se darán cuenta que me cuesta entender el protocolo, qué es necesario para una comunicación correcta.

Por otro lado, ¿cómo genero los certificados *.pfx o cert?.

Me conformo con un link explicativo pero los que leí no puedo comprenderlos.

Gracias, y saludos!
#2
.NET (C#, VB.NET, ASP) / FTPS en ASP.NET Core
12 Octubre 2018, 19:33 PM
Buenas gente,

Hace mucho no posteaba en el foro, siempre lo uso como último recurso cuando no encuentro salida con algún problema.

Estoy desarrollando un FTP Server en ASP.NET Core utilizando la libreria Fubar FTP : http://fubardevelopment.github.io/FtpServer/index.html

Utilicé esta libreria porque te permite, a través de DI, cambiar el comportamiento del file system (o el file system completamente), lo diseñé para que almacene los archivos que recibe en un storage de Azure.

Ahora me encuentro con un problema bastante simple (para el que esté en tema), y es que quiero que la comunicación del FTP sea mediante SSL/TLS, estuve leyendo y en lo samples de la libreria ellos levantan un certificado X509 desde un .pfx.

El problema es que no entiendo bien cómo funciona este certificado, es decir, el servidor debe tener un .pfx para que lo levante y ahí tendrá su private key, y el usuario debe tener otro certificado con alguna relación al mio?

No sé bien cómo crear el .pfx y si debo hacerlo en runtime o ya debe estar alocado en el server que esté corriendo el FTP.

¿Me podrían orientar?, gracias.
Quizá este post debería ir en criptografía, ¿no?.
#3
Buenas,

Hace mucho no posteo en el foro, pero siempre va a ser mi última opción cuándo no encuentre la información en ningún otro lado o no pueda entender conceptos..

Vengo ahora con un problema de mapeos, estoy desarrollando un sistemita, para uso personal, donde voy a registrar las deudas o deudores que tengo.

Les paso código, que explica más que mil palabras:


    public class Person
    {
        protected virtual long Id { get; set; }
        protected virtual string Name { get; set;  }
        protected virtual string Nickname { get; set; }
        protected virtual string Surname { get; set; }

        public Person() { }

        public Person(string name, string nickname, string surname)
        {
            Name = name;
            Nickname = nickname;
            Surname = surname;
        }
    }



    public abstract class Transaction
    {
        protected virtual long Id { get; set; }
        protected virtual float OriginalAmount { get; set; }
        protected virtual float RemainingAmount { get; set; }
        protected virtual string Detail { get; set; }
        protected virtual DateTime Stamp { get; set; }
        protected virtual Person Person { get; set; }

        protected Transaction() { }

        protected Transaction(float originalAmount, string detail, Person person)
        {
            OriginalAmount = originalAmount;
            RemainingAmount = originalAmount;
            Detail = detail;
            Stamp = DateTime.Now;
            Person = person;
        }
    }

   public class Asset : Transaction
    {
        public Asset() { }

        public Asset(float originalAmount, string detail, Person person) :
            base(originalAmount, detail, person) { }
    }


Como es un sistema para mi, solo me centro en las transacciones que se producen y no en las personas, aunque quiero tenerlas registradas. Debido a esto, cada transacción tiene que estar registrada a una persona (clase Person).
Al registrar una transacción, si o si, debe estar asociada a una persona.

Vamos a la BD:


Table - Person

Id - bigint
Name - varchar(50)
Nickname - varchar(50)
Surname - varchar(50)



Table - Asset

Id - bigint
OriginalAmount - float
RemainingAmount - float
Detail - varchar(50)
Stamp - Date
PersonId - bigint (fk a Person.Id)


Ahora a los mapeos, el error que estoy teniendo es que no inserta el PersonId correspondientemente, lo intenta insertar como null y al tenerlo no nullable me rompe.

  <class name="Person">
    <id name="Id">
      <generator class="native"/>
    </id>

    <property name="Name"/>
    <property name="Nickname"/>
    <property name="Surname"/>
  </class>


  <class name="Asset">
    <id name="Id">
      <generator class="native"/>
    </id>

    <property name="OriginalAmount"/>
    <property name="RemainingAmount"/>
    <property name="Detail"/>
    <property name="Stamp"/>

    <one-to-one name="Person"
                constrained="true"
                foreign-key="none"
                property-ref="Id"
                class="Person" />
  </class>



Si les soy sincero, soy nuevo con NHibernate, me he copiado varios mapeos one-to-one y ninguno me funcionó. Siento que mi relación de clases no es consistente con mi relación de BD.
Si me pueden orientar fantástico.

Saludos y gracias!
#4
Java / Re: Quitar IF
25 Febrero 2018, 18:10 PM
Los puristas de OO como los smalltalkers sostienen que se puede programar sin usar un solo condicional, solo objetos enviando mensajes a otros objetos.

Obviamente es un extremo, no busco hacer todo el código fuente sin poner condicionales, pero mientras más evites, mejor. Hay libros que hablan de esto como Clean Code, y plugins de coverages que te calculan la diversidad de flujos debido a condicionales que tiene tu programa. Igualmente, para gustos...

Es un trabajo práctico para la facultad, no hay vista, es solo consola. Y el try-catch para Gregorian como sería? Acabo de crear un objeto con fecha el 30 de Febrero del 2017 y me dejo sin problemas.

Gracias por la respuesta!
#5
Java / Quitar IF
24 Febrero 2018, 15:19 PM
Holas buenas,

Estoy intentando empezar a seguir la filosofía "real devs don't use if's", y me encuentro con códigos en los que no se como quitar el condicional, por eso les traigo uno, a ver si me tiran ideas y me abren un poco más la cabeza:

public static GregorianCalendar traerFecha (int año, int mes, int dia) {
GregorianCalendar fecha = null;

if (esFechaValida(año, mes, dia))
fecha = new GregorianCalendar(año, mes - 1, dia);

return fecha;
}


Creo que el codigo se entiende bastante bien, tiene nombres predictivos. Se le pasa un año, mes y dia, y te devuelve un GregorianCalendar con la fecha, pero solo si los parametros pasados son correctos (mes del 1 al 12, dia correcto dentro de ese mes, se contempla año bisiesto). Al mes le resto uno porque GregorianCalendar tiene los meses desfazados hacia abajo, el 0 es Enero.

Y les dejo otro de plus, que es justamente el que consume al que llama el código de arriba.


public static boolean esFechaValida (int año, int mes, int dia) {
int[] meses = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
boolean response = false;

if (esBisiesto(año))
meses[1] = 29;

if (mes >= 1 && mes <= 12)
response = meses[mes - 1] >= dia;

return response;
}


Si pueden tirarme ideas sobre como podria quitar los condicionales buenisimos, también agradecido si me recomiendan lecturas. Estoy yendo de a poco, para mi los casos en donde se pueden aplicar polimorfismo son más fáciles.
#6
Java / Duda, mala práctica?
9 Diciembre 2017, 23:51 PM
Buenas,

Vengo con una duda, estoy haciendo un programa para la facultad, nada complicado. No es más que un ABM, por eso lo estoy haciendo bastante 'rapido', es decir, sin mucha dedicación solo para recordar Java.

En un método me encontré con lo siguiente, hice esto para simplificar:


private Producto traerProducto(int idProducto)
{
for(Producto prod: this.lstProducto)
{
if(prod.getIdProducto() == idProducto)
return prod;
}
return null;
}


En una lista de productos, busco un producto por id. Si lo encuentra retorna el producto, si no, null.
Mi duda es si es una buena o mala práctica utilizar múltiples return's en un mismo método. Yo lo hice para ahorrarme la variable flag.

Esta duda me surgió porque recuerdo haber visto en un analizador de código que cuándo tenía múltiples return's debía simplificarlo. Pero acudo a ustedes a ver que me dicen.

PD: Capaz haga una prueba de rendimiento (solo velocidad, aunque sospecho cual ganarà).
#7
Seguridad / Re: SCRIPT PARA ELIMINAR CARPETAS
11 Noviembre 2017, 18:17 PM
Solución para Windows.

Para crear un script 'batch' tenes que abrir cualquier editor de texto y guardarlo con formato .bat.

Supongo que quieres hacer esto para asegurar más tu carpeta. Dejame decirte que es una forma bastante precaria, ya que existe un 50% de probabilidades en el que el 'intruso' si dará con la carpeta indicada con los archivos importantes.

Pero bien, no es mas que crear con un editor de texto un archivo con extensión '.bat' con el siguiente contenido.


rd /q /s NombreDeCarpeta


Este batch solo serviría si se encuentra en el mismo directorio que la carpeta, según comentaste, tu caso.

Me avisas si funciono y si esperabas algo más.

EDIT:
Agrego el '/s' en el codigo. Esta opcion tambien elimina la sub-carpetas, por si tienes alguna.
#8
Perfecto, si, me funcionó bien, y es una de las cosas que buscaba, queda familiarizarme con el código, gracias.


Y ¿habrá una forma que simplemente ejecute en modo admin sin siquiera preguntar?
#9
Hacking / Ejecutar script en modo administrador
6 Octubre 2017, 22:57 PM
Buenas gente, no sé si es el lugar correcto, en realidad podría ir en el apartado Windows pero confío más en los consejos que me puedan brindar en este foro, o tal vez un camino alternativo.

Como bien dice el título, codeé un .bat, dónde hace X cosa que no viene al caso.

Quiero que ese script se pueda ejecutar automáticamente en modo administrador, ¿es posible?.

Probé el runas administrator pero pide una contraseña, ¿qué método se suele utilizar para engañar al sistema operativo y ejecutar comandos en modo administrador sin contar con esa contraseña?

¿Se puede cambiar desde otro .bat los permisos de ejecución de ese .bat para que ejecute siempre en administrador y salte solamente la advertencia "SI/NO"?


Muchas gracias, saludos!
#10
Las máquinas siempre tratan el mismo lenguaje, el lenguaje máquina y todos los lenguajes se traducen a este, atrás de todo siempre son unos y ceros.

Los que se encargan de la conversión de cualquier lenguaje al lenguaje máquina no es la máquina en sí, sino los compiladores compatibles con cada lenguaje, o los intérpretes.


Al lanzar un nuevo lenguaje al mercado, este precisa estar respaldado por un compilador/intérprete que pueda traducirlo a lenguaje máquina.