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 - AlbertoBSD

#391
Hola antes que nada en el panel cuando redactas un mensaje hay un box que dice Código GeSHi, si lo despliegas aparece una lista de lenguajes buscas C y pegas tu código adentro.

El problema es siguiente:

TU CODIGO


void imprimir_ite(char *pcad)
{
   if(*pcad!='\0')
   {
       printf("%c",*pcad);
       pcad++;
       imprimir_ite(*pcad);

   }
   return;
}


En TEORIA Corregido:


void imprimir_ite(char *pcad)
{
   if(*pcad!='\0')
   {
       printf("%c",*pcad);
       pcad++;
       imprimir_ite(pcad);

   }
   return;
}


No se, ni verifique tu codigo "ITERATIVO", pero como pcad ya es un apuntador, no necesitas colocarle el * antes de cada uso, eso se puede prestar para otras operaciones pero en este caso no.

Saludos
#392
Programación C/C++ / Re: Resolver C++
29 Noviembre 2018, 01:05 AM
Cita de: Beginner Web en 29 Noviembre 2018, 00:57 AM
La verdad que es medio raro eso, se la respuesta pero no se como es que el signo ?

Es el Operador Ternario, es basicamente un mini if

char C = 'A';
printf("%s\n",(C == 'A')? "Verdadero": "Falso");


Se utiliza para realizar ciertas evaluaciones rapidamente.

De manera que te devuelve el primer valor el que esta antes del ":" si la evaluacion fue verdadera, encaso contrareo te devuelve lo que esta despues del ":"

Otro ejemplo seria:


char C = 'A',otro;
otro = (C == 'A') ? 'q' : 'r' ;



Saludos
#393
Excelente con eso ya funciona muy bien  ;-)

Esos de Microsoft ni siquiera dejan utilizar el Descriptor proporcionado por accept como un File Descriptor normal para usarlo con fdopen y/o read y write. En fin es windows  :rolleyes:

Salduos!
#394
Estoy haciendo pruebas con un miniservidor, que actualmente solo lee la entrada y la muestra en pantalla.



El detalle esta en que La memoria utilizada no deja de incrementar, empieza el programa usando sobre 400 KB y mientras mas preciono F5 en el navegardor WEB, (El miniservidor es WEB), enviando Multiples GET al servidor la memoria del programa incrementa y nunca decrementa, siendo que en cada ocasion he liberado el apuntador utilizado para leer la linea, y he cerrado el socket del cliente:

Codigo:


#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>

#define BACKLOG 256

WSADATA *wsaData;
struct sockaddr_in *server_sa;

char *readLine(SOCKET descriptor,int *len);

int main() {
SOCKET s,c;
int b = 0,iResult;
int read_len;
char *linea;
char caracter;
wsaData = calloc(1,sizeof(WSADATA));
iResult = WSAStartup(MAKEWORD(2,2), wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
return 2;
}
server_sa = calloc(1,sizeof(struct sockaddr_in));
server_sa->sin_family = AF_INET;
server_sa->sin_port   = htons(80);
server_sa->sin_addr.s_addr = htonl(INADDR_ANY);

if (bind(s,(struct sockaddr *) server_sa, sizeof(struct sockaddr)) < 0) {
perror("bind");
return 3;
}
b = sizeof(struct sockaddr);
listen(s, BACKLOG);
while(1) {
if((c = accept(s,(struct sockaddr *)server_sa, &b)) < 0) {
printf("WS error code: %i\n",WSAGetLastError());
perror("accept");
return 4;
}
do{
linea = readLine(c,&read_len);
printf("%s\n",linea);
free(linea);
}while(read_len != 0);
close(c);
}
}

char *readLine(SOCKET descriptor,int *len) {
char *buffer = NULL;
int i = 0,entrar = 1,len_read;
do {
buffer = realloc(buffer,(i+1));
len_read = recv(descriptor,buffer + i,1,0);
if(len_read == 1){
switch(buffer[i]) {
case 0xD:
buffer[i] = '\0';
break;
case 0xA:
buffer[i] = '\0';
entrar = 0;
break;
default:
i++;
break;
}
}
else {
buffer[i] = '\0';
entrar = 0;
}
}while(entrar);
if(len  != NULL){
len[0] = i;
}
return buffer;
}


El problema es que se espera que el servidor se lo mas liguero ligero posible y atienda millones de peticiones por segundo. Y no creo que el F5 del navegador supere mas de 100 peticiones por segundo.

