Blog

你好-ljyh

Me

你好 ljyh #

近来安好

已进入冬了,你找到温暖了吗? 该不会今年又会生冻疮吧,那你的英语又有好好学习吗, 不过这些都不是重要的事情,你知道你要做些什么吗。 就这样吧,再见!

ljyh 你好 #

好得很嘞

好冷啊啊啊,可是,真的很冷诶

别太抽象,应该不会长冻疮吧,我也说不准,但愿不要。 可是,我根本不想学习诶

琐碎的事情,烦人。 放心吧,那些事情我都记得,但也不一定,捏捏

为你,千千万万遍

逆向3

Re

所需工具

  • 逍遥模拟器
  • lamda
  • jadx
  • frida
  • 一双手

抓包 #

软件有root检测和代理检测,这里不讲绕过。代理不要挂。 安装lamda:

set HTTPS_PROXY=127.0.0.1:7890
git clone https://github.com/rev1si0n/lamda.git

rev1si0n/lamda: ⚡️ Android reverse engineering & automation framework | 史上最强安卓抓包/逆向/HOOK & 云手机/远程桌面/自动化辅助框架,你的工作从未如此简单快捷。

下载lamda-server-x86_64.tar.gz 以及busybox-x86_64

先把模拟器的root打开

# 在你下载好的目录打开终端
adb push lamda-server-x86_64.tar.gz /data/local/tmp
adb push busybox-x86_64 /data/local/tmp


adb shell
# 以下命令都是在adb shell中执行的
su

chmod 755 /data/local/tmp/busybox-x86_64
cd /data

/data/local/tmp/busybox-x86_64 tar -xzf /data/local/tmp/lamda-server-x86_64.tar.gz

rm /data/local/tmp/lamda-server-x864.tar.gz
rm /data/local/tmp/busybox-x86_64

启动lamda

...

我要去比赛了

Me

如题,去达州,臭傻逼移动开发,抄你妈还内网,让不让人玩了。但是学校公费,嘻嘻嘻,但是明天就要去了,只能抱抱佛脚了。

更新 #

c94b5b8078ac1c09b16cb58534a03cba.md.jpeg b9a4c9b485157ebfa5e8209591962234.jpeg 55973cc0572708edf335202ea4b9b0c0.jpeg

wuwuwu,怎么都是牛马啊,还好我也是木流牛马

畅通英语-全书-高清图片链接

1 Window on the world #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_6a4a6879d044476e5e8b8dca3b2d3d3e.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_6a4a6879d044476e5e8b8dca3b2d3d3e.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_cfcebfe3982773d77f165a7aad013795.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_d70378eac179796d98f27c00226636bc.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_00bb3ee963b35c3ad84fcc6f0d999ab4.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_02f55083340252cdb336e463b19da074.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_f5faef8777663b8a455031c46596c667.jpg

2 How strange! #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_8dbbb37e5acf8fb28e00a4b0e150bcf2.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_0e671baa1820f5e8d3526dbed632a32a.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_c2458506b07dfa9bd243cefdbdded6f0.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_04a544b2c68c32aa5b13f175591b10c0.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_c0185575a25d4766145d5f15df4ac717.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_f65b7a6bdbca10b14cb65a081b11973e.jpg

3 Food for thought #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_8e9b180dfd3d0daaca955f18f3552743.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_663bd570f1176ebc0ae51eb820a3f5d5.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_e0605f1cffdbcbb01a8918fc93d8384c.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_4d11bd07e376481181bf7d5f56795d1a.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_800d933e1d96e620ccad24132ad30d31.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_c1b8d426f2c5af496c7c8b953d802605.jpg

4 Time on your hands #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_e09ded62d955d7332d51961787a56914.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_a05493968877474546fddfee853311fd.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_2a8fd2d2378d81e6d49179fd7151cfd1.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_c57ecf7de2303ad095a49ddf1e6e3e9d.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_5d39ad3ba3ee1a1b2b02dc75f9c9d8bd.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_54f3c6b22d53b01f4d1ef347e20b718a.jpg

Revision: Units 1-4 #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_2e8b3ad339018af7ec60a9a0cc3d856f.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_bf3c879a12c3178f38098ee8de08a591.jpg

Task 1 #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_f6a72be9a167613e890249033776688b.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_0edf76cc39301b3794296164fbcd165f.jpg

5 Get the message #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_294783f669619e10e0d596915475b4a8.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_8883ef4da4ef5f4da019c2d3b20266da.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_9df3633fcf31645119b4d1d8cc24a351.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_5524681e7db9deaea988bda83a2b5cde.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_47c4c36472a69e1c75a7654fc8b88b70.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_01b5cb599e072e7639c64e4a3ec35e9c.jpg

