elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Necesito un código Escaner de Puertos en C++ usando Threads en: 26 Abril 2014, 08:09 am
Hola compañeros!! Un gusto otra vez por aquí

Bueno les comento que estoy con ganas de crear un programa en C++, hasta ahora digamos que voy bien, pero me topo ahora con un inconveniente, que en realidad no les, pero por el momento si.

Lo que yo deseo es crear un Bot Escaner de Puertos en C++ para Redes IRC de chat, yo al bot lo pude hacer solo y hasta cree una función split() para poder separar palabras en una cadena string.


La conexión me sale bien, el bot entra al Servidor, se loguea y recibe la IP del usuario que conecta al chat, el tema viene a la hora de escaner ciertos puertos para determinar si el usuario tiene un X puerto abierto que es prohibido.

Estos tipo de bots son de seguridad y se utilizan para prevenir ataques masivos de clones.


Yo he podido hacer el escaner que analiza por ejemplo 10 puertos para saber si un usuario tiene algún proxy no permitido, estos puertos casi siempre son usados por proxys y utilizan las IPs proxys para entrar "camuflados" o anónimos al servidor.


El escaner escanea puerto por puerto hasta terminar con el último puerto, pero lo que yo necesito es crear una función y hacer llamadas a esa función con el valor de la IP del usuario para saber si tiene un puerto abierto, pero cláro, para poder hacer esto, voy a necesitar el uso de Threads, en Python esto es simple, podría lograrlo con:


Código
  1. threading.Thread(target=Escaner.Analizar()).start()


o utilizar otra clase para lograr esto o usar la clase padre que es threading.


Pero en C++ por lo que leí es mucho más difícil o más difícil, en realidad lo quiero hacer no creo que sea algo difícil, pienso que un poco, porque el programa no tiene más que hacer que escanear puertos de IPs que van conectando al servidor


Esas IPs pueden ser cientas en cuestión de minutos, por eso necesito usar Threads, necesito que se divida por hilos los procesos para poder hacer esto posible.

Osea que por ejemplo en 3 segundos, el bot escanee 5 IPs al mismo tiempo, eso es lo que necesito.


Me encantaría que me dejaran un código de ejemplo para poder hacer esto posible, uso windows, así que utilizo la librería winsock2.


Me imagino que para el que sabe esto debe ser algo fácil o pan comido, yo seguiré intentando poder lograr esto y tratar de entender de alguna manera como hacer un código que utilice los Threads.


Desde ya les agradezco, muchas gracias a todos y que tengan buen día!! :-)
2  Programación / Programación C/C++ / ¿Donde puedo descargar un manual de C++ para principiantes? en: 15 Abril 2014, 15:16 pm
Hola amigos!!!
Estoy aprendiendo C++ y me encantaría poder empezar con un buen libro/tutorial/manual para poder avanzar más, pero no consigo tutoriales actuales, los que encuentro son muy viejos, del año 2000, 2004, 2009, 2010, etc.

Me gustaría un manual como es el de "Python para todos" que es un manual (de lenguaje Python) fácil de entenderlo, además hay ejemplos y también está en español. Me gustaría un libro así como ese para principiantes, recién estoy empezando a entrar en el mundo de C++.

Agradecería muchísimo a quien me pueda ayudar!!!  :)

