9 Commits
1.1 ... 2.2

Author SHA1 Message Date
AB
2ece55bd6f Hotfix 2019-12-26 20:43:30 +00:00
AB
45177e13e4 major UI improvement. 2019-12-26 20:19:10 +00:00
AB
d348989afb major UI improvement. 2019-12-26 20:18:40 +00:00
c631da43a1 Start keyboard version 2019-12-26 16:56:16 +03:00
6ab5e06c5e Remove trash 2019-12-26 16:41:57 +03:00
AB
ab7aef8da7 Adjust bot to new portal. 2019-12-06 12:23:21 +03:00
AB
16d8af1bac Fix 30th pages (4 options pages) 2019-03-28 19:48:12 +03:00
AB
377213edfd Update some scam_data. Split list command for subjects and tests. 2019-03-28 18:28:23 +03:00
77c59a91bd Dummy commit 2018-09-26 18:48:22 +03:00
11 changed files with 380 additions and 324 deletions

2
.gitignore vendored
View File

@ -1,8 +1,10 @@
# configs
creds.ini
baraban.build/
tg_settings.py
*.swp
*.swo
.vscode/
# Byte-compiled / optimized / DLL files
__pycache__/

117
.vscode/launch.json vendored
View File

@ -1,117 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}"
},
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}",
"port": 3000,
"secret": "my_secret",
"host": "localhost"
},
{
"name": "Python: Terminal (integrated)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Python: Terminal (external)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "externalTerminal"
},
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"runserver",
"--noreload",
"--nothreading"
],
"debugOptions": [
"RedirectOutput",
"Django"
]
},
{
"name": "Python: Flask (0.11.x or later)",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "${workspaceFolder}/app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
]
},
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "module.name"
},
{
"name": "Python: Pyramid",
"type": "python",
"request": "launch",
"args": [
"${workspaceFolder}/development.ini"
],
"debugOptions": [
"RedirectOutput",
"Pyramid"
]
},
{
"name": "Python: Watson",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/console.py",
"args": [
"dev",
"runserver",
"--noreload=True"
]
},
{
"name": "Python: All debug Options",
"type": "python",
"request": "launch",
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"module": "module.name",
"env": {
"VAR1": "1",
"VAR2": "2"
},
"envFile": "${workspaceFolder}/.env",
"args": [
"arg1",
"arg2"
],
"debugOptions": [
"RedirectOutput"
]
}
]
}

View File

@ -1,5 +0,0 @@
{
"python.pythonPath": "/bin/python",
"python.formatting.provider": "yapf",
"python.linting.pylintEnabled": false
}

View File