6 Urban life #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_a839bceb070cb37c8cdc9d9b714cd7c0.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_ca3d27042b9827364f06c4a26925b809.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_2529970249a5245574d637bb80ac604e.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_da5b63d91463a5ada0ba0a9e124f407e.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_fb4c6ac72ba019c4ecd53dbcf972e4b9.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_9a79ab7fe2c469fb90750ff2f8db78f5.jpg

7 Bon voyage! #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_5a5c49ff35a48c840911c20f23acfe62.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_98af71a8585c19d1a6e596269aa18c82.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_f1fdb683e1b5606e86c7d95882f8743e.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_2e4e53b66b737bbdf666c536ef545757.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_0e3df56587cf506be321158c1f5cd4ba.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_54c6178e87aecec61c0c4e0f33463bd0.jpg

8 Down to earth #

https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_259d3c7c44758f2f623df0e9a11458df.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_de442cf6a05153062dfe975bd4a7fc0b.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_590da7d36b59ad93b6582c6335d70b6c.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_446fe508cc53e6a179589f1c5fa85ed3.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_2eeb7fd5d6d2a5f27b1dbc97389ca3f6.jpg https://cdn-img.daxuesoutijiang.com/bookimg/dxbook_5af1b7c69b9ba723d9af0e1bb0d06b47.jpg

...

c 作业2

C

题2 #

题2

#include <stdio.h>
#include <math.h>
int main()
{
	float f,x;
	printf("请输入一个数\n");
	scanf("%f",&x);
	
	switch ((int)(x/1)) {
	case 0:
		f=0;
		break;
	case 1:
		f=3*x+5;
		break;
	case 2:
		f=3*sin(x)-1;
		break;
	case 3:
		f=log(1+x*x);
		break;
		
	case 4:
		f=log10(x*x-2*x)+5;
		break;
	default:
		f=-1;
		break;
	}
	printf("输入:%f,结果:%f",x,f);
}

题3 #

题3

#include <stdio.h>
int main()
{
	float g,n;
	float m=0;
	printf("请输入重量\n");
	scanf("%f",&g);
	if(g>50) {
		printf("拒收");
		return 0;
	}
	n=g;
	switch ((int)g/5) {
		case 10:
		case 9:
		case 8:
		case 7:
		case 6:
			m+=5.0*(g-30);
			g=30;
		case 5:
		case 4:
			m+=4.5*(g-20);
			g=20;
		case 3:
		case 2:
			m+=4.0*(g-10);
			g=10;
		case 1:
			m+=3.5*(g-5);
			g=5;
		case 0:
			m+=3.0*g;
			break;
		default:
			m=-1;
			break;
	}
	
	printf("重量:%.2fkg,快递费:%.2f",n,m);
} 

某图库

一点点加密,随便还找了一个oss直连

import random
import time
def encode(_str):
    staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN"
    encodechars = ""
    for i in range(len(_str)):
        num0 = staticchars.find(_str[i])
        if num0 == -1:
            code = _str[i]
        else:
            code = staticchars[(num0 + 3) % 62]
            
        num1 = random.randint(0, 61)
        num2 = random.randint(0, 61)
        encodechars += staticchars[num1] + code + staticchars[num2]
    return encodechars

def timestamp():
    return str(int(time.time()))
def sing():
   return encode("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcGVuaWQiOiJvMTExMTExMTExMTExMTExMTExMTEiLCJleHBpcmVfdGltZSI6MTY5NzMwNDUzNX0=.)FxVKiDH9rnMKEuTNMkRa7ibMrhp-Vdi-FHBgWOomdaQ###"+timestamp())

import requests

headers = {
    'authority': 'stapi.youpengw.com',
    'accept': '*/*',
    'accept-language': 'zh-CN,zh;q=0.9',
    'content-type': 'application/json',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'sign': sing(),
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8447',
    'xweb_xhr': '1',
}

json_data = {
    'homepage_id': '233033',
    'classify_id': 5,
    'sort_type': 'default',
    'album_id': 0,
    'uid': 219050,
    'page': 1,
    'limit': 32,
    'action': 'cover',
    'version': 1,
    'appid': 'wx111117',
    'openid': '1111111',
    'timestamp': 1697353429134,
}

response = requests.post('https://xxx.xxxx.com/miniwechat/v1/natujun/photoList', headers=headers, json=json_data)
k=response.json()
s=[]
for i in k['data']['photoList']:
    s.append(i['url'])