Desde ya muchas gracias.
3  Programación / Scripting / [Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python (Continuación) en: 7 Abril 2014, 11:02 am
Hola!
Voy dejar el código del Tema "[Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python" que lo he mejorado un poco, podrán ver la diferencia entre los 2 códigos, voy a dejar el Autor como corresponde.

R4z3L.hax Espero que sigas con este proyecto tan lindo, realmente a pesar de ser un programa básico, está bastante bueno y así aprenderás cada vez más!!!!
Realmente no programo en TKinter, uso otro Framework, pero siempre me encanta TKinter!! Aguante TK!!!

Te felicito por tu programa, está muy bueno, lo miré y me gustó, me motivó un poquito, no soy sensible, pero así empecé yo, aunque todavía soy notavo!

Bueno campeón, espero que tengas suerte con tu programa!!

Ojalá este programa les sirva a todos!!! ¡¡Gracias!!

Código anterior:

Código
  1. # -*- coding: cp1252 -*-
  2. from Tkinter import *
  3. from pprint import pprint
  4. from datetime import *
  5. import commands
  6. import datetime
  7. import shutil
  8. import glob
  9. import time
  10. import sys
  11. import os
  12.  
  13.  
  14.  
  15.  
  16. root = Tk()
  17. #imagen1=PhotoImage(file="font.gif")
  18. root["background"] = 'black' #bg="black"
  19. root.title("KyuDOS")
  20. root.geometry("1250x1000")
  21.  
  22.  
  23. def bluecollor():
  24.    list1["foreground"] = 'blue'
  25.  
  26. def redcolor():
  27.    list1["foreground"] = 'red'
  28.  
  29. def whitecolor():
  30.    list1["foreground"] = 'white'
  31.  
  32. def griscolor():
  33.    list1["foreground"] = 'grey'
  34.  
  35. def narancolor():
  36.    list1["foreground"] = 'orange'
  37.  
  38. def amancolor():
  39.    list1["foreground"] = 'yellow'
  40.  
  41. def aman2color():
  42.    list1["foreground"] = 'green'
  43.  
  44. def bcolor():
  45.    list1["foreground"] = 'black'
  46.  
  47.  
  48.  
  49.  
  50.  
  51. def bluecollor2():
  52.    list1["background"] = 'blue'
  53.  
  54. def redcolor2():
  55.    list1["background"] = 'red'
  56.  
  57. def whitecolor2():
  58.    list1["background"] = 'white'
  59.  
  60. def griscolor2():
  61.    list1["background"] = 'grey'
  62.  
  63. def narancolor2():
  64.    list1["background"] = 'orange'
  65.  
  66. def amancolor2():
  67.    list1["background"] = 'yellow'
  68.  
  69. def aman2color2():
  70.    list1["background"] = 'green'
  71.  
  72. def bcolor2():
  73.    list1["background"] = 'black'
  74.  
  75.  
  76. menu_general = LabelFrame(root, background = "#2E2E2E") # el LabelFrame es necesario como base para apoyar los menus sobre el
  77. menu_general.pack(side = TOP, fill = X)
  78.  
  79. time1 = ''
  80. clock = Label(menu_general, font=('ubuntu', 10, 'bold'), bg='#3C3B37',fg='white', bd=0)
  81. clock.pack(side = RIGHT)
  82.  
  83. def tick():
  84.    global time1
  85.    time2 = time.strftime('%H:%M:%S')
  86.    if time2 != time1:
  87.        time1 = time2
  88.        clock.config(text=time2,background = "#585858")
  89.    clock.after(200, tick)
  90.  
  91. boton_menu_archivo = Menubutton(menu_general, text = "Color de la fuente", foreground = "white", background = "#585858",
  92.                                activebackground = "#424242", activeforeground = "#585858")  #creamos el boton del menu del cual despus desplegamos los menus
  93. boton_menu_archivo.pack(side = LEFT) #ahora si es verdaderamente visible
  94.  
  95. menu_archivo = Menu(boton_menu_archivo, background = "#424242", foreground = "#23A3FF",
  96.                    activebackground = "#474AFF", activeforeground = "#70DBFF")
  97. menu_archivo.add_command(label = "Color de fuente Azul", compound = LEFT, command = bluecollor)
  98. menu_archivo.add_command(label = "Color de fuente Rojo", compound = LEFT, command = redcolor)
  99. menu_archivo.add_command(label = "Color de fuente Blanco", compound = LEFT, command = whitecolor)
  100. menu_archivo.add_command(label = "Color de fuente Gris", compound = LEFT, command = griscolor)
  101. menu_archivo.add_command(label = "Color de fuente naranja", compound = LEFT, command = narancolor)
  102. menu_archivo.add_command(label = "Color de fuente Amarillo", compound = LEFT, command = amancolor)
  103. menu_archivo.add_command(label = "Color de fondo  Verde", compound = LEFT, command = aman2color)
  104. menu_archivo.add_command(label = "Color de fondo  Negro", compound = LEFT, command = bcolor)
  105. menu_archivo.add_separator()
  106. menu_archivo.add_command(label = "Exit", compound = LEFT, command = root.destroy)
  107.  
  108. boton_menu_archivo["menu"] = menu_archivo
  109.  
  110.  
  111.  
  112.  
  113.  
  114. boton_menu_archivo2 = Menubutton(menu_general, text = "Color de Fondo", foreground = "white", background = "#585858",
  115.                                activebackground = "#424242", activeforeground = "#585858")  #creamos el boton del menu del cual despus desplegamos los menus
  116. boton_menu_archivo2.pack(side = LEFT) #ahora si es verdaderamente visible
  117.  
  118. menu_archivo2 = Menu(boton_menu_archivo2, background = "#424242", foreground = "#23A3FF",
  119.                    activebackground = "#474AFF", activeforeground = "#70DBFF")
  120. menu_archivo2.add_command(label = "Color de fondo Azul", compound = LEFT, command = bluecollor2)
  121. menu_archivo2.add_command(label = "Color de fondo  Rojo", compound = LEFT, command = redcolor2)
  122. menu_archivo2.add_command(label = "Color de fondo  Blanco", compound = LEFT, command = whitecolor2)
  123. menu_archivo2.add_command(label = "Color de fondo  Gris", compound = LEFT, command = griscolor2)
  124. menu_archivo2.add_command(label = "Color de fondo  naranja", compound = LEFT, command = narancolor2)
  125. menu_archivo2.add_command(label = "Color de fondo  Amarillo", compound = LEFT, command = amancolor2)
  126. menu_archivo2.add_command(label = "Color de fondo  Verde", compound = LEFT, command = aman2color2)
  127. menu_archivo2.add_command(label = "Color de fondo  Negro", compound = LEFT, command = bcolor2)
  128. menu_archivo2.add_separator()
  129. menu_archivo2.add_command(label = "Exit", compound = LEFT, command = root.destroy)
  130.  
  131. boton_menu_archivo2["menu"] = menu_archivo2
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. def colocar_scrollbar(listbox,scrollbar):
  140.    scrollbar.config(command=listbox.yview)
  141.    listbox.config(yscrollcommand=scrollbar.set)
  142.    scrollbar.pack(side=RIGHT, fill=Y)
  143.    listbox.pack(side=LEFT, fill=Y)
  144.  
  145.  
  146.  
  147. frame1=Frame(root,bg="black")
  148. frame1.place(x=30, y=50) # <-> -|^ x= -> y= -|^
  149. #frame1.pack()
  150. scroll1=Scrollbar(frame1)
  151. list1=Listbox(frame1,bg="black",fg='green',width=170,height=33,font=("Helvetica", 10))
  152. #list1.pack()
  153. colocar_scrollbar(list1,scroll1)
  154. mivalor=StringVar()
  155. copi2=StringVar()
  156. copi3=StringVar()
  157.  
  158. #Label(root,image=imagen1).pack()
  159.  
  160. e1=Entry(root,textvar=mivalor,width=150,bg="black",fg="green", font=("Helvetica", 10)).place(x=30, y=630) # <-> -|^ x= -> y= -|^
  161.  
  162. e2=Entry(root,textvar=copi2,width=72,bg="black",fg="green", font=("Helvetica", 10)).place(x=30, y=700)
  163. e3=Entry(root,textvar=copi3,width=72,bg="black",fg="green", font=("Helvetica", 10)).place(x=578, y=700)
  164.  
  165.  
  166. list1.insert(END, "")
  167. list1.insert(END, " Kyurem v2.0")
  168. list1.insert(END, " -----------------------------------------------------------------------------------------------------------------------")
  169. list1.insert(END, " Kyurem Consola de comandos en python")
  170. list1.insert(END, " By Razel")
  171. list1.insert(END, "")
  172. list1.insert(END, "")
  173.  
  174.  
  175.  
  176.  
  177. def copyfuncion():
  178.    arc1 = copi2.get()
  179.    arc2 = copi3.get()
  180.  
  181.    try:
  182.        shutil.copy(arc1, arc2)
  183.        list1.insert(END,"")
  184.        list1.insert(END,"El archivo a sido copiado.")
  185.        list1.insert(END,"")
  186.  
  187.        list1.insert(END, "")
  188.        list1.insert(END, os.getcwd()+">")
  189.  
  190.    except:
  191.        list1.insert(END,"")
  192.        list1.insert(END,"ERROR El arhivo no a sido copiado.")
  193.        list1.insert(END,"")
  194.  
  195.        list1.insert(END, "")
  196.        list1.insert(END, os.getcwd()+">")
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. list1.insert(END, os.getcwd()+">")
  205.  
  206. def insertar_en_listbox():
  207.  
  208.    if mivalor.get() != '':
  209.  
  210.        if mivalor.get() == "help":
  211.  
  212.            list1.insert(END,'')
  213.            list1.insert(END,'HELP:            Muestra la lista de comandos de la shell')
  214.            list1.insert(END,"-H:              Muestar la lista de los comandos de la shell")
  215.            list1.insert(END,'DEL:             Elimina el archivo marcado')
  216.            list1.insert(END,'XDEL:            Elimina la carpeta marcada')
  217.            list1.insert(END,'CLS                Borra la pantalla')
  218.            list1.insert(END,'TIME:            Muestra la hora y fecha del sistema')
  219.            list1.insert(END,'PRINT:           Muestra mensajes en la pantalla')
  220.            list1.insert(END,'READ:            Abre el archivo en modo escritura')
  221.            list1.insert(END,'WANT:            Buasca un todos los archivo con extension a elegir')
  222.            list1.insert(END,'DIR:             Muestra el directorio actual')
  223.            list1.insert(END,'CD:              Cambia de directorio al directorio selecionado')
  224.            list1.insert(END,'LAST:            Muestra la fecha de la ultima midificacion del un archivo marcado')
  225.            list1.insert(END,'EXIT:            Sale de la consola de comandos')
  226.  
  227.            list1.insert(END, "")
  228.            list1.insert(END, os.getcwd()+">")
  229.  
  230.        if mivalor.get() == "-h":
  231.            list1.insert(END,'')
  232.            list1.insert(END,'HELP:            Muestra la lista de comandos de la shell')
  233.            list1.insert(END,"-H:              Muestar la lista de los comandos de la shell")
  234.            list1.insert(END,'DEL:             Elimina el archivo marcado')
  235.            list1.insert(END,'XDEL:            Elimina la carpeta marcada')
  236.            list1.insert(END,'CLS                Borra la pantalla')
  237.            list1.insert(END,'TIME:            Muestra la hora y la fecha del sistema')
  238.            list1.insert(END,'PRINT:           Muestra mensajes en la pantalla')
  239.            list1.insert(END,'READ:            Abre el archivo en modo escritura')
  240.            list1.insert(END,'WANT:            Buasca un todos los archivo con extension a elegir')
  241.            list1.insert(END,'DIR:             Muestra el directorio actual')
  242.            list1.insert(END,'CD:              Cambia de directorio al directorio selecionado')
  243.            list1.insert(END,'LAST:            Muestra la fecha de la ultima midificacion del un archivo marcado')
  244.            list1.insert(END,'EXIT:            Sale de la consola de comandos')
  245.            list1.insert(END, "")
  246.            list1.insert(END, os.getcwd()+">")
  247.  
  248.        if mivalor.get() == "HELP":
  249.  
  250.            list1.insert(END,'')
  251.            list1.insert(END,'HELP:            Muestra la lista de comandos de la shell')
  252.            list1.insert(END,"-H:              Muestar la lista de los comandos de la shell")
  253.            list1.insert(END,'DEL:             Elimina el archivo marcado')
  254.            list1.insert(END,'XDEL:            Elimina la carpeta marcada')
  255.            list1.insert(END,'CLS                Borra la pantalla')
  256.            list1.insert(END,'TIME:            Muestra la hora y la fecha del sistema')
  257.            list1.insert(END,'PRINT:           Muestra mensajes en la pantalla')
  258.            list1.insert(END,'READ:            Abre el archivo en modo escritura')
  259.            list1.insert(END,'WANT:            Buasca un todos los archivo con extension a elegir')
  260.            list1.insert(END,'DIR:             Muestra el directorio actual')
  261.            list1.insert(END,'CD:              Cambia de directorio al directorio selecionado')
  262.            list1.insert(END,'LAST:            Muestra la fecha de la ultima midificacion del un archivo marcado')
  263.            list1.insert(END,'EXIT:            Sale de la consola de comandos')
  264.            list1.insert(END, "")
  265.            list1.insert(END, os.getcwd()+">")
  266.  
  267.        if mivalor.get() == "-H":
  268.            list1.insert(END,'')
  269.            list1.insert(END,'HELP:            Muestra la lista de comandos de la shell')
  270.            list1.insert(END,"-H:              Muestar la lista de los comandos de la shell")
  271.            list1.insert(END,'DEL:             Elimina el archivo marcado')
  272.            list1.insert(END,'XDEL:            Elimina la carpeta marcada')
  273.            list1.insert(END,'CLS                Borra la pantalla')
  274.            list1.insert(END,'TIME:            Muestra la hora y fecha del sistema')
  275.            list1.insert(END,'PRINT:           Muestra mensajes en la pantalla')
  276.            list1.insert(END,'READ:            Abre el archivo en modo escritura')
  277.            list1.insert(END,'WANT:            Buasca un todos los archivo con extension a elegir')
  278.            list1.insert(END,'DIR:             Muestra el directorio actual')
  279.            list1.insert(END,'CD:              Cambia de directorio al directorio selecionado')
  280.            list1.insert(END,'LAST:            Muestra la fecha de la ultima midificacion del un archivo marcado')
  281.            list1.insert(END,'TIME             Muestra la hora del sistema')
  282.            list1.insert(END,'EXIT:            Sale de la consola de comandos')
  283.            list1.insert(END, "")
  284.            list1.insert(END, os.getcwd()+">")
  285.  
  286.        if mivalor.get().startswith("del") == True:
  287.  
  288.            rut = mivalor.get()[4:]
  289.  
  290.            try:
  291.                os.remove(rut)
  292.                list1.insert(END,'EL archivo a sido eliminado con exito.')
  293.  
  294.            except:
  295.                list1.insert(END,'ERROR El archivo no a podido ser eliminado.')
  296.  
  297.            list1.insert(END, "")
  298.            list1.insert(END, os.getcwd()+">")
  299.  
  300.        if mivalor.get().startswith("xdel") == True:
  301.  
  302.            arc1 = mivalor.get()[5:]
  303.            boo = True
  304.  
  305.            try:
  306.                shutil.rmtree(arc1, boo)
  307.                list1.insert(END, "\nLa carpeta a sido eliminada.")
  308.  
  309.            except:
  310.                list1.insert(END,"ERROR La carpeta no a podido ser eliminado.")
  311.  
  312.            list1.insert(END, "")
  313.            list1.insert(END, os.getcwd()+">")
  314.  
  315.        if mivalor.get().startswith("read") == True:
  316.  
  317.            red = mivalor.get()[5:]
  318.  
  319.            try:
  320.                archi = open(red,'r')
  321.                linea=archi.readline()
  322.                while linea!="":
  323.                    list1.insert(END,linea)
  324.                    linea=archi.readline()
  325.  
  326.            except:
  327.                list1.insert(END,"ERROR El archivo no a podido ser abierto en mode lectura.")
  328.  
  329.            list1.insert(END, "")
  330.            list1.insert(END, os.getcwd()+">")
  331.  
  332.        elif mivalor.get().startswith("want") == True:
  333.  
  334.            arc = mivalor.get()[5:]
  335.  
  336.            try:
  337.  
  338.                lista = glob.glob("*" + arc)
  339.                list1.insert(END,"Archivos con extension" + arc + "en este directorio:")
  340.                list1.insert(END,"")
  341.                list1.insert(END,lista)
  342.  
  343.            except:
  344.                list1.insert(END,"ERROR No se a encontrado el archivo con la extension que pide.")
  345.  
  346.            list1.insert(END, "")
  347.            list1.insert(END, os.getcwd()+">")
  348.  
  349.  
  350.        elif mivalor.get().startswith("dir") == True:
  351.  
  352.            arc = mivalor.get()[4:]
  353.            try:
  354.                os.chdir(arc)
  355.                list1.insert(END,"")
  356.                list1.insert(END,"Directorio:", arc)
  357.                list1.insert(END,"")
  358.  
  359.                archis = os.listdir(arc)
  360.                for imagen in archis:
  361.                    list1.insert(END,imagen)
  362.  
  363.            except:
  364.  
  365.                list1.insert(END,"")
  366.                list1.insert(END,"Directorio actual:", os.getcwd())
  367.                list1.insert(END,"")
  368.  
  369.  
  370.                archis = os.listdir(os.getcwd())
  371.                for imagen in archis:
  372.                    list1.insert(END,imagen)
  373.  
  374.            list1.insert(END, "")
  375.            list1.insert(END, os.getcwd()+">")
  376.  
  377.        elif mivalor.get().startswith("cd") == True:
  378.  
  379.            arc = mivalor.get()[3:]
  380.            try:
  381.                os.chdir(arc)
  382.            except:
  383.                list1.insert(END,os.getcwd())
  384.  
  385.            list1.insert(END, "")
  386.            list1.insert(END, os.getcwd()+">")
  387.  
  388.        elif mivalor.get().startswith("last") == True:
  389.  
  390.            arcx = mivalor.get()[5:]
  391.  
  392.            try:
  393.                metadata = os.stat(arcx)
  394.                metadata.st_mtime
  395.                time.localtime(metadata.st_mtime)
  396.  
  397.                list1.insert(END,"")
  398.                list1.insert(END,time.localtime(metadata.st_mtime))
  399.                list1.insert(END,"")
  400.  
  401.            except:
  402.                list1.insert(END,"ERROR Archivo no definido.")
  403.  
  404.            list1.insert(END, "")
  405.            list1.insert(END, os.getcwd()+">")
  406.  
  407.        elif mivalor.get().startswith("print") == True:
  408.  
  409.            rut = mivalor.get()[6:]
  410.  
  411.            list1.insert(END,rut)
  412.  
  413.            list1.insert(END, "")
  414.            list1.insert(END, os.getcwd()+">")
  415.  
  416.        elif mivalor.get() == 'time':
  417.  
  418.            list1.insert(END, '')
  419.  
  420.            list1.insert(END, datetime.datetime.now())
  421.  
  422.            list1.insert(END, "")
  423.            list1.insert(END, os.getcwd()+">")
  424.  
  425.        elif mivalor.get() == 'cls':
  426.            list1.delete(0, END)          
  427.  
  428.  
  429.  
  430.        elif mivalor.get() == "exit":
  431.            exit()
  432.  
  433.  
  434.  
  435.  
  436.  
  437.    elif mivalor.get() == '':
  438.        list1.insert(END,"No se reconoce como un comando interno o externo")
  439.  
  440.  
  441. Label(root,text='[+] Introduce la ruta del archivo a copiar:',fg='green', bg='black',font=("Helvetica", 10)).place(x=30, y=675)
  442. Label(root,text='[+] Introduce la ruta donde se copiara el archivo:',fg='green', bg='black',font=("Helvetica", 10)).place(x=578, y=675)
  443.  
  444.  
  445.  
  446. b1=Button(root,text="Enter",command=insertar_en_listbox, bg="black",fg="green", width=20).place(x=1100, y=630) # <-> -|^ x= -> y= -|^
  447. b2=Button(root,text="Copiar",command=copyfuncion, bg="black",fg="green", width=20).place(x=1100, y=700) # <-> -|^ x= -> y= -|^
  448.  
  449. tick()
  450. clock.mainloop()
  451.  
  452. root.mainloop()

Código mejorado:

Código
  1. # -*- coding: cp1252 -*-
  2. from Tkinter import *
  3. from pprint import pprint
  4. from datetime import *
  5. import commands, datetime, shutil, glob, time, sys, os
  6.  
  7.  
  8. root = Tk()
  9. #imagen1=PhotoImage(file="font.gif")
  10. root["background"] = 'black' #bg="black"
  11. root.title("KyuDOS")
  12. root.geometry("1250x1000")
  13.  
  14.  
  15. def bluecollor():
  16.    list1["foreground"] = 'blue'
  17.  
  18. def redcolor():
  19.    list1["foreground"] = 'red'
  20.  
  21. def whitecolor():
  22.    list1["foreground"] = 'white'
  23.  
  24. def griscolor():
  25.    list1["foreground"] = 'grey'
  26.  
  27. def narancolor():
  28.    list1["foreground"] = 'orange'
  29.  
  30. def amancolor():
  31.    list1["foreground"] = 'yellow'
  32.  
  33. def aman2color():
  34.    list1["foreground"] = 'green'
  35.  
  36. def bcolor():
  37.    list1["foreground"] = 'black'
  38.  
  39.  
  40.  
  41. def bluecollor2():
  42.    list1["background"] = 'blue'
  43.  
  44. def redcolor2():
  45.    list1["background"] = 'red'
  46.  
  47. def whitecolor2():
  48.    list1["background"] = 'white'
  49.  
  50. def griscolor2():
  51.    list1["background"] = 'grey'
  52.  
  53. def narancolor2():
  54.    list1["background"] = 'orange'
  55.  
  56. def amancolor2():
  57.    list1["background"] = 'yellow'
  58.  
  59. def aman2color2():
  60.    list1["background"] = 'green'
  61.  
  62. def bcolor2():
  63.    list1["background"] = 'black'
  64.  
  65.  
  66. menu_general = LabelFrame(root, background = "#2E2E2E") # el LabelFrame es necesario como base para apoyar los menus sobre el
  67. menu_general.pack(side = TOP, fill = X)
  68.  
  69. time1 = ''
  70. clock = Label(menu_general, font=('ubuntu', 10, 'bold'), bg='#3C3B37',fg='white', bd=0)
  71. clock.pack(side = RIGHT)
  72.  
  73. def tick():
  74.    global time1
  75.    time2 = time.strftime('%H:%M:%S')
  76.    if time2 != time1:
  77.        time1 = time2
  78.        clock.config(text=time2,background = "#585858")
  79.    clock.after(200, tick)
  80.  
  81. boton_menu_archivo = Menubutton(menu_general, text = "Color de la fuente", foreground = "white", background = "#585858", activebackground = "#424242", activeforeground = "#585858")  #creamos el boton del menu del cual despus desplegamos los menus
  82. boton_menu_archivo.pack(side = LEFT) #ahora si es verdaderamente visible
  83.  
  84. menu_archivo = Menu(boton_menu_archivo, background = "#424242", foreground = "#23A3FF", activebackground = "#474AFF", activeforeground = "#70DBFF")
  85. menu_archivo.add_command(label = "Color de fuente Azul", compound = LEFT, command = bluecollor)
  86. menu_archivo.add_command(label = "Color de fuente Rojo", compound = LEFT, command = redcolor)
  87. menu_archivo.add_command(label = "Color de fuente Blanco", compound = LEFT, command = whitecolor)
  88. menu_archivo.add_command(label = "Color de fuente Gris", compound = LEFT, command = griscolor)
  89. menu_archivo.add_command(label = "Color de fuente naranja", compound = LEFT, command = narancolor)
  90. menu_archivo.add_command(label = "Color de fuente Amarillo", compound = LEFT, command = amancolor)
  91. menu_archivo.add_command(label = "Color de fondo  Verde", compound = LEFT, command = aman2color)
  92. menu_archivo.add_command(label = "Color de fondo  Negro", compound = LEFT, command = bcolor)
  93. menu_archivo.add_separator()
  94. menu_archivo.add_command(label = "Exit", compound = LEFT, command = root.destroy)
  95.  
  96. boton_menu_archivo["menu"] = menu_archivo
  97.  
  98.  
  99.  
  100.  
  101.  
  102. boton_menu_archivo2 = Menubutton(menu_general, text = "Color de Fondo", foreground = "white", background = "#585858", activebackground = "#424242", activeforeground = "#585858")  #creamos el boton del menu del cual despus desplegamos los menus
  103. boton_menu_archivo2.pack(side = LEFT) #ahora si es verdaderamente visible
  104.  
  105. menu_archivo2 = Menu(boton_menu_archivo2, background = "#424242", foreground = "#23A3FF", activebackground = "#474AFF", activeforeground = "#70DBFF")
  106. menu_archivo2.add_command(label = "Color de fondo Azul", compound = LEFT, command = bluecollor2)
  107. menu_archivo2.add_command(label = "Color de fondo  Rojo", compound = LEFT, command = redcolor2)
  108. menu_archivo2.add_command(label = "Color de fondo  Blanco", compound = LEFT, command = whitecolor2)
  109. menu_archivo2.add_command(label = "Color de fondo  Gris", compound = LEFT, command = griscolor2)
  110. menu_archivo2.add_command(label = "Color de fondo  naranja", compound = LEFT, command = narancolor2)
  111. menu_archivo2.add_command(label = "Color de fondo  Amarillo", compound = LEFT, command = amancolor2)
  112. menu_archivo2.add_command(label = "Color de fondo  Verde", compound = LEFT, command = aman2color2)
  113. menu_archivo2.add_command(label = "Color de fondo  Negro", compound = LEFT, command = bcolor2)
  114. menu_archivo2.add_separator()
  115. menu_archivo2.add_command(label = "Exit", compound = LEFT, command = root.destroy)
  116.  
  117. boton_menu_archivo2["menu"] = menu_archivo2
  118.  
  119.  
  120. def colocar_scrollbar(listbox,scrollbar):
  121.    scrollbar.config(command=listbox.yview)
  122.    listbox.config(yscrollcommand=scrollbar.set)
  123.    scrollbar.pack(side=RIGHT, fill=Y)
  124.    listbox.pack(side=LEFT, fill=Y)
  125.  
  126.  
  127. frame1=Frame(root,bg="black")
  128. frame1.place(x=30, y=50) # <-> -|^ x= -> y= -|^
  129. #frame1.pack()
  130. scroll1=Scrollbar(frame1)
  131. list1=Listbox(frame1,bg="black",fg='green',width=170,height=33,font=("Helvetica", 10))
  132. #list1.pack()
  133. colocar_scrollbar(list1,scroll1)
  134. mivalor=StringVar()
  135. copi2=StringVar()
  136. copi3=StringVar()
  137.  
  138. #Label(root,image=imagen1).pack()
  139.  
  140. e1=Entry(root,textvar=mivalor,width=150,bg="black",fg="green", font=("Helvetica", 10)).place(x=30, y=630) # <-> -|^ x= -> y= -|^
  141.  
  142. e2=Entry(root,textvar=copi2,width=72,bg="black",fg="green", font=("Helvetica", 10)).place(x=30, y=700)
  143. e3=Entry(root,textvar=copi3,width=72,bg="black",fg="green", font=("Helvetica", 10)).place(x=578, y=700)
  144.  
  145.  
  146. list1.insert(END, "")
  147. list1.insert(END, " Kyurem v2.0")
  148. list1.insert(END, " -----------------------------------------------------------------------------------------------------------------------")
  149. list1.insert(END, " Kyurem Consola de comandos en python")
  150. list1.insert(END, " By Razel")
  151. list1.insert(END, "")
  152. list1.insert(END, "")
  153.  
  154.  
  155.  
  156. def copyfuncion():
  157.    arc1 = copi2.get()
  158.    arc2 = copi3.get()
  159.  
  160.    try:
  161.        shutil.copy(arc1, arc2)
  162.        list1.insert(END,"")
  163.        list1.insert(END,"El archivo a sido copiado.")
  164.        list1.insert(END,"")
  165.  
  166.        list1.insert(END, "")
  167.        list1.insert(END, os.getcwd()+">")
  168.  
  169.    except:
  170.        list1.insert(END,"")
  171.        list1.insert(END,"ERROR El arhivo no a sido copiado.")
  172.        list1.insert(END,"")
  173.  
  174.        list1.insert(END, "")
  175.        list1.insert(END, os.getcwd()+">")
  176.  
  177.  
  178.  
  179. list1.insert(END, os.getcwd()+">")
  180.  
  181. def insertar_en_listbox():
  182.  
  183.    if mivalor.get() != '':
  184.        if mivalor.get().lower() == "help" or mivalor.get().lower() == "-h":
  185.            list1.insert(END,'')
  186.            list1.insert(END,'HELP:            Muestra la lista de comandos de la shell')
  187.            list1.insert(END,"-H:              Muestar la lista de los comandos de la shell")
  188.            list1.insert(END,'DEL:             Elimina el archivo marcado')
  189.            list1.insert(END,'XDEL:            Elimina la carpeta marcada')
  190.            list1.insert(END,'CLS              Borra la pantalla')
  191.            list1.insert(END,'TIME:            Muestra la hora y fecha del sistema')
  192.            list1.insert(END,'PRINT:           Muestra mensajes en la pantalla')
  193.            list1.insert(END,'READ:            Abre el archivo en modo escritura')
  194.            list1.insert(END,'WANT:            Buasca un todos los archivo con extension a elegir')
  195.            list1.insert(END,'DIR:             Muestra el directorio actual')
  196.            list1.insert(END,'CD:              Cambia de directorio al directorio selecionado')
  197.            list1.insert(END,'LAST:            Muestra la fecha de la ultima midificacion del un archivo marcado')
  198.            list1.insert(END,'EXIT:            Sale de la consola de comandos')
  199.            list1.insert(END, "")
  200.            list1.insert(END, os.getcwd()+">")
  201.  
  202.        elif mivalor.get().startswith("del") == True:
  203.  
  204.            rut = mivalor.get()[4:]
  205.  
  206.            try:
  207.                os.remove(rut)
  208.                list1.insert(END,'EL archivo a sido eliminado con exito.')
  209.  
  210.            except:
  211.                list1.insert(END,'ERROR El archivo no a podido ser eliminado.')
  212.  
  213.            list1.insert(END, "")
  214.            list1.insert(END, os.getcwd()+">")
  215.  
  216.        elif mivalor.get().startswith("xdel") == True:
  217.  
  218.            arc1 = mivalor.get()[5:]
  219.            boo = True
  220.  
  221.            try:
  222.                shutil.rmtree(arc1, boo)
  223.                list1.insert(END, "\nLa carpeta a sido eliminada.")
  224.  
  225.            except:
  226.                list1.insert(END,"ERROR La carpeta no a podido ser eliminado.")
  227.  
  228.            list1.insert(END, "")
  229.            list1.insert(END, os.getcwd()+">")
  230.  
  231.        elif mivalor.get().startswith("read") == True:
  232.  
  233.            red = mivalor.get()[5:]
  234.  
  235.            try:
  236.                archi = open(red,'r')
  237.                linea=archi.readline()
  238.                while linea!="":
  239.                    list1.insert(END,linea)
  240.                    linea=archi.readline()
  241.  
  242.            except:
  243.                list1.insert(END,"ERROR El archivo no a podido ser abierto en mode lectura.")
  244.  
  245.            list1.insert(END, "")
  246.            list1.insert(END, os.getcwd()+">")
  247.  
  248.        elif mivalor.get().startswith("want") == True:
  249.  
  250.            arc = mivalor.get()[5:]
  251.  
  252.            try:
  253.  
  254.                lista = glob.glob("*" + arc)
  255.                list1.insert(END,"Archivos con extension" + arc + "en este directorio:")
  256.                list1.insert(END,"")
  257.                list1.insert(END,lista)
  258.  
  259.            except:
  260.                list1.insert(END,"ERROR No se a encontrado el archivo con la extension que pide.")
  261.  
  262.            list1.insert(END, "")
  263.            list1.insert(END, os.getcwd()+">")
  264.  
  265.  
  266.        elif mivalor.get().startswith("dir") == True:
  267.  
  268.            arc = mivalor.get()[4:]
  269.            try:
  270.                os.chdir(arc)
  271.                list1.insert(END,"")
  272.                list1.insert(END,"Directorio:", arc)
  273.                list1.insert(END,"")
  274.  
  275.                archis = os.listdir(arc)
  276.                for imagen in archis:
  277.                    list1.insert(END,imagen)
  278.  
  279.            except:
  280.  
  281.                list1.insert(END,"")
  282.                list1.insert(END,"Directorio actual:", os.getcwd())
  283.                list1.insert(END,"")
  284.  
  285.                archis = os.listdir(os.getcwd())
  286.                for imagen in archis:
  287.                    list1.insert(END,imagen)
  288.  
  289.            list1.insert(END, "")
  290.            list1.insert(END, os.getcwd()+">")
  291.  
  292.        elif mivalor.get().startswith("cd") == True:
  293.  
  294.            arc = mivalor.get()[3:]
  295.            try:
  296.                os.chdir(arc)
  297.            except:
  298.                list1.insert(END,os.getcwd())
  299.  
  300.            list1.insert(END, "")
  301.            list1.insert(END, os.getcwd()+">")
  302.  
  303.        elif mivalor.get().startswith("last") == True:
  304.  
  305.            arcx = mivalor.get()[5:]
  306.  
  307.            try:
  308.                metadata = os.stat(arcx)
  309.                metadata.st_mtime
  310.                time.localtime(metadata.st_mtime)
  311.  
  312.                list1.insert(END,"")
  313.                list1.insert(END,time.localtime(metadata.st_mtime))
  314.                list1.insert(END,"")
  315.  
  316.            except:
  317.                list1.insert(END,"ERROR Archivo no definido.")
  318.  
  319.            list1.insert(END, "")
  320.            list1.insert(END, os.getcwd()+">")
  321.  
  322.        elif mivalor.get().startswith("print") == True:
  323.  
  324.            rut = mivalor.get()[6:]
  325.  
  326.            list1.insert(END,rut)
  327.  
  328.            list1.insert(END, "")
  329.            list1.insert(END, os.getcwd()+">")
  330.  
  331.        elif mivalor.get() == 'time':
  332.  
  333.            list1.insert(END, '')
  334.  
  335.            list1.insert(END, datetime.datetime.now())
  336.  
  337.            list1.insert(END, "")
  338.            list1.insert(END, os.getcwd()+">")
  339.  
  340.        elif mivalor.get() == 'cls':
  341.            list1.delete(0, END)          
  342.  
  343.  
  344.        elif mivalor.get() == "exit":
  345.            exit()
  346.  
  347.        else:
  348.            list1.insert(END, 'ERROR: "%s" No se reconoce como un comando interno o externo' % mivalor.get())
  349.  
  350.    elif mivalor.get() == '':
  351.        list1.insert(END,"No se reconoce como un comando interno o externo")
  352.  
  353.  
  354. Label(root,text='[+] Introduce la ruta del archivo a copiar:',fg='green', bg='black',font=("Helvetica", 10)).place(x=30, y=675)
  355. Label(root,text='[+] Introduce la ruta donde se copiara el archivo:',fg='green', bg='black',font=("Helvetica", 10)).place(x=578, y=675)
  356.  
  357.  
  358. b1=Button(root,text="Enter",command=insertar_en_listbox, bg="black",fg="green", width=20).place(x=1100, y=630) # <-> -|^ x= -> y= -|^
  359. b2=Button(root,text="Copiar",command=copyfuncion, bg="black",fg="green", width=20).place(x=1100, y=700) # <-> -|^ x= -> y= -|^
  360.  
  361. tick()
  362. clock.mainloop()
  363. root.mainloop()

La mejora es muy poca, pero algo hice!!!  :)

