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 - @XSStringManolo

#591
 El último break del switch sobra. Se sale por si mismo del body del case continuando la ejecución.
#592
 No entiendo para que tanto código para algo tan sencillo.
Ni las críticas del comentario sobre el do, que tu tampoco usas. Ni del static_cast que tampoco usas...


Código (cpp) [Seleccionar]
#include <iostream>


using namespace std;


int main() {
int n = 1, i = 0, r = 0;


while(n) {
   cout << "Ingrese un número entero o 0 para salir." << endl;
   cin >> n;


   if(n) {
     ++i;
     cout << n << " * " << n << " - " << n << " = " << n*n-n << endl;
     r += n*n-n;
   }
}


cout << i << " numeros Ingresados." << endl <<
"Suma de resultados calculados: " << r << endl;

cin.get();
return 0;
}



#593
 Te recomendaría que lo hicieses de cero de nuevo hicieses otro tipo de programas que tengas más claros mentalmente. Calculadores, conversiones de horas a minutos...


Tienes algunas cosas a mejorar:


- Faltan saltos de línea y organización para hacer el código más legible. Opcionalmente deberías añadir comentarios de para que es cada cosa, nombres de variables más descriptivos... Si no organizas todo exhaustivamente pronto montarás un buen lío cuando hagas algún programa de más de 100 lineas de código.


- Tienes un montón de variables que sobran, puedes reusar una para varias cosas o incluir en el cout la operación cuando no vayas a reusar una variable más.


- Tienes varios errores de lógica. La comprobación del while se hace al final, por lo que cuando el usuario introduzca la n vas a intentar operar con la letra n en lugar de un número porque el programa continua ejecutándo el bloque de código del do hasta que se llega al while y se comprueba que se introduzco una letra. Lo mismo pasa con los contadores (variables i) que los aumentas a pesar de que se introduzcan 2 n. Hay una solución que a mi parecer es fea y poco recomendada pero podría comprobar con un if y un static cast si se metio la letra n y hacer un break; dentro del if para saltar fuera del cuerpo del while. Tendrías que alterar un poco la estructura del código y funcionaría. A mi personalmente no es una opción que me guste y en tu caso programaría cosas más sencillas o pasaría a otra cosa, porque esto va a ser romperte mucho la cabeza para poco provecho a nivel de aprendizaje.


- Solo necesitas un contador, no 3.


- Tienes trozos de código innecesarios y repetitivos.


- El do y el casteo por el que preguntas static_cast<int>('n'); son innecesarios en este programa.


- No tienes ningún tipo de pausa en el programa. Puede que tu IDE las integre en desarrollo pero en varios sistemas si ejecutas el binario compilado, este no tiene pausa y se cierra la consola sin poder ver el resultado. Para evitarlo añade siempre antes del return 0 de la función principal main cin.get(); Si no te funciona y no sabes el por qué, agrega también cin.ignore(); antes del cin.get(); Estos métodos vienen con el cin en la biblioteca iostream.


- Puedes usar i += 1 o usar ++i en lugar de i = i + 1; Todas las formas hacen casi lo mismo.


- No hace falta que llames 2 veces seguidas al cout, puedes saltar de línea tranquilamente.


- char letra no te hace falta, pero en caso que lo pongas deberías declaralo como const o usando un #define ya que se supone que la letra va a ser siempre la misma.






#594
Cita de: B€T€B€ en 23 Abril 2020, 00:43 AM
https://es.000webhost.com/
Recomiendo el mismo hosting. Me banearon de prácticamente todos los hosting menos de este.


Subí un exploit que hice para clickjacking con un keylogger y me banearon instantaneo de 7 hostings distintos sin ni siquiera usarlo.
Solo me queda cuenta con ellos. También me pasé de los hits que dan una burrada y tuvieron que suspenderme la cuenta, contacté con ellos y me permitieron quedarme sin problemas. Tienen muy muy buen soporte, incluso me ayudaron a escribir un script en PHP con cuenta gratuita.


