2015年3月13日星期五

【番号】总结盘点大桥未久下马以来所有步兵番号合集

难以置信的是,不像其他很多福利博客福利网站各种面面俱到,福利档仅以桃谷绘里香、大桥未久和森野明音等几位热门女艺人的作品信息就可以做到了一天几千上万的流量。绝对可以堪称这几位热门岛国女艺人的先手资讯站。
2014年福利档一直关注于桃谷绘里香,奈何她去年6月就已经销声匿迹,后来福利档得到也分享了消息,证实她已经彻底离开业界。
从2014年末的下马风暴刮起,档主渐渐将视线转至前田香织和大桥未久。尽管大桥的下马给步兵界注入一股新鲜血液,奈何大桥的步兵生涯同样短暂:【动态】大桥未久第三部作品,无码引退,在尚未推出几部作品也未在步兵业界献艺多久的大桥未久就宣告引退了!
不得不哀叹一声,实在可惜!
虽然大桥的步兵之旅短暂,但是档主在福利档的关注并不少。借此之际,总结盘点下大桥未久下马以来的所有步兵番号合集。
事先声明,多图预警!
【番号】总结盘点大桥未久下马以来所有步兵番号合集
【番号】总结盘点大桥未久下马以来所有步兵番号合集
都知道大桥未久的下马让很多观众很多影迷趋之若鹜,并开始重新关注年终的步兵业界。因此捕获了大桥的东家加勒比自然对大桥的作品要尽心压榨:分段发行,隔期发售等等手段,也是开了无码作品推广的另一先河。
首先是步兵处女作的第一部分:《無修正 カリビアンコム 慟哭の女教師 プロローグ 〜崩壊のはじまり〜》,发行日期:2014-12-02,番号:120214-749
【番号】总结盘点大桥未久下马以来所有步兵番号合集
接着是步兵处女作的第二部分:《無修正 カリビアンコム 慟哭の女教師 前編 〜だらしなく砕け散るプライド〜》,发行日期:2014-12-06,番号:120614-753
【番号】总结盘点大桥未久下马以来所有步兵番号合集
然后是步兵处女作的第三部分:《無修正 カリビアンコム 慟哭の女教師 後編 〜だらしない生き物に堕ちた女〜》,发行日期:2014-12-19,番号:121914-760
【番号】大橋未久无码作品:S-Model 115(SMD-115)
上述三部分作品结合起来就是正式的完整作品:《S Model 115 恥辱の中出し授業 : 大橋未久》,番号:SMD-115
本来可以一集搞定的作品愣是让加勒比活生生给拆成了四部,还发布了将近半个月才算结束。
大桥未久的第二部作品沿袭了同样的套路:将作品分隔发行。但与前作略有不同的是分隔部分不再是加勒比独家,而是上部加勒比下部Heyzo。据说是由于大桥这等大腕,肯定不能加勒比一家独大,而要让几家大厂分而食之。
【番号】总结盘点大桥未久下马以来所有步兵番号合集
第二部作品上半部分:《調子に乗ったS嬢 x 苛められてM嬢》,配信日为1月10日
【番号】总结盘点大桥未久下马以来所有步兵番号合集
第二部作品下半部分:《続々生中~色白美肌美人を徹底的に責める~ – 大橋未久》,出种番号:Heyzo-0783
第二部作品有没有结合的完整版本目前档主尚未前去了解。

好的,档主糊涂了。其实第二部作品的完整版福利档早就有过介绍了:【动态】天使和恶魔?大桥未久第二部无码作品上架!
【番号】总结盘点大桥未久下马以来所有步兵番号合集
即:《ラフォーレ ガール Vol.41 天使と悪魔》,番号:LAF-41
下边说一下第三部作品:
【番号】总结盘点大桥未久下马以来所有步兵番号合集
第三部作品将于一本道发行,目前可以得知的这将是大桥的无码引退作品,即最后一部无码作品了。令人遗憾的是这部号称「ノーカット(一刀未剪)」的作品,其实就是「 S Model 115 耻辱の中出し授业」的完整版,和カリビアンコム(加勒比)卖的是一模一样的东西。
也就是说,大桥未久的下马之旅其实只演绎了两部作品而已,就算如此还是还被各路厂商分隔压榨。
档主这里尚且将其算作第三部作品吧,作品名称:「キャットウォーク ポイズン 120 ついに!! 引退 」