Buena suerte para todos!! Un abrazo!
4  Programación / Scripting / [Aporte - Python] Programa Chars-ASCII en: 28 Marzo 2014, 05:41 am
Hola a todos!!

Bueno hoy voy a aportar un programa bastante útil que les servirá si desean saber el código ASCII de algún caracter, ya sea letra, número o símbolo, esto es muy útil porque muchas veces necesitamos trabajar con chrs.
El programa es sencillo, lo ejecutan y escriben un texto, número o símbolo, puede ser el largo que quieran, por ejemplo una frase.
También pueden ir los caracteres mezclados (letras, números, símbolos).
Aquí dejo un ejemplo de su uso:

Código:
Escribi un texto o letra: hola amigos
 h 104
 o 111
 l 108
 a 97
   32
 a 97
 m 109
 i 105
 g 103
 o 111
 s 115

Escribi un texto o letra: ¿Como estan?
 ¿ 168
 C 67
 o 111
 m 109
 o 111
   32
 e 101
 s 115
 t 116
 a 97
 n 110
 ? 63

Escribi un texto o letra: Nos vemos, suerte!
 N 78
 o 111
 s 115
   32
 v 118
 e 101
 m 109
 o 111
 s 115
 , 44
   32
 s 115
 u 117
 e 101
 r 114
 t 116
 e 101
 ! 33