print(s)

c语言作业23/10/10

C

编程题7 #

#include <stdio.h>  
  
int main() {  
    int num, a, b, c, d;  
    printf("请输入一个四位数:");  
    scanf("%d"&num);  
    if (num >= 1000 && num <= 9999) {  
        a = num % 10;  
        b = num / 100 % 10;  
        c = num / 10 % 10;  
        d = num / 1000;  
        printf("个位:%d,十位:%d,百位:%d,千位:%d", a, c, b, d);  
    } else {  
        printf("重新输入");  
    }  
    return 0;  
  
}

编程题8 #

#include <stdio.h>  
#define PAI 3.1415926  
int main()  
{  
    int r;  
    printf("请输入半径:");  
    scanf("%d",&r);  
    printf("圆的半径=%d, 圆的直径=%d, 圆的周长=%.2f",  
        r,  
        2*r,  
        PAI*r*2  
        );  
    return 0;  
}

编程题9 #

#include <stdio.h>
#define PAI 3.1415926
int main()
{
    int r;
    printf("请输入半径:");
    scanf("%d",&r);
    printf("半径=%d, 周长=%.2f, 面积=%.2f",
        r,
        2* PAI*r,
        PAI*r*r
        );
    return 0;
}

编程题11 #

#include <stdio.h>
#include <math.h>
int  main()
{
    double  a=3,b=4,c=6;
    double p,s;
    if (a+b>c && a+c>b && b+c>a)
    {
        p=(a+b+c)/2;
        s= sqrt (p*(p-a)*(p-b)*(p-c));
        printf ( "面积为%lf\n" , s);
    }
    else  printf ( "无法构成三角形\n" );
    return  0;
}

编程题12 #

#include <stdio.h>
#include <math.h>
int  main()
{
    int a,b;
    puts("请输入两个整数");
    scanf("%d,%d",&a,&b);
    printf("和=%d,差=%d,积=%d,商=%.2f,余数=%d",
        a+b,
        a-b,
        a*b,
        a/(float)b,
        a%b
    );
}

编程题13 #

#include <stdio.h>
#include <math.h>
#define PAI 3.1415926
//圆面积
#define get_round_area(r) PAI * r * r
//圆周长
#define get_round_perimeter(r) 2 * PAI * r
//球体表面积
#define get_sphere_Sarea(r) 4 * PAI * r *4 * PAI*  r
//球体体积
#define get_sphere_volume(r) 4.0 / 3 * PAI * r * r * r
//圆柱体积
#define get_cylinder_vloume(r,h) get_round_area(r) * h
int main() {
    
    float r,h;
    printf("请输入圆的半径和圆柱的高\n");
    scanf("%f,%f",&r,&h);
    printf("半径=%.2f,周长=%.2f,面积=%.2f,圆球表面积=%.2f,圆球体积=%.2f,圆柱体积=%.2f",
        r,
        get_round_perimeter(r),
        get_round_area(r),
        get_sphere_Sarea(r),
        get_sphere_volume(r),
        get_cylinder_vloume(r,h)
        );
    return 0;
}

编程题14 #

#include <stdio.h>  
#define PAI 3.1415926  
  
int main()  
{  
    int r;  
    puts("请输入半径");  
    scanf("%d",&r);  
    printf("直径=%d, 周长=%.2f",2*r,PAI*r*2);  
    return 0;  
}

编程题15 #

#include <stdio.h>

int main()
{
    int a,b;
    puts("请输入两个整数");
    
    scanf("%d,%d",&a,&b);
    printf("a=%d, b=%d",a,b);
    return 0;
}

编程题16 #

...

flutter 逆向小计

某个淘金社区,登陆有md5加密

用blutter 解析一下,找到hash_update的地址,放到frida的脚本中,在console的下面加一句

console.log('hexdump'+hexdump(args[0]))

打印出来4个uint32List,虽然看不懂,但是我们打印了hex

多看几次知道有随机的东西,在多看几次就知道应该是时间戳末尾在控制,反复测试得到所有出现过的字符,易得脚本