关于第三部作品,之前这里档主也有理解和解读上的错误。大桥真正的第三部作品为:【番号】大桥未久第三部作品2月10日发售(021015-803-Carib)
【番号】总结盘点大桥未久下马以来所有步兵番号合集
作品名:【キャットウォーク ポイズン 120 ついに!! 引退 : 大橋未久】,番号:CWP-120 / CWPBD-120(Japorn旗下MFC配信番号,加勒比番号:021015-803-Carib)

2015年3月7日星期六

红杏插件破解

0x00 前言

其实本人已经不用红杏插件了,但是周围的小伙伴还有不少在用的,前一阵子听说红杏免费版的无法使用了,所以有几个小伙伴买了VIP,其中还有包年的!(忽然感觉周围有这样的土豪朋友好幸福呢~)不过也有几个小伙伴买不起VIP(我也买不起)而一愁莫展,然后又反映我之前写的那一篇博文废话太多,而且红杏的版本更新了……
所以呢,我把原理分析什么的都去掉了,然后就有了这一篇文章。不过呢,我还是建议大家使用GoAgentShadowSocks配合Chrome的扩展SwichySharp科学上网,具体方法自行Google(你可以先用本文的方法上谷歌)
好了,在正式开始之前,我先申明几点~
  1. 本文只分析破解过程,不提供下载,伸手党请Ctrl+W,我把作案手法和工具都给你了,剩下的就看你的了~
  2. 本文还有一些问题没有解决,希望能得到大牛们的帮助,可以在下面留言或者Email~
  3. 如果想了解红杏插件的更多细节,请戳科学上网之红杏插件的原理与破解(因为版本更新的问题导致目录结构和某些文件名不一致,但是改动不多)
另外还有一点,首先……你得有一个……VIP账号……或者……有VIP账号的土豪朋友

0x01 获取PAC脚本

