摸索了好久,最后还是从网络安全下手,篡改数据包。

最终的效果,点击添加小米空白卡便可生成一张自定义数据的门禁卡。【最终测试,可以突破2张限制,最多添加5张门禁卡】

思路:

因为门卡模拟的通道必须要读取一张未加密的卡才能触发向服务器发送添加卡片及卡片信息的请求,

所以我不在门禁卡模拟那里添加,太麻烦了。

我选择添加小米空白卡的选项,然后手机就会向服务器发送添加小米空白卡的请求。

我通过fiddler抓包神器拦截这个POST请求,并将数据包篡改成添加门禁卡的类型,同时将想添加的UID和扇区数据同时篡改。

至此,便实现向服务器发送添加自定义NFC卡数据的功能,服务器便会返回一些命令,手机再使用这些命令自动写入手环。

上面是大概思路,我自己肯定成功了。

我编写了一个fiddler脚本,自动拦截数据包并篡改成想要的UID和数据块。

上代码:

//自定义代码// 自定义的UID在这里修改
        var UID = "1A2B3C4D";//卡IDvar isMusicRequest = 0;// 判断是否为目标请求if ((oSession.host == "api-mifit.huami.com")&&(oSession.fullUrl.Contains("nfc/accessCard/script/init")||oSession.fullUrl.Contains("nfc/accessCard/script/request"))){isMusicRequest = 1;}// 修改请求体JSON串if (isMusicRequest == 1){// 1, 获取Request Body中字符串var requestStringOriginal =  oSession.GetRequestBodyAsString();//FiddlerObject.log(responseStringOriginal);    // 可在控制台中输出Log// 2, 转换为可编辑的JSONObject变量var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal)// 3, 修改JSONObject变量// 3.1修改字段requestJSON.JSONObject['fareCardType'] = "0";requestJSON.JSONObject['fetch_adpu_mode'] = "SYNC";requestJSON.JSONObject['sak'] = "08";requestJSON.JSONObject['uid'] = UID;requestJSON.JSONObject['aid'] = "";requestJSON.JSONObject['atqa'] = "0400";requestJSON.JSONObject['action_type'] = "copyFareCard";// 自定义的UID和扇区内容在这里修改requestJSON.JSONObject['blockContent'] = UID + "b208040062636465666768690000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff";// 4, 重新设置Request Bodyvar requestStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(requestJSON.JSONObject);oSession.utilSetRequestBody(requestStringDestinal);}        

上面的代码请添加到flidder的规则->自定义规则-> 这个函数中static function OnBeforeRequest(oSession: Session) {}

代码添加好后效果如下:static function OnBeforeRequest(oSession: Session)