Lo que dice "Escribi un texto o letra:" es el mensaje del programa, lo que está después de ese mensaje es lo que deben escribir y lo que está a la izquierda son los caracteres de la frase que escribieron y a la derecha su código ASCII!!!!
Por las dudas, el código ASCII del espacio (hecho con la barra espaciadora) es el char 32.

Aquí está el código:

Código
  1. # -*- coding: utf-8 -*-
  2. # Programa Chars-ASCII - Creado con Python 2.7.5
  3. # Autor: Daniel Delgado - Nick:(Príncipe_Azul)
  4.  
  5. def Caracteres():
  6.    Cadena = raw_input("\nEscribi un texto o letra: ")
  7.    if "salir!!" != Cadena:
  8.        for Caracter in enumerate(Cadena):
  9.            print " " + Caracter[1], ord(Caracter[1])
  10.        Caracteres()
  11.    else:
  12.        exit()
  13.  
  14. Caracteres()

El programa tiene un bucle en la misma función que no se lo ve (aparte del for), osea no se lo ve como for ni while, pero es un bucle que siempe llama a su misma función, esto lo hice así para no tener que estar abriendo el programa a cada rato.
Para salir del programa, osea para que la consola se cierre, deben escribir el comando:

salir!!

en minúsculas y con los 2 signos de exclamción al final.

