|
32
|
Programación / Scripting / Re: Dado string, retornar true si hay uno o más pares de paréntesis [PYTHON]
|
en: 31 Enero 2022, 21:34 pm
|
¿Y la suma que tiene que ver? Tampoco entiendo el return char que haces ahí... Tu función tenía que haber retornado true o false. Eso es lo que dice la pregunta del ejercicio. Espero que no hayas copiado y pegado código, los entrevistadores se dan cuenta de eso... Esto se ve muy claro que es una respuesta a un reto que alguien ha puesto en internet... https://adventofcode.com/2021/day/10¿¿Como estás?? ¿?/¿Todo bien?? Si lo se, eso era un solución de algo externo que se usó como referencia (ellos mismos, la pusieron (los entrevistadores)), no puse mi código porque no lo encontré (Mejor dicho, la pc que me prestaron para la entrevista en el momento hizo que no me pudiese llevar el código a casa)... Fue un error muy grande no citar el código de referencia!! Mil disculpas y ya lo agregó.
|
|
|
34
|
Programación / Scripting / Dado string, retornar true si hay uno o más pares de paréntesis [PYTHON]
|
en: 30 Enero 2022, 22:59 pm
|
Hola a todos, en una entrevista como Python dev (junior) me preguntaron lo siguiente: Dado un string Sequence, Retornar true si hay uno o más pares de paréntesis válidos, o si Sequence es un string vacío Ejemplos de inputs válidos: [] () []{}[[]]{()}{Hello()} No válidos (] {(}) {}(()[)] Lo logré hacer, pero la forma en la que yo lo hice para los entrevistadores no fue válido, por eso vengo a preguntar, como lo harían ustedes? Esta fue la forma en la que lo hice. #!/usr/bin/env python3 import fileinput from pprint import pprint
def find_corrupted(line): mapping = { "]": "[", "}": "{", ")": "(", ">": "<", }
stack = [] for char in line: if char in mapping.values(): stack.append(char) elif mapping[char] == stack[-1]: stack.pop() else: return char
def parse_input(input_stream): for line in input_stream: yield find_corrupted(line.strip())
def solve(input_stream): scores = { None: 0, ")": 3, "]": 57, "}": 1197, ">": 25137, }
return sum(scores[char] for char in parse_input(input_stream))
if __name__ == "__main__": answer = solve(fileinput.input()) print(answer)
Gracias!!!
|
|
|
35
|
Seguridad Informática / Hacking / [Aporte] Script para fase de reconocimiento de un dispositivo
|
en: 27 Enero 2022, 01:08 am
|
Hola, hice un pequeño script para el reconocimiento y lo queria compartir import os import subprocess import re
import nmap import requests
import sys
from colorama import Fore
clear = lambda:(os.system("clear"))
def ban() -> None: print(" ") print("█░░░█ █▀▀█ █▀▀█ █▀▀ █▀▀ ") print("█▄█▄█ █▄▀█ █▄▄▀ ▀▀█ ▀▀█ ") print("░▀░▀░ █▄▄█ ▀░▀▀ ▀▀▀ ▀▀▀ ") print("")
def get_ttl(host) -> str: command = ["ping","-c","1",host] p = subprocess.Popen(command, stdout=subprocess.PIPE) res = p.communicate()[0] res = str(res)
res = res.split() ttl = res[11] ttl = ttl.split("=") ttl = ttl[-1]
if int(ttl) >= 64 or int(ttl) <= 64: print(f"{Fore.WHITE} TTL approximate to 64 > Device" ,f"{Fore.GREEN} OS ",f" {Fore.WHITE}Linux/Unix")
elif int(ttl) >= 128 or int(ttl) <= 128: print(f"{Fore.WHITE} TTL approximate to 128 >" ,f"{Fore.GREEN} OS ",f" {Fore.WHITE} Windows") elif int(ttl) >= 254 or int(ttl) <= 254: print(f"{Fore.WHITE} TTL approximate to 254 >" ,f"{Fore.GREEN} OS ",f" {Fore.WHITE} Solaris/AIX")
def port_scanner(ip) -> None: path = "" print("Do you want to save port information in a file?") decision = input("s/n: ").upper() if decision == "S": print("Ej: file_name.txt") path = input("enter path file > ") og = "-oG" else: og = "" clear() ban()
print("Waiting...","\n")
nm = nmap.PortScanner() open_ports="-p " results = nm.scan(hosts=ip,arguments=f"-p- -sT -n -Pn {og} {path}") count = 0
for proto in nm[ip].all_protocols(): print() lport = nm[ip][proto].keys() sorted(lport)
for port in lport: if nm[ip][proto][port]["state"] == "open": state = f"{Fore.GREEN} Open" else: state = f"{Fore.RED} Close"
print(Fore.WHITE, f"{proto} Port > %sState > %s" % (port,state)) if count == 0: open_ports = open_ports + str(port) count = 1 else: open_ports = open_ports + "," + str(port) Fore.WHITE def locate_ip(ip) -> str: response = requests.post("http://ip-api.com/batch", json=[ {"query": ip} ]).json()
try: for ip_info in response: country = ip_info['country'] except KeyError: pass try: return country except UnboundLocalError: country = f"{Fore.RED} ERROR"
if __name__ == "__main__": clear() ban()
try: host = sys.argv host = str(host[1]) except IndexError: print("You need to enter an ip, example: User > python3 w0rss.py '192.255.255'") port_scanner(host) get_ttl(host) country = locate_ip(host) if country == None: country = f"{Fore.RED} not found".upper() print() print(f"Country of the device > {country}")
|
|
|
38
|
Programación / Scripting / Re: Problema con Clases y Funciones POO (Python)
|
en: 22 Enero 2022, 21:22 pm
|
Hola, buenas a tod@s Estoy intentando hacer un login verificando el usuario y password. Si lo hago normal sin POO me funciona y lo hago bien. La cosa es que estoy metiéndome en POO y quiero hacerlo en POO pero lo de vincular clases y funciones mas o menos lo llevo. Pero tengo aquí un fallo con que no lee el cursor, y lo tengo definido Tengo el archivo principal: from tkinter import * from tkinter import ttk import pymysql from tkinter import messagebox as MessageBox from tkinter import scrolledtext as st import conexion class Aplicacion: def __init__(self): self.conexion1 = conexion.conexiones() self.ventana1 = Tk() self.ventana1.title("Login") self.ventana1.geometry("400x400") self.imagenLogo = PhotoImage(file="logo2.png") self.divLogo = Label(self.ventana1, image=self.imagenLogo) self.divLogo.place(x=93, y=0) self.x_ventana = self.ventana1.winfo_screenwidth() // 2 - 300 // 2 self.y_ventana = self.ventana1.winfo_screenheight() // 2 - 300 // 2 self.posicion = str(300) + "x" + str(300) + "+" + str(self.x_ventana) + "+" + str(self.y_ventana) self.ventana1.geometry(self.posicion) self.ventana1.resizable(0,0) self.formulario() self.ventana1.mainloop() def formulario(self): ttk.Label(text="Usuario:").place(x=50, y=110) ttk.Label(text="Contraseña:").place(x=50, y=165) self.formUsuarioString = StringVar() self.formUsuario = Entry(self.ventana1, textvariable=self.formUsuarioString) self.formUsuario.place(x=50, y=130, width=200, height=30) self.formPasswordString = StringVar() self.formPassword = Entry(self.ventana1, textvariable=self.formPasswordString) self.formPassword.place(x=50, y=185, width=200, height=30) botonAcceder = Button(self.ventana1, text="Acceder", command=self.login) botonAcceder.place(x=75, y=240, width=150, height=30) def login(self): datos = (self.formUsuarioString.get(), self.formPasswordString.get()) self.conexion1.verificar(datos) Ventana = Aplicacion()
y luego en el archivo conexión.py tengo eso: import pymysql class conexiones: def conexion(self): conexion2 = pymysql.connect(host='null', user='myadmin', password='null', database='python', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) def verificar(self, datos): con1 = self.conexion() cur = con1.cursor() sql = "SELECT * FROM trabajador WHERE nombre='{}' AND password='{}'".format(self.formUsuarioString.get(), self.formPasswordString.get()) cur.execute(sql) comprobardatosAcceso=cur.fetchall()
y este es el error que me da cuando intento hacer la consulta: Exception in Tkinter callback Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1921, in __call__ return self.func(*args) File "/Users/tomas/Downloads/DonMovil/objetos.py", line 47, in login self.conexion1.verificar(datos) File "/Users/tomas/Downloads/DonMovil/conexion.py", line 14, in verificar cur = con1.cursor() AttributeError: 'NoneType' object has no attribute 'cursor' [Finished in 12.2s] ¿Donde puede estar el error? Cualquier información adicional lo agradecería. Saludos! El valor no está llegando a con1 Podes probar dos cosas: 1) globalizar con1 2) ponerle self a con1
|
|
|
39
|
Seguridad Informática / Hacking / Re: proftpd 1.3.5
|
en: 21 Enero 2022, 23:56 pm
|
Hola, podrías dejarnos éste comando completo: ftp SITE CPFR (path de la reverse) así podamos ver como estás usando ese comando porque el error pareciera ser que tiene que ver con eso, ponlo tal cual lo estás usando. Saludos Hola amigo, todo bien? Logre solucionar ese problema, ahora tengo otro, resulta que cuando mando una reverse shell en php al server. Esta por algún motivo no funciona. Lo que hice step by step. De esta forma logro explotar esa vulnerabilidad 1) ftp: site cpfr /etc/passwd Abro el puerto escucha (el 4444, porque me gusta uu) 2) nc –lvp 4444/code]
Copio una reverse shell genérica (Que trae por defecto kali) 3) [code]ftp: site cpto /usr/share/webshells/php/php-reverse-shell.php (Antes,claro que modifico la reverse shell) 4) Acá es donde fallo, en teoría la maquina victima me debería conectar al puerto de mi maquina. Pero no. [/code]
|
|
|
|
|
|
|