static function OnBeforeRequest(oSession: Session) {// Sample Rule: Color ASPX requests in RED// if (oSession.uriContains(".aspx")) {    oSession["ui-color"] = "red";    }// Sample Rule: Flag POSTs to fiddler2.com in italics// if (oSession.HostnameIs("www.fiddler2.com") && oSession.HTTPMethodIs("POST")) {    oSession["ui-italic"] = "yup";    }// Sample Rule: Break requests for URLs containing "/sandbox/"// if (oSession.uriContains("/sandbox/")) {//     oSession.oFlags["x-breakrequest"] = "yup";    // Existence of the x-breakrequest flag creates a breakpoint; the "yup" value is unimportant.// }if ((null != gs_ReplaceToken) && (oSession.url.indexOf(gs_ReplaceToken)>-1)) {   // Case sensitiveoSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ReplaceTokenWith); }if ((null != gs_OverridenHost) && (oSession.host.toLowerCase() == gs_OverridenHost)) {oSession["x-overridehost"] = gs_OverrideHostWith; }if ((null!=bpRequestURI) && oSession.uriContains(bpRequestURI)) {oSession["x-breakrequest"]="uri";}if ((null!=bpMethod) && (oSession.HTTPMethodIs(bpMethod))) {oSession["x-breakrequest"]="method";}if ((null!=uiBoldURI) && oSession.uriContains(uiBoldURI)) {oSession["ui-bold"]="QuickExec";}if (m_SimulateModem) {// Delay sends by 300ms per KB uploaded.oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded.oSession["response-trickle-delay"] = "150"; }if (m_DisableCaching) {oSession.oRequest.headers.Remove("If-None-Match");oSession.oRequest.headers.Remove("If-Modified-Since");oSession.oRequest["Pragma"] = "no-cache";}// User-Agent Overridesif (null != sUA) {oSession.oRequest["User-Agent"] = sUA; }if (m_Japanese) {oSession.oRequest["Accept-Language"] = "ja";}if (m_AutoAuth) {// Automatically respond to any authentication challenges using the // current Fiddler user's credentials. You can change (default)// to a domain\\username:password string if preferred.//// WARNING: This setting poses a security risk if remote // connections are permitted!oSession["X-AutoAuth"] = "(default)";}if (m_AlwaysFresh && (oSession.oRequest.headers.Exists("If-Modified-Since") || oSession.oRequest.headers.Exists("If-None-Match"))){oSession.utilCreateResponseAndBypassServer();oSession.responseCode = 304;oSession["ui-backcolor"] = "Lavender";}//自定义代码// 自定义的UID在这里修改var UID = "1A2B3C4D";//卡IDvar isMusicRequest = 0;// 判断是否为目标请求if ((oSession.host == "api-mifit.huami.com")&&(oSession.fullUrl.Contains("nfc/accessCard/script/init")||oSession.fullUrl.Contains("nfc/accessCard/script/request"))){isMusicRequest = 1;}// 修改请求体JSON串if (isMusicRequest == 1){// 1, 获取Request Body中字符串var requestStringOriginal =  oSession.GetRequestBodyAsString();//FiddlerObject.log(responseStringOriginal);    // 可在控制台中输出Log// 2, 转换为可编辑的JSONObject变量var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal)// 3, 修改JSONObject变量// 3.1修改字段requestJSON.JSONObject['fareCardType'] = "0";requestJSON.JSONObject['fetch_adpu_mode'] = "SYNC";requestJSON.JSONObject['sak'] = "08";requestJSON.JSONObject['uid'] = UID;requestJSON.JSONObject['aid'] = "";requestJSON.JSONObject['atqa'] = "0400";requestJSON.JSONObject['action_type'] = "copyFareCard";// 自定义的UID和扇区内容在这里修改requestJSON.JSONObject['blockContent'] = UID + "b208040062636465666768690000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff";// 4, 重新设置Request Bodyvar requestStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(requestJSON.JSONObject);oSession.utilSetRequestBody(requestStringDestinal);}        }

最后简单讲一下步骤:

1.电脑和手机连到同一个局域网;

2.电脑安装Fiddler并运行,代理端口设置成8888(若不懂自行学习fiddler基础使用方法);

3.手机连电脑代理,保证Fiddler能抓到手机的数据包(iOS 和安卓都要信任Fiddler的证书);

4.在Fiddler中,左上角选项卡,第3个,规则->自定义规则;

5.打开后,是javascript代码,你找到static function OnBeforeRequest(oSession: Session) 这个函数,把我的代码放在里面,保存即可;(代码里面的UID和扇区数据肯定得改成你自己想要改的)

6.手机蓝牙连接手环嘛,打开小米运动哇,直接添加一张小米空白卡,等待即可。

说在最后面的话,本来我买了几张CUID的空白卡,可以直接用我女朋友的小米8写卡。真没想到我女朋友的小米8前天在春熙路被可恶的小偷偷走了,卡今天才到货。

【大神完全可以通过代理的功能把端口暴露在公网上面,给其它朋友添加自定义数据的卡】

【此教程仅供自己小米手环数据使用,切勿用于违法行为】

【最后放点数据包笔记,以下内容不重要,无需理会】

1.初始化请求
https://api-mifit.huami.com/nfc/accessCard/script/init?r=894C7E51-A833-4AE6-B369-61A238788F43&t=1542653294011

删除 request 数据包
{"fareCardType":0,"fetch_adpu_mode":"SYNC","sak":"","uid":"","aid":"A0000003964D344D1004283E3B644B05","atqa":"","size":1024,"action_type":"deleteapp","blockContent":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF078069FFFFFFFFFFFF"}空白卡 request 数据包
{"fareCardType":1,"fetch_adpu_mode":"SYNC","sak":"","uid":"","aid":"","atqa":"","size":0,"action_type":"copyFareCard","blockContent":""}
{"fareCardType":1,"fetch_adpu_mode":"SYNC","sak":"","uid":"","aid":"","atqa":"","size":0,"action_type":"copyFareCard","blockContent":""}门禁卡 request 数据包
{"fareCardType":0,"fetch_adpu_mode":"SYNC","sak":"08","uid":"9ab273e9","aid":"","atqa":"0400","size":1024,"action_type":"copyFareCard","blockContent":"9ab273e9b208040062636465666768690000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff"}2.请求脚本服务
https://api-mifit.huami.com/nfc/accessCard/script/request?r=894C7E51-A833-4AE6-B369-61A238788F43&t=1542653297773
门禁卡 request 数据包
{"blockContent":"11223344b208040062636465666768690000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff078069ffffffffffff", "atqa":"0400", "fetch_adpu_mode":"SYNC", "action_type":"copyFareCard", "sak":"08", "fareCardType":"0", "command_results":{"results":[{"index":"1", "command":"00A4040008A000000151000000", "result":"6F108408A000000151000000A5049F6501FF9000", "checker":"^(9000|6283)$"}, {"index":"2", "command":"8050200008D2D8E32B3FCF71C7", "result":"000081841616969471152002003B62C50CBD6FD6E93D11C9C386A8409000", "checker":"^(9000)$"}], "succeed":true}, "session":"0871-260938047-94201481349", "size":1024, "aid":"", "current_step":"1", "uid":"11223344"}空白卡 request 数据包
{"uid":"","fareCardType":1,"session":"851-4110831269-94201228953","blockContent":"","fetch_adpu_mode":"SYNC","size":0,"atqa":"","current_step":"1","sak":"","action_type":"copyFareCard","aid":"","command_results":{"succeed":true,"results":[{"result":"6F108408A000000151000000A5049F6501FF9000","checker":"^(9000|6283)$","command":"00A4040008A000000151000000","index":"1"},{"result":"000081841616969471152002003CD0C715650812529A2FA03735A0B19000","checker":"^(9000)$","command":"80502000081B4F460C59035575","index":"2"}]}}{"uid":"","fareCardType":1,"session":"851-4110831269-94201228953","blockContent":"","fetch_adpu_mode":"SYNC","size":0,"atqa":"","current_step":"1","sak":"","action_type":"copyFareCard","aid":"","command_results":{"succeed":true,"results":[{"result":"9000","checker":"^(9000)$","command":"848201001037A3E488255DCE5C1ABE1570D118C5C6","index":"1"}]}}

【转载请注明出处】

转载于:https://www.cnblogs.com/storyline/articles/9986860.html

小米手环3 NFC 自定义 门禁卡数据相关推荐

  1. 小米手环7模拟加密门禁卡

    一.工具准备 硬件: 小米手环7 cuid卡 pn532 待破解加密门禁卡 软件: MifareOne Tool NFC上位机 IC客栈-M1卡格式转换工具 二.破解加密卡 将带破解加密门禁卡放到pn ...

  2. 小米手环3复制加密门禁卡

    硬件:小米手环3 NFC,PN532 总结写入方法:1.上位机破解原卡,保存dump,2.用分析软件,分析原卡dump,记住卡号(uid)就是00扇区票8个数字,3.把空白dump文件的uid改成原卡 ...

  3. 手机、手环NFC刷门禁卡

    手机.手环NFC刷门禁卡,全教程! 此教程教您将门禁卡.考勤卡.会员卡.停车卡.电梯卡等等各种卡片模拟进NFC手机里,从而用手机代替门禁卡.视频教程(https://nfctool.cn/nfcpho ...

  4. 手机可以模拟但小米手环4(nfc)不能模拟加密卡的简单解决方案

    手机可以模拟但小米手环4(nfc)不能模拟加密卡的简单解决方案 设备 一台手机(自己的)用来使用小米运动 一台手机 机型 小米MIX2(带nfc) ps 其他品牌手机不一定可以 一张部分加密的门禁卡 ...

  5. 小米NFC手机 手环 复制加密IC门禁卡

    思路: 第一步通过破解加密的门禁卡得到dump文件,获取卡号.修改dump文件只保留0扇区0块的内容也就是卡号,通过读卡器写入一张卡空白卡.这时就得到了一张未加密的白卡了.手机NFC可以模拟这张未加密 ...

  6. 小米手机、华为手机、一加手机、小米手环NFC刷门禁卡教程!

    此教程教您将门禁卡.考勤卡.会员卡.停车卡.电梯卡等等各种卡片模拟进NFC手机里,从而用手机代替门禁卡 一.软硬件准备 NFC Tool 手机上的IC卡读写编辑软件,搭配蓝牙读卡器或者OTG读卡器,可 ...

  7. 小米手机NFC复制门禁卡读取芯片信息失败,报错103解决办法。

    1.问题描述:使用手机NFC复制公司门禁卡时出现读取信息失败提示,报错标号103,如图所示. 2.尝试办法:经搜索发现这是工商银行APP给的提示,卸载工商银行APP之后,不再出现这种提示,但手机依旧无 ...

  8. pn532未发现nfc设备_NFC手机手环脱机模拟加密门禁卡,你get了吗?

    目标:将门禁卡.考勤卡.会员卡.停车卡.电梯卡等等各种卡模拟进手机里,模拟后可用手机代替刷卡,无需root,不用电脑 背景介绍: 1. 前言   目前,IC卡已被广泛应用于身份识别.金融消费.安全认证 ...

  9. NFC手机手环脱机模拟加密门禁卡

    目标:将门禁卡.考勤卡.会员卡.停车卡.电梯卡等等各种卡模拟进手机里,模拟后可用手机代替刷卡,无需root,不用电脑 背景介绍: 1.前言   目前,IC卡已被广泛应用于身份识别.金融消费.安全认证等 ...

最新文章

  1. 服务器何时取得客户端信息,HttpRequest获得服务端和客户端的详细信息
  2. mysql providername_c#访问各数据库的providerName各驱动-阿里云开发者社区
  3. 12v60ah锂电池组装图_锂电池基本参数,结合电动自行车电池应用分析
  4. Python入门:正则表达式
  5. SAP UI5和微信小程序对比之我见
  6. Spark入门(十五)之分组求最小值
  7. Redis两种客户端:lettuce和Jedis的区别
  8. QT学习笔记(十六):setwindowflags的属性总结
  9. 【渝粤教育】电大中专审计原理与实务 (2)作业 题库
  10. arm-linux-gcc stdio.h,arm-linux-gcc stdio.h no such file or directory错误
  11. 【Rust日报】2020-05-05:窥探Zoom, Lambda部署, slip等
  12. 深入 CoreML 模型定义
  13. js 获取服务器时间——IE浏览器出现1970问题
  14. 《Android编程权威指南(第三版)》第五章挑战练习Demo
  15. MATLAB 级数计算
  16. Android小程序-乐学成语背景音乐(五)
  17. Programming Languages PartA Week2学习笔记——SML基本语法
  18. 使用git在项目中的一些经验
  19. MySQL索引优化实践
  20. 数学建模之拟合插值方法

热门文章

  1. kalilinux-arpspoof-arp攻击
  2. HDU1814和平委员会
  3. 【我的DOT语言学习之旅】 学习DOT语言并使用Graphviz软件来打开.dot文件
  4. 计算机绘图员证有无取消,计算机辅助设计
  5. 喜马拉雅转道港交所:上半年亏损3个亿,负债200亿元,现金流紧张
  6. 【密码学原理】数字签名(ElGamal签名,Schnorr签名,椭圆曲线签名,RSA-PSS签名)
  7. 管理储备与应急储备的区别--建群网培PMP
  8. java鸡兔同笼:鸡兔同笼,鸡与兔,一共35只,共有94条脚,问,一个鸡有多少只,兔有多少只?
  9. NOIP 2018 游记
  10. sybase监控执行sql(转自新浪)