Aquí pueden ver el mismo ejemplo pero en modo gráfico desde la consola:

http://subefotos.com/ver/?899445f659f853aa380ba9b5dbfaecf0o.jpg

Espero que les sirva.
Hasta luego.
5  Programación / Scripting / [Python] ¿Cómo puedo empaquetar una imágen dentro de un programa ejecutable? en: 8 Marzo 2014, 05:42 am
Hola a todos, tengo una duda, quisiera saber, ¿como puedo empaquetar una o varias imágenes dentro de un ejecutable creado con py2exe?
Es decir, tengo un programa y quisiera pasarlo a ejecutable, hasta ahí todo bien, pero el tema es que yo no quiero que las imágenes, que bueno en este caso es una sola, vaya en una carpeta junto con el exe, ni tampoco dentro de library.zip (a menos que esta compilada o algo así)
Osea pueden ir ciertas imágenes que utiliza el programa junto con el .exe, pero no todas, ya que pueden reemplazarlas y eso es lo que no deseo.
Por ejemplo un logo del programa o una foto del autor, esas son cosas que no deberían estar junto con el .exe (en la misma carpeta), sino dentro de él así no puedan modificarlas/reemplazarlas, eso es lo quiero saber si eso es posible.
Me imagino y por lo que andube leyendo esto pueda conseguirse con una opción de py2exe, he probado esta opción que he encontrado en " http://www.py2exe.org/index.cgi/data_files ":

