diff --git "a/\345\255\246\344\271\240\351\200\232\350\207\252\345\212\250\347\255\276\345\210\260\347\250\213\345\272\217\346\255\243\345\274\217\347\211\210" "b/\345\255\246\344\271\240\351\200\232\350\207\252\345\212\250\347\255\276\345\210\260\347\250\213\345\272\217\346\255\243\345\274\217\347\211\210" deleted file mode 100644 index 01ee974..0000000 --- "a/\345\255\246\344\271\240\351\200\232\350\207\252\345\212\250\347\255\276\345\210\260\347\250\213\345\272\217\346\255\243\345\274\217\347\211\210" +++ /dev/null @@ -1,1905 +0,0 @@ -import time, requests, base64, json, filetype, os, datetime, threading, webbrowser, winshell -from tkinter import * -from tkinter import ttk -from PIL import Image, ImageTk -from io import BytesIO -import tkinter.messagebox -import tkinter.filedialog -from tenacity import retry -from Crypto.Cipher import AES -from bs4 import BeautifulSoup -Version = '3.0' -headers = { - 'Accept-Encoding' : 'gzip, deflate', - 'Accept-Language' : 'zh-CN,zh;q=0.9', - 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', - 'User-Agent' : 'Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ChaoXingStudy/ChaoXingStudy_3_4.8.3_ios_phone_201921050113_27 (@Kalimdor)_11391565702936108810'} -cookies_path = "cookies.json" -activeid_path = "activeid.txt" -information_path = "zybinformation.txt" -conf_path = "conf.txt" -realpath = os.path.dirname(sys.argv[0]) -coursedata = [] -activates = [] -status = 0 -st = 0 -session = requests.session() -session.headers = headers -title = 'AAABAAEAAAAAAAEAIACvdgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACkBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNDE3MjJhZS05MTcxLWI3NGUtYTJhYy1mYjgxMDgwODNiZjciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjlmYzk1ZTktYjE5My1iMjQxLWJjODgtNWEzNDM1YzdiZTllIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9IkRBNTFCMTFBQkIxQzFDODY0NDg0RjNGQ0EwRTY1NDlFIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMC0xMi0yN1QyMTo0MzozMSswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjEtMDgtMTRUMTE6NTE6NDgrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjEtMDgtMTRUMTE6NTE6NDgrMDg6MDAiIHRpZmY6SW1hZ2VXaWR0aD0iMTE1MiIgdGlmZjpJbWFnZUxlbmd0aD0iMTE1MiIgdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPSIyIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlNhbXBsZXNQZXJQaXhlbD0iMyIgdGlmZjpYUmVzb2x1dGlvbj0iNzIvMSIgdGlmZjpZUmVzb2x1dGlvbj0iNzIvMSIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpFeGlmVmVyc2lvbj0iMDIzMSIgZXhpZjpDb2xvclNwYWNlPSI2NTUzNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjExNTIiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIxMTUyIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjAyMTNkYjAtYzA2Mi01ZjQ1LWJkNTgtZmM4YTZmNjNiMGM0IiBzdEV2dDp3aGVuPSIyMDIxLTA4LTE0VDExOjQwOjQzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9qcGVnIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gaW1hZ2UvanBlZyB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmVhZDIxODIxLTcyZDUtMDU0My05NzBhLWY2OTM2YWFhZTA0NiIgc3RFdnQ6d2hlbj0iMjAyMS0wOC0xNFQxMTo0MDo0MyswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyOWZjOTVlOS1iMTkzLWIyNDEtYmM4OC01YTM0MzVjN2JlOWUiIHN0RXZ0OndoZW49IjIwMjEtMDgtMTRUMTE6NTE6NDgrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZjAyMTNkYjAtYzA2Mi01ZjQ1LWJkNTgtZmM4YTZmNjNiMGM0IiBzdFJlZjpkb2N1bWVudElEPSJEQTUxQjExQUJCMUMxQzg2NDQ4NEYzRkNBMEU2NTQ5RSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJEQTUxQjExQUJCMUMxQzg2NDQ4NEYzRkNBMEU2NTQ5RSIvPiA8dGlmZjpCaXRzUGVyU2FtcGxlPiA8cmRmOlNlcT4gPHJkZjpsaT44PC9yZGY6bGk+IDxyZGY6bGk+ODwvcmRmOmxpPiA8cmRmOmxpPjg8L3JkZjpsaT4gPC9yZGY6U2VxPiA8L3RpZmY6Qml0c1BlclNhbXBsZT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBl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' -pic_data = '/9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCASABIADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEUYFLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU1n2so/vU6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGSf62P6n+VPpkn+tj+p/lT6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiig9KACim76N+fWgB1FNBwf8AGl3UALRSE5HFGcCgBaKbvycYpQ3NAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA1k3Mp/u06iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiimyNsQk8Y5oAcTimyH5D296qtfoV+9jI4Oao3+vx6UmZp4NqjJaRwmB3JzQZ1KsKes2X9zN3NMd8IfmZT7Hmvmn9pf/gqj8K/2abJl1bxDZ3l+pKi0s3EkmfT86/P346/8HG+ueJ5L60+Hehz26wMyGa/gQhh7UHzuP4owmHv7yP2Mn12Oywsk0qs39504rN1P4haRpTf6ZrFvbsp/jmRRX87vxK/4KvfG74o3O+TXbfS+cFLVmjxn0wcV5f4j/ao+IviWT/iZeMfEjN0ykzDH5NQfM1eP6S+DU/pof48+E7YfvfEWkdOpuF/xp9l8Y9C1dl+x65pMysQBsuFLfzr+Xl/jB4skHPjDX2YdN15MR/6FVzTP2kvHnh5l8nxnrUDIcrsvJl57dGoOf8A4iHFtLlP6kY/EEc8TfZ7gSNg4JZSAanttSkNt++kWR8YzHX80Xg7/gpZ8ZPAxSSz8X3t0sLB91xcyS9Dnucmvp/4Lf8ABw98RPBjwweLtLtdetvL3B7KFVmf3PqfrQelheN6E58j0P3HspWKLlix6datb+f88V8O/sy/8Frfhb8evsdtcah/wi2sTqqtb6pIU3MeAFH3c19ieGfGmn+KLKG4sb5L6GRdytHIrKfy/wA5oPsMLmVCsvdkjoKKq/2guev05/pQt8Cw+uKD0OZFqijNFBQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQxwtADZThD9M1UmnZYHb72FJxuxnj1FM1K4KRnMhjXGSd2Ntfnz/AMFNf+CwGj/s3aXd+F/Dd1HrXiiZHgZ7eTdFbAgjLY/iFB5eYZpSwtNyme//ALWn7fXgT9kDw1Jea9q8E1824x2MFzulLAcL17nivyG/bJ/4LQ/Ej9o7Ur6z8N3UPhzw6rNGphDRXU6H+HzFw2SOMk8Zr5V+K/xW1r4zeKr3WvEd9dXdxJP56o8jTGMA7vlBzXs37IH/AATc+JH7Z2tQ/wBnaRPpWgkDfe3A8uNl43MPXucd6D8tzLOsdmFT2WGWh89395datqk0+oNqGoahcN5sjzM93Jjvljlj+Ga9o+AH/BPD4sftB2UK+HPB981pJIrpftDiOAE/fPmc7R1wOoFfsH+yN/wRj+HP7OkWn3+p2cmu6/bqsryzENGjKcghT6EfSvr3T9N0vw1ZIsEdpYRxrtR/LVSPxxx60HRgeEZVPfxrsj8bPhR/wbm+L/GkcVx4t8SQ2MikMwhTauB/k17z4B/4NxfhzpxjbWda1DUHVg3+jX0sSkZ9Aa+6PiP+1n4F+EFrJN4h8VafHHEDIdkseVUZJzg5PHavCfiD/wAFvvgX4Ok2x+InvH7CKI4PGaD2KmTZNhl7zTOFP/Bvh8FwvL6wi+o1WXj8M1z3iX/g3e+Fd8rLpuqX8W9SA09/K209jjPOOtdBdf8ABwf8Ko7hI45rmSNmAJEfY10Pg7/gul8FfEN8qXmrT2jOwXLR/d5xnFAuTIpaRsfKvxc/4NvNSsh53gzxhYySKMmOctIcj0DcZr5Q+OX/AASd+NXwTubibUNGvdY063Rnlnt4VjUxgZbIHXjPA7V+5vwm/b8+E/xoPl6P4w0qWV8KqTusRYk4A59a9Qlm0nxlZR+XNpt9FnjbtuE/qKArcM5diVzUmkfyt67pb+DNSaC4tbvR7lOAT5yEY6egIH8q9z/Zb/4KWfEj9kfxRaSafqk2vaSpVntbmRpUVVIJAUkgcZ6Div25/ap/4Jm/DT9pezl+3aL9kvrpGjF1ZBYdhYYDMFxuHQ4Oelfk7+2v/wAEaPiJ+y5fXOreHVl8QaDvLDy/3jpGMkj8u36UHzWLyPMMsftsNdxP0s/Yg/4K4eBf2uLGy0+8vIdC8QSBY3t5ZRGru2AFBBGMn+dfYelXUD2yuvlmM4EcgfzC341/KVpXiPUPCvilru2kvNB1ywuF2HYYSsoIK5Ix3xX6if8ABL//AILYNa6hZ+BfiZNBaqu23tr4R/6xywQFm+pH4UH0nD/FEpv2OJVmfsB5jA/eOakt2Zm+8Txnmuf8G+KLLxPo9teWl4t7a3iiWKVGzuBretzh/wAKD9CpVo1FeJYooByKKDYKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAAnAoFIXwM03z1JoAfnmim+Z7U6gAooooAKQnrS0YoAw/FNkNS0y6tW3bbiF4yV64II4r8H/+CsP/AATK8R/Af4k6l4w0W31DXtE12RpJpYVaZrYnrkc9PTvX716gPn7etYus+D7PxNaGC8trea3c7mjeJWGfXBHWg+bzjK/rK5Wfjt/wTG/4IrX3xMg0/wAdfEm3fTdKZopLKxMKhr1AQcMhGF3euOK/XXwB4F0H4S+EbfS9P0+HTtPs08tE4C8DH4d+RxV2+nsfCmhT3ck0NlaQI0TPKAAFA/WvyN/4Kf8A/BbC51u51bwP8L7t7OOORrebUrSVoiCMggMhB/A0Hk1IYbJ6PtVufaf7an/BXX4Z/sk6fNbLdQ65rykxrZW+JHD87VJ5wCRjPavy0/ai/wCC0/xW+POr3kOlXj+FdDlRkWKGRg+0jB4U+hr5I1zWtR1vWJ9Z1bVHu9SvDmWYJ5khJ7knk16/+zT+wZ8Sv2rL2JPDui3lnZvIqvqMlsYlwcAt0GQAc/hQfC5hxBjsyfs8Nf5Hlfifxlq3jC9+36lrt1rMsxy3nSupH/fRNZ0lzCVKt9q5yMJmUEmv1v8A2cf+DcXR4dMS88ea6+qXDYLwoMqfbnjmvqz4Xf8ABIP4H/D6zjt4/CWn3MkJy3nQRndg5weKDShwfmFePNVZ/PLHpcpiZ4bHUWVRuJEGSAB1qiZFjmVnW6txkEmSLaQPrX9Nkf8AwT3+EFrGyx+BPDcasDlREFXn26Vyni7/AIJU/BHxnkT+BfD6+ZwQipznjoRig6/9Q8Svhkfzl2GpXWj3az6XqV5byRkOkkMp+UjkHg8+te//ALN3/BTz4yfs5XKLY+Ir7VNPjYObedcLIoOSuc4Gema/SH44f8G8ngHxhY3Nx4T1GTQbgk+XbwqFTdjhfl4H4cV+ev7U/wDwSY+LX7LMt1cXFlNrehxuXE1srSFEXksfYDP5UHl4jIc1wL54Nn6T/sO/8F0fBvx+mg0Lxd/xSuthVjY3TEQXDnAADdsnuOOa+7LW90n4h6JDNbyWepabcJhBC4ljkz7jIr+VPUxNLcvZyWs32i3X5937tkAzkge3tX2f/wAE7v8Agrv4r/ZR1yx0HxI02oeE8pGyNKzeTEWG4gE8YGTkUHv5NxVKUlhcZc+y/wDgp3/wRg034y6LfeKfAG3RfELFpJ7JYVEc2AT0A746kV+eP7KX/BPDxv8AtNfHZvC95pOraNNpMwTU5pCyQwLGwGUGcKWA7Yr+gX4OfGTQ/wBobwDpvibw/fxXej6jb4IHLozDocVpaL8PdJ0LVb66sbWztLq95uJYYFjecj++wGW/Emg+olw7Qq1frNLZmP8As5/CqP4R/CbQvDqzef8A2VAsRlJyWI46/hXpNv8ANI30rN0ax8sL/dzkjtWyECnoKD6nDYdUYKKFAwKKKKDpCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmyNwaA2faqd3IyyqNx2k80BdLceZWZerf41FLxGzKfugmvGf2w/20/Dn7IHwzuNe15/30asYLNTiS4IBIUfXGPxr8sPix/wcZ/EO58XSP4X0X+z9HVshbu1RmcZ6Zxkemfeg+ex3EmHws+STP24sn3jl81bBxX5i/sD/wDBePSvjP4zt/CfxAhj0jXr51W1uY/kt33EBQe2ea/SjRtej1W1hlikWaG4QOjochgehHtQdeXZxRxavBmoTzRR3ooPWCiiigCOaBWyxAqvgIPT8KuHpUDxlhj8KBadTlPHvgS28faBeabfRiaxvYXjlQqG4YEEgHjPNfhd/wAFNf8AglJrv7NPju81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iiigAooooAGG4U3Zx15p1FADQn506iigAYbhSbcmloo3AbswKCnvzTqKAGmPijyvenUUWAaibR1oKZNOoo8wGmPJo8unUUBtsJto2ClooATbzS0UUAFFFFAAeRTWTcadRQA3b81OoooATHv+lJsp1FGwCFc0gTAp1FADSlG3FOooAMc0UUUAFHNFFAB3puynUUAJs4oC4paKAGhMGnUUUABGRTVj206igBuzmnGiijzAaVJHX9KBHinUUWATHzZpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9k=' - -def thread_it(func, *args) : - '''将函数打包进线程''' - # 创建 - t = threading.Thread(target=func, args=args) - # 守护 !!! - t.setDaemon(True) - # 启动 - t.start() - # 阻塞--卡死界面! - # t.join() - -def create_shortcut_to_desktop(): - target = sys.argv[0] - fname = '学习通自动签到程序' - winshell.CreateShortcut(Path = os.path.join(winshell.desktop(), fname + '.lnk'), Target = target) - -def create_shortcut_to_startmenu(): - target = sys.argv[0] - fname = '学习通自动签到程序' - winshell.CreateShortcut(Path = os.path.join(winshell.start_menu(), fname + '.lnk'), Target = target) - -def delete_shortcut_from_desktop(): - fname = '学习通自动签到程序' - hdd = winshell.desktop()[:2] - os.system(hdd+"&cd "+winshell.desktop()+"&DEL /F /A /Q "+fname+".lnk") - -def delete_shortcut_from_startmenu(): - fname = '学习通自动签到程序' - hdd = winshell.start_menu()[:2] - os.system(hdd+"&cd "+winshell.start_menu()+"&DEL /F /A /Q "+fname+".lnk") - -def add_to_16(value): - while len(value) % 16 != 0: - value += '\0' - return str.encode(value) # 返回bytes - -def encrypt_oracle(path): - # 秘钥 - key = basekey - # 一次性读取文本内容 - with open(realpath+"/"+path, 'r', encoding='utf-8') as banks : - mystr = banks.read() - text = base64.b64encode(mystr.encode('utf-8')).decode('ascii') - aes = AES.new(add_to_16(key), AES.MODE_ECB) - encrypt_aes = aes.encrypt(add_to_16(text)) - encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8') # 执行加密并转码返回bytes - with open(realpath+"/"+path, "w", encoding='utf-8') as bankdata : - bankdata.write(encrypted_text) - -def decrypt_oralce(path): - key = basekey - with open(realpath+"/"+path, 'r', encoding='utf-8') as banks: - text = banks.read() - aes = AES.new(add_to_16(key), AES.MODE_ECB) - base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8')) - decrypted_text = str(aes.decrypt(base64_decrypted),encoding='utf-8') # 执行解密密并转码返回str - decrypted_text = base64.b64decode(decrypted_text.encode('utf-8')).decode('utf-8') - with open(realpath+"/"+path, "w", encoding='utf-8') as bankdata : - bankdata.write(decrypted_text) - -def names() : - global name, queding, chongxindl - try: - r = session.post('http://passport2.chaoxing.com/api/login?name={}&pwd={}&schoolid={}&verify=0'.format(username, password, schoolid)) - except : - tkinter.messagebox.showwarning('警告', '网络连接异常,登录失败,请检查您的网络连接后重试!') - queding.configure(text='确定', state='normal') - chongxindl.configure(state='normal') - return False - try: - name = json.loads(r.text)['realname'] - return True - except: - tkinter.messagebox.showwarning('警告', '自动登录失败,密码可能已被修改,请重试或重新登录!') - queding.configure(text='确定', state='normal') - chongxindl.configure(state='normal') - return False - -def text_r(): - global activates - with open(realpath+"/"+activeid_path, 'r', encoding='utf-8') as f : - line = f.read().strip() - linestr = line.split("\n") # 以换行符分隔 - activates = linestr - -def text_s(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. - file = open(realpath+"/"+filename, 'a', encoding='utf-8') - data = str(data) - file.write(data) - file.write('\n') - file.close() - -def conf_save(): - C = {} - C['address'] = [address] - C['latitude'] = [latitude] - C['longitude'] = [longitude] - C['picname'] = [picname] - f = open(realpath+"/"+conf_path, 'w', encoding='utf-8') # 以'w'方式打开文件 - for k, v in C.items() : # 遍历字典中的键值 - s2 = str(v) # 把字典的值转换成字符型 - f.write(k + '\n') # 键和值分行放,键在单数行,值在双数行 - f.write(s2 + '\n') - f.close() # 关闭文件 - -def conf_read(): - global address, latitude, longitude, picname - a = str("address") - la = str("latitude") - lo = str("longitude") - p = str("picname") - f = open(realpath+"/"+conf_path, 'r', encoding='utf-8') - conf = f.readlines() # 用readlines()函数读取txt文件中的内容,返回值为列表 - L1 = [] # 用来接收键的列表 - L2 = [] # 用来接收值的列表 - D2 = {} # 用来存放文件中读取出的内容 - for i in range(len(conf)) : - if i % 2 == 0 : # 列表下标是从0开始,所以双数行是键,单数行是值 - s1 = conf[i][0 :-1] # readlines()函数读取文件会有\n,切片切掉 - L1.append(s1) # 把所有的键存在L1列表中 - else : - s2 = conf[i] - s2 = s2[1 :-2] # 切掉列表转换成字符串后左右的中括号 - s2 = s2.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - L3 = s2.split(',') # 把字符串以逗号隔开变成列表,还原成原字典中的值 - L2.append(L3) # 把值都存在列表L2中 - for n in range(len(L1)) : - D2[L1[n]] = L2[n] # 以L1中的值为键,L2中的值为值存回字典中 - f.close() - for i in D2.keys() : - i = str(i) - if (i == a) : - address = D2[i] - address = str(address) - address = address[1 :-2] # 切掉列表转换成字符串后左右的中括号 - address = address.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - elif (i == la) : - latitude = D2[i] - latitude = str(latitude) - latitude = latitude[1 :-2] # 切掉列表转换成字符串后左右的中括号 - latitude = latitude.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - elif (i == lo) : - longitude = D2[i] - longitude = str(longitude) - longitude = longitude[1 :-2] # 切掉列表转换成字符串后左右的中括号 - longitude = longitude.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - elif (i == p) : - picname = D2[i] - picname = str(picname) - picname = picname[1 :-2] # 切掉列表转换成字符串后左右的中括号 - picname = picname.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - else: - if (i == a) : - address = '' - elif (i == la) : - latitude = '' - elif (i == lo) : - longitude = '' - elif (i == p) : - picname = '' - -def upgrade(n): - global up, finish - if(n == 1): - up.configure(state='disabled') - finish.configure(state='disabled') - about.attributes("-disabled", 1) - root1.attributes("-disabled", 1) - thread_it(update, n) - -def update(n): - global up, finish - # 蓝奏云分享文件链接地址 - url = 'https://wwr.lanzoui.com/b02icilda' - # header头,注意那个referer必须要与上面文件分享地址url相同 - headers1 = { - 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', - 'referer' : url - } - # 获取分享页面html文件 - try: - res = requests.get(url, headers=headers1) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序检查更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal') - finish.configure(state='normal') - about.focus_force() - return - # 引入BeautifulSoup库对html进行处理,获取iframe中的出现的js文件 - soup = BeautifulSoup(res.text, 'html.parser').find_all("script", type="text/javascript") - soup = soup[1] - soup = str(soup) - soups = soup.split('\n') - version = soups[1] - version = version[version.find('=\'') + 2 :version.find('\';')] - version = version[version.find('_')+1:] - log = str(BeautifulSoup(res.text, 'html.parser').find_all("span", {"id" : {"filename"}})) - log = log[log.find('>') + 1 :log.rfind('<')] - if(version != Version): - answer = tkinter.messagebox.askyesno('提示', '程序检测到新版本,是否立即更新?\n新版本更新内容:\n'+log) - if answer: - if (n == 1) : - about.focus_force() - up.configure(text='下载更新……') - thread_it(updates, n) - else: - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal') - finish.configure(state='normal') - about.focus_force() - else: - if(n == 1): - tkinter.messagebox.showinfo('提示', '恭喜您,您已经使用了最新版本的程序!') - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal') - finish.configure(state='normal') - about.focus_force() - -def updates(n): - global up, finish - # 蓝奏云分享文件链接地址 - url = 'https://wwr.lanzoui.com/b02icilda' - # header头,注意那个referer必须要与上面文件分享地址url相同 - headers1 = { - 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', - 'referer' : url - } - # 获取分享页面html文件 - try: - res = requests.get(url, headers=headers1) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return - # 引入BeautifulSoup库对html进行处理,获取iframe中的出现的js文件 - soup = BeautifulSoup(res.text, 'html.parser').find_all("script", type="text/javascript") - soup = soup[1] - soup = str(soup) - soups = soup.split('\n') - version = soups[1] - version = version[version.find('=\'') + 2 :version.find('\';')] - t = soups[5] - t = t[t.find('= \'') + 3 :t.find('\';')] - k = soups[6] - k = k[k.find('= \'') + 3 :k.find('\';')] - soup = re.findall('data : {((?:.|\n)*?)\'pwd\':', soup) - # 正则提取请求三个参数 - soup = soup[0] - soup = soup.split(',') - soup[0] = soup[0][soup[0].find(':') + 1 :] - soup[1] = soup[1][soup[1].find(':') + 1 :] - soup[2] = soup[2][soup[2].find(':') + 1 :] - soup[4] = soup[4][soup[4].find(':') + 1 :] - soup[7] = soup[7][soup[7].find(':') + 1 :] - soup[8] = soup[8][soup[8].find(':') + 1 :] - for i in range(len(soup)) : - soup[i] = soup[i].replace('\'', '') - # 请求下载地址 - url3 = 'https://wwr.lanzoui.com/filemoreajax.php' - data = { - 'lx' : soup[0], - 'fid' : soup[1], - 'uid' : soup[2], - 'pg' : '1', - 'rep' : soup[4], - 't' : t, - 'k' : k, - 'up' : soup[7], - 'ls' : soup[8], - 'pwd' : '8812' - } - try: - res3 = requests.post(url3, headers=headers1, data=data) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return - res3 = json.loads(res3.content) - # 请求最终重定向地址 - url4 = 'https://wwr.lanzoui.com/' + res3['text'][0]['id'] - headers2 = { - 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0', - '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', - } - try: - res4 = requests.get(url4, headers=headers2) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return - res4 = res4.text - res4 = res4[res4.rfind('src="/fn?') + 5 :res4.rfind('" frameborder="0" scrolling="no"></iframe>')] - url5 = 'https://wwr.lanzoui.com' + res4 - # 蓝奏云分享文件链接地址 - # 获取分享页面html文件 - try: - res = requests.get(url5, headers=headers1) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return - # 引入BeautifulSoup库对html进行处理,获取iframe中的出现的js文件 - soup = BeautifulSoup(res.text, 'html.parser').find_all("script", type="text/javascript") - soup = str(soup) - soups = re.findall(r'data : { \'(.*)\' },', soup) - soup = soup.split('\n') - signs = soup[1][soup[1].find('\'') + 1 :soup[1].rfind('\'')] - sign = soup[2][soup[2].find('\'') + 1 :soup[2].rfind('\'')] - # 正则提取请求三个参数 - soups = soups[0] - soups = soups.split(',') - soups[0] = soups[0][soups[0].find(':') + 1 :] - soups[3] = soups[3][soups[3].find(':') + 1 :] - soups[4] = soups[4][soups[4].find(':') + 1 :] - soups[5] = soups[5][soups[5].find(':') + 1 :] - for i in range(len(soups)) : - soups[i] = soups[i].replace('\'', '') - # 请求下载地址 - url6 = 'https://wwr.lanzoui.com/ajaxm.php' - data = { - 'action' : soups[0], - 'signs' : signs, - 'sign' : sign, - 'ves' : soups[3], - 'websign' : soups[4], - 'websignkey' : soups[5] - } - try: - res6 = requests.post(url6, headers=headers1, data=data) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return - res6 = json.loads(res6.content) - # 请求最终重定向地址 - url7 = res6['dom'] + '/file/' + res6['url'] - try: - res7 = requests.head(url7, headers=headers2) - r = requests.get(res7.headers['Location']) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,程序更新失败,请检查您的网络后重试!') - if (n == 1) : - about.attributes("-disabled", 0) - root1.attributes("-disabled", 0) - up.configure(state='normal', text='检查更新') - finish.configure(state='normal') - about.focus_force() - return # create HTTP response object - answer = tkinter.messagebox.askyesno('提示', '新版本下载完成,是否进行更新?') - if answer : - if(n == 1): - up.configure(text='正在更新……') - try: - with open(realpath+"/学习通自动签到程序正式版"+version+".exe", 'wb') as f : - f.write(r.content) - except: - with open(realpath+"/学习通自动签到程序"+version+".exe", 'wb') as f : - f.write(r.content) - with open(realpath+"/oldprogram", 'w') as old: - old.write(os.path.basename(sys.argv[0])) - try: - thread_it(delete_shortcut_from_desktop) - thread_it(delete_shortcut_from_startmenu) - except: - pass - if (n == 1) : - root1.attributes("-disabled", 0) - tkinter.messagebox.showinfo('提示', '更新成功,程序即将重新启动,请注意保存相关数据信息!') - if(n == 1): - up.configure(text='程序即将重启') - try: - os.startfile('学习通自动签到程序正式版'+version+'.exe', 'runas') - except: - os.startfile('学习通自动签到程序'+version+'.exe', 'runas') - os._exit(0) - else: - about.focus_force() - if(n == 1): - up.configure(state='normal') - -def choose_file(): - global Photo - root1.attributes("-disabled", 1) - Filepath = tkinter.filedialog.askopenfilename() # 获得选择好的文件 - if(Filepath != ''): - L1 = ttk.Labelframe(root1, text='图片预览') - tplj.configure(state='normal') - tplj.delete(0, END) - tplj.insert(0, Filepath) - tplj.configure(state='readonly') - try: - Photo = Image.open(Filepath) - w = Photo.width - h = Photo.height - x = int((float(w)/float(h))*200) - imBackground = Photo.resize((x, 200)) - render = ImageTk.PhotoImage(imBackground) - img = Label(L1, image=render) - img.image = render - img.pack() - except: - Label(L1, text='无法显示预览', font=10).pack() - L1.place(x=500, y=110, width=400, height=230) - root1.attributes("-disabled", 0) - -def check_file(path) : - kind = filetype.guess(path) - if kind is None : - t = 'unknown' - return t - else: - return kind.extension - -def check(f): - if(f == ''): - return False - else: - c = check_file(f) - if (c == 'jpg' or c == 'png' or c == 'gif' or c == 'webp' or c == 'bmp') : - return True - else : - return False - -def text_save():#filename为写入CSV文件的路径,data为要写入数据列表. - D = {} - D['username'] = [username] - D['password'] = [password] - D['schoolid'] = [schoolid] - f = open(realpath+"/"+information_path, 'w', encoding='utf-8') # 以'w'方式打开文件 - for k, v in D.items() : # 遍历字典中的键值 - s2 = str(v) # 把字典的值转换成字符型 - f.write(k + '\n') # 键和值分行放,键在单数行,值在双数行 - f.write(s2 + '\n') - f.close() # 关闭文件 - -def text_read(): - f = open(realpath+"/"+information_path, 'r', encoding='utf-8') - information = f.readlines() # 用readlines()函数读取txt文件中的内容,返回值为列表 - L1 = [] # 用来接收键的列表 - L2 = [] # 用来接收值的列表 - D2 = {} # 用来存放文件中读取出的内容 - for i in range(len(information)) : - if i % 2 == 0 : # 列表下标是从0开始,所以双数行是键,单数行是值 - s1 = information[i][0 :-1] # readlines()函数读取文件会有\n,切片切掉 - L1.append(s1) # 把所有的键存在L1列表中 - else : - s2 = information[i] - s2 = s2[1 :-2] # 切掉列表转换成字符串后左右的中括号 - s2 = s2.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - L3 = s2.split(',') # 把字符串以逗号隔开变成列表,还原成原字典中的值 - L2.append(L3) # 把值都存在列表L2中 - for n in range(len(L1)) : - D2[L1[n]] = L2[n] # 以L1中的值为键,L2中的值为值存回字典中 - f.close() - return D2 - -def zh(): - global username, password, schoolid, address - u = str("username") - p = str("password") - s = str("schoolid") - decrypt_oralce(information_path) - date = text_read() - encrypt_oracle(information_path) - for i in date.keys() : - i = str(i) - if (i == u) : - username = date[i] - username = str(username) - username = username[1 :-2] # 切掉列表转换成字符串后左右的中括号 - username = username.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - if (i == p) : - password = date[i] - password = str(password) - password = password[1 :-2] # 切掉列表转换成字符串后左右的中括号 - password = password.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - if (i == s) : - schoolid = date[i] - schoolid = str(schoolid) - schoolid = schoolid[1 :-2] # 切掉列表转换成字符串后左右的中括号 - schoolid = schoolid.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - -def find(cookie): - global uid - for i in cookie.keys(): - i = str(i) - if(i == "uid" or i == "UID"): - uid = cookie[i] - uid = str(uid) - uid = uid.replace('\'', '').replace(' ', '') # 把字符串中的单引号和空格去掉 - -def save_new_cookies(): - global session, coo - new_cookies = session.cookies.get_dict() - with open(realpath+"/"+cookies_path, 'w') as f2 : - json.dump(new_cookies, f2) - coo = new_cookies - find(new_cookies) - -def save_cookies() : - #保存cookies - global session - new_cookies = session.cookies.get_dict() - if "cookies.json" not in os.listdir("./") : - with open(realpath+"/"+cookies_path, 'w+') as f : - f.write("{}") - with open(realpath+"/"+cookies_path, "r") as f : - data = json.load(f) - data[username] = new_cookies - with open(realpath+"/"+cookies_path, 'w') as f2 : - json.dump(data, f2) - find(new_cookies) - -def backclazzdata() : - global coursedata - coursedata = [] - url = "http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1" - try: - res = session.get(url, headers=headers) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,课程列表获取失败,请检查您的网络后重试!') - return False - cdata = json.loads(res.content.decode(encoding="utf-8")) - if (cdata['result'] != 1) : - return False - for item in cdata['channelList'] : - if ("course" not in item['content']) : - continue - pushdata = {} - pushdata['courseid'] = item['content']['course']['data'][0]['id'] - pushdata['name'] = item['content']['course']['data'][0]['name'] - pushdata['imageurl'] = item['content']['course']['data'][0]['imageurl'] - pushdata['classid'] = item['content']['id'] - coursedata.append(pushdata) - return True - -def gettime() : - global after_id - timestr = time.strftime("%Y-%m-%d %H:%M:%S") # 获取当前的时间并转化为字符串 - lb.configure(text='当前系统时间:'+timestr) # 重新设置标签文本 - after_id = root1.after(10, gettime) # 每隔1s调用函数 gettime 自身获取时间 - -def getkc() : - global after_kc, t - if Lstbox1.curselection() == (): - after_kc = root1.after(100, getkc) - else: - start.configure(state='normal') - getck() - -def getck(): - global after_ck, t - if Lstbox1.curselection() == () : - start.configure(state='disabled') - getkc() - else : - after_ck = root1.after(100, getck) - -def dl(t, n): - global zhanghao, mima, xuexiao, webid, denglu, fan - ttk.Label(root).place(relwidth=1, relheight=1) - L0 = Frame(root) - L1 = ttk.Labelframe(root) - L2 = Frame(root) - if(n == 1): - ttk.Label(root, text='欢迎使用!检测到您第一次使用本程序,请先登录您的学习通账号!', font=('微软雅黑', 13)).place(x=5, y=10) - if(t == 1): - Button(L0, text='手机号登录', relief='sunken').pack(side=LEFT) - Button(L0, text='机构账号登录', relief='raised', command=lambda: dl(2, n)).pack(fill=X) - L0.place(x=520, y=10) - ttk.Label(L2, text='请输入您的手机号 :', font=('微软雅黑',13)).pack(anchor=E) - zhanghao = ttk.Entry(L1, text=' ', width=40) - zhanghao.pack() - ttk.Label(L1, font='10').pack() - ttk.Label(L2).pack() - ttk.Label(L2, text='请输入您的学习通密码 :', font=('微软雅黑',13)).pack(anchor=E) - mima = ttk.Entry(L1, show="*", width=40) - mima.pack() - zhanghao.focus_force() - L1.place(x=520, y=45) - L2.place(x=318, y=60) - denglu = ttk.Button(root, text='登录', command=lambda : thread_it(login, zhanghao.get(), mima.get(), '', 1, n)) - denglu.place(relx=0.15, rely=0.75, relwidth=0.2, relheight=0.1) - zhanghao.bind("<Return>", lambda event : thread_it(login, zhanghao.get(), mima.get(), '', 1, n)) - mima.bind("<Return>", lambda event : thread_it(login, zhanghao.get(), mima.get(), '', 1, n)) - if(n == 0): - fan = ttk.Button(root, text='返回', command=lambda : main()) - fan.place(relx=0.65, rely=0.75, relwidth=0.2, relheight=0.1) - elif (n == 1) : - fan = ttk.Button(root, text='返回', command=lambda : main(), state='disabled') - fan.place(relx=0.65, rely=0.75, relwidth=0.2, relheight=0.1) - elif (t == 2) : - Button(L0, text='手机号登录', relief='raised', command=lambda: dl(1, n)).pack(side=LEFT) - Button(L0, text='机构账号登录', relief='sunken').pack(fill=X) - L0.place(x=520, y=10) - ttk.Label(L2, text='请输入您的学号或工号 :', font=('微软雅黑', 13)).pack(anchor=E) - zhanghao = ttk.Entry(L1, text=' ', width=40) - zhanghao.pack() - ttk.Label(L1, font='10').pack() - ttk.Label(L2).pack() - ttk.Label(L2, text='请输入您的学习通密码 :', font=('微软雅黑', 13)).pack(anchor=E) - mima = ttk.Entry(L1, show="*", width=40) - mima.pack() - zhanghao.focus_force() - ttk.Label(L1, font='10').pack() - ttk.Label(L2).pack() - ttk.Label(L2, text='请输入您的学校ID,不知道学校ID请点击"查询学校ID" :', font=('微软雅黑', 13)).pack(anchor=E) - xuexiao = ttk.Entry(L1, text=' ', width=40) - xuexiao.pack() - L1.place(x=520, y=45) - L2.place(x=80, y=60) - webid = ttk.Button(root, text='查询学校ID', command=window) - webid.place(relx=0.815, rely=0.525, relwidth=0.1, relheight=0.08) - denglu = ttk.Button(root, text='登录', command=lambda : thread_it(login, zhanghao.get(), mima.get(), xuexiao.get(), 2, n)) - denglu.place(relx=0.15, rely=0.75, relwidth=0.2, relheight=0.1) - zhanghao.bind("<Return>", lambda event : thread_it(login, zhanghao.get(), mima.get(), xuexiao.get(), 2, n)) - mima.bind("<Return>", lambda event : thread_it(login, zhanghao.get(), mima.get(), xuexiao.get(), 2, n)) - xuexiao.bind("<Return>", lambda event : thread_it(login, zhanghao.get(), mima.get(), xuexiao.get(), 2, n)) - if (n == 0) : - fan = ttk.Button(root, text='返回', command=lambda : main()) - fan.place(relx=0.65, rely=0.75, relwidth=0.2, relheight=0.1) - elif (n == 1) : - fan = ttk.Button(root, text='返回', command=lambda : main(), state='disabled') - fan.place(relx=0.65, rely=0.75, relwidth=0.2, relheight=0.1) - -def on_closing(): - pass - -def login(u, p, s, t, n) : - global username, password, schoolid, address, latitude, longitude, picname, basekey, denglu, fan - root.attributes("-disabled", 1) - username = str(u) - password = str(p) - schoolid = str(s) - if(t == 1): - if(username == ''): - tkinter.messagebox.showinfo('提示', '手机号不能为空!') - root.attributes("-disabled", 0) - zhanghao.focus_force() - elif(password == ''): - tkinter.messagebox.showinfo('提示', '密码不能为空!') - root.attributes("-disabled", 0) - mima.focus_force() - else: - denglu.configure(text='登录中……', state='disabled') - fan.configure(state='disabled') - try: - r = session.get('https://passport2.chaoxing.com/api/login?name={}&pwd={}&schoolid=&verify=0'.format(username, password),headers=headers) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,登录失败,请检查您的网络后重试!') - root.attributes("-disabled", 0) - denglu.configure(text='登录', state='normal') - if(n == 0): - fan.configure(state='normal') - zhanghao.focus_force() - return - if json.loads(r.text)['result'] : - answer = tkinter.messagebox.askyesno('提示', '登录成功,是否将您的账号密码加密保存以便下次登录?') - if answer : - address = '' - latitude = '' - longitude = '' - picname = '' - conf_save() - try : - save_cookies() - except : - save_new_cookies() - szmm(1) - else: - basekey = '' - address = '' - latitude = '' - longitude = '' - picname = '' - names() - root.attributes("-disabled", 0) - menu(1) - else : - tkinter.messagebox.showinfo('提示', '登录失败,请检查账号密码是否正确!') - root.attributes("-disabled", 0) - dl(1, n) - elif (t == 2) : - if (username == '') : - tkinter.messagebox.showinfo('提示', '学号或工号不能为空!') - root.attributes("-disabled", 0) - zhanghao.focus_force() - elif (password == '') : - tkinter.messagebox.showinfo('提示', '密码不能为空!') - root.attributes("-disabled", 0) - mima.focus_force() - elif(schoolid == ''): - tkinter.messagebox.showinfo('提示', '学校ID不能为空,不知道学校ID请点击"查询学校ID"!') - root.attributes("-disabled", 0) - xuexiao.focus_force() - else : - denglu.configure(text='登录中……', state='disabled') - fan.configure(state='disabled') - try: - r = session.post('http://passport2.chaoxing.com/api/login?name={}&pwd={}&schoolid={}&verify=0'.format(username, password, schoolid)) - except: - tkinter.messagebox.showwarning('警告', '网络连接异常,登录失败,请检查您的网络后重试!') - root.attributes("-disabled", 0) - denglu.configure(text='登录', state='normal') - if (n == 0) : - fan.configure(state='normal') - zhanghao.focus_force() - return - if json.loads(r.text)['result'] : - answer = tkinter.messagebox.askyesno('提示', '登录成功,是否将您的账号密码加密保存以便下次登录?') - if answer : - address = '' - latitude = '' - longitude = '' - picname = '' - conf_save() - try : - save_cookies() - except : - save_new_cookies() - szmm(1) - else: - basekey = '' - address = '' - latitude = '' - longitude = '' - picname = '' - names() - root.attributes("-disabled", 0) - menu(1) - else : - tkinter.messagebox.showinfo('提示', '登录失败,请检查学号密码及学校ID是否正确!') - root.attributes("-disabled", 0) - dl(2, n) - -def szmm(n): - global winNew, mima2 - winNew = Toplevel() - winNew.geometry('300x200') - winNew.title('密码输入窗口') - winNew.resizable(False, False) - try : - winNew.iconbitmap('C:/title.ico') - except : - with open('C:/title.ico', 'wb+') as temp : - tempb64 = base64.b64decode(title) - temp.write(tempb64) - winNew.iconbitmap('C:/title.ico') - L1 = ttk.Labelframe(winNew, text='为了您的账号安全,请您设置程序访问密码') - mima2 = ttk.Entry(L1, show="*") - mima2.pack() - mima2.focus_force() - L1.place(relx=0.1, rely=0.1) - btClose = ttk.Button(winNew, text='完成', command=lambda : jm(mima2.get(), n)) - btClose.place(relx=0.4, rely=0.7) - mima2.bind("<Return>", lambda event : jm(mima2.get(), n)) - if(n == 1): - winNew.protocol("WM_DELETE_WINDOW", on_closing) - -def jm(password, n): - global address, latitude, longitude, picname, basekey - winNew.attributes("-disabled", 1) - if(password == ''): - tkinter.messagebox.showinfo('提示', '密码不能为空!') - winNew.attributes("-disabled", 0) - mima2.focus_force() - else: - basekey = str(password) - conf_save() - text_save() - encrypt_oracle(information_path) - encrypt_oracle(conf_path) - if(n == 1): - tkinter.messagebox.showinfo('提示', '恭喜您,信息保存成功!') - elif(n == 2): - tkinter.messagebox.showinfo('提示', '恭喜您,密码保存成功!') - winNew.destroy() - names() - menu(n) - -def test(password): - global basekey, address, latitude, longitude, picname, queding, chongxindl - root.attributes("-disabled", 1) - basekey = password - try : - zh() - try : - decrypt_oralce(conf_path) - conf_read() - encrypt_oracle(conf_path) - except : - file = open(realpath+"/"+conf_path, 'x', encoding='utf-8') - file.close() - address = '' - latitude = '' - longitude = '' - picname = '' - conf_save() - encrypt_oracle(conf_path) - except : - tkinter.messagebox.showwarning('警告', '程序访问密码错误或配置文件已损坏无法读取,请重试或重新登录!') - root.attributes("-disabled", 0) - main() - return - answer = tkinter.messagebox.askyesno('提示', '检测到已有账号在此电脑上保存了密码,是否进行自动登录?') - if answer : - queding.configure(text='登录中……', state='disabled') - chongxindl.configure(state='disabled') - if names() : - try : - save_cookies() - except : - save_new_cookies() - root.attributes("-disabled", 0) - menu(1) - else: - root.attributes("-disabled", 0) - main() - else : - root.attributes("-disabled", 0) - main() - -def cxdl(): - global root - answer = tkinter.messagebox.askokcancel('提示', '确定要退出吗?') - if answer : - root1.after_cancel(after_id) - root1.destroy() - root = Tk() - root.geometry('1000x300') - root.title('学习通自动签到程序正式版') - root.resizable(False, False) - try: - root.iconbitmap('C:/title.ico') - except: - with open('C:/title.ico', 'wb+') as temp : - tempb64 = base64.b64decode(title) - temp.write(tempb64) - root.iconbitmap('C:/title.ico') - dl(1, 0) - root.mainloop() - else : - pass - -def bfjk(): - global Lstbox1, start, T, LL, t, L2, qdjk, tuichu, LB - ttk.Label(root1).place(relwidth=1, relheight=0.9, rely=0.12) - LL = ttk.Labelframe(root1, text='请选择一个或多个要签到的课程') - LB = Label(LL, text='正在获取课程列表……') - LB.pack() - start = ttk.Button(root1, text='开始监控', command=lambda : thread_it(bfyk, bfjq(), t.get()), state='disabled') - start.place(relx=0.35, rely=0.7, relwidth=0.1, relheight=0.1) - thread_it(dxc) - L2 = ttk.Labelframe(root1, text='签到监控详细信息') - t1 = Scrollbar(L2) - t1.place(relx=0.93, relheight=1) - T = Text(L2, yscrollcommand=t1.set) - T.place(relwidth=0.93, relheight=1) - t1.config(command=T.yview) - LL.place(relx=0.01, rely=0.01, relwidth=0.28, relheight=0.98) - L2.place(relx=0.71, rely=0.01, relwidth=0.28, relheight=0.98) - Label(root1, text='请输入监控频率 :', font=('微软雅黑', 12)).place(relx=0.32, rely=0.3) - t = ttk.Entry(root1) - t.place(relx=0.45, rely=0.31, relwidth=0.05) - Label(root1, text='s', font=('微软雅黑', 12)).place(relx=0.5, rely=0.3) - qdjk = Label(root1, wraplength=400, justify=CENTER, text='签到监控未启动', font=('微软雅黑', 12)) - qdjk.place(relx=0.3, rely=0.4, relwidth=0.4, relheight=0.25) - tuichu = ttk.Button(root1, text='返回', command=lambda : fanhui(3)) - tuichu.place(relx=0.55, rely=0.7, relwidth=0.1, relheight=0.1) - -def dxc(): - global Lstbox1 - if backclazzdata(): - LB.destroy() - s1 = Scrollbar(LL, orient=HORIZONTAL) - s1.place(rely=0.96, relwidth=1) - s2 = Scrollbar(LL) - s2.place(relx=0.93, relheight=0.93) - Lstbox1 = Listbox(LL, selectmode=MULTIPLE, xscrollcommand=s1.set, yscrollcommand=s2.set) - Lstbox1.place(relwidth=0.93, relheight=0.96) - Lstbox1.delete(0, END) - i = 1 - for item in coursedata : - Lstbox1.insert(END, str(i)+"."+item['name']) - i += 1 - s1.config(command=Lstbox1.xview) - s2.config(command=Lstbox1.yview) - thread_it(getkc) - else: - LB.configure(text='课程列表获取失败,请重试') - -def bfjq(): - if Lstbox1.curselection() != (): - return Lstbox1.curselection() - -def bfyk(n, te): - global status, t, end, id - try: - te = float(te) - if(te < 0): - root1.attributes("-disabled", 1) - tkinter.messagebox.showwarning('警告', '监控频率设置错误,请重试!') - root1.attributes("-disabled", 0) - t.focus_force() - return - else: - te = str(te) - ind = 0 - id = 0 - status = 1 - ss = "" - w = 0 - t.configure(state='disabled') - root1.after_cancel(after_kc) - try: - root1.after_cancel(after_ck) - except: - pass - Lstbox1.configure(state='disabled') - start.destroy() - end = ttk.Button(root1, text='停止监控', command=bftzjk) - end.place(relx=0.35, rely=0.7, relwidth=0.1, relheight=0.1) - tuichu.configure(state='disabled') - for i in n: - if(w != 0): - ss = ss + "、" - ss = ss + str(Lstbox1.get(i).split('.')[1:]).replace('[','').replace(']','').replace('\'','') - w += 1 - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" 签到监控启动成功!监控课程为"+ss+",监控频率为"+str(te)+"s\n" - T.insert(END, s) - T.see(END) - te = float(te) - thread_it(bfkcjk, ind, n, te) - except: - root1.attributes("-disabled", 1) - tkinter.messagebox.showwarning('警告', '监控频率设置错误,请重试!') - root1.attributes("-disabled", 0) - t.focus_force() - -def bfkcjk(ind, n, te): - global status, na - after_qd = st - while True: - ind += 1 - for i in n: - if (after_qd == st) : - qdjk.configure(text='正在进行第' + str(ind) + '次签到监控……') - i = int(i) - na = coursedata[i]['name'] - taskactivelist(coursedata[i]['courseid'], coursedata[i]['classid']) - status = 1 - else : - return - if (after_qd == st) : - if (id == 0) : - qdjk.configure(text='监控运行中,未查询到签到活动,已监控所选课程' + str(ind) + '次') - else : - qdjk.configure(text='监控运行中,成功完成所选课程' + str(id) + '次的签到活动,已监控所选课程' + str(ind) + '次') - time.sleep(te) - -def bftzjk(): - global t, start, st - st += 1 - end.destroy() - start = ttk.Button(root1, text='开始监控', command=lambda : bfyk(bfjq(), t.get())) - start.place(relx=0.35, rely=0.7, relwidth=0.1, relheight=0.1) - getkc() - t.configure(state='normal') - Lstbox1.configure(state='normal') - tuichu.configure(state='normal') - qdjk.configure(text='签到监控未启动') - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + " 签到监控停止\n" - T.insert(END, s) - T.see(END) - -def qbqd(): - global start, T, t, L2, qdjk, tuichu - ttk.Label(root1).place(relwidth=1, relheight=0.9, rely=0.12) - lb.place(relx=0.15) - welcome.place(relx=0.189, rely=0.05) - L2 = ttk.Labelframe(root1, text='签到监控详细信息') - t1 = Scrollbar(L2) - t1.place(relx=0.95, relheight=1) - T = Text(L2, yscrollcommand=t1.set) - T.place(relwidth=0.95, relheight=1) - t1.config(command=T.yview) - L2.place(relx=0.51, rely=0.01, relwidth=0.48, relheight=0.98) - Label(root1, text='请输入监控频率 :', font=('微软雅黑', 12)).place(relx=0.12, rely=0.3) - t = ttk.Entry(root1) - t.place(relx=0.25, rely=0.31, relwidth=0.05) - Label(root1, text='s', font=('微软雅黑', 12)).place(relx=0.3, rely=0.3) - qdjk = Label(root1, wraplength=400, justify=CENTER, text='签到监控未启动', font=('微软雅黑', 12)) - qdjk.place(relx=0.015, rely=0.4, relwidth=0.47, relheight=0.25) - start = ttk.Button(root1, text='开始监控', command=lambda : thread_it(dk, t.get())) - start.place(relx=0.1, rely=0.7, relwidth=0.1, relheight=0.1) - tuichu = ttk.Button(root1, text='返回', command=lambda : fanhui(4)) - tuichu.place(relx=0.3, rely=0.7, relwidth=0.1, relheight=0.1) - -def dk(te): - global status, na, t, end, start, id - try: - te = float(te) - if(te < 0): - root1.attributes("-disabled", 1) - tkinter.messagebox.showwarning('警告', '监控频率设置错误,请重试!') - root1.attributes("-disabled", 0) - t.focus_force() - return - else: - te = str(te) - ind = 0 - id = 0 - status = 1 - t.configure(state='disabled') - start.destroy() - end = ttk.Button(root1, text='停止监控', command=qbtzjk) - end.place(relx=0.1, rely=0.7, relwidth=0.1, relheight=0.1) - tuichu.configure(state='disabled') - s = datetime.datetime.strftime(datetime.datetime.now(),'%H:%M:%S') + " 开始获取课程列表……\n" - T.insert(END, s) - T.see(END) - if backclazzdata(): - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + " 课程列表获取成功!\n" - T.insert(END, s) - T.see(END) - else: - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + " 课程列表获取失败,请重试!\n" - T.insert(END, s) - T.see(END) - t.configure(state='normal') - end.destroy() - start = ttk.Button(root1, text='开始监控', command=lambda : dk(t.get())) - start.place(relx=0.1, rely=0.7, relwidth=0.1, relheight=0.1) - tuichu.configure(state='normal') - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + " 签到监控停止\n" - T.insert(END, s) - T.see(END) - return - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" 签到监控启动成功!监控课程为全部课程,监控频率为"+str(te)+"s\n" - T.insert(END, s) - T.see(END) - te = float(te) - thread_it(qbkcjk, ind, te) - except: - root1.attributes("-disabled", 1) - tkinter.messagebox.showwarning('警告', '监控频率设置错误,请重试!') - root1.attributes("-disabled", 0) - t.focus_force() - -def qbkcjk(ind, te): - global status, na, id - status = 1 - after_qdt = st - while True: - ind += 1 - for data in coursedata : - if(after_qdt == st): - qdjk.configure(text='正在进行第' + str(ind) + '次签到监控……') - na = data['name'] - taskactivelist(data['courseid'], data['classid']) - status = 1 - else: - return - if (after_qdt == st) : - if (id == 0) : - qdjk.configure(text='监控运行中,未查询到签到活动,已监控全部课程' + str(ind) + '次') - else : - qdjk.configure(text='监控运行中,成功完成全部课程'+str(id)+'次的签到活动,已监控全部课程' + str(ind) + '次') - time.sleep(te) - -def qbtzjk(): - global t, start, st - st += 1 - end.destroy() - start = ttk.Button(root1, text='开始监控', command=lambda : dk(t.get())) - start.place(relx=0.1, rely=0.7, relwidth=0.1, relheight=0.1) - t.configure(state='normal') - tuichu.configure(state='normal') - qdjk.configure(text='签到监控未启动') - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + " 签到监控停止\n" - T.insert(END, s) - T.see(END) - -@retry -def taskactivelist(courseId, classId) : - re_rule = r'<div class="Mct" onclick="activeDetail\((.*),2,null\)">[\s].*[\s].*[\s].*[\s].*<dd class="green">.*</dd>[\s]+[\s]</a>[\s]+</dl>[\s]+<div class="Mct_center wid660 fl">[\s]+<a href="javascript:;" shape="rect">(.*)</a>' - url = "https://mobilelearn.chaoxing.com/widget/pcpick/stu/index?courseId=" + str(courseId) + "&jclassId=" + str(classId) - r = session.get(url, headers=headers) - res = re.findall(re_rule, r.text) - if (res != []): - for i in range(len(res)): - aid = res[i][0] - if (aid not in activates) : - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" 课程"+na+"查询到待签到活动 活动名称:"+res[i][1]+" aid:"+aid+"\n" - T.insert(END, s) - T.see(END) - signt(res[i][1], courseId, classId, aid) - -def signt(sign_type, course_id, class_id, aid) : # 签到,偷了个懒,所有的签到类型都用这个,我测试下来貌似都没问题 - global status, id - status = False # 一般签到就直接签完了 要加状态判断以用于决定后面的sever酱是否推送 - url = "https://mobilelearn.chaoxing.com/pptSign/stuSignajax" - if '位置' in sign_type : - data = { - 'name' : name, - 'address' : address, - 'activeId' : aid, - 'uid' : uid, - 'longitude' : longitude, - 'latitude' : latitude, - } - elif '手势' in sign_type : - data = { - 'name' : name, - 'activeId' : aid, - 'uid' : uid, - 'longitude' : longitude, - 'latitude' : latitude, - } - elif '二维码' in sign_type : - data = { - 'name' : name, - 'activeId' : aid, - 'uid' : uid, - 'longitude' : longitude, - 'latitude' : latitude, - } - else : - r = session.get('https://mobilelearn.chaoxing.com/widget/sign/pcStuSignController/preSign?activeId={}&classId={}&fid={}&courseId={}'.format(aid, class_id, schoolid, course_id), headers=headers) - title = re.findall('<title>(.*)</title>', r.text)[0] - if "签到成功" not in title : - objectId = upload() - data = { - 'name' : name, - 'address' : address, - 'activeId' : aid, - 'uid' : uid, - 'longitude' : longitude, - 'latitude' : latitude, - 'objectId' : objectId - } - else : - data = {} - status = True - if not status : - res = session.post(url, data=data, headers=headers) - text = res.text - else : - text = "success" - if(text == "success"): - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" "+name+"同学签到成功!\n" - T.insert(END, s) - T.see(END) - try: - id += 1 - except: - pass - else: - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" 自动签到失败,该签到为二维码签到或该签到已完成,请自行登录学习通查看签到状态!\n" - T.insert(END, s) - T.see(END) - activates.append(aid) - text_s(activeid_path, aid) - -def upload() : # 上传图片 - global picname - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+' 检测到疑似拍照签到,准备上传拍照图片\n' - T.insert(END, s) - T.see(END) - if picname == '' : - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+' 未设置拍照图片,无法上传,将使用普通签到模式执行无图片签到\n' - T.insert(END, s) - T.see(END) - return - else : - tokenurl = 'https://pan-yz.chaoxing.com/api/token/uservalid' - tokenres = session.get(tokenurl, headers=headers) - tokendict = json.loads(tokenres.text) - token = tokendict['_token'] - uploadurl = 'https://pan-yz.chaoxing.com/upload' - picname = picname - try : - files = {'file' : (picname, open(picname, 'rb'), 'image/webp,image/*')} - except FileNotFoundError : - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+' 拍照图片不存在,无法上传,将使用普通签到模式执行无图片签到\n' - T.insert(END, s) - T.see(END) - return - try: - uploadres = session.post(uploadurl, data={'puid' : uid, '_token' : token}, files=files, headers=headers) - except: - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S') + ' 网络连接异常,无法上传拍照图片,将使用普通签到模式执行无图片签到\n' - T.insert(END, s) - T.see(END) - return - resdict = json.loads(uploadres.text) - s = datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')+" 拍照图片上传成功!\n" - T.insert(END, s) - T.see(END) - return (resdict['objectId']) - -def cx(school): - global tree, cxfh - if(school == ''): - cxfh.configure(text='请输入学校名称进行查询!', fg='red') - else: - cxfh.configure(text='正在查询……', fg='blue') - headers = { - 'User-Agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.20 Mobile Safari/537.36 Edg/94.0.992.9', - 'referer' : 'http://passport2.chaoxing.com/login' - } - url = 'http://passport2.chaoxing.com/org/searchforms' - data = { - 'allowjoin' : '0', - 'filter' : school, - 'pid' : '-1' - } - try: - res = requests.post(url, headers=headers, data=data) - except: - cxfh.configure(text='网络连接异常,查询失败!', fg='red') - return - json_data = json.loads(res.text) - L = [] - if json_data['result']: - for i in range(len(json_data['froms'])): - LIST = [] - LIST.append(json_data['froms'][i]['name']) - LIST.append(json_data['froms'][i]['id']) - L.append(LIST) - tl = ttk.Label(cxid) - tree = ttk.Treeview(tl, height=15) - tree["show"] = "headings" - tree["columns"] = list(range(2)) - tree.heading(0, text="学校") - tree.heading(1, text="学校ID") - for index, data in enumerate(L) : - tree.insert('', "end", values=data) - tree.place(relwidth=0.96) - ys = ttk.Scrollbar(tl) - ys.place(relx=0.95, relheight=1) - tree["yscrollcommand"] = ys.set - for column in tree["columns"] : - tree.column(column=column, anchor='center') - ys.config(command=tree.yview) - tl.place(relx=0.1,rely=0.3,relwidth=0.8,relheight=0.65) - cxfh.configure(text='查询成功!', fg='green') - else: - tl = ttk.Label(cxid) - tree = ttk.Treeview(tl, height=15) - tree["show"] = "headings" - tree["columns"] = list(range(2)) - tree.heading(0, text="学校名称") - tree.heading(1, text="学校ID") - tree.place(relwidth=0.96) - ys = ttk.Scrollbar(tl) - ys.place(relx=0.95, relheight=1) - tree["yscrollcommand"] = ys.set - ys.config(command=tree.yview) - tl.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.65) - cxfh.configure(text='未查询到相应学校ID!', fg='red') - -def window(): - global cxid, cxfh - cxid = Tk() - cxid.geometry('500x500') - cxid.title('学校ID查询窗口') - cxid.resizable(False, False) - L1 = ttk.Labelframe(cxid, text='请输入学校名称进行查询:') - bt = ttk.Button(L1, text='立即查询', command=lambda : thread_it(cx, web.get())) - bt.pack(side='right') - web = ttk.Entry(L1) - web.pack(fill='x') - L1.place(relx = 0.2, rely=0.1,relwidth=0.6) - cxfh = Label(cxid) - cxfh.place(relx=0.4, rely=0.23) - web.bind("<Return>", lambda event : thread_it(cx, web.get())) - cxid.mainloop() - -def gy(): - global about, up, finish - about = Toplevel() - about.geometry('500x200') - about.title('关于本程序') - about.resizable(False, False) - try : - about.iconbitmap('C:/title.ico') - except : - with open('C:/title.ico', 'wb+') as temp : - tempb64 = base64.b64decode(title) - temp.write(tempb64) - about.iconbitmap('C:/title.ico') - about.focus_force() - image = Label(about) - image.place(relwidth=0.5, relheight=1) - im = Image.open(BytesIO(base64.b64decode(pic_data))) - imBackground = im.resize((250, 250)) - render = ImageTk.PhotoImage(imBackground) - img = Label(image, image=render) - img.image = render - img.pack() - word = Label(about) - word.place(relx=0.5, relwidth=0.5, relheight=1) - wd1 = Label(word, text='学习通自动签到程序') - wd1.pack() - wd2 = Label(word, text='Version '+Version+' 正式版') - wd2.pack() - wd3 = Label(word, text='By:河南省WiFi攻防研究所') - wd3.pack() - wd4 = Label(word, text='2533169981@qq.com') - wd4.pack() - wd5 = Label(word, text='本软件为作者学习测试而编写,严禁用于非法用途!', wraplength=250, justify=CENTER) - wd5.pack() - wd6 = Label(word, text='版权所有,翻版必究') - wd6.pack() - finish = ttk.Button(word, text='确定', command=lambda : about.destroy()) - finish.place(relx=0.1, rely=0.8) - up = ttk.Button(word, text='检查更新', command=lambda : upgrade(1)) - up.place(relx=0.6, rely=0.8) - -def xgwzxx(): - global wz - ttk.Label(root1).place(relwidth=1, relheight=0.9, rely=0.12) - if (address == '') : - add = '未设置' - else : - add = address - Label(root1, text='当前位置信息 : ' + add, font=('微软雅黑', 12)).place(relx=0.1, rely=0.15) - Label(root1, text='输入新的位置信息(例如:X省X市X区),若要清除信息请留空 : ').place(relx=0.097, rely=0.25) - wz = ttk.Entry(root1) - wz.place(relx=0.1, rely=0.3, relwidth=0.3) - bt = ttk.Button(root1, text='一键清空', command=lambda : qk(1)) - bt.place(relx=0.4, rely=0.296, relheight=0.053) - wz.delete(0, END) - wz.insert(0, address) - wz.focus_force() - btn1 = ttk.Button(root1, text='确定', command=lambda : xgxx(1, wz.get())) - btn1.place(relx=0.15, rely=0.7, relwidth=0.2, relheight=0.1) - btn3 = ttk.Button(root1, text='返回', command=lambda : fanhui(2)) - btn3.place(relx=0.65, rely=0.7, relwidth=0.2, relheight=0.1) - -def xgjwd(n): - global jd, wd, zt - if (latitude == '') : - lat = '未设置' - else : - lat = latitude - if (longitude == '') : - long = '未设置' - else : - long = longitude - if(n == 0): - ttk.Label(root1).place(relwidth=1, relheight=0.9, rely=0.12) - Label(root1, text='当前经度信息 : ' + long, font=('微软雅黑', 12)).place(relx=0.1, rely=0.15) - Label(root1, text='当前纬度信息 : ' + lat, font=('微软雅黑', 12)).place(relx=0.6, rely=0.15) - Label(root1, text='输入地点名,一键获取经纬度(测试功能,受限于服务器带宽,请勿频繁使用,使用时输入的地点越详细经纬度越精准,目前仅支持国内地址解析)').place(relx=0.1, rely=0.25) - map = ttk.Entry(root1) - map.place(relx=0.1, rely=0.3, relwidth=0.6, relheight=0.05) - bt = ttk.Button(root1, text='一键获取经纬度', command=lambda : jwdhq(map.get())) - bt.place(relx=0.7, rely=0.3, relheight=0.053) - zt = Label(root1, font=('微软雅黑', 10)) - zt.place(relx=0.4, rely=0.35) - Label(root1, text='通过第三方网站查询经纬度信息,由于学习通平台使用百度地图经纬度作为数据,因此通过百度地图查询的经纬度将比较准确:').place(relx=0.15, rely=0.4) - wz1 = ttk.Button(root1, text='百度地图官方查询', command=lambda : webbrowser.open("http://api.map.baidu.com/lbsapi/getpoint/index.html")) - wz1.place(relx=0.2, rely=0.45, relheight=0.07) - wz1 = ttk.Button(root1, text='其它第三方网站查询', command=lambda : webbrowser.open("https://www.qvdv.com/tools/qvdv-coordinate.html")) - wz1.place(relx=0.6, rely=0.45, relheight=0.07) - Label(root1, text='输入新的经度信息(范围-180~180,其中-180~0为西经,0~180为东经)').place(relx=0.047, rely=0.6) - Label(root1, text='若要清除信息请留空 : ').place(relx=0.047, rely=0.65) - jd = ttk.Entry(root1) - jd.place(relx=0.05, rely=0.7, relwidth=0.3) - bt1 = ttk.Button(root1, text='一键清空', command=lambda : qk(2)) - bt1.place(relx=0.35, rely=0.696, relheight=0.053) - Label(root1, text='输入新的纬度信息(范围-90~90,其中-90~0为南纬,0~90为北纬)').place(relx=0.547, rely=0.6) - Label(root1, text='若要清除信息请留空 : ').place(relx=0.547, rely=0.65) - wd = ttk.Entry(root1) - wd.place(relx=0.55, rely=0.7, relwidth=0.3) - bt2 = ttk.Button(root1, text='一键清空', command=lambda : qk(3)) - bt2.place(relx=0.85, rely=0.696, relheight=0.053) - jd.delete(0, END) - jd.insert(0, longitude) - wd.delete(0, END) - wd.insert(0, latitude) - jd.focus_force() - btn1 = ttk.Button(root1, text='修改经度信息', command=lambda : xgxx(2, jd.get())) - btn1.place(relx=0.15, rely=0.8, relwidth=0.2, relheight=0.1) - btn2 = ttk.Button(root1, text='修改纬度信息', command=lambda : xgxx(3, wd.get())) - btn2.place(relx=0.4, rely=0.8, relwidth=0.2, relheight=0.1) - btn3 = ttk.Button(root1, text='返回', command=lambda : fanhui(2)) - btn3.place(relx=0.65, rely=0.8, relwidth=0.2, relheight=0.1) - else: - Label(root1, text='当前经度信息 : ' + long, font=('微软雅黑', 12)).place(relx=0.1, rely=0.15) - Label(root1, text='当前纬度信息 : ' + lat, font=('微软雅黑', 12)).place(relx=0.6, rely=0.15) - -def jwdhq(address): - global zt - url="https://api.map.baidu.com/geocoding/v3/?address=%s&output=json&ak=n9ubyGbqBXtgaLIuBaH2tQcMO63koM55"%(address) - try: - res = requests.get(url) - except: - zt.configure(text='获取失败,请重试或通过第三方网站查询!', fg='red') - return - json_data = json.loads(res.text) - if json_data['status'] == 0 : - lat = json_data['result']['location']['lat'] # 纬度 - lng = json_data['result']['location']['lng'] # 经度 - jd.delete(0, END) - jd.insert(0, lng) - wd.delete(0, END) - wd.insert(0, lat) - zt.configure(text='获取成功!', fg='green') - else: - zt.configure(text='获取失败,请重试或通过第三方网站查询!', fg='red') - -def xgtplj(): - global tplj - ttk.Label(root1).place(relwidth=1, relheight=0.9, rely=0.12) - if (picname == '') : - pic = '未设置' - else : - pic = picname - Label(root1, text='当前拍照图片路径信息 : ' + pic, font=('微软雅黑', 12)).place(relx=0.1, rely=0.15) - Label(root1, text='选择图片 : ').place(relx=0.097, rely=0.25) - tplj = ttk.Entry(root1, state='readonly') - tplj.place(relx=0.1, rely=0.3, relwidth=0.3) - bt = ttk.Button(root1, text='浏览……', command=choose_file) - bt.place(relx=0.4, rely=0.296, relheight=0.053) - btn1 = ttk.Button(root1, text='确定', command=lambda : xgxx(4, tplj.get())) - btn1.place(relx=0.15, rely=0.8, relwidth=0.2, relheight=0.1) - btn2 = ttk.Button(root1, text='清除拍照图片路径信息', command=lambda : qk(4)) - btn2.place(relx=0.4, rely=0.8, relwidth=0.2, relheight=0.1) - btn3 = ttk.Button(root1, text='返回', command=lambda : fanhui(2)) - btn3.place(relx=0.65, rely=0.8, relwidth=0.2, relheight=0.1) - -def xgxx(n, x): - root1.attributes("-disabled", 1) - global address, latitude, longitude, picname - if (n == 1) : - if (x == '') : - answer = tkinter.messagebox.askokcancel('提示', '确定要清除位置信息吗?') - if answer : - address = x - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '位置信息已清除!') - else : - root1.attributes("-disabled", 0) - wz.focus_force() - return - else : - answer = tkinter.messagebox.askokcancel('提示', '确定要修改位置信息吗?') - if answer : - address = x - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '位置信息修改成功!') - else : - root1.attributes("-disabled", 0) - wz.focus_force() - return - elif (n == 2) : - if(x == ''): - answer = tkinter.messagebox.askokcancel('提示', '确定要清除经度信息吗?') - if answer: - longitude = x - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '经度信息已清除!') - else: - root1.attributes("-disabled", 0) - jd.focus_force() - return - else: - try: - x = float(x) - except: - tkinter.messagebox.showwarning('警告', '经度数值格式错误,请重试!') - root1.attributes("-disabled", 0) - jd.focus_force() - return - if (x < -180 or x > 180) : - tkinter.messagebox.showwarning('警告', '经度数值范围错误,请重试!') - root1.attributes("-disabled", 0) - jd.focus_force() - return - else: - answer = tkinter.messagebox.askokcancel('提示', '确定要修改经度信息吗?') - if answer : - longitude = str(x) - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '经度信息修改成功!') - else : - root1.attributes("-disabled", 0) - jd.focus_force() - return - elif (n == 3) : - if (x == '') : - answer = tkinter.messagebox.askokcancel('提示', '确定要清除纬度信息吗?') - if answer : - latitude = x - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '纬度信息已清除!') - else : - root1.attributes("-disabled", 0) - wd.focus_force() - return - else : - try: - x = float(x) - except: - tkinter.messagebox.showwarning('警告', '纬度数值格式错误,请重试!') - root1.attributes("-disabled", 0) - wd.focus_force() - return - if (x < -90 or x > 90) : - tkinter.messagebox.showwarning('警告', '纬度数值范围错误,请重试!') - root1.attributes("-disabled", 0) - wd.focus_force() - return - else : - answer = tkinter.messagebox.askokcancel('提示', '确定要修改纬度信息吗?') - if answer : - latitude = str(x) - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '纬度信息修改成功!') - else : - root1.attributes("-disabled", 0) - wd.focus_force() - return - elif (n == 4) : - if check(x): - answer = tkinter.messagebox.askokcancel('提示', '确定要修改拍照图片路径信息吗?') - if answer: - picname = x - if (basekey != '') : - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '拍照图片路径信息修改成功!') - else: - root1.attributes("-disabled", 0) - return - else: - tkinter.messagebox.showinfo('提示', '该文件格式非图片格式,请检查文件后重试!') - root1.attributes("-disabled", 0) - return - root1.attributes("-disabled", 0) - if (n == 1) : - xgwzxx() - elif (n == 2) : - xgjwd(1) - elif (n == 3) : - xgjwd(1) - elif (n == 4) : - xgtplj() - -def fanhui(n): - global L2 - if(n == 1): - cxid.destroy() - root.attributes("-disabled", 0) - webid.focus_force() - elif(n == 2): - try: - cxid.destroy() - idcx.focus_force() - except: - pass - finally: - root1.after_cancel(after_id) - root1.attributes("-disabled", 0) - root1.focus_force() - menu(2) - elif(n == 3): - root1.after_cancel(after_id) - try: - root1.after_cancel(after_kc) - except: - pass - try: - root1.after_cancel(after_ck) - except: - pass - LL.destroy() - L2.destroy() - menu(2) - elif (n == 4) : - root1.after_cancel(after_id) - lb.destroy() - welcome.destroy() - L2.destroy() - menu(2) - -def qk(n): - root1.attributes("-disabled", 1) - global address, latitude, longitude, picname - if(n == 1): - wz.delete(0, END) - wz.focus_force() - elif(n == 2): - jd.delete(0, END) - jd.focus_force() - elif(n == 3): - wd.delete(0, END) - wd.focus_force() - elif(n == 4): - answer = tkinter.messagebox.askokcancel('提示', '确定要清除拍照图片路径信息吗?') - if answer : - picname = '' - if(basekey != ''): - conf_save() - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '拍照图片路径信息已清除!') - else: - root1.attributes("-disabled", 0) - return - root1.attributes("-disabled", 0) - if (n == 1) : - pass - elif (n == 2) : - pass - elif (n == 3) : - pass - elif (n == 4) : - xgtplj() - -def fh(): - win.destroy() - root1.attributes("-disabled", 0) - btn8.focus_force() - -def xgmm(n, p, p2): - global basekey, mima1, mima3, win, mima4 - root1.attributes("-disabled", 1) - if(n == 1): - win = Toplevel() - win.geometry('300x200') - win.title('密码输入窗口') - win.resizable(False, False) - try: - win.iconbitmap('C:/title.ico') - except: - with open('C:/title.ico', 'wb+') as temp : - tempb64 = base64.b64decode(title) - temp.write(tempb64) - win.iconbitmap('C:/title.ico') - win.protocol("WM_DELETE_WINDOW", on_closing) - L1 = ttk.Labelframe(win, text='请输入原密码') - mima1 = ttk.Entry(L1, show="*") - mima1.pack() - mima1.focus_force() - L1.place(relx=0.1, rely=0.1) - btClose = ttk.Button(win, text='完成', command=lambda : xgmm(2, mima1.get(), '')) - btClose.place(relx=0.2, rely=0.7) - btb = ttk.Button(win, text='返回', command=fh) - btb.place(relx=0.6, rely=0.7) - mima1.bind("<Return>", lambda event : xgmm(2, mima1.get(), '')) - elif(n == 2): - key = basekey - basekey = p - try: - decrypt_oralce(information_path) - decrypt_oralce(conf_path) - encrypt_oracle(information_path) - encrypt_oracle(conf_path) - win.attributes("-disabled", 1) - tkinter.messagebox.showinfo('提示', '验证通过!') - win.attributes("-disabled", 0) - ttk.Label(win).place(relwidth=1, relheight=1) - L1 = ttk.Labelframe(win, text='请输入新密码') - mima3 = ttk.Entry(L1, show="*") - mima3.pack() - mima3.focus_force() - L2 = ttk.Labelframe(win, text='请再次输入新密码') - mima4 = ttk.Entry(L2, show="*") - mima4.pack() - L1.place(relx=0.1, rely=0.1) - L2.place(relx=0.1, rely=0.4) - btClose = ttk.Button(win, text='完成', command=lambda : xgmm(3, mima3.get(), mima4.get())) - btClose.place(relx=0.2, rely=0.7) - btb = ttk.Button(win, text='返回', command=fh) - btb.place(relx=0.6, rely=0.7) - mima3.bind("<Return>", lambda event : xgmm(3, mima3.get(), mima4.get())) - mima4.bind("<Return>", lambda event : xgmm(3, mima3.get(), mima4.get())) - except: - win.attributes("-disabled", 1) - basekey = key - tkinter.messagebox.showinfo('提示', '密码输入错误,请重试!') - win.attributes("-disabled", 0) - mima1.delete(0, END) - mima1.focus_force() - elif(n == 3): - if(p == '' and p2 == ''): - win.attributes("-disabled", 1) - tkinter.messagebox.showinfo('提示', '新密码不能为空!') - win.attributes("-disabled", 0) - mima3.focus_force() - elif(p == p2): - win.attributes("-disabled", 1) - decrypt_oralce(information_path) - decrypt_oralce(conf_path) - basekey = p - encrypt_oracle(information_path) - encrypt_oracle(conf_path) - tkinter.messagebox.showinfo('提示', '程序访问密码修改成功,请妥善保管!') - win.destroy() - root1.attributes("-disabled", 0) - else: - win.attributes("-disabled", 1) - tkinter.messagebox.showinfo('提示', '两次输入的密码不一致,请重试!') - win.attributes("-disabled", 0) - mima3.delete(0, END) - mima4.delete(0, END) - mima3.focus_force() - -def window_close_handle(): - root1.after_cancel(after_id) - root1.destroy() - -def windowclosehandle(): - about.destroy() - -def menu(n): - global lb, root1, btn8, address, latitude, longitude, picname, idcx, welcome, mainmenu - if(n == 1): - root.destroy() - root1 = Tk() - root1.geometry('1000x500') - root1.title('学习通自动签到程序正式版') - root1.resizable(False, False) - try: - root1.iconbitmap('C:/title.ico') - except: - with open('C:/title.ico', 'wb+') as temp : - tempb64 = base64.b64decode(title) - temp.write(tempb64) - root1.iconbitmap('C:/title.ico') - root1.protocol("WM_DELETE_WINDOW", window_close_handle) - mainmenu = Menu(root1) - menuHelp = Menu(mainmenu, tearoff=False) - mainmenu.add_cascade(label="帮助", menu=menuHelp) - menuHelp.add_command(label="关于", command=gy) - root1.config(menu=mainmenu) - thread_it(upgrade, 0) - ttk.Label(root1).place(relwidth=1, relheight=1) - lb = tkinter.Label(root1, text='', fg='blue', font=('微软雅黑', 10)) - lb.place(relx=0.387) - gettime() - welcome = Label(root1, text='欢迎'+name+'同学!', font=('微软雅黑', 15)) - welcome.place(relx=0.426, rely=0.05) - if(basekey == ''): - Label(root1, text='当前用户为临时登录,您所设置的签到相关信息仅本次登录有效,如需永久保存请设置程序访问密码!', fg='Red', font=('微软雅黑', 10)).place(relx=0.2, rely=0.7) - if(address == ''): - add = '未设置' - else: - add = address - if(latitude == ''): - lat = '未设置' - else: - lat = latitude - if(longitude == ''): - long = '未设置' - else: - long = longitude - if(picname == ''): - pic = '未设置' - else: - pic = picname - Label(root1, text='当前位置信息 : '+add, font=('微软雅黑', 10)).place(relx=0.1, rely=0.12) - Label(root1, text='当前经度信息 : '+long, font=('微软雅黑', 10)).place(relx=0.1, rely=0.17) - Label(root1, text='当前纬度信息 : '+lat, font=('微软雅黑', 10)).place(relx=0.6, rely=0.17) - Label(root1, text='当前拍照图片路径信息 : '+pic, font=('微软雅黑', 10)).place(relx=0.1, rely=0.22) - btn1 = ttk.Button(root1, text='一键监控全部课程签到', command=qbqd) - btn1.place(relx=0.1, rely=0.3, relwidth=0.3, relheight=0.1) - btn2 = ttk.Button(root1, text='普通监控模式', command=bfjk) - btn2.place(relx=0.6, rely=0.3, relwidth=0.3, relheight=0.1) - idcx = ttk.Button(root1, text='查询学校ID', command=window) - idcx.place(relx=0.1, rely=0.45, relwidth=0.3, relheight=0.1) - btn5 = ttk.Button(root1, text='修改位置信息', command=xgwzxx) - btn5.place(relx=0.6, rely=0.45, relwidth=0.3, relheight=0.1) - btn6 = ttk.Button(root1, text='修改经纬度信息', command=lambda : xgjwd(0)) - btn6.place(relx=0.1, rely=0.6, relwidth=0.3, relheight=0.1) - btn7 = ttk.Button(root1, text='修改拍照图片路径', command=xgtplj) - btn7.place(relx=0.6, rely=0.6, relwidth=0.3, relheight=0.1) - if(basekey == ''): - btn8 = ttk.Button(root1, text='设置配置文件访问密码', command=lambda: szmm(2)) - btn8.place(relx=0.1, rely=0.75, relwidth=0.3, relheight=0.1) - else: - btn8 = ttk.Button(root1, text='修改配置文件访问密码', command=lambda: xgmm(1, '', '')) - btn8.place(relx=0.1, rely=0.75, relwidth=0.3, relheight=0.1) - btn9 = ttk.Button(root1, text='退出当前学习通账号', command=cxdl) - btn9.place(relx=0.6, rely=0.75, relwidth=0.3, relheight=0.1) - root1.mainloop() - -def main(): - global queding, chongxindl - try : - text_r() - except : - file = open(realpath+"/"+activeid_path, 'x', encoding='utf-8') - file.close() - try : - open(realpath+"/"+conf_path, 'r', encoding='utf-8').close() - open(realpath+"/"+information_path, 'r', encoding='utf-8').close() - ttk.Label(root).place(relwidth=1, relheight=1) - ttk.Label(root, text='欢迎使用学习通自动签到程序!请输入程序访问密码:', state='normal', font=('微软雅黑',14)).place(relx=0.05, rely=0.1, relwidth=0.5) - password = ttk.Entry(root, show="*", justify=LEFT) - password.place(relx=0.55, rely=0.12, relwidth=0.35) - password.focus_force() - queding = ttk.Button(root, text='确定', command=lambda: test(password.get())) - queding.place(relx=0.15, rely=0.4, relwidth=0.2, relheight=0.1) - chongxindl = ttk.Button(root, text='重新登录', command=lambda: dl(1, 0)) - chongxindl.place(relx=0.65, rely=0.4, relwidth=0.2, relheight=0.1) - password.bind("<Return>", lambda event:test(password.get())) - except: - dl(1, 1) - -try: - with open(realpath+"/oldprogram", 'r') as old : - p = old.read() - create_shortcut_to_desktop() - create_shortcut_to_startmenu() - os.system("DEL /F /A /Q "+p) - os.system("DEL /F /A /Q oldprogram") -except: - pass -root = Tk() -root.geometry('1000x300') -root.title('学习通自动签到程序正式版') -root.resizable(False, False) -with open('C:/title.ico','wb+') as temp: - tempb64 = base64.b64decode(title) - temp.write(tempb64) -root.iconbitmap('C:/title.ico') -main() -root.mainloop()