Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP假定套接字-python_Python_Sockets_Http_Post - Fatal编程技术网

HTTP假定套接字-python

HTTP假定套接字-python,python,sockets,http,post,Python,Sockets,Http,Post,我用python中的套接字发出了一个POST请求,它工作得很好,但自从尝试迭代用户名和密码后,它就不起作用了,我花了几个小时甚至一整天都在试图找出问题所在 …我根本不明白这一点,下面将是代码(我已经尝试了许多不同版本的代码)。谢谢,我真的很想知道,如果我在这方面出了问题,我不认为我离得太远了吗 #!/usr/bin/python #-*- coding: utf8 -*- #imports import socket users = ['bill','ted','sally','sue'

我用python中的套接字发出了一个POST请求,它工作得很好,但自从尝试迭代用户名和密码后,它就不起作用了,我花了几个小时甚至一整天都在试图找出问题所在

…我根本不明白这一点,下面将是代码(我已经尝试了许多不同版本的代码)。谢谢,我真的很想知道,如果我在这方面出了问题,我不认为我离得太远了吗

#!/usr/bin/python
#-*- coding: utf8 -*-

#imports
import socket



users = ['bill','ted','sally','sue']

num_00_09 = ['00','01','02','03','04','05','06','07','08','09']
num_10_100 = [x for x in range(10,101)]
pwd = num_00_09 + num_10_100

for user in users:
    for x in range(1,101):
        length = len(str(user)) + len(str(pwd[x]))

        req = '''POST /python/login2r.php HTTP/1.1
        Host: ad.samsclass.info
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language: en-US,en;q=0.5
        Accept-Encoding: deflate
        Content-Type: application/x-www-form-urlencoded
        Content-Length: %s''' % (length)

        req1 = '''\nCookie: __cfduid=d97d8c22217a6727cbe1a7d222f5f27ec1531510998
        DNT: 1
        Connection: keep-alive
        Upgrade-Insecure-Requests: 1

        u=%s&p=%s''' % (user,pwd[x])

        s = socket.socket()
        socket.setdefaulttimeout(2)

        s.connect(('ad.samsclass.info',80))
        s.send(bytes(req + req1,'utf8'))
        r = s.recv(1024)
        print(r.decode('utf8'))
        s.close()
这是错误代码(显然,每次完成迭代后都会有此代码)

HTTP/1.1400错误请求
日期:2018年7月15日星期日22:41:36 GMT
服务器:Apache/2.4.18(Ubuntu)
内容长度:313
连接:关闭
内容类型:text/html;字符集=iso-8859-1
400错误请求
错误的请求
您的浏览器发送了此服务器无法理解的请求。


位于attack.samsclass.info端口80的Apache/2.4.18(Ubuntu)服务器
已经添加了+5太长的变量,但我现在得到另一个错误

HTTP/1.1 400 Bad Request
Date: Sun, 15 Jul 2018 22:56:49 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 313
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.18 (Ubuntu) Server at attack.samsclass.info Port 80</address>
</body></html>

Traceback (most recent call last):
  File "file02.py", line 42, in <module>
    s.send(bytes(req + req1,'utf8'))
OSError: [WinError 10038] An operation was attempted on something that is not a socket
HTTP/1.1400错误请求
日期:2018年7月15日星期日22:56:49 GMT
服务器:Apache/2.4.18(Ubuntu)
内容长度:313
连接:关闭
内容类型:text/html;字符集=iso-8859-1
400错误请求
错误的请求
您的浏览器发送了此服务器无法理解的请求。


位于attack.samsclass.info端口80的Apache/2.4.18(Ubuntu)服务器 回溯(最近一次呼叫最后一次): 文件“file02.py”,第42行,在 s、 发送(字节(req+req1,'utf8')) OSError:[WinError 10038]尝试对非套接字的对象执行操作
您的内容长度不正确。您的帖子正文比您声称的要长:

length = len(str(user)) + len(str(pwd[x]))
这仅统计用户和密码字符串长度,但内容正文仍包含更多字符:

u=%s&p=%s
u=
&p=
字符也是帖子正文的一部分,因此您的内容长度至少比您告诉服务器的预期长度长5个字节

接下来,您将发送带有大量前导空格的标题。
req=''''''''
req1='''''''''''''''''.''''.
字符串上的缩进是字符串值的一部分,但是发送HTTP头时不应缩进。删除那个空白

接下来,HTTP要求发送包含回车符和换行符的标头。您只发送了
\n
分隔符,而不是
\r\n
分隔符

您最好使用Python附带的。至少,如果您必须使用套接字以艰难的方式完成此操作,请尝试这样做,以便您可以了解该库的功能


如果您不需要进行这种低级操作,只需安装并让它完成所有繁重的工作。

像这样,您将发送请求a)除第一行之外的所有标题行前面都有空格,b)根据您的操作系统,使用
\n
而不是
\r\n
换行符。哦,是的,对不起,我忘了在早期版本中使用了它,我试了一整天,感觉大脑开始模糊了。我刚刚在长度上加了+5,我得到了另一个错误now@nc:你还会犯更多的错误。也许是时候休息一下,明天再来讨论这个问题了?我确信,新的错误不是因为你在内容长度上增加了5。哈,是的,我知道我只是希望有人能告诉我我的代码出了什么问题,感觉我好像在兜圈子……你说我也要休息一下:)好的,谢谢你,我很欣赏你的帖子,我想我也需要休息一下,因为我真的不认为这有什么帮助。老实说,是的,我知道请求会更好更容易,我只想在套接字中完成,并学习一些新的东西:)
u=%s&p=%s