Código
  1. from distutils.core import setup
  2. import py2exe
  3.  
  4. Mydata_files = [('images', ['C:\Users\Daniel\Desktop\\favicon.ico'])]
  5.  
  6. setup(
  7.    console=['Probando.py'],
  8.    data_files = Mydata_files,
  9.    options={
  10.                "py2exe":{
  11.                        "unbuffered": True,
  12.                        "optimize": 2,
  13.                        "excludes": ["email"]
  14.                }
  15.        }
  16. )

Pero no me ha servido, no funciona, porque cuando abro el programa si se ve el favicon (estando todavía la imagen), pero si yo lo borro al favicon luego de ser pasado a ejecutable, me aparece una ventana de error diciendo que el archivo "favicon.ico" no se encuentra en X directorio.
Y supuestamente lo mete ahí dentro para que no lo puedan modificar, pero al borrarlo, cuando abro de nuevo el programa me salta esa ventana, osea que todavía sigue dependiendo de que el archivo favicon.ico esté en X ruta para que sea visible y cargado en el programa.
Ahora mi otra duda es, (en el caso que esto si sea posible osea meter una imagen dentro del .exe o de alguna manera que la imagen no pueda ser modificada) ¿como haría en el código fuente de Python para indicarle al mismo donde estaría la imagen? ya que si la imagen estaría dentro del .exe no la podría encontrar, ahí no sé como hacerlo, por ejemplo en esta parte del código cuando establezco el favicon:

Código
  1.        icono = "C:\Users\Daniel\Desktop\\favicon.ico"
  2.        favicon = wx.Icon(icono, wx.BITMAP_TYPE_ICO)
  3.        wx.Frame.SetIcon(self,favicon)

Bueno ahí en la variable "icono" que debería poner? en el caso que la imagen esté dentro del .exe?
He visto programas en C ya compilados y llenos de símbolos, que hay directorios y ahí dentro están las imagenes, pero esos directorios y esas imágenes no existen en mi pc, sino que están dentro del mismo programa.
Bueno amigos espero que me ayuden por favor, les agradecería de corazón, igual desde ahora les agradezco. Muchas gracias!!
Que tengan buen día!
6  Programación / Scripting / [Python] Duda con atajo de teclado en una ventana padre creada con wxPython en: 1 Marzo 2014, 04:13 am
Hola amigos, espero que anden bien!!

Bueno les comento que estoy comenzando con interfaz grafica de usuario (GUIs), para eso utilizo el programa wxPython, que bien podria utilizar TKinter, pero me gusta mas wxPython.

Bueno tengo una duda, quisiera saber si es posible utilizar la tecla Esc (Escape) para salir de un programa, osea de una ventana padre, mediante el metodo de ejemplo:

Código:
        quit = wx.MenuItem(file, 105, '&Quit\tCtrl+Q', 'Quit the Application')
        quit.SetBitmap(wx.Bitmap('probar.png'))
        file.AppendItem(quit)

y lo que yo quisiera saber si es posible asignar la tecla de Escape para cerrar un programa al pulsar la misma, por ejemplo algo asi:

Código:
 
quit = wx.MenuItem(file, 105, '&Quit\tEsc', 'Quit the pplication')

tambien pobre asi:

Código:
 
quit = wx.MenuItem(file, 105, '&Quit\tEscape', 'Quit the pplication')

pero ninguno me sirvio, asi que la verdad no se que hacer, no logro poder asigar la tecla de Escape para cerrar el programa.

