瀏覽代碼

first commit

master
myitinos 6 年之前
當前提交
b0df2510a4
共有 1 個檔案被更改,包括 174 行新增0 行删除
  1. +174
    -0
      new_check.py

+ 174
- 0
new_check.py 查看文件

@ -0,0 +1,174 @@
#!/usr/bin/python2
import time
import socket
import requests
import threading
from colorama import Fore, Back, Style
TIMEOUT = 0.1
SLEEP = 0
BUFF = 8192
HOST = "192.168.1.2"
TEAM_NAME = [
"RevID.CTF",
"Youtube",
"Flag Earth",
"UMN",
"Pengen Mandi",
"Gundar Cysec",
"gaboet berfaedah",
"Fake Team",
"UNAIR FT SHL",
"Jangan Dibaca tJOY",
]
CHALLENGE = [
"MTP - Crypto",
"Sophisticated Calculator - Pwn",
"My Secure Web App - Web",
"Save HTML Design - Web",
"Name Generator - Pwn",
"Web Image Search - Web",
]
EXPECTED_ANSWER = {
1: " ! +-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+\n ^ |S|l|a|s|h|R|o|o|t| |C|T|F| |3|.|0|\n / \\ +-+-+-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+\n /___\\\n |= =| +-+-+-+-+-+-+-+ +-+-+ +-+-+-+-+-+-+-+-+\n | B | |M|i|s|s|i|o|n| |T|o| |D|y|s|n|o|m|i|a|\n | A | +-+-+-+-+-+-+-+ +-+-+ +-+-+-+-+-+-+-+-+\n | L |\n /| I |\\ [G] Get Session\n / |##!##| \\ [S] Set Session\n| / ^ | ^ \\ | [T] Generate Token\n|/ (( | )) \\| [L] Let's Go\n (( )) [C] Cancel\n ( )\n .\n \n",
2: "Welcome to Online Calculator v3.1\n\nOperator supported: + - * /\nex: 2 + 2\nex: 2 + a //'a' to use last results\n\n------------------------------------\n>",
5: ">> Your Nick: ",
}
LOCK = threading.Lock()
class Challenge(object):
down = 0
stat = 1
def __init__(self, challPort, challName):
self.name = challName
self.port = challPort
def set_down(self):
if self.stat:
self.stat = 0
self.down = time.time()
def set_up(self):
self.stat = 1
self.down = 0
def get_downtime(self):
return int(round(time.time() - self.down))
class Team(object):
def __init__(self, port, teamName):
self.name = teamName
self.port = port
self.challengeList = [Challenge(index, challName)
for index, challName in enumerate(CHALLENGE, start=1)]
def main():
teamList = [Team(port, teamName)
for port, teamName in enumerate(TEAM_NAME, start=1)]
while True:
for team in teamList:
for chall in team.challengeList:
#threading._start_new_thread(test_challenge, (team, chall))
test_challenge(team, chall)
time.sleep(SLEEP)
def success(team, chall):
msg = now() + "[6" + str(team.port).zfill(2) + str(chall.port).zfill(2) + \
"] " + team.name + " " + chall.name + " is UP"
if not chall.stat:
msg += " again total down time = " + str(chall.get_downtime()) + "s"
with open("new_check.log", "a") as log:
log.write(msg + "\n")
chall.set_up()
LOCK.acquire()
print(Fore.GREEN + msg + Style.RESET_ALL)
LOCK.release()
def failed(team, chall):
chall.set_down()
msg = now() + "[6" + str(team.port).zfill(2) + str(chall.port).zfill(2) + "] " + \
team.name + " " + chall.name + " is DOWN for " + \
str(chall.get_downtime()) + "s"
with open("new_check.log", "a") as log:
log.write(msg + "\n")
LOCK.acquire()
print(Fore.RED + msg + Style.RESET_ALL)
LOCK.release()
def now():
return time.strftime("%X ")
def test_challenge(team, chall):
port = 60000+team.port*100+chall.port
'''
if chall.port == 3:
return
'''
if chall.name[-3:] == "Web":
chk = test_web(port)
else:
chk = test_socket(port)
if chk:
success(team, chall)
else:
failed(team, chall)
def test_socket(port):
try:
socket.setdefaulttimeout(TIMEOUT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, port))
r = ""
t = EXPECTED_ANSWER[port % 100]
chk = False
while not chk:
r += s.recv(BUFF)
chk = r == t
return chk
except KeyboardInterrupt:
exit(0)
except:
return False
def test_web(port):
try:
r = requests.get("http://"+HOST+":"+str(port), timeout=TIMEOUT)
chk1 = True # r.text == EXPECTED_ANSWER[get_chall(port)]
chk2 = r.status_code == requests.codes.ok
if chk1 and chk2:
return True
else:
return False
except KeyboardInterrupt:
exit(0)
except:
return False
if __name__ == '__main__':
main()

Loading…
取消
儲存