PS:如果你想了解什么是PAC脚本的话请先戳科学上网之红杏插件的原理与破解中的0x02部分或者问Google,不懂也没关系,不影响阅读
动笔写这篇文章的时候红杏的最新版本是2.4.7,我上传了一份在百度网盘,密码cf8u,这个版本比较好分析~(PS:上传这篇文章的时候发现红杏又更新了,到2.4.10了,这次js代码加了混淆,不容易看懂,但是可以对照以前的版本来看,本文就不作分析了,有兴趣的朋友自己分析一下吧,我也上传到百度网盘了,密码是b2av
下载好了之后我们就得到了一个hongxing.crx文件,我们把后缀改成zip,然后解压之后的目录结构大概是这个样子
我们把_metadata这个文件夹删掉,否则一会儿加载进Chrome时会报错。
红杏核心的代码都在js这个文件夹里面,目录结构如下
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
│ config.js
├─back
│ │ background.js
│ │
│ └─services
│ badgeManager.js
│ conflictDetector.js
│ EasySocket.js
│ errorPageCustomizer.js
│ injectorManager.js
│ notificationManager.js
│ performanceTracker.js
│ proxyManager.js //代理配置
│ tabsTracker.js
│ timeService.js
│ track.js
│ upgradeManager.js
│ userDomains.js
│ userManager.js //用户配置
├─common
│ │ common.js
│ │
│ └─services
│ domainUtils.js
│ generate.js
│ pageUtils.js
│ storage.js
│ tele.js
│ timeUtils.js
│ validate.js
├─front
│ │ login.js
│ │ options.js
│ │ popup.js
│ │
│ ├─controllers
│ │ ├─login
│ │ │ AccountController.js
│ │ │ LoginController.js
│ │ │ LoginPageController.js
│ │ │ RegisterController.js
│ │ │
│ │ └─options
│ │ ChangePasswordController.js
│ │ ChangePasswordModalController.js
│ │ DomainListController.js
│ │ InvitationController.js
│ │ OptionsPageController.js
│ │ ProfileController.js
│ │ TradeListController.js
│ │
│ ├─directives
│ │ domain.js
│ │ equals.js
│ │ fixAutoFill.js
│ │ focusBind.js
│ │ formState.js
│ │ inviterInput.js
│ │ resizeIframe.js
│ │
│ ├─filters
│ │ isMe.js
│ │ renderAccount.js
│ │ renderDatetime.js
│ │ renderLeftTime.js
│ │ renderPercent.js
│ │ renderTradeStatus.js
│ │ rendSorter.js
│ │ stabilityStyle.js
│ │ tradeStyle.js
│ │
│ └─services
│ invitationManager.js
└─libs
│ analytics.js
│ debug.js
│ md5.js
│ raven.js
require.js
│ underscore-min.js
│ uuid.core.js
└─angular
angular-animate.js
angular-csp.css
angular-raven.js
angular-route.js
angular-sanitize.js
angular-strap.js
angular-strap.tpl.js
angular-ui-keypress.js
angular-ui-router.js
angular.js
ui-utils.js
view rawcontents.js hosted with ❤ by GitHub
需要重点关注的几个js文件在注释中标了出来,首先我们打开proxyManager.js,完全没法看!没关系,把内容复制一下,用这个在线工具解密一下,这里为了节省空间和美观我截取了部分代码,并调整了一下格式,你可在代码中搜索下面这部分
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
generatePacScript = function() {
var domain, i, lines, mode, node, p, part, parts, proxyString, proxyStrings, reversedDomainTree, source, url, _i, _j, _k, _l, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
mode = $rootScope.mode;
if (mode !== MODES.AUTO && mode !== MODES.ALWAYS) {
mode = MODES.AUTO
}
proxyStrings = [];
_ref = ($rootScope.proxies || []).slice(0, 2);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
p = _ref[_i];
proxyStrings.push("" + p.scheme + " " + p.host + ":" + p.port)
}
proxyString = proxyStrings.join(';');
lines = [];
lines.push(['function Find', 'roxyForURL(url, host) {\n'].join('P'));
lines.push("var D = \"DIRECT\";");
lines.push("var p='" + proxyString + "';\n");
lines.push("if (shExpMatch(host, '10.[0-9]+.[0-9]+.[0-9]+')) return D;");
lines.push("if (shExpMatch(host, '172.[0-9]+.[0-9]+.[0-9]+')) return D;");
lines.push("if (shExpMatch(host, '192.168.[0-9]+.[0-9]+')) return D;");
_ref1 = $rootScope.urlRules || {};
for (url in _ref1) {
p = _ref1[url];
lines.push("if (url == '" + url + "') return '" + p.scheme + " " + p.host + ":" + p.port + "';")
}
lines.push("if (url.indexOf('https://www.google.com/complete/search?client=chrome-omni') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://clients1.google.com/generate_204') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://chart.apis.google.com/') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://toolbarqueries.google.com') == 0)");
lines.push("\treturn D;\n");
lines.push("var i = url.indexOf('_HXPROXY=');");
lines.push("if (i >= 0) return url.substr(i+9).replace('+', ' ');\n");
for (_j = 0, _len1 = WHITE_LIST_DOMAINS.length; _j < _len1; _j++) {
domain = WHITE_LIST_DOMAINS[_j];
lines.push("if (dnsDomainIs(host, '" + domain + "')) return D;")
}
lines.push("\n");
if (mode === MODES.AUTO) {
reversedDomainTree = {};
_ref2 = userDomains.names();
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
domain = _ref2[_k];
node = reversedDomainTree;
parts = domain.toLowerCase().split('.').reverse();
for (i = _l = 0, _ref3 = parts.length - 1; 0 <= _ref3 ? _l <= _ref3 : _l >= _ref3; i = 0 <= _ref3 ? ++_l : --_l) {
part = parts[i];
if (i === parts.length - 1) {
node[part] = 1
} else {
if (node[part] === 1) {
break
}
if (node[part] == null) {
node[part] = {}
}
node = node[part]
}
}
}
lines.push("var node = " + (JSON.stringify(reversedDomainTree)) + ";");
lines.push("var hostParts = host.toLowerCase().split('.');");
lines.push("for (var i=hostParts.length - 1; i >= 0; i --) {");
lines.push(" var part = hostParts[i];");
lines.push(" node = node[part];");
lines.push(" if (node == undefined || node == 1) break;");
lines.push("}");
lines.push("if (node == 1)");
lines.push(" return p;\n")
} else {
lines.push('return p;')
}
lines.push('return D;');
lines.push("}");
source = lines.join('\n');
localStorage.setItem("pac", source); //把PAC脚本保存到Local Storage
return source
}
view rawproxyManager.js hosted with ❤ by GitHub
只要在倒数第二行加一句localStorage.setItem("pac", source)就行了~
好了,把我们修改的部分保存一下,然后按照这个步骤把红杏插件加载进Chrome
剩下的过程就是用一个VIP账号登陆红杏,然后进入这个页面守株待兔~
F12打开开发人员工具,不出意外的话你应该能看到下面这个字段(看不到可以等一会或者刷新页面),正是刚才我们放到Local Storage里面的pac
pac的值复制出来,保存到一个文件里面,比如vip.pac
pac文件
打码的部分是红杏在海外搭的代理服务器地址
然后我们用另一款Chrome下的拓展SwichySharp加载vip.pac(如果打不开谷歌扩展商店可以从百度网盘下载,密码ccae),可以看到能够科学上网了
google
但是当我访问非HTTPS的网站时就不行了,这也是我没有解决的问题,希望有大牛可以帮忙
scholar