¿Alguien sería tan amable de ayudarme? Por favor.

Desde ya compañeros muchas gracias y que tengan buen día!!


PD: Les informo a los Administradores que hay 4 caritas que no se ven cuando se escribe un nuevo post, las mismas son:
Código:
:¬¬
Código:
:xD
Código:
;-)
Código:
:silbar:
7  Programación / Scripting / [Python] Duda con comparacion de cadenas en una lectura de socket en: 4 Noviembre 2013, 07:34 am
Hola! Estoy aprendiendo programacion Python y he creado un bot para el IRC, solo dispone de 4 funciones, pero me hes útil por lo menos para empezar y entenderle un poco al lenguaje.
Mi duda es la siguiente:
¿Cómo puedo comparar códigos HTML en una lectura de sockets con algunas variables?
Es decir lo que quiero que mi bot haga es esto, por ejemplo pondre 12 lineas de código de ejemplo:

Código:
<div class="nota clearfix" id="notafinal">
<div class="volanta">PROYECTO APROBADO POR UNANIMIDAD EN EL CONCEJO DELIBERANTE DE LA CAPITAL</div>
<h2><a href="/notas/2013/10/30/proponen-ensenar-ninos-lengua-senas-487696.asp" >Proponen enseñar a los niños la lengua de señas</a></h2>

<div class="fotoNota" id="w300"><a href="/notas/2013/10/30/proponen-ensenar-ninos-lengua-senas-487696.asp" ><img
src="/fotografias/portada/300-171984.jpg" alt="Proponen enseñar a los niños la lengua de señas" width="300" border="0" /></a>
<p class="epigrafe">Los ediles tuvieron una rápida sesión y aprobaron todos los proyectos.</p>
</div>
<div><p><span class="hora">30/10/2013 | </span>Se busca integrar a las personas sordomudas. Un desafío para los jardines de infantes.</p></div>
<div class="comentarios"><a href="/notas/2013/10/30/proponen-ensenar-ninos-lengua-senas-487696.asp#comentarios" >Dejá tu
comentario</a></div>

Lo que yo quiero es que mi bot extraiga informacion de una pagina web de noticias de mi provincia y la envíe al canal principal de la Red.
El código que hice para que el bot detecte el comando es este (voy a poner solo un pedazo de código):

Código
  1. if contexto.startswith('!noticias'):
  2.    Web()

Entonces un usuario al ejecutar el comando !noticias el script llama a la función Web
Y el código de la función es así:

Código
  1. def Web():
  2.    while 1:
  3.        try:
  4.            f = urllib2.urlopen("http://www.paginadenoticias.com.ar")
  5.            print f.read()
  6.            SantiagoNoticias = f.read()
  7.            f.close()
  8.            break
  9.            if ' | </span>' in SantiagoNoticias:
  10.                CuentaNoticias = CuentaNoticias + 1
  11.                if 10 >= 5: #Esta linea es diferente, la puse asi para ver si puede funcionar el script
  12.                    ContenidoNoticia1 = SantiagoNoticias
  13.                    ContenidoNoticia2 = ContenidoNoticia1.find('</span>') + 7
  14.                    InfoNoticia = ContenidoNoticia1[ContenidoNoticia2:ContenidoNoticia1.find('</p>')]
  15.                    s.send('PRIVMSG #Argentina : 5 %s \r\n' % TituloNoticia)
  16.                    s.send('PRIVMSG #Argentina : 2 %s \r\n' % InfoNoticia)
  17.        except HTTPError, e:
  18.            s.send('PRIVMSG #Argentina : Ha ocurrido un error en la conexion con la pagina web!')
  19.            print e.code
  20.        except URLError, e:
  21.            s.send('PRIVMSG #Argentina : ERROR: La URL es incorrecta . . .')
  22.            print e.reason
  23.        except BaseException as err:
  24.            exit()

Bueno creo que no es necesario pasar todo el código, además quiero hacer mi propio código y me estoy esforzando lo más que puedo para lograrlo, pero siempre necesitamos ayuda de alguien. Espero que sepan comprender.
Al ejecutar el programa, el bot entra al servidor, se loguea y todo bien, hasta incluso no cae obviamente no debe caer, osea me refiero a que responde los "PING's" del servidor cuando el mismo le envía.
Cuando un usuario ejecuta el comando !noticias el código llama a la función Web que ejecuta la tarea de abrir una página web, hasta ahí todo ok, luego veo en la consola todos los códigos de la página que por supuesto pasan demasiado rápido, pero logro ver el final del código, osea que abre bien la conexión y lee bien.
Pero el problema viene ahora, cuando intento comparar si la cadena  | </span> esta dentro de la línea del código HTML que vendría a ser lo mismo que el "isin" de mIRC Scripting, osea si la cadena A se encuentra dentro de la cadena B.
Lo que quiero es que el código trate de guardar en una variable este valor por ejemplo:

Código:
		<div><p><span class="hora">30/10/2013 | </span>Se busca integrar a las personas sordomudas. Un desafío para los jardines de infantes.</p></div>

Eso es una sola línea y por eso utilicé el ' | </span>' y sería si esa cadena esta (in) en la linea SantiagoNoticias de ser así que guarde en otra variable el contenido de esa cadena para poder quitarle los códigos HTML innecesarios y quedarme solo con la info, osea con la noticia.
He probado poniendo un print "hola" para ver si en cada línea que me mostraba la consola de python aparecían esos "hola", pero sólo apareció al final. Algo así:

</html>
hola

Osea que jamás se va a poder comparar porque es como si fuera que la lectura del socket es de un tirón y se saltara el bucle.
He probado varias maneras pero no consigo hacer que se comparen esas cadenas, en realidad son varias (3), pero solo puse de ejemplo una.
Amigos yo solo quiero por ahora algo basico, osea que compare la información que va extrayendo de la web con una cierta cadena, eso nada más, no creo que sea necesario instalar alguna librería, creo que con las que trae Python es suficiente para lo que necesito, solo es una comparacion de cadenas de textos.
Por favor espero que me ayuden, desde ya les agradezco.
Buena suerte!! :)
8  Programación / Scripting / [APORTE] [BATCH] Acentos en los programas Batch - La mejor solución en: 5 Agosto 2013, 09:55 am
Acentos en los programas Batch - La mejor solución

Buenas, Soy Príncipe_Azul y hoy quiero informarles, ayudarles y mostrarles lo que he descubierto.
En la programación Batch lamentablemente no se pueden crear, editar o borrar archivos que contengan acentos, esto probablemente se debe a la codificación que utiliza la programación Batch.
Hasta hace algún tiempo no había encontrado forma de poder utilizar los acentos en Batch porque pensaba que eso jamás sería posible... Pero hace unos días pensé y probé un método impresionante diría yo, ya que a pesar de ser algo muy simple se pueden usar acentos en los programas en Batch, ya sean en la ayuda del mismo o en la creación, modificación y/o eliminación de arhivos y/o nombres de ellos.
Este magnífico truco lo he descubierto porque cuando antes trabajaba con Batch veía en la ayuda del mismo, palabras que contenían acentos ´´´´ esto me llamó la atención y me dio una esperanza a que ahora lo que he descubierto haya sido la perfecta solución!! así que me puse a jugar un poco con Batch y fuí haciendo pruebas y pruebas, hasta que pum! lo logré y gracias a Dios no me ha llevado tiempo, solo algunos minutos.
Yo Príncipe_Azul como descubridor de esto, no soy un creador de esta posibilidad, sino una persona con buena inteligencia y lógica en su pensar, es algo simple, si en la ayuda de Batch aparecían acentos, entónces si existe esa posibilidad, de hecho Bill Gates la utiliza o por lo menos eso creo.
Este gran descubrimiento será la grandísima ayuda a todas las personas que siempre han tenido problemas con los acentos en sus programas, archivos y carpetas.
Yo a medida que fui aprendiendo sobre programación Batch había leído 2 o 3 tutoriales que me sirvieron bastante, pero en la ayuda de esos tutoriales, como también en Foros y en págians webs he leído que no se podían utilizar acentos en Batch, eso me desilucionaba un poco con el lenguaje, porque cláro no disponía de algo tan simple como la posibilidad de utilizar bien la ortografía en la programación Batch.
En realidad no estoy seguro de que el método que utilice exista en otro lugar (página/foro), osea que otra persona haya descubierto lo mismo que yo, pero esta forma que utilizo para poner acentos, jamás la he leído en ningún lado.
Bueno ya terminando con mi explicación te voy a pedir que si posteas en algún Foro o publicás esta forma de poner acentos en los programas Batch/archivos/carpetas digas que Príncipe_Azul ha sido la persona que ha descubierto esto, quizás suene una exageración, pero la realidad es que uno tiene derecho a que por lo menos aparezca en algún lado en el cuál publiquen algo sobre lo que esa persona haya creado o descubierto, solo pido que digas que Príncipe_Azul fue el que descubrió esta posibilidad, ya que me he tomado el tiempo y trabajo en crear esta explicación y más abajo del texto escribiré la ayuda y explicación de como utilizar los acentos en Batch!! Gracias por tu colaboración!

