吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8149|回复: 5
收起左侧

[会员申请] 申请会员ID:KennyAss【申请通过】

[复制链接]
吾爱游客  发表于 2019-2-4 20:09
1、申请ID:KennyAss

2、个人邮箱:1091192337@qq.com
3、原创技术文章:记一次对作业发表软件的html封包分析以及对作业图片的分析(本人学生,因作业繁重而有感开发这个程序



发表作业软件:小鑫作业
使用工具:VisualStudio(C#),Fidder抓包工具
NuGet程序依赖项:AipSdk(百度AI支持库),HAP(HtmlAgilityPack),Newtonsoft.Json(Json解析)

首先手机连接Fidder端口,打开fidder,打开小鑫作业。

获取登录Token

登录,获取Token

登录,获取Token
,点击Json格式,发现这是Json格式的,

然后用Json解析出
[C#] 纯文本查看 复制代码
    public class Login_1    {
        /// <summary>
        /// 
        /// </summary>
        public string userName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int userId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string sqlName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string realName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string schCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string andToken { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int schoolId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string schName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int userRole { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string schMark { get; set; }
    }
    public class Root_1
    {
        /// <summary>
        /// 登录成功
        /// </summary>
        public string msg { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Login_1 data { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string state { get; set; }
    }


然后分析登录表单,写出模拟登录代码

[C#] 纯文本查看 复制代码
System.Net.WebClient WebClientObj = new System.Net.WebClient();

            System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();

            PostVars.Add("userPass", textBox2.Text.Trim());

            PostVars.Add("userName", textBox1.Text.Trim());

            PostVars.Add("platform", "android");

            try

            {

                WebClientObj.Encoding = Encoding.UTF8;

                byte[] byRemoteInfo = WebClientObj.UploadValues("http://xxzy.xinkaoyun.com:8081/holidaywork/login", "POST", PostVars);

                string sRemoteInfo = System.Text.Encoding.UTF8.GetString(byRemoteInfo);

                LoginObj = JsonConvert.DeserializeObject<Root_1>(sRemoteInfo);

                PostVars.Clear();

                PostVars.Add("token", LoginObj.data.andToken);

                byRemoteInfo = WebClientObj.UploadValues("http://xxzy.xinkaoyun.com:8081/holidaywork/student/getStudent", "POST", PostVars);

                sRemoteInfo = System.Text.Encoding.UTF8.GetString(byRemoteInfo);

                MessageBox.Show(LoginObj.msg);

                LoginObj_2 = JsonConvert.DeserializeObject<Root_2>(sRemoteInfo);

                if (LoginObj.msg == "登录成功")
                {
                    this.Hide();
                    main.Show();
                }
                //这是获取返回信息 
            }

            catch
            {

            }


返回值是一个Token,这个Token以后会有用

Token获取科目信息

Token获取科目信息


上面的参数是提交一个Token,我们照猫画虎,继续写出获取科目的代码然后用JSON解析。

同样用一个结构体保存,然后获取某一科目的详细信息,这里的表单内容就是Token,StuID,...都是上几步获取的,我们这里最主要提供指定科目的SID就好

返回值我们只要taskId(代表指定作业代号)

我们就直接一步步往下走获取指定的试卷题目。

同上,先解析,提取数据,这里到了关键:这里的teaTitle=<p><img title="image.png" alt="image.png" src="http://zuoye2.xinkaoyun.com/uploadImg/image/20190122/6368377149812397507548687.png"/></p>明显就是一个URL,我们打开它,会发现 QQ截图20190204200119.png 明显就是一个图片,但是问题是我们需要利用Html解析到src的内容

用HAP就很容易办到,关键代码:
[C#] 纯文本查看 复制代码
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(item.teaTitle);

                HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//img[@src]");

                if (hrefList != null)
                {
                    foreach (HtmlNode href in hrefList)
                    {
                        HtmlAttribute att = href.Attributes["src"];
                        if (att != null)
                        {
                            string url = att.Value;

                            if (url != null)
                            {
                                Image _image = Image.FromStream(WebRequest.Create(url).GetResponse().GetResponseStream());

                                imageList1.Images.Add(_image);

                                List_images.Add(_image);
                            }
                            break;
                        }
                    }
                }

这里有一个图片集,这段代码最后循环遍历,把Image添加进去。

最后再用ListView把他显示出来。

最终文字识别还是没有能自己写出来,毕竟自己还是个高一学生,没有能力写出OCR来。只能先用百度AI的文字识别了。

[C#] 纯文本查看 复制代码
                Ocr ocr = new Ocr(ApiKey, SecretToken);

                var _bytes = imageToByte(List_images[listView1.SelectedItems[0].Index]);

                var jObj= this.Text.IndexOf("数学")<0?ocr.GeneralBasic(_bytes):ocr.AccurateBasic(_bytes);//因为数学比较坑,测试的过程中出了比较多的错误,这里特判了一下数学


最后调用外部浏览器,用百度搜索问题得到答案。

[C#] 纯文本查看 复制代码
            if (textBox1.Text != string.Empty)
            {
                CallWebBrowser("http://www.baidu.com/s?wd=" + HttpUtility.UrlEncode(textBox1.Text.Trim(), Encoding.GetEncoding("gb2312")));
            }


[C#] 纯文本查看 复制代码
        public static void CallWebBrowser(string URL)
        {
            System.Diagnostics.Process.Start("explorer.exe", URL);
        }


这两个函数在这里。

最后,希望自己能够审核通过,如果审核通过,我会更加努力的在论坛学习更多的技术

获取指定作业的题目

获取指定作业的题目

获取指定科目(SID)的详细作业内容

获取指定科目(SID)的详细作业内容

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-2-8 19:50
I D:KennyAss
邮箱:1091192337@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:过程有些简单,考虑到小朋友有很好的动手能力给予通过,期待未来可以有更优秀的分享。
KennyAss 发表于 2019-2-10 20:03 来自手机
lu_ 发表于 2019-2-11 21:52
同是高一,为何楼主这么优秀。以后跟着楼主如何
chengerxinCHENG 发表于 2019-3-14 19:53
文章挺好的&#128516;
fuckyoua 发表于 2019-3-15 11:33 来自手机
KennyAss 发表于 2019-2-10 20:03
新人报道

see ass go玩家?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 12:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表