import requests
import hashlib
import time
def get_data(p):

    A=['gcw7eeh5','eegc15nnccccoqh5r7','15gcnncc','h5ccccgc15nnee/i','15gcnnq4oq/ih5oqccccee','15cc/ir7oqnnq4oqh5','nncc/i','h515r7q4oqcc','oqoqnnr7q4/i','h5nn']

    B=['eeoqh5','','h5ccoqeer7','oqr7','r7','oqccgc','oqccgcoqh515r7oqq4','oqgcoqnn/i','h515oqcc','oq']

  
    C=['','','/iq4','q4','op','','','','gc','2115oqr7q4/ioqccgc']
    # 16位时间戳
    t=str(int(time.time()*1000000))
    k=int(t[-1])

    # B164D0C43EDB3BAD89D1A073EBE9691D
    # 为固定值,可能跟随app版本所迭代
    
    #一下情况特殊出现,需要对换位置
    if k==8 or k==5:

        message= 'action=sendcode&phone={}&verifytoken={}&verifycodes={}{}B164D0C43EDB3BAD89D1A073EBE9691D..{}W1W2W3W4W5W6W7W8W901020304050607..{}{}'.format(p,'{system::verifytoken}','{system::verifytoken}',A[k],B[k],C[k],t)

    else:

        message= 'action=sendcode&phone={}&verifytoken={}&verifycodes={}{}W1W2W3W4W5W6W7W8W901020304050607..{}B164D0C43EDB3BAD89D1A073EBE9691D..{}{}'.format(p,'{system::verifytoken}','{system::verifytoken}',A[k],B[k],C[k],t)

    # print(message)
    return {'action':'sendcode','phone':p,'verifytoken':hashlib.md5(message.encode()).hexdigest(),'verifycodes':t}

data=get_data('19999994444')

resp=requests.get('http://bbs.taojingdaohang.cn/index.php',params=data)

print(resp.text)

测试正常发送短信

c donut

C

C语言旋转甜甜圈

#include <stdio.h>
#include <math.h>
#include <cstring>
#include <Windows.h>

void usleep(__int64 usec)
{
    HANDLE timer;
    LARGE_INTEGER ft;

    ft.QuadPart = -(10 * usec);

    timer = CreateWaitableTimer(NULL, TRUE, NULL);
    SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
    WaitForSingleObject(timer, INFINITE);
    CloseHandle(timer);
}

int main() {
    float A = 0, B = 0;
    float i, j;
    int k;
    float z[1760];
    char b[1760];
    printf("\x1b[2J");
    for (;;) {
        memset(b, 32, 1760);
        memset(z, 0, 7040);
        for (j = 0; j < 6.28; j += 0.07) {
            for (i = 0; i < 6.28; i += 0.02) {
                float c = sin(i);
                float d = cos(j);
                float e = sin(A);
                float f = sin(j);
                float g = cos(A);
                float h = d + 2;
                float D = 1 / (c * h * e + f * g + 5);
                float l = cos(i);
                float m = cos(B);
                float n = sin(B);
                float t = c * h * g - f * e;
                int x = 40 + 30 * D * (l * h * m - t * n);
                int y = 12 + 15 * D * (l * h * n + t * m);
                int o = x + 80 * y;
                int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);
                if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {
                    z[o] = D;
                    b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
                }
            }
        }
        printf("\x1b[H");
        for (k = 0; k < 1761; k++) {
            putchar(k % 80 ? b[k] : 10);
            A += 0.00004;
            B += 0.00002;
        }
        usleep(30000);
    }
    return 0;
}

另一份

...

某刷课

无任何难度,android rsa,第二次加入了人脸识别,幌子,直接用实名的人脸绕过


from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64,requests

KEY='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3Vsn6GuSivbc0mh1QFDjFVMdkb7lcAfsGdw6WuR0yM4GBP5MCJr301VX5aQucOKmpnpR4mhMSaCG0AVbK9VBNlghFcihfn3u4uMPGtqtXzKSJNZmLrzrS7Xd0ecUcAGHAnpEnXXgoUoYrAkthwKTBDayEIygQBrq+nMX53gST9QIDAQAB'
def RSA_encrypt(clear):
    if clear=='':
        return '' 
    rsa_key = RSA.import_key(base64.b64decode(KEY))
    cipher = PKCS1_v1_5.new(rsa_key)
    return base64.b64encode(cipher.encrypt(str(clear).encode('utf-8'))).decode()

def course_list():
    url='http://app.lfanpei.com/api/index/apiSafeLearning/learningCourseDetail'
    data={'apiToken':'','classId':classid,'courseId':courseId}
    data={k:RSA_encrypt(v) for k,v in data.items()}
    data['apiToken']=TOKEN
    #print(data)
    result=requests.post(url,data=data)
    # print(result.text)
    cl=[]
    for i in result.json()['data']['apiSafeCourseDetail']['safeCourseChaptersList']:
        for j in i['apiSafeCourseviewList']:
            if j['faceContrastTimes']!=1:
                face_Comparison()
                return 0
            if j['viewOver']!=1:  # 1 为已完成的
                cl.append([j['viewId'],TIME,j['courseViewHours'],j['viewTitle']])
            else:
                print('已完成',j['viewTitle'])

    return cl