Saludos
#395
Hola, no se puede saber quien es por la cartera, a no ser que la publique con su nombre en algun lugar de internet, ese mensaje se paerece a uno que publique hace unos dias.

https://foro.elhacker.net/seguridad/investigando_un_intento_de_extorcion-t489642.0.html

Realmente es lo mismo solo que traducido al español.

Como recomendacion cambia las contraseñas de tus cuentas, y activa siempre que se pueda la verificacion en 2 pasos ( 2FA )

Si es falso, si es verdad que hackearon X sitio y sacaron tu password, pero solo el de ese sitio, Se tiene que usar un password diferente y de preferencia al aza para cada sitio distinto.

Saludos!
#396
Que tal Ethernal Idol gusto en verte por aqui :)  ;-) ;-) ;-)

Funciono, todo un maestro como siempre.

Saludos!
#397
una matriz es básicamente un arreglo lineal asi que pe podría mandar algo asi:

En main si es una matriz bidimencional, pero como solo se pasa la referencia de la matriz y indicas los tamaños, solo es necesario pasar el apuntador a mostrar y mostrar lo maneja como un arreglo lineal, tratado como matriz.


#include<stdio.h>

void muestra(int *matriz, int renglon, int columna);

int main() {
int M, N, i, j;
scanf("%d %d", &M, &N);
int b_minas[M][N];
for (i= 0; i < M; i++) {
for (j= 0; j < N; j++) {
scanf("%d",&b_minas[i][j]);
}
}
muestra((int *) b_minas, M, N);
return 0;
}

void muestra(int *matriz, int renglon, int columna) {
printf("\n");
int i, j;
for (i= 0; i < renglon; i++) {
for (j= 0; j < columna; j++) {
printf("%d ", matriz[(i*columna) +j]);
}
printf("\n");
}
}


Salida:


C:\codigos>matriz.exe
5 4
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
5
5

1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5



Saludos!
#398
Si haces esa pregunta, entonces sinceramente te recomiendo que no desarrolles nada. No es por hacer de menos tu esfuerzo y/o trabajo, pero si tu eres el único programador tu deberia de indicar a quien te contrato que hosting contratar, si lo estas haciendo para ti podrías iniciar con algun hosting básico y de ahi ir creciendo conforme se necesite, para esto necesitas hacerlo escalable.

De recomendarte X base de datos, tambien te preguntaría con cuantas sabes trabajar, lo que tambien implica cual va a ser el lenguaje del back end. Por lo general PHP o algun otro?

Si es PHP, pues podrías empezar con MySQL, quieres experimentar con otras bases de datos adelante, hoy en dia no es dificil migrar entre los módulos de php para Distintas bases de datos.

Si planeas utilizar Algun Framework en particular tambien tendrias que ver si ese Framework trabaja con alguna Base de datos en particular.

Sobre el Hosting:

En general depende del volumen de trafico que vallas a tener.

Por ejemplo si lo usuarios van a poder subir imágenes de sus productos, debes de calcular cuanto espacio va a necesitar, eso si las almacenas en disco, también esta la opcion de almacenar en la base de datos. Opciones hay muchas.

También hay hosting que te limitan el numero de procesos activos en X momento, y si en X momento el nivel de visitas de tus usuarios superan ese limite de procesos en ejecución, entonces tu pagina va a tener problemas.

Yo personalmente he realizado paginas similares y la verdad es que no requieren muchos recursos siempre y cuando programes eficientemente las llamadas al servidor.

Saludos.
#399
PHP / Re: es posible desencriptear esto?
28 Noviembre 2018, 03:06 AM
Lo primero que debes hacer es Poner tu WEB offline para que no te puedan atacar.

Encontrar el script en PHP vulnerable o la vulnerabilidad de tu servidor, parchearla y Listo

Si no lo puedes poner offline entonces saltate a la segunda parte que es encontrar el y/o los bugs y corregirlos para que no te esten injectando codigo.

Posiblemente tambien sea algun Upload de archivos que no haga las verificaciones correspondientes.

Saludos
#400
Dudas Generales / Re: duda bits y caracteres
27 Noviembre 2018, 23:00 PM
Generalmente se refiere a la longitud de la Clave de cifrado, o del tamaño minimo de bits de entrada llamod Block Size, para comenzar a realizar las operaciones matemáticas para el cifrado. Por ejemplo el de AES, hay muchas variantes, pero todas ellas realizan operaciones a nivel de bloques de bits segun las imagenes que se muestran en wikipedia:

https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

lo cual puede ser muy ilustrativo.