@ -7,5 +7,5 @@ RUN apt-get update && \
WORKDIR /usr/share/fesmoo_perdoliq
COPY ./*py /usr/share/fesmoo_perdoliq/
CMD python3 baraban.py
CMD python3 bot_keys.py

View File

@ -3,6 +3,7 @@ dirty hack for kids
It is a Telegram bot which is using OpenPerdoliqlib for resolving tests on fesmu university website.
here is docker image https://hub.docker.com/r/ultradesu/fesmoo_perdoliq/
# python3 only
reqs:

View File

@ -9,46 +9,12 @@ import os
import sys
import logging
import threading
import telegram
from telegram.error import NetworkError, Unauthorized
from time import sleep
try:
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
except:
from main import Perdoliq
update_id = None
from main import Perdoliq
def main():
"""Run the bot."""
global update_id
# Telegram Bot Authorization Token
bot = telegram.Bot(TOKEN)
# get the first pending update_id,
# this is so we can skip over it in case
# we get an "Unauthorized" exception.
try:
update_id = bot.get_updates()[0].update_id
except IndexError:
update_id = None
logging.basicConfig(level=logging.DEBUG)
while True:
try:
handle_update(bot)
except NetworkError:
sleep(1)
except Unauthorized:
# The user has removed or blocked the bot.
update_id += 1
list_test('4016014', '40403')
def perdoliq(username, password, subj, test, acc, is_delayed):
@ -69,82 +35,6 @@ def list_test(username, password):
return "Exception: " + str(e)
def handle_update(bot):
"""Echo the message the user sent."""
global update_id
# Request updates after the last update_id
for update in bot.get_updates(offset=update_id, timeout=10):
update_id = update.update_id + 1
if update.message:
# if there is and update, process it in threads
t = threading.Thread(target=do_action, args=(update,))
t.start()
def do_action(update):
try:
s = update.message.text.split()
except:
return 1
if s[0] == '/resolve':
if len(s) != 7:
update.message.reply_markdown("Missing operand... Try again")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
return False
msg = "Please wait. If you have chosen commit=1, so test "\
"going to be resolved in about 20 minutes and will "\
"be commited automatically, otherwise it will take "\
"about a 2 minutes and you have to "\
"commit it by yourself. Just wait. PS you have "\
"chosen subj %s "\
"test %s and accuracy %s" % (s[3], s[4], s[5])
update.message.reply_text(msg)
update.message.reply_text("You cannot resolve more than "\
"one test in the same time."\
"Одновременно решать более одного теста невозможно,"\
" вы испортите результаты обоих тестов.")
perdoliq(s[1], s[2], s[3], s[4], s[5], s[6])
update.message.reply_text("It's done. Check your test because "\
"i disclaim any responsibility.")
elif s[0] == '/list':
try:
if len(s) == 3:
update.message.reply_text("Fetching tests...")
sleep(5)
tests = list_test(s[1], s[2])
#print("******",tests)
else:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
except:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
msg = "Here is an available tests:\n``` "
i = 0
#print("******",tests)
for subj in tests:
msg = msg + (" [%s] %s\n" % (i, subj))
i += 1
j = 0
for test in tests[subj]:
msg = msg + (" [%s] %s\n" % (j, test))
j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj and test numbers*")
else:
update.message.reply_markdown("Possible commands: */resolve, /list*")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
update.message.reply_markdown("Usage: */list <user[text]> "\
"<pass[text]>*")
if __name__ == '__main__':
try:
main()

90
bot.py
View File