def learm_update():
    url='http://app.lfanpei.com/api/video/apiSafeView/saveVideoPlayProgress'
    
    data={'apiToken':'','classId':classid,'courseId':courseId,'viewfileId':viewfileid,'curPercent':'100','curChapter':'0','viewTime':TIME,'curView':'1','viewOver':'1'}
    data={k:RSA_encrypt(v) for k,v in data.items()}
    data['apiToken']=TOKEN
    result=requests.post(url,json=data)
    print('\t'+result.text)
    if '不符' in result.text:
        print('--------------- id ',viewTitle,courseViewHours)
        print('exit-----------')
        exit()
def learm_begin():
    url='http://app.lfanpei.com/api/video/apiSafeView/updateVideoBeginTime'
    data={'apiToken':'','classId':classid,'courseId':courseId,'viewfileId':viewfileid,'ip':'127.0.0.1'}
    data={k:RSA_encrypt(v) for k,v in data.items()}
    data['apiToken']=TOKEN
    result=requests.post(url,data=data)
    print('\t'+result.text)
def learm_list():
    data = {'apiToken': TOKEN}
    result = requests.post('http://app.lfanpei.com/api/index/apiSafeLearning/oneClickLearningIndex', data=data)
    # print(result.text)
    ll=[]
    for i in result.json()['data']['learningIndexData']['classmateLearningList']:
        ll.append([i['classId'],i['name']])
        # print(i['classId'],i['name'])

    return ll

# 人脸图片对比
def face_Comparison():
    c=requests.get(get_face_img()).content
    files={'headPictureFile':c}
    data={'apiToken':'',
        'buisnessId':classid,
        'buisnessType':1,
        'viewId':courseid,
        'courseId':courseId
    }
    data={k:RSA_encrypt(v) for k,v in data.items()}
    data['apiToken']=TOKEN
    result=requests.post('http://app.lfanpei.com/api/liveCheck/apiSafeFace/faceComparison',data=data,files=files)
    print(result.text)
def get_face_img():
    url='http://app.lfanpei.com/api/user/apiSafeUserInfo/queryUserClassInfo'
    data={'apiToken':'','classId':classid}
    data={k:RSA_encrypt(v) for k,v in data.items()}
    data['apiToken']=TOKEN
    result=requests.post(url,data).json()
    # print(result)
    return result['data']['apiClassInformationPo']['apiUserDataSubmit']['picture']


# 暂时无用
# def get_classid():
#     url='http://app.lfanpei.com/api/user/apiSafeUserInfo/dataRevision'
#     result=requests.post(url,data={'apiToken':TOKEN}).json()
#     return result['data']['classList'][0]['class_id']
TOKEN='Api eyJhbGciOiJIUzUxMiJ9.eyJhcGlfbG9naW5fdXNlcl9rZXkiOiIzODgwOCNhNzUwMzljYy1mYjUyLTRjZWUtYjY5Ny0zMzRlMTI2YjNjNmIifQ.yQpzqsx1xP4AEmPh_goIQJY61mVTcGWS3Wdqx5FRAgrC89Mm5g_-OYWSTK_kR0bTELxxyoRvDkhxV1n-iOpweQ'
courseId='1603'
classid='279'
viewfileid='3410'
# 设置一个时间 200000——6000000
TIME='510000'
# face_Comparison()


# learm_begin()
# learm_update()


# print(get_face_img())


learm_type=1  # 1->一键学习
if __name__ == '__main__':
    if learm_type:
        for classid,learm_title in learm_list():
            print('当前学习classid',classid,learm_title)
            for viewfileid,TIME,courseViewHours,viewTitle in course_list():
                print(viewfileid,TIME,courseViewHours,viewTitle)
                # print('\t当前课程courseid',courseid,viewTitle,courseViewHours)
                learm_begin()
                learm_update()
    else:
        if TOKEN and courseid:
            for courseid,TIME,courseViewHours,viewTitle in course_list():
                print('当前课程courseid',courseid,viewTitle,courseViewHours)
                learm_begin()
                learm_update()


# eyJhbGciOiAiTm9uZSJ9.eyJhcGlfbG9naW5fdXNlcl9rZXkiOiAiMzc0ODAjODAzYzk3MTItZTYwOC00YTM4LWE1ZjgtNGE5ZGQzNDQxYjA3In0K.