Primero y antes de que empiece a escribir el "Truco" de como utilizar los acentos en Batch, voy a poner abajo lo que  se puede hacer en Batch sin usar acentos. Luego de eso explicaré como utilizarlos, esto lo hago para que se vea la diferencia y tengas en cuenta lo que no se podía hacer en Batch y aplicando el truco que he descubierto verás como ahora si podrás usar los acentos!!

Para borrar un archivo utilizá las comillas "" siempre y cuando sean necesarias, te harán mucha falta, por ejemplo puedes entrecomillar un nombre de directorio/archivo que tiene más de 6 letras y/o espacios, esto evitará que se generen fallas al borrar/editar/agregar un directorio/archivo.
NOTA: No olvides que en el ejemplo utilizaré dos opciones que son las siguientes:
Código:
/S Elimina los archivos de adentro y las subcarpetas también. Si hay archivos dentro y no se pone esta opción no se podrá eliminar la carpeta.
/Q Modo silencioso (Quiere decir que no te pedirá confirmación para borrar la carpeta).
Ejemplos:
Código
  1. rmdir /S /Q "D:\Carpeta de ejemplo"
  2. rmdir /S /Q "D:\CarpetaDeEjemplo"
  3. rd /S /Q "D:\Carpeta de ejemplo"
  4. rd /S /Q "D:\CarpetaDeEjemplo"

Ahora pondré el comando para borrar archivos y también la ayuda sobre eso:
Código:
/P Pide confirmación en cada caso.
/F Modo force. Borra incluso los archivos de solo lectura.
/S Borra también los subdirectorios.
/Q Modo silencioso. No pide confirmación en ningún caso.
Ejemplos:
Código
  1. del /F /Q "D:\ProbarBorrado.txt"
  2. del /P "D:\Probar Borrado.txt"
  3. erase /F /Q "D:\ProbarBorrado.txt"
  4. erase /P "D:\Probar Borrado.txt"

Comando para renombrar archivos y carpetas:
Código
  1. ren "D:\Archivo.txt" "Archivo renombrado.txt"
  2. rename "D:\Archivo.txt" "Archivo renombrado.txt"
  3. ren "D:\Nueva carpeta" "Carpetita renombrada"
  4. rename "D:\Nueva carpeta" "Carpetita renombrada"

Comandos para crear archivos:
Yo recomiendo usar mejor el comando echo para crear archivos
Ejemplo
Código
  1. echo Texto que llevará el archivo > "D:\Archivo.extensión"
Ejemplos:
Código
  1. echo Este texto ira en el archivo Texto.txt y en la ruta D:\ > "D:\Texto.txt"

Código
  1. copy con "D:\Archivo de texto.txt"
Luego de dar ENTER tendrás que escribir lo que desees dentro del archivo y para finalizar pesioná la tecla F6 y luego ENTER nuevamente.

Comandos para crear directorios:
Código
  1. md "D:\Nombre de la carpeta"
  2. mkdir "D:\Nombre de la carpeta"

Bueno ahora viene la mejor parte... los acentos ´´´´´´´´
Antes quiero dar una breve explicación sobre ellos, los acentos que yo utilizo y que vos vas a utilizar, no son más que símbolos del sistema, osea son símbolos que cuando la consola de comandos (CMD) ejecuta tu programa para que comience a funcionar, ahí los codifica a los acentos de las vocables por supuesto.
Abajo dejo todo el listado de acentos, recordá que también tenés la posibilidad de usar vocables con acentos ya sean mayúsculas o minúsculas, letras ñ y Ñ y también el signo de interrogación de apertura.
En la tabla de abajo primero está la letra con acento y a la derecha luego del signo = está el símbolo que hace posible que se puedan usar los acentos en los programas en Batch.
NOTA: Abajo existen 2 símbolos de los acentos que no se ven porque son espacios especiales, si deseas usarlos, simplemente copialos y pegalos en tu editor de lenguajes de programación en la parte que desees usarlos.

Letras y Acentos:

Código:
á =  
Á = µ
é = ‚
É =
í = ¡
Í = Ö
ó = ¢
Ó = à
ú = £
Ú = é
ñ = ¤
Ñ = ¥
´ = ï
¿ = ¨

Ahora dejaré ejemplos con palabras que llevan acentos:

Código
  1. mkdir "D:\Archivos Batch con acentos"
  2. mkdir "D:\Archivos Batch con acentos\Estas son las vocales min£sculas   ‚ ¡ ¢ £"
  3. mkdir "D:\Archivos Batch con acentos\Estas son las vocales may£sculas µ ¡ Ö é"
  4. echo Este archivo lleva acentos en su nombre > "D:\Archivos Batch con acentos\acentos en Min£sculas  ‚ ¡ ¢ £.txt"
  5. echo Este archivo lleva acentos en su nombre > "D:\Archivos Batch con acentos\ACENTOS en May£sculas µ ¡ Ö é.txt"

Te recomiendo que copies todo el código desde arriba donde he puesto los acentos de ejemplos y pegalos en un editor de lenguajes de programación como ser el NotePad++ que es un excelente programa, una vez que pegues esas 6 líneas guarda ese archivo con el nombre que quieras, puedes ponerle por ejemplo Prueba.bat o sino Prueba.cmd
Al archivo puedes crearlo en cualquier directorio y luego ejecutalo, abrílo y comprobá que habrá acentos en los nombres de los archivos y carpetas que el programa creará, estos archivos estarán en tu disco D:\ Si no dispones de otro disco o tu otro disco no tiene la etiqueta de nombre D:\ entónces cambiale el D:\ por el nombre a tu disco, en los ejemplos que he puesto arriba ahí deberás cambiar el nombre del disco duro.
Repito esas 6 líneas que estan arriba son las que debes copiar y guardarlas en un archivo que tenga cualquier nombre y que este en el directorio que quieras, el archivo debe estar en formato .bat o .cmd
NOTA: Si utilizás el directorio C:\ entónces abrí el programa Batch que creaste pero desde Administrador, si no sabes como hacerlo, sigue estos pasos:
Selecioná el archivo Batch con un clic izquierdo, luego clic derecho para que se abra una ventana con opciones y ahí seleccionás la opción "Ejecutar como Administrador" y Windows te preguntará si deseas darle acceso a ese archivo y pulsá el botón SI y listo!! Ahora podrás ver tus archivos con acentos que estan en el directorio "D:\Archivos Batch con acentos" (o en el disco que especificaste), se creará en el disco D:\ una carpeta de nombre "Archivos Batch con acentos" ahí adentro estarán tus archivos con acentos!!!!!
Eso es todo, a disfrutar de los acentos en Batch!!! :D : )

Autor: Príncipe_Azul
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines