socket4http() socket4http2()
模擬http請求
convert2crlf
win-python3,將\n
轉換成\r\n
connScan
http連接掃描
b'HTTP' in connSkt.recv(20):
請求內容
:抓取數據包
#coding:utf-8
from socket import *
from datetime import datetime
import sys
import re
import threading,queue
#str(sys._getframe().f_lineno)
#Add newline to string, cross-platform
#print(type(os.linesep))
#re.sub(b'\r\n', data)
def socket4http():
#只有get請求會默認採取Connection: keep-alive
url = '192.168.1.1'
port = 80
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((url, port))
data = b''
data += b'GET / HTTP/1.1\r\n'
data += b'Host: 192.168.1.1\r\n'
data += b'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0\r\n'
data += b'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n'
data += b'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\r\n'
data += b'Accept-Encoding: gzip, deflate\r\n'
data += b'Connection: close\r\n'
data += b'Upgrade-Insecure-Requests: 1\r\n'
data += b'Cache-Control: max-age=0\r\n\r\n'
sock.send(data)
response = b''
temp = sock.recv(1024)
while temp:
temp = sock.recv(1024)
response += temp
print(b''+response)
def convert2crlf(data):
p = re.compile(b'\n')
return p.sub(b'\r\n', data)
def socket4http2():
url = '192.168.1.1'
port = 80
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((url, port))
data = b'''GET / HTTP/1.1
Host: 192.168.1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
'''
# p = re.compile(b'\n')
# datas = p.sub(b'\r\n', data)
datas = convert2crlf(data)
print(datas)
sock.send(datas)
response = b''
temp = sock.recv(1024)
while temp:
temp = sock.recv(1024)
response += temp
print(b'' + response)
if b'htm' in response:
print('success')
def connScan(tgHost, tgPort, timeout):
try:
t1 = datetime.now()
connSkt = socket(AF_INET, SOCK_STREAM)
connSkt.settimeout(timeout)
ret = connSkt.connect_ex((tgHost, tgPort))
#print(ret)
#connSkt.send(b'a\r\n')
#print(connSkt.recv(20))
if ret == 0:
connSkt.send(b'a\r\n')
#print('.line:' + str(sys._getframe().f_lineno))
print("[+]: port {} open".format(tgPort))
if b'HTTP' in connSkt.recv(20):
t2 = datetime.now()
print('[+]: http open cost: {}'.format(t2 - t1))
else:
print('[-]: http server not found')
else:
print('[-]: port {} closed'.format(tgPort))
connSkt.close()
except Exception as e:
print('[-]: socket error ' + str(e))
pass
def MultiHttpScan():
pass
if __name__ == '__main__':
tgHost = '192.168.1.1'
tgPort = 80
# tgHost = '39.156.69.79'
# tgPort = 443
timeout = 0.5
connScan(tgHost, tgPort, timeout)
#socket4http2()