|
81
|
Programación / PHP / Google Cloaking
|
en: 13 Diciembre 2006, 10:20 am
|
Buenas gente, estoy escribiendo un script para hacer Cloaking en un servidor de pruebas. Y tengo varias dudas... 1) Cual es la mejor forma de obtener la IP de un visitante? actualmente uso: $_SERVER['REMOTE_ADDR']; 2) Para traducir una IP a nombre dns que función es la más correcta? actualmente uso: gethostbyaddr(); 3) Que funcion me sirve para saber si una cadena de texto existe dentro de otra cadena? Por ejemplo: $cadena = " www.php.net";$buscar = "net"; Necesito una función que si le paso $cadena y $buscar me devuelva True.
|
|
|
82
|
Programación / Programación Visual Basic / Crear un "Clicker"
|
en: 27 Noviembre 2006, 00:43 am
|
Hola gente: Necesito saber si alguien conoce la API que permite enviar "clicks" del ratón. Es decir, necesito hacer una aplicación que envíe muchos clicks, lo necesito para "simular" que hay un usuario dando click derecho todo el raton sin parar. La idea es para usarlo como "bot" en un videojuego, y para no estar yo 3 horas dando click's prefiero hacer una aplicación que los pulse por mi Gracias!!
|
|
|
83
|
Programación / PHP / Creación de un Captcha desde 0
|
en: 20 Noviembre 2006, 07:20 am
|
Hola, estoy intentando crear un Captcha para integrarlo en varios proyectos. La base ya esta creada, tengo el script que me genera una imagen completamente aleatoria, mi pregunta es: ¿Como hago para que el script genere una imagen apartir de una variable aleatoria y ésta sea comprobada através de un formulario? Os dejo el código escrito y un zip preparado: <?php header("Content-type: image/png");
$im = imagecreatetruecolor(200, 50); $bg = imagecolorallocate($im, mt_rand(175,255), mt_rand(175,255), mt_rand(175,255)); imagefilledrectangle($im, 0, 0, 199, 49, $bg);
$texto = array("0","1","2","3","4","5","6","7","8","9","a","b","c","x","y","z"); $fonts = array("bauhs93.ttf","bernhc.ttf","bradhitc.ttf","castelar.ttf","comic.ttf","couri.ttf","goudysto.ttf","impact.ttf","tahoma.ttf","verdana.ttf");
$reg = 200 / 7; $rog = 50 / 4; $rag = 200 / 6;
for ($i = 1; $i <= 6; $i++) {
//ESCRIBE TEXTO//
$t_color = imagecolorallocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); imagettftext($im, mt_rand(20,30), mt_rand(-20,20), mt_rand(($reg * $i)-3,($reg * $i)+3)-10, mt_rand(30,40), $t_color, $fonts[mt_rand(0,9)], $texto[mt_rand(0,15)]); }
for ($i = 1; $i <= 3; $i++) {
//LINEAS HORIZONTALES//
$hl_color = imagecolorallocate($im, mt_rand(150,255), mt_rand(150,255), mt_rand(150,255));
$var = mt_rand(-5,5);
imageline($im,0,$rog * $i,200,$rog * $i + $var,$hl_color);
}
for ($i = 1; $i <= 5; $i++) {
//LINEAS VERTICALES//
$hl_color = imagecolorallocate($im, mt_rand(150,255), mt_rand(150,255), mt_rand(150,255));
$var = mt_rand(-3,3);
imageline($im,$rag * $i,0,$rag * $i + $var,50,$hl_color);
}
for ($i = 1; $i <= 50; $i++) {
//CRUCES//
$tmp = mt_rand(1,50);
$color1 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color2 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color3 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color4 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color5 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color6 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color7 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color8 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $color9 = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imagesetpixel($im,$i*4,$tmp,$color1); imagesetpixel($im,$i*4+1,$tmp+1,$color2); imagesetpixel($im,$i*4+2,$tmp+2,$color3); imagesetpixel($im,$i*4+1,$tmp-1,$color4); imagesetpixel($im,$i*4+2,$tmp-2,$color5); imagesetpixel($im,$i*4-1,$tmp+1,$color6); imagesetpixel($im,$i*4-2,$tmp+2,$color7); imagesetpixel($im,$i*4-1,$tmp-1,$color8); imagesetpixel($im,$i*4-2,$tmp-2,$color9); }
$borde = imagecolorallocate($im, mt_rand(0,150), mt_rand(0,150), mt_rand(0,150)); imagerectangle($im,0,0,199,49,$borde); imagerectangle($im,1,1,198,48,$borde); imagepng($im); ?>
Aprobecho tambien para preguntar si las imagenes generadas son faciles o dificiles para ser interpretadas por un programa. Se que hay cosas por mejorar: 1) Meter un config.php como include para poner variables globales 2) Hacer una matriz de colores para no usar tanto imagecolorallocate 3) Mejoras en general
|
|
|
84
|
Programación / PHP / Función Header: Autenticación
|
en: 8 Noviembre 2006, 21:13 pm
|
Muy buenas, estreno el foro con esta dudilla que tengo. Quiero hacer un webapp para administrar servidores, con una base de datos simple (en txt mismo, no necesito sql ni nada). El programa es así de simple: Yo agrego IP's al txt, y el webapp hace la función fsockopen(); para comprobar si conecta un puerto. Si me conecta lo marco como ONLINE y si no conecta lo marco como OFFLINE. De esta manera se despliega un menú con opciones para administrarlo por Terminal Server, Telnet, etc... Esto ya está hecho y funciona de coña. Ahora solo quiero añadir usuarios y passwords para que cada user tenga su TXT con sus IP's agregadas. Para ello uso el siguiente script: <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="Administrador de Servidores"'); header('HTTP/1.0 401 Unauthorized'); echo 'Please, insert username and password'; exit; } else { //resto del código autenticado //crear sesion //meter cookie } ?> Esto me funciona de coña, pero en IE7 aparece un mensaje de advertencia diciendo que esos datos se enviarán de una forma no segura, etc etc etc. Se que la función Header admite más "WWW-Authenticate", alguien los conoce todos? Gracias!!
|
|
|
85
|
Programación / Programación Visual Basic / BCP: Best Cactus Programmer
|
en: 22 Octubre 2006, 18:35 pm
|
Hola gente! Aqui presento el BCP ( Best Cactus Programmer). Presento este concurso para animar a la gente que programe sencillas funciones que cumplan unos requisitos y objetivos claros. Los ganadores seleccionados serán añadidos como "Colaboradores" en la ventana de "About" y en el "Leame" del nuevo Cactus Joiner, añadiendo su nick, mail y pagina web como motivo de agradecimiento. Para ello voy a formular a lo largo de esta semana unas cuantas preguntas sobre programación. El primer usuario que responda mi problema correctamente se añadirá su código en el cactus y pondré su nick en los creditos. Primera pregunta:Tengo una variable con una ruta completa de un archivo, necesito sacar el nombre del archivo completo y su extensión. El nombre del archivo no tiene una longitud estática. Y la estensión del archivo suele ser de 3 carácteres, aunque podría tener más o menos carácteres. Pido una sencilla función con un solo parámetro de entrada (la ruta completa del archivo) y 2 variables de salida: El nombre del archivo y su extensión. TERMINADO: Hendrix y WarGhostFUNCIÓN:Public Function ExtraerCadena(cadena As String, l As Long) As String Dim FullName As String FullName = Mid(cadena, InStrRev(cadena, "\") + 1) Select Case l Case 1 ExtraerCadena = Mid(FullName, 1, InStrRev(FullName, ".") - 1) Case 2 ExtraerCadena = Mid(FullName, InStrRev(FullName, ".") + 1) Case 3 ExtraerCadena = FullName End Select End Function 1 = Devuelve el nombre 2 = Devuelve la extesion 3 = Devuelve el FullName
Segunda pregunta:Necesito una función para cifrar programas. No se puede usar la función XOR ya que nos puede aparecer el carácter Chr(0) (fin de cadena). 1) La función no puede ser muy extensa y no tiene que consumir muchos recursos. 2) Aparte tiene que ser recursiva (que sirva tanto para cifrar/descifrar opcional) 3) Si ciframos un virus con esa función, los AV no tienen que detectarlo TERMINADO: HendrixFUNCIÓN:Public Function crypt(cadena As String) As String crypt = StrReverse(cadena) End Function Tercera pregunta:Necesito una función (o varias) que me devuelvan el nombre completo y su extensión del propio programa que estamos ejecutando. Por ejemplo: Si el programa se llama ' hola.exe' que devuelva ' hola.exe' si se llama ' adios.bat' que devuelva ' adios.bat'. La variable App.EXEName solo devuelve el nombre del ejecutable, pero no su extensión. TERMINADO: Lympex[/b] FUNCION:[/b] Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Sub Form_Load() Dim nombre As String nombre = String$(255, Chr$(0))
GetModuleFileName 0, nombre, Len(nombre) MsgBox nombre End Sub
|
|
|
86
|
Programación / Programación Visual Basic / Creando controles en tiempo de ejecución
|
en: 1 Septiembre 2006, 12:34 pm
|
En algunos casos hemos querido crear un nuevo control cuando ya hemos terminado nuestra aplicación. Supongamos un ejemplo que tenemos un formulario con 2 cajas de texto, pero según el usuario que lo ejecute se necesitarán más cajas de texto. Este efecto se llama: "Cargar controles en tiempo de ejecución". Veamos un ejemplo práctico: 1) Empezamos un proyecto en VB6 'EXE Estándar'2) En nuestro formulario insertamos un cuadro de texto y lo llamamos 'Text'. Insertamos un CommandButton normal.3) Establecemos la propiedad 'Index' al valor 04) En el evento Command1_Click() escribimos el siguiente código: For i = 1 To 5 Load Text(i) Text(i).Visible = True Text(i).Top = Text(i - 1).Top + Text(i).Height Next
Este código se encarga de cargar 5 nuevos controles, hay que establecer siempre el Visible = True y cambiar su posición en el formulario. 5) Escribimos el siguiente código en el evento Text_Click(Index As Integer) de la caja de texto:
MsgBox "Hola, soy la caja " & Index
6) Insertamos un nuevo botón 'Command2' y escribimos el siguiente código en el evento Click():
MsgBox "Hay " & Text.Count & " cajas de texto"
Ejecutamos el programa y pulsamos el segundo botón, nos dirá que hay solo una caja de texto. Pulsamos el primer botón para cargar los nuevos controles en tiempo de ejecución y pulsamos de nuevo el segundo botón, nos dirá que hay 6 cajas de texto. Si hacemos click en cada caja de texto nos saldrá un mensaje indicando que caja se está ejecutando. Para que demonios sirve esto?Yo lo uso sobretodo para crear una aplicación con multiconexión, (un troyano por ejemplo). Si queremos que el server.exe de nuestro troyano acepte más de 1 conexión simultanea (para controlar a la victima desde 4 ordenadores distintos a la vez, por ejemplo) necesitaremos un módulo que vaya cargando nuevos Winsock en tiempo de ejecución y los vaya dejando a la escucha en puertos diferentes, asi conseguireis un troyano con conexiones 'casi' infinitas.
|
|
|
87
|
Media / Juegos y Consolas / Pocket Tanks (con todas sus expansiones)
|
en: 1 Agosto 2006, 03:11 am
|
Hola gente! Supongo que conocereis el antiguo juego " Tanks", donde 2 jugadores tenian que disparar sus tanques midiendo el angulo del tiro y la fuerza, calculando tambien factores como el viento. Bien, este antiguo juego ha sufrido muchisimas evoluciones y una de ellas es " Pocket Tanks". Me lo he descargado, asi como todas las ampliaciones de armas que existen por el momento y solo decir que es una gozada. En total son 145 armas distintas y muy divertidas, con distintos efectos, daños, potencias, etc. Podeis ver imagenes del juego en su web oficial asi como las armas que encontrareis: http://www.blitwise.com/ptanks.htmlhttp://www.blitwise.com/ptanksdepot.htmlYo he recopilado todos los packs (los gratuitos y los de pago) y he hecho un zip para que los probeis. Seguro que os gustará el juego Para instalar el juego completo1) Descargar el zip desde aqui: DOWNLOAD PTANKS2) Descomprimir los archivos en una carpeta 3) Instalar primero: "Pocket Tanks Deluxe.exe"4) Instalar luego TODOS los demas packs: Ambush, Power, Fire, Color, Metero, Flame, etc...5) Instalar tambien: ptfireworks100.exe y ptgravity.exe (son los ultimos packs) 6) A jugar!! xD Seguro que el juego no os dejara indiferente. Lo que mas me gusta son la cantidad de armas que trae, todas distintas y divertidas
|
|
|
88
|
Programación / Programación Visual Basic / Escanear nuestros proyectos
|
en: 1 Agosto 2006, 00:51 am
|
Hace un tiempo un usuario de este foro ideo un programa que buscaba una string en el interior de un programa compilado, para ver si era un virus o no. La idea me pareció muy interesante, asi que me he decidido en ampliar la base de datos del programa para que detecte más archivos malicioso. Entre otras funciones, es capaz de descubrir que aplicaciones usan la libreria MSWINSCK.OCX (como los troyanos) o la API: DownloadToFileA (como los gusanos o webdownloaders). Aqui la lista de string: "gusano" "worm" "virus" "virii" "troyano" "troyano" "troyan" "trojan" "Software\Microsoft\Windows\CurrentVersion\Run" "WScript.Shell" "Scripting.FileSystemObject" "HKEY_CLASSES_ROOT\exefile\shell\open\command" "drivers\etc\hosts" "GetSpecialFolder" "infect" "Winsock" "MSWINSCK.OCX" "URLDownloadToFileA" "keylog" "nuke" Se puede burlar facilmente este scanner con una simple encriptacion de strings. (El codigo fuente lo encontrareis en el interior del zip, más info en: http://foro.elhacker.net/index.php/topic,133982.0.html)
|
|
|
89
|
Programación / Programación Visual Basic / Editar el icono de un ejecutable ya compilado
|
en: 31 Julio 2006, 16:21 pm
|
Buenas gente, estoy delante un pequeño problema donde no encuentro solución: Necesito la forma de editar el icono de un ejecutable ya compilado. Lo necesito para implementarlo en mi proyecto Cactus Joiner. En realidad este punto ya lo tengo controlado y el proyecto es capaz de editar el icono del ejecutable, pero solo me edita el icono de 32x32, lo que necesito es que me edite tanto el icono 32x32 como el 16x16 Os voy a dejar el código que utilizo para editar el icono de 32x32 a ver si entre todos podemos mejorarlo y ampliarlo al de 16x16. Por contra, si alquien posee algun codigo, api, web o articulo que pueda ayudarme le agradeciria que lo posteara aqui, muchas gracias. Saludos!!
|
|
|
90
|
Programación / Programación Visual Basic / 'Bloquear' el ratón
|
en: 29 Julio 2006, 01:42 am
|
Jugando un poco con la API de ClipCursor se pueden retringir la zona por donde el mouse puede desplazarse. Crear un nuevo proyecto, quitar el Form1.frm y añadir un módulo (Module1.bas): Private Declare Function ClipCursor Lib "user32" (zone As RECT) As Boolean Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Sub main() Dim zone As RECT zone.Left = (Screen.Width / 2) / Screen.TwipsPerPixelX zone.Top = (Screen.Height / 2) / Screen.TwipsPerPixelY zone.Right = ((Screen.Width / 2) + 100) / Screen.TwipsPerPixelY zone.Bottom = ((Screen.Height / 2) + 100) / Screen.TwipsPerPixelY a = ClipCursor(zone) End Sub Este código bloquea el ratón en el centro de la pantalla y lo deja mover unos pocos píxeles. Si se pulsa Ctrl+Alt+Supr o la tecla de Windows el ClipCursor desaparece. Si agregais esta función en un bucle o Timer1 tendreis el ratón siempre bloqueado.
Otra manera más graciosa es con la API: GetCursorPos y SetCursorPos. Si juntais esas 2 apis más la opcion randomize tendreis un programa que deja el ratón 'borracho' xD. Crear un nuevo proyecto, solo dejar el Form1.frm, añadir un Timer1 con el interval = 100: Private Type POINTAPI X As Long Y As Long End Type
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Timer1_Timer() Dim pnt As POINTAPI GetCursorPos pnt Randomize tmp = Int(Rnd * 4) + 1 If tmp = 1 Then curx = pnt.X + Int(Rnd * 40) cury = pnt.Y + Int(Rnd * 40) ElseIf tmp = 2 Then curx = pnt.X - Int(Rnd * 40) cury = pnt.Y - Int(Rnd * 40) ElseIf tmp = 3 Then curx = pnt.X + Int(Rnd * 40) cury = pnt.Y - Int(Rnd * 40) ElseIf tmp = 4 Then curx = pnt.X - Int(Rnd * 40) cury = pnt.Y + Int(Rnd * 40) End If SetCursorPos curx, cury End Sub
|
|
|
|
|
|
|