@ -6,16 +6,17 @@ on the telegram.ext bot framework.
This program is dedicated to the public domain under the CC0 license.
"""
import os
import sys
import logging
import threading
import telegram
from telegram.error import NetworkError, Unauthorized
from time import sleep
try:
import tg_settings
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to create tg_settings.py. See tg_settings.py.example.")
os.exit(1)
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
@ -29,7 +30,6 @@ def main():
"""Run the bot."""
global update_id
# Telegram Bot Authorization Token
TOKEN = tg_settings.TG_TOKEN
bot = telegram.Bot(TOKEN)
# get the first pending update_id,
@ -86,9 +86,83 @@ def do_action(update):
s = update.message.text.split()
except:
return 1
# if s[0] == '/resolve':
# return 0
if s[0] == '/resolve':
if len(s) != 7:
update.message.reply_markdown("Missing operand... Try again")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
return False
msg = "Please wait. If you have chosen commit=1, so test "\
"going to be resolved in about 20 minutes and will "\
"be commited automatically, otherwise it will take "\
"about a 2 minutes and you have to "\
"commit it by yourself. Just wait. PS you have "\
"chosen subj %s "\
"test %s and accuracy %s" % (s[3], s[4], s[5])
update.message.reply_text(msg)
update.message.reply_text("You cannot resolve more than "\
"one test in the same time."\
"Одновременно решать более одного теста невозможно,"\
" вы испортите результаты обоих тестов.")
perdoliq(s[1], s[2], s[3], s[4], s[5], s[6])
update.message.reply_text("It's done. Check your test because "\
"i disclaim any responsibility.")
elif s[0] == '/list':
try:
if len(s) == 3:
update.message.reply_text("Fetching subjects...")
sleep(1)
tests = list_test(s[1], s[2])
msg = "Here is an available subjects:\n```"
i = 0
for subj in tests:
tests_count = len(tests[subj])
msg = msg + (" [%s] %s (%s tests)\n" % (i, subj, tests_count))
i += 1
# j = 0
# for test in tests[subj]:
# msg = msg + (" [%s] %s\n" % (j, test))
# j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj or test numbers*")
elif len(s) == 4:
update.message.reply_text("Fetching tests...")
sleep(1)
tests = list_test(s[1], s[2])
i = int(s[3])
msg = "Here is an available tests:\n"
j = 0
for subj in tests:
if j == i:
msg = msg + ("``` *** %s ***\n----------\n" % subj)
k = 0
for test in tests[subj]:
msg = msg + ("[%s] %s\n" % (k, test))
k += 1
j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj or test numbers*")
else:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
except:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
else:
update.message.reply_markdown("Possible commands: */resolve, /list*")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
update.message.reply_markdown("Usage: */list <user[text]> "\
"<pass[text]>*")
if __name__ == '__main__':
main()
try:
main()
except:
pass

245
bot_keys.py Normal file
View File

@ -0,0 +1,245 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Simple Bot to reply to Telegram messages.
This is built on the API wrapper, see echobot2.py to see the same example built
on the telegram.ext bot framework.
This program is dedicated to the public domain under the CC0 license.
"""
import os
import sys
import logging
import threading
from telegram import *
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from telegram.error import NetworkError, Unauthorized
from time import sleep
from functools import wraps
from pprint import pprint
try:
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
except:
from main import Perdoliq
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
LOG = logging.getLogger(__name__)
auth = dict()
cached_tests = dict()
def main():
"""Run bot."""
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(CallbackQueryHandler(button_handler))
dp.add_handler(CommandHandler("login", login,
pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
dp.add_handler(CommandHandler("list", list_,
pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
# log all errors
dp.add_error_handler(error)
updater.start_polling()
updater.idle()
def error(update, context):
"""Log Errors caused by Updates."""
LOG.warning('Update "%s" caused error "%s"', update, context.error)
def is_authorized(id_):
def decorator(f):
@wraps(f)
def wrapped(*args, **kwargs):
if args[0].effective_user.id not in auth:
LOG.info(
"User %s (%s) is new user. Redirecting to login.",
args[0].effective_user.first_name,
args[0].effective_user.id)
return login_first(*args, **kwargs)
ret = f(*args, **kwargs)
return ret
return wrapped
return decorator
def login_first(update, context):
msg = "Необходимо авторизоваться. "\
"Авторизация будет сохранена "\
"до момента перезагрузки бота. Пример: /login <user> <pass>"
try:
update.message.reply_text(msg)
except:
query = update.callback_query
query.edit_message_text(msg)
LOG.info("Going to login")
def login(update, context):
user_id = update.effective_user.id
message = update.message.text.split()
if len(message) == 3:
login = message[1]
passwd = message[2]
auth[user_id] = dict()
auth[user_id]["login"] = login
auth[user_id]["passwd"] = passwd
update.message.reply_text("Учетные данные сохранены.")
elif len(message) == 2 and message[1] == 'status':
if user_id in auth:
update.message.reply_text(
"Вы авторизованы с данными: {} : {}***\n"\
"Для обновления данных авторизуйтесь повторно.".format(
auth[user_id]["login"],
auth[user_id]["passwd"][0:2]))
else:
update.message.reply_text("Вы еще не авторизованы.")
else:
update.message.reply_text("Запрет! Попытка взлома! Делай так: "\
"/login <user> <pass> или /login status")
def perdoliq(username, password, subj, test, acc, submit=True, is_delayed=False):
try:
app = Perdoliq(username, password)
app.auth()
app.resolve(subj, test, acc, submit, is_delayed)
except Exception as e:
return "Exception: " + str(e)
def list_test(username, password):
if username in cached_tests:
return cached_tests[username]
try:
app = Perdoliq(username, password)
app.auth()
tests = app.get_tests()
cached_tests[username] = tests
return tests
except Exception as e:
return "Exception: " + str(e)
@is_authorized('list_')
def list_(update, context):
query = update.callback_query
user_id = update.effective_user.id
tests = list_test(auth[user_id]["login"], auth[user_id]["passwd"])
print(tests)
keyboard = list()
i = 1
for subj in tests:
tests_count = len(tests[subj])
#msg = msg + (" [%s] %s (%s tests)\n" % (i, subj, tests_count))
keyboard.append([InlineKeyboardButton(f"{i}. {subj}", callback_data=f"s_{i}")])
i += 1
keyboard.append([InlineKeyboardButton("Close", callback_data="subj")])
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Чо будем хакать?', reply_markup=reply_markup)
@is_authorized('button_handler')
def button_handler(update, context):
query = update.callback_query
user_id = update.effective_user.id
tests = list_test(auth[user_id]["login"], auth[user_id]["passwd"])
if query.data.split('_')[0] == 'close':
query.edit_message_text('Пака братишка')
if query.data.split('_')[0] == 's': # subj
data = query.data
subj_num = query.data.split('_')[1]
keyboard = list()
subj_name = None
j = 1 # subj number
i = 1 # test number
for subj in tests:
LOG.debug("Checking: %s. %s is %s", subj, j, subj_num)
if j != int(subj_num):
j += 1
continue
else:
LOG.info("Found needed subj: %s", subj)
subj_name = subj
for test in tests[subj]:
LOG.info("Found test: %s", test)
keyboard.append([
InlineKeyboardButton(f"{i}. {test}",
callback_data=f"t_{i}_{data}")])
i += 1
break
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
f"Ok, решаем {subj_name}, а какой тест?",
reply_markup=reply_markup)
if query.data.split('_')[0] == 't': # test
data = query.data
keyboard = [[], []]
in_a_row = 4
for p in range(0, 101, 5):
if len(keyboard[-1]) == in_a_row:
keyboard.append(list())
keyboard[-1].append(InlineKeyboardButton(f"{p}", callback_data=f"p_{p}_{data}"))
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text("Ok, а какая точность?", reply_markup=reply_markup)
if query.data.split('_')[0] == 'm': # autosubmit
data = query.data
keyboard = [[
InlineKeyboardButton(f"Быстро", callback_data=f"d_0_{data}"),
InlineKeyboardButton(f"С задержками", callback_data=f"d_1_{data}"),]]
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
"Решить тест быстро или с задержками, типа я думал над ответом.",
reply_markup=reply_markup)
if query.data.split('_')[0] == 'p': # precision
data = query.data
keyboard = [[
InlineKeyboardButton(f"Завершить", callback_data=f"m_1_{data}"),
InlineKeyboardButton(f"Не завершать", callback_data=f"m_0_{data}"),]]
keyboard.append([InlineKeyboardButton("Close", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
"Завершить тест автоматически после решения или оставить для проверки?",
reply_markup=reply_markup)
if query.data.split('_')[0] == 'd': # is_delayed
data = query.data
LOG.info(data)
# d_0_m_1_p_100_t_1_s_10
subj = query.data.split('_')[9]
test = query.data.split('_')[7]
precision = query.data.split('_')[5]
submit = bool(int(query.data.split('_')[3]))
delay = bool(int(query.data.split('_')[1]))
query.edit_message_text(
"Опять работа... "\
"Пока я решаю тест ЗАПРЕЩЕНО "\
"пользоваться сайтом с тестами. "\
"Резултат будет испорчен.")
perdoliq(
auth[user_id]["login"],
auth[user_id]["passwd"],
int(subj)-1,
int(test)-1,
precision,
submit,
delay)
if __name__ == '__main__':
try:
main()
except Exception as e:
LOG.error("%s", e)
pass

16
main.py
View File

@ -30,11 +30,10 @@ class Perdoliq:
settings.fesmu_root_url,
data=settings.merge(
settings.scam_data_1, {
'ctl00$MainContent$TextBox1': self.username,
'ctl00$MainContent$TextBox2': self.password,
'ctl00$MainContent$UserText': self.username,
'ctl00$MainContent$PassText': self.password,
}),
cookies={'ASP.NET_SessionId': self.SessionId})
r = requests.get(
settings.fesmu_root_url + 'startstu.aspx',
cookies={'ASP.NET_SessionId': self.SessionId})
@ -62,6 +61,7 @@ class Perdoliq:
# parse tests per subject
i = 0
for subject in self.subjects:
logging.info('Found subject %s' % subject)
r = requests.post(
settings.fesmu_root_url + 'studtst1.aspx',
data=settings.merge(settings.scam_data_2,
@ -70,6 +70,7 @@ class Perdoliq:
soup = BeautifulSoup(r.text, "html.parser")
for test in soup.find_all(class_="dxeListBoxItem_Aqua dxeLTM"):
if test.get_text() != '\xa0':
logging.info('\tFound test %s for subject %s' % (test.get_text(), subject))
self.subjects[subject].append(test.get_text())
logging.debug('%s - Found test %s' % (subject,
test.get_text()))
@ -133,7 +134,7 @@ class Perdoliq:
settings.fesmu_root_url + 'studtst3.aspx',
data=settings.scam_data_5,
cookies={'ASP.NET_SessionId': self.SessionId})
# get answer page
# get page with answers
r = requests.get(
settings.fesmu_root_url + 'studtst5.aspx',
cookies={'ASP.NET_SessionId': self.SessionId},
@ -156,6 +157,7 @@ class Perdoliq:
settings.fesmu_root_url + 'studtst30.aspx',
data=settings.scam_data_7,
cookies={'ASP.NET_SessionId': self.SessionId})
# get page with answers
r = requests.get(
settings.fesmu_root_url + 'studtst5.aspx',
cookies={'ASP.NET_SessionId': self.SessionId},
@ -222,8 +224,10 @@ class Perdoliq:
data=settings.scam_data_10,
cookies={'ASP.NET_SessionId': self.SessionId})
def resolve(self, subj, test, accuracy, is_delayed=False):
def resolve(self, subj, test, accuracy=100, submit=False, is_delayed=False):
# renew auth
logging.info(
f"Resolving subj {subj}, test {test}, acc {accuracy}, submit {submit}, delay {is_delayed}")
self.auth()
# get count of questions
q_count = self.start_test(subj, test)
@ -254,5 +258,5 @@ class Perdoliq:
self.answer(i, prediction)
# make autocommit
if is_delayed == True:
if submit == True:
self.finish_test()

View File

@ -1,7 +1,4 @@
# python3 only
pip install requests
pip install beautifulsoup4
pip install python-telegram-bot
requests
beautifulsoup4
python-telegram-bot

View File

@ -8,30 +8,14 @@ def merge(x, y):
scam_data_1 = {
'ctl00$MainContent$UserText':
'',
'ctl00$MainContent$PassText':
'',
'__EVENTTARGET':
'',
'ctl00_MainContent_ToolkitScriptManager1_HiddenField':
'',
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'/wEPDwUKLTQ4NzYwNDEzOQ9kFgJmD2QWAgIDD2QWAgIBD2QWAgIFDw8WAh4EVGV4dAVA0KHQtdC50YfQsNGBINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC90LAg0L/QvtGA0YLQsNC70LU6IDE0OWRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYEBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMQUdY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjMFHWN0bDAwJE1haW5Db250ZW50JEFTUHhCdXR0b24yBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uNCwdlTOn/Y3tYt2bGQcxN1Ayzl4rDNlkVU6tnQ6bR4Dx',
'__VIEWSTATEGENERATOR':
'73D4C735',
'__EVENTVALIDATION':
'/wEdAAcLL4CnFN6qTtcjF0fQcU/LUN0eEH6RAZcaSKVdt8S4X7osef1mutGT26WuFCdWwFYhaXIQoXEs7lyT4XozQ4OInWK1mn7aEBNhVaP9v76fJNxRJK/kVxlULg0AsW337/IhsIAW9IW5kv7Tf6wiSWjxVWBHkOt1REFfEOsSpvCk8uTD/X8OKiSobFuKW+nh/Sg=',
'ctl00$MainContent$ASPxButton2':
'',
'ctl00$MainContent$TextBox3':
'',
'ctl00$MainContent$TextBox4':
'',
'DXScript':
'1_42,1_75,2_27'
'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '',
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': '/wEPDwUKLTM5Mjc2OTQzMQ9kFgJmD2QWAgIDD2QWAgIBD2QWAgIFDw8WAh4EVGV4dAVA0KHQtdC50YfQsNGBINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC90LAg0L/QvtGA0YLQsNC70LU6IDE0OWRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMaxc3rVccSyMpTHRwTntZdTJoxFSZnqwhbBnF1ATfZNL',
'__VIEWSTATEGENERATOR': '73D4C735',
'__EVENTVALIDATION': '/wEdAAPdQMZpQT+E4nHOdGeZqyTVUN0eEH6RAZcaSKVdt8S4X7osef1mutGT26WuFCdWwFbKoA75NEe+fYiUfCl9R3M++NkzZ8G6NwAHQz7bnnn1nw==',
'ctl00$MainContent$ASPxButton1': '',
'DXScript': '1_42,1_75,2_27',
}
scam_data_2 = {
@ -106,44 +90,25 @@ scam_data_4 = {
}
scam_data_5 = {
'ctl00_MainContent_ToolkitScriptManager1_HiddenField':
'',
'__EVENTTARGET':
'',
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'/wEPDwUKLTg2NDIzNjE0Ng9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQU90YTQuNC30LjQutC+LdGF0LjQvNC40YfQtdGB0LrQuNC1INC80LXRgtC+0LTRiyDQsNC90LDQu9C40LfQsGRkAgUPPCsABAEADxYCHwAFENCX0LDQtNCw0L3QuNC1IDFkZAIHDxQrAAQPFgIfAAUr0JLQsNGIINC70LjQvNC40YIg0LLRgNC10LzQtdC90LggNTgg0LzQuNC9LmQ8KwAMAQAWBB4JRm9yZUNvbG9yCk8eBF8hU0ICBGRkZAIJDw8WAh4EVGV4dAUZSi1DNkg0LUNIMyAg0LggIEM2SDVDSDItSmRkAg0PDxYCHwMFIyAxLiDQmNCaLdGB0L/QtdC60YLRgNC+0YHQutC+0L/QuNGPZGQCEQ8PFgIfAwUjIDIuINCj0KQt0YHQv9C10LrRgtGA0L7RgdC60L7Qv9C40Y9kZAIVDw8WAh8DBQogMyAu0J/QnNCgZGQCGQ8PFgIfAwUKIDQgLtCt0J/QoGRkAh0PDxYCHwMFJyA1LiDQvNCw0YHRgS3RgdC/0LXQutGC0YDQvtC80LXRgtGA0LjRj2RkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBR5jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMDR1MyONTwjHeh5KMbmXa0KX80/Rfc6GB9jZCQdthjv7eg==',
'__VIEWSTATEGENERATOR':
'A8B80323',
'__EVENTVALIDATION':
'/wEdAAeaNITRANe52jN2SIod7jskCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+96QXwtwz0yGK8AotoL9rTbsbA6BMGYlcSDZheWZSsKo8=',
'ctl00$MainContent$hfo1':
'1',
'ctl00$MainContent$hfo2':
'1',
'ctl00$MainContent$hfo3':
'1',
'ctl00$MainContent$hfo4':
'1',
'ctl00$MainContent$hfo5':
'1',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':
'',
'ctl00$MainContent$ASPxCheckBox1':
'C',
'ctl00$MainContent$ASPxCheckBox2':
'C',
'ctl00$MainContent$ASPxCheckBox3':
'C',
'ctl00$MainContent$ASPxCheckBox4':
'C',
'ctl00$MainContent$ASPxCheckBox5':
'C',
'DXScript':
'1_42,1_75,2_27,2_34,2_40,2_30',
'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '',
'__EVENTTARGET':'',
'__EVENTARGUMENT':'',
'__VIEWSTATE': '/wEPDwUKMTI5MTM5NzM3Nw9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQVd0JjRgdGC0L7RgNC40YfQtdGB0LrQuNC1INC80L7QtNC10LvQuCDQuCDQvNC+0YDQsNC70YzQvdGL0LUg0L/RgNC40L3RhtC40L/RiyDQsdC40L7RjdGC0LjQutC4ZGQCBw88KwAEAQAPFgIfAAUQ0JfQsNC00LDQvdC40LUgMWRkAgkPFCsABA8WAh8ABSvQktCw0Ygg0LvQuNC80LjRgiDQstGA0LXQvNC10L3QuCA2MCDQvNC40L0uZDwrAAwBABYEHglGb3JlQ29sb3IKTx4EXyFTQgIEZGRkAgsPDxYCHgRUZXh0BeoB0KHQvtCz0LvQsNGB0L3QviDCq9Ce0YHQvdC+0LLQsNC8INC30LDQutC+0L3QvtC00LDRgtC10LvRjNGB0YLQstCwINCg0L7RgdGB0LjQudGB0LrQvtC5INCk0LXQtNC10YDQsNGG0LjQuCDQvtCxINC+0YXRgNCw0L3QtSDQt9C00L7RgNC+0LLRjNGPINCz0YDQsNC20LTQsNC9wrsgKDE5OTMpIMKr0LzQtdC00LjRhtC40L3RgdC60LDRjyAo0LLRgNCw0YfQtdCx0L3QsNGPKSDRgtCw0LnQvdCwwrsgLSDRjdGC0L46ZGQCDw8PFgIfAwV3MS4g0L/QsNGB0L/QvtGA0YLQvdGL0LUg0LTQsNC90L3Ri9C1LCDRgdCy0LXQtNC10L3QuNGPINC+INC80LXRgdGC0LUg0YDQsNCx0L7RgtGLLCDRgdC10LzQtdC50L3QvtC8INC/0L7Qu9C+0LbQtdC90LjQuDtkZAITDw8WAh8DBYgBMi4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LHQvtC70LXQt9C90LgsINGB0L7QtNC10YDQttCw0YnQsNGP0YHRjyDQsiDQvNC10LTQuNGG0LjQvdGB0LrQuNGFINC00L7QutGD0LzQtdC90YLQsNGFINCz0YDQsNC20LTQsNC90LjQvdCwO2RkAhcPDxYCHwMFRDMuINC40L3RhNC+0YDQvNCw0YbQuNGPLCDQv9C+0LvRg9GH0LXQvdC90LDRjyDQvtGCINC/0LDRhtC40LXQvdGC0LA7ZGQCGw8PFgIfAwVsNC4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0L/RgNC10LHRi9Cy0LDQvdC40Lgg0LPRgNCw0LbQtNCw0L0g0LIg0LHQvtC70YzQvdC40YfQvdC+0Lwg0YPRh9GA0LXQttC00LXQvdC40Lg7ZGQCHw8PFgIfAwVkNS4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YTQsNC60YLQtSDQvtCx0YDQsNGJ0LXQvdC40Y8g0LfQsCDQvNC10LTQuNGG0LjQvdGB0LrQvtC5INC/0L7QvNC+0YnRjNGOLmRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uNQUeY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjA0Nms3Y6hjvD2W4hemKFPRQ88Mc9mMcGL7F8vhsUXl8ho=',
'__VIEWSTATEGENERATOR': 'A8B80323',
'__EVENTVALIDATION': '/wEdAAfvP6vyY1BLXPbKgalQ8wlHCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9FratexwyBojhohIkCYqLI7r+we2R8PwZy2gyo+V/pDk=',
'ctl00$MainContent$hfo1': '1',
'ctl00$MainContent$hfo2': '1',
'ctl00$MainContent$hfo3': '1',
'ctl00$MainContent$hfo4': '1',
'ctl00$MainContent$hfo5': '1',
'ctl00$MainContent$hf1': '0',
'ctl00$MainContent$ASPxButton04': '',
'ctl00$MainContent$ASPxCheckBox1': 'C',
'ctl00$MainContent$ASPxCheckBox2': 'C',
'ctl00$MainContent$ASPxCheckBox3': 'C',
'ctl00$MainContent$ASPxCheckBox4': 'C',
'ctl00$MainContent$ASPxCheckBox5': 'C',
'DXScript': '1_42,1_75,2_27,2_34,2_40,2_30',
}
scam_data_6 = {
@ -154,11 +119,11 @@ scam_data_6 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'A8B80323',
'__EVENTVALIDATION':
'/wEdAAeKAC1bv+nuL6FBliuajDezCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9q5qchEPd4P0GcPtCRleS0Yg7xHbLgP7/JC5bnWIdotc=',
'/wEdAAdlS+EcZqZj69lvvVBkOiRdCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+973RWBoRj4RF1FwPj+fzhc5icNGqW+IuWU2bEn9AL/aY=',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':
@ -175,11 +140,11 @@ scam_data_7 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'CF2D5825',
'__EVENTVALIDATION':
'/wEdAAaqpXhQufwluAUTPaQSplidCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP70SYCm5BQ5idngMHkXLpi97Z9CFcqk0022jTWIn6mbxgg==',
'/wEdAAYTgLeYQ3V4kndeUHSWquo6Ca17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP70wBKf5MD1akDFJqS3LfygoxOOVAi0jF2+vnJgHH88fMA==',
'ctl00$MainContent$hfo1':
'1',
'ctl00$MainContent$hfo2':
@ -212,11 +177,11 @@ scam_data_8 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'CF2D5825',
'__EVENTVALIDATION':
'/wEdAAbOganUmKTcid6lecdugbZeCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP71odHxCsKWZSupzts5amB2tWturFbaaH48T5Z5wjC8oXA==',
'/wEdAAaUbQPKAdufTQ04sUCgOXlBCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP71ur+Y+oF2Zsquq24c9b1JAxSSvpvsTPleGTez5Ph8LwA==',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':