0x02 把自己改成VIP

如果上面的那个问题解决了就没有这个章节了,但是我是个菜(-_-),始终没搞清楚怎么回事
这里我们还是在红杏的基础上搞破坏吧,还是proxyManager.js文件,我们加一行代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
generatePacScript = function() {
var domain, i, lines, mode, node, p, part, parts, proxyString, proxyStrings, reversedDomainTree, source, url, _i, _j, _k, _l, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
mode = $rootScope.mode;
if (mode !== MODES.AUTO && mode !== MODES.ALWAYS) {
mode = MODES.AUTO
}
proxyStrings = [];
_ref = ($rootScope.proxies || []).slice(0, 2);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
p = _ref[_i];
proxyStrings.push("" + p.scheme + " " + p.host + ":" + p.port)
}
proxyString = proxyStrings.join(';');
lines = [];
lines.push(['function Find', 'roxyForURL(url, host) {\n'].join('P'));
lines.push("var D = \"DIRECT\";");
proxyString = '这里填上代理服务器的地址'; //加上这一句代码
lines.push("var p='" + proxyString + "';\n");
lines.push("if (shExpMatch(host, '10.[0-9]+.[0-9]+.[0-9]+')) return D;");
lines.push("if (shExpMatch(host, '172.[0-9]+.[0-9]+.[0-9]+')) return D;");
lines.push("if (shExpMatch(host, '192.168.[0-9]+.[0-9]+')) return D;");
_ref1 = $rootScope.urlRules || {};
for (url in _ref1) {
p = _ref1[url];
lines.push("if (url == '" + url + "') return '" + p.scheme + " " + p.host + ":" + p.port + "';")
}
lines.push("if (url.indexOf('https://www.google.com/complete/search?client=chrome-omni') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://clients1.google.com/generate_204') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://chart.apis.google.com/') == 0)");
lines.push("\treturn D;");
lines.push("if (url.indexOf('http://toolbarqueries.google.com') == 0)");
lines.push("\treturn D;\n");
lines.push("var i = url.indexOf('_HXPROXY=');");
lines.push("if (i >= 0) return url.substr(i+9).replace('+', ' ');\n");
for (_j = 0, _len1 = WHITE_LIST_DOMAINS.length; _j < _len1; _j++) {
domain = WHITE_LIST_DOMAINS[_j];
lines.push("if (dnsDomainIs(host, '" + domain + "')) return D;")
}
lines.push("\n");
if (mode === MODES.AUTO) {
reversedDomainTree = {};
_ref2 = userDomains.names();
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
domain = _ref2[_k];
node = reversedDomainTree;
parts = domain.toLowerCase().split('.').reverse();
for (i = _l = 0, _ref3 = parts.length - 1; 0 <= _ref3 ? _l <= _ref3 : _l >= _ref3; i = 0 <= _ref3 ? ++_l : --_l) {
part = parts[i];
if (i === parts.length - 1) {
node[part] = 1
} else {
if (node[part] === 1) {
break
}
if (node[part] == null) {
node[part] = {}
}
node = node[part]
}
}
}
lines.push("var node = " + (JSON.stringify(reversedDomainTree)) + ";");
lines.push("var hostParts = host.toLowerCase().split('.');");
lines.push("for (var i=hostParts.length - 1; i >= 0; i --) {");
lines.push(" var part = hostParts[i];");
lines.push(" node = node[part];");
lines.push(" if (node == undefined || node == 1) break;");
lines.push("}");
lines.push("if (node == 1)");
lines.push(" return p;\n")
} else {
lines.push('return p;')
}
lines.push('return D;');
lines.push("}");
source = lines.join('\n');
return source
}
view rawproxyManager.js hosted with ❤ by GitHub
代理服务器的地址大家按照上一个章节自行获取吧~
接下来是userManager.js文件,同样我截取了部分代码,也是加一行代码就行了
123456789101112131415
this.load = function(data) {
$rootScope.user.profile.sid = data.sid;
$rootScope.user.profile.name = data.name;
$rootScope.user.profile.anonymous = data.anonymous;
$rootScope.user.profile.no_password = data.no_password || false;
$rootScope.user.profile.until = data.until;
$rootScope.user.profile.level = data.level;
if (data.level) {
$rootScope.user.role = ROLES.VIP
} else if (data.name) {
$rootScope.user.role = ROLES.USER
}
$rootScope.user.role = ROLES.VIP; //加上这一句就可以了
return log("user load from :", data)
};
view rawuserManager.js hosted with ❤ by GitHub
把所有修改保存一下,然后我们重新加载DIY的插件,这个时候就可以用非VIP账号登陆了,然后就是见证奇迹的时刻~Enjoy!
twitter
scholar
如果你想把DIY之后的插件打包,请参考科学上网之红杏插件的原理与破解中的0x04部分

0x03 没有解决的问题

  1. 获取PAC脚本后,用SwichySharp加载之后只能上HTTPS的网站,无法访问需要科学上网的HTTP网站
  2. IE和火狐也支持PAC脚本,但是这个PAC脚本无法在这两种浏览器上使用
  3. 最新版的红杏(2.4.10)修改了部分代码并加了混淆,不过本文0x01部分依然有效~但是本文0x02就无效了(-_-)

0x04 结语

之所以不提供破解版下载是希望读到这篇文章的人能自己动手去实践一下,从中学到一些东西(即使本文没有什么技术含量),本人比较菜,不过在分析这个插件的过程中也学到了不少东西,也希望大家能够进一步的去发现和解决一些问题
如果看到这篇文章的朋友知道如何解决上面的几个问题或者发现新的问题,欢迎在下面留言,分享永远是一种快乐~