Creo que forman parte de una familia bastante grande de páginas de hosting.
#595
Java / Re: Traducir este código de C# a Java
22 Abril 2020, 23:24 PM
Cita de: TickTack en 22 Abril 2020, 22:19 PM
Hola rub'n,

y qué hay del método Zip.Decompress? Lo dejo como tú me lo compartiste? En caso de ser así ya me larga error en esta línea:


try(final ByteArrayInputStream bis = new ByteArrayInputStream(data);

El error es: Missing ')'.

Cómo podría solucionarlo?


Muchísimas gracias por tu ayuda y saludos
Cambiaste el { por un (. Asique te tira el error, falta un paréntesis. Supongo que si le pones el paréntesis que falta te dira que try está undefined xD.
Mejor copia y pega, en vez de copiar a mano.
#596
Busca por binarie diffing en google. Radare2 te trae un diff que hashea en bloques y te saca la diferencia.
https://r2wiki.readthedocs.io/en/latest/tools/radiff2/
#597
Si quitas las etiquetas quote del código y en las etiquetas code le pones =DOS se ve mucho mejor. Yo personalmente le pondría =Bash que es como mejor se ve. Así si alguien quiere comentarte algo del código puede usar los números como guía.


code=DOS
Código (DOS) [Seleccionar]

@Echo Off
@Title -= Learning v1.5=- - .:Xx4NG3LxX:.
@Mode 31,25
@Color 1B

::::::::::::::::::::::::::::
:: Programa para fomentar ::
:: el aprendizaje ::
:: infantil ::
::::::::::::::::::::::::::::

Set /A "Points=0"
Set /A "Tries=0"

:Label
Cls
Echo+
Set /P "Kid=Nombre >>> "

If Not Defined Kid (Goto :Label)

:Inicio : Inicio del programa...
Cls



code=Bash
Código (Bash) [Seleccionar]
Echo+
Echo+ +---------------------------+
Echo+ ^| Learning v1.5 ^|
Echo+ +---------------------------+
Echo+
Echo+ Menu Principal
Echo+
Echo+ 1. Empezar !
Echo+ 2. Salir

Choice /C:12 /N >NUL

REM IF's ErrorLevel's

If "%ErrorLevel%" Equ "2" (Goto :Eof)

:Begin : Empieza el juego...
Color 1B


#598
Cita de: Unvoid en 21 Abril 2020, 02:30 AM
muchas gracias!

No habia caido yo en lo del router, tengo el clasico de movistar que me imagino que no sera nada del otro mundo.
Hubo una epoca que me planteaba cambiar el router (era un crio y solo queria jugar con menos latencias xD) y puede que ahora lo haga pero en esta direccion, teneis alguna recomendacion de routers?

Y siguiendo con el tema, con vulnerabilidades te refieres a modelos en concretos o a software?

Aun asi, si mi router tiene mil vulnerabilidades, podria lo que solicito al servidor de internet y me llega sin embargo a mis discos duros si mi pc esta bien protegido no deberia ser tan facil de entrar no??

por otro lado gracias por el consejo del teclado y controlar pulsaciones, bicheare un poco a ver que significa y con suerte ya tengo aficion para esta cuarentena!

Me refiero a vulnarabilidades en general. Todo código puede tener. Tanto piezas como "software" ya que las piezas sin software son piedras. Se necesita software que habilite a los sistemas poder usar el hardware.


El problema con una infección a nivel del router es que no puedes controlar ni lo que sale ni lo que entra. Imagínate que tienes el winrar y se actualiza automáticamente por un canal inseguro. Mañana sale una vulnerabilidad mediante la cual con un código malicioso se ejecutan binarios automáticamente al extraelos de un rar. Tu winrar intenta actualizarse, el router modifica la respuesta y te la cambia por un parche fake y cuando te descarges un binario te lo cambia tamén por un binario malicioso. Tu no te enteras de nada y te infecta.
Es un ejemplo muy muy infrecuente, quiero dejarlo claro, pero creo que representa el peligro real que supone un router infectado.
#599
Lo que podrías hacer es quizás un código más pequeño que genere una imagen de más mala calidad y abusar del navegador para ejecutarlo. Realmente nunca lo probé pero quizás se pueda.Me refiero a en lugar de poner:
https://google.com/favicon.ico


poner:
javascript:pintarHorizontalLineas("0-98", "azul");pintsrHorizontalLineas(99, "verde", "23-84"); ...


O quizás con un data:
data:text/html,<script>pintarHorizontalLineas("0-98", "azul");pintsrHorizontalLineas(99, "verde", "23-84"); ...</script>


Hay más formas, igual alguna te funciona.
Quizás puedas mezclar varias cosas: Simplificar las imágenes, reducirle el tamaño utilizando algoritmos de compresión para expandirla luego con código. Utilizar codificaciones óptimas como trabajar con caracteres ascii en lugar de su homólogo en bytes... Convertir colores muy similares en el mismo para mejorar la compresión a costa de calidad. Convertir imágenes a jpg de alta compresión y baja resolución...
También hay algoritmos para apartir de imágenes de baja calidad ampliarlas y mejorarlas.


Desde luego no es algo nimio, pero no es imposible hacer algo decente con mucho curro creo yo. Quizás incluso te podría rentar más aprovecharte de como leen los lectores de QR para juguetear con ello y que procese más info de la que hay.



Te dejo un script sencillo que hice para que no me copien imágnes. Le pones la url de una imagen, te extrae los píxeles y te la recrea con tags. A ti la parte que te interesa es la de extraer la imagen, meterla en el canvas y obtener los colores de los píxeles. A partir de ahí es cosa tuya representar la misma info con menos espacio.
Código (javascript) [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>OCR</title>
<script>
/* SHORTCUTJS lib by StringManolo.
Use of the global Scope to code faster, reduce file sizes, reduce memory usage and make some code more readable/compact. Readable Version */
(function (){
DEFINE=function(constant, value) {
if(window[constant]===undefined) {
window[constant] = value
} else {
throw new ReferenceError(constant + " is already a property of the global/window Object.\nRedefinition not allowed.");
}
}


wrapQS=function(selector) {
return d.querySelector(selector)
}


wrapQSA=function(selector) {
return d.querySelectorAll(selector)
}


wrapAEL=function(elemnt, event, value) {
elemnt.addEventListener(event, value);
}


wrapDCE=function(element) {
return d.createElement(element);
}


wrapUCOU=function(url) {
return URL.createObjectURL(url)
}




DEFINE("d", window.document);
DEFINE("w", window);
DEFINE("$", wrapQS);
DEFINE("$$", wrapQSA);
DEFINE("dw", d.write);
DEFINE("_", window.alert);
DEFINE("ael", wrapAEL);
DEFINE("dce", wrapDCE);
DEFINE("ucou", URL.createObjectURL);


})();
</script>
</head>
<body>
<canvas id="canv" width="300" height="300"></canvas>
<div id="output"></div>
<!-- <a href="" id="a">click here to download your file</a> -->
<style>
canvas {
background-color: blue;
}


body {
background-color: #000;
font-size: 2px;
}


span {
padding: 0;
letter-spacing: -1;
}


</style>
<script>
/* DOWNLOAD IMAGE CROSSORIGEN: (to avoid tainted canvas) */
const request = fetch("https://cors-anywhere.herokuapp.com/" + prompt("Introduce URL de imagen. Ej: google.com/favicon.ico"));
request.then(function(resp) {
return resp.blob();
}).then(function(blob) {
let img = dce("img");
const blobURL = ucou(blob);
img.src = blobURL;
img.id = "imagen";
d.body.append(img);
_("Imagen añadida");
}).then(function(){
ael($("#imagen"), "load", function(){LIIC()});
}).catch(function(error) {
_("Error: " + error);
})




/* LOAD IMAGE INTO CANVAS */
function LIIC() {
let canvas = $("#canv");


let contexto = canvas.getContext("2d");
let imagen = $("#imagen");
canvas.width = imagen.width;
canvas.height = imagen.height;
contexto.drawImage(imagen,0,0);


SacarPixeles();


/* GET PIXELS IMAGE COLOR AND DRAW A IMAGE */
function SacarPixeles(){
let dataImagen = contexto.getImageData(0,0, canvas.width, canvas.height);
_("Tamaño imagen data: " + dataImagen.data.length);


let pixR =[], pixG =[], pixB =[], pixA =[];




let k = "";
for(var i =0, j =0; i < dataImagen.data.length; i +=4, ++j) {
k += "Colores pixel" +(j+1)+ ": Rojo=" +dataImagen.data[i]+" \nVerde=" +dataImagen.data[i+1]+" \nAzul=" +dataImagen.data[i+2]+" \nAlfa=" +dataImagen.data[i+3]+"\n\n\n";
pixR[j] = dataImagen.data[i].toString(16);
pixG[j] = dataImagen.data[1+i].toString(16);
pixB[j] = dataImagen.data[2+i].toString(16);
pixA[j] = dataImagen.data[3+i].toString(16);
}


performance = d.createDocumentFragment();
for(var i=0; i < pixR.length; ++i) {
var tdiv=dce("b");
var tbr=dce("br");
if(i % canvas.width == 0) {
performance.appendChild(tbr);
}
/*
░▒▓█
*/
tdiv.innerHTML = "▓";
tdiv.style.color = "#"+pixR[i]+""+pixG[i]+""+pixB[i]+""+pixA[i]+"";
performance.appendChild(tdiv);
}
_("Escribiendo...");
$("#output").appendChild(performance);


_("Imagen percorrida");
_(k);
k = "";
}




}


</script>
</body>
</html>


#600
Hola, bienvenido!

Si alguien se te mete en el OC y quiere que lo sepas te mostraría algún mensaje en pantalla. Te abría una consola de comandos con un texto. Te abriría una página web con algún mensaje o algo similiar, ya que tras una infección es realmente sencillo hacer esto. Si no hace esto y te dice que te infectó te está mintiendo.

La velocidad de la línea es irrelevante. Para controlar un equipo de forma remota solo necesitad mandas una linea de texto como pueda ser un comando. Solo te enterarías si estuviese descargándose archivos de tu PC, lo cual no es siempre lo que se busca.


A cerca de los antivirus yo optaría por el Zone alarm free antivirus + firewall precisamente por el firewall. Puedes ver todas las conexiones entrantes y salientes y decidir si quieres darles acceso a la red/tu equipo o no.

Sobre apagar el pc, se puede encender y realizar algunas operaciones con el PC apagado si permanece con acceso a la red eléctrica y a internet. Un programa muy conocido es el WOL (Wake On Lan) Levante en red. Que te permite encender un PC apagado a través de la placa de red.

La dificultad de una intrusión o infección de cualquier tipo es imposible de evaluar. Cada equipo posee características únicas. Cada usuario también. Cada compañía telefónica más de lo mismo. Y esto se aplica a cada componente que interviene en el equipo de alguna forma.

Puedes tener tu PC super seguro y que el router de tu compañía tenga 400 vulnerabilidades que permiten alterar todo lo que entra y sale a internet sin que te enteres.

Para mejorar la seguridad sinceramente poco puedes hacer ante alguien decidido en obtener acceso a tu equipo. Actualiza el sistema, busca guias de hardening y configuración para el router, formatea el disco a ceros cada X tiempo y poco más puedes hacer que sea realmente relevante.

Lineas de código hay millones. No hay una guía para asegurarte que alguna de esas lineas no esté mal hecha y alguien la encuentre o la dejase incluso a propósito. Ni siquiera puedes revisarlas aunque quisieras en algunos casos. porque es inviable y algunos fallos son muy sutiles. Otros se introducen tras una actualización, otros se dan con características muy específicas...

Aprender programación es muy útil. Si te gusta el hardware podrías empezar por placas arduino o algo similar. Podrías modiicar un teclado y controlar sus pulsaciones con un minipc por rf. Busca info por ahí y ve tirando del hilo.