hackbar2.2.9在Firefox中的安装

hackbar2.2.9在Firefox中的安装转载出处:https://www.ddosi.com/b320/尊重原创,以及知识产权,首先声明这是上面链接中大神的辛苦劳动成果,因为不知道如果联系所以这篇转载可能会有侵权问题,希望查看此链接的爱好者直接点击上面的链接查看,这篇仅是个人学习转载。前言众所周知,Firefox的插件必须经过签名,才能加载到浏览器中.因此,对于hackbar的破解,要么是装2.1.3这个没有激活的老版本,要么是直接安装hackbar的替代品,如Machackbar……其实对于h.

大家好,又见面了,我是你们的朋友全栈君。

转载出处:https://www.ddosi.com/b320/

尊重原创,以及知识产权,首先声明这是上面链接中大神的辛苦劳动成果,希望查看此链接的爱好者直接点击上面的链接查看,这篇仅是个人学习转载。


前言

众所周知, Firefox 的插件必须经过签名, 才能加载到浏览器中. 因此, 对于 hackbar 的破解, 要么是装 2.1.3 这个没有激活的老版本, 要么是直接安装 hackbar 的替代品, 如 Mac hackbar… …

其实对于 hackbar 代码的破解很简单, 删除几行代码就行, 唯一的问题就出现在修改插件里面的任何一个字符都会导致插件失效…

本人偏偏不信邪, 经过半天的查找, 发现在 https://github.com/ronggang/PT-Plugin-Plus/issues/491, 一位大佬@CoderCore 说了, 我们可以将任何的插件丢给 Firefox 签名, 只需要选择自己托管即可.

经过实测, 将破解后的 hackbar 丢上去, 三分钟就审核通过并且可以下载签名版本的了.

下载原版插件

首先给 Firefox 装上最新的 hackbar 插件, 然后经过下面的操作, 将该插件源码搞到手.

1. Firefox 浏览器 -> Help -> Troubleshooting Information

hackbar2.2.9在Firefox中的安装

 

2. 点击Profile Folder右边的Show in Finder 可以打开 Firefox 的配置文件

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

3. 先别管刚刚打开的文件夹, 在当前页面往下看, 在Extensions一栏中, 找到Hackbar对应的 id

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

  这里的 id 如下:  

{4c98c9c7-fc13-4622-b08a-a18923469c1c}

4.回到刚刚打开的文件夹, 在extensions文件夹下, 找到那个 id 对应的文件

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

5。将其拷贝出来, 改名原版hackbar-2.2.9.zip, 用于备份. 同时拷贝多一份, 改名修改 hackbar-2.2.9.zip, 用于修改

   注意: 要将原来的后缀xpi改成zip

  火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

6.将修改 hackbar-2.2.9.zip解压出来如下图. 首先我们要将META-INF文件夹干掉, 这个文件夹存放的是签名, 必须要干掉它, 我们待会修改完后, 重新上传签名.

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

7. 然后用 sublime 打开这个文件夹

 


修改

这里的修改, 主要是想将所有激活相关的全部去掉, 以达到免激活的效果.

这里需要修改如图三个文件

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

manifest.json

我们修改其中的描述字段, 即description, 以区分原版的 Hackbar 插件.

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

theme/js/hackbar-panel.js

下面红色框着的, 可以删掉或者注释掉. 为了方便大家查找, 建议先注释, 最后再删掉注释.

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

hackbar2.2.9在Firefox中的安装

hackbar2.2.9在Firefox中的安装

hackbar2.2.9在Firefox中的安装

最后剩下如下:

let urlField = $('#url_field');
let postDataField = $('#post_data_field');
let refererField = $('#referer_field');
let userAgentField = $('#user_agent_field');
let cookieField = $('#cookie_field');
let loadUrlBtn = $('#load_url');
let splitUrlBtn = $('#split_url');
let executeBtn = $('#execute');
let enablePostBtn = $('#enable_post_btn');
let enableRefererBtn = $('#enable_referer_btn');
let enableUserAgentBtn = $('#enable_user_agent_btn');
let enableCookieBtn = $('#enable_cookie_btn');
let clearAllBtn = $('#clear_all');
let addSlash = $('#add-slash');
const menu_btn_array = ['md5', 'sha1', 'sha256', 'rot13',
'base64_encode', 'base64_decode', 'url_encode', 'url_decode', 'hex_encode', 'hex_decode',
'sql_mysql_char', 'sql_basic_info_column', 'sql_convert_utf8', 'sql_convert_latin1', 'sql_mssql_char', 'sql_oracle_char', 'sql_union_statement', 'sql_spaces_to_inline_comments',
'xss_string_from_charcode', 'xss_html_characters', 'xss_alert',
'jsonify', 'uppercase', 'lowercase',];
let currentTabId = chrome.devtools.inspectedWindow.tabId;
let currentFocusField = urlField;
function onFocusListener() {
currentFocusField = $(this);
}
/* Other function */
function jsonValid(text) {
try {
return JSON.parse(text);
} catch (e) {
return false;
}
}
function getFieldFormData(dataString) {
let fields = Array();
let f_split = dataString.trim().split('&');
for (let i in f_split) {
let f = f_split[i].match(/(^.*?)=(.*)/);
if (f.length === 3) {
let item = {};
item['name'] = f[1];
item['value'] = unescape(f[2]);
fields.push(item);
}
}
return fields;
}
function urlEncode(inputStr) {
return encodeURIComponent(inputStr).toLowerCase();
}
function jsonBeautify(inputStr) {
let jsonString = jsonValid(inputStr);
if (jsonString) {
return JSON.stringify(jsonString, null, 4);
}
return false;
}
function upperCaseString(inputStr) {
return inputStr.toUpperCase();
}
function lowerCaseString(inputStr) {
return inputStr.toLowerCase();
}
// toggle element
function toggleElement(elementBtn, elementBlock) {
if (elementBtn.prop('checked')) {
elementBlock.show();
} else {
elementBlock.hide();
}
}
function loadUrl() {
chrome.runtime.sendMessage({
tabId: currentTabId,
action: 'load_url',
data: null
}, function (message) {
if ('url' in message && message.url) {
urlField.val(message.url);
}
if ('data' in message && message.data && postDataField.val() === "") {
postDataField.val(message.data);
}
if ('headers' in message && message.headers) {
const h = message.headers;
if(h.referer){
refererField.val(h.referer);
}
if(h.cookie){
cookieField.val(h.cookie);
}
if(h.user_agent){
userAgentField.val(h.user_agent);
}
}
});
}
function splitUrl() {
let uri = currentFocusField.val();
uri = uri.replace(new RegExp(/&/g), "\n&");
uri = uri.replace(new RegExp(/\?/g), "\n?");
currentFocusField.val(uri);
return true;
}
function exec( cmd )
{
return chrome.devtools.inspectedWindow.eval(cmd);
}
function execute() {
let Headers = {
referer: null,
user_agent: null,
cookie: null
}
let post_data = null;
let method = 'GET';
if (enableRefererBtn.prop('checked')) {
Headers.referer = refererField.val();
}
if (enableUserAgentBtn.prop('checked')) {
Headers.user_agent = userAgentField.val();
}
if (enableCookieBtn.prop('checked')) {
Headers.cookie = cookieField.val();
}
if (enablePostBtn.prop('checked')) {
method = 'POST';
post_data = getFieldFormData(postDataField.val());
}
let url = urlField.val();
url = url.replace(new RegExp(/\n|\r/g), '').trim();
if (!(new RegExp(/^(http:\/\/|https:\/\/|view-source:)/gi)).test(url)) {
url = 'http://' + url;
}
if (!url) {
return;
}
if(method === 'GET'){
let code = 'const url = "'+ encodeURIComponent(url) +'";';
code += 'window.location.href = decodeURIComponent(url);';
chrome.devtools.inspectedWindow.eval(code, function(result, isException){
setTimeout( () => { currentFocusField.focus() }, 100 );
});
}else{
let code = 'var post_data = "' + encodeURIComponent(JSON.stringify(post_data)) + '"; var url = "' + encodeURIComponent(url) + '";';
code+= 'var fields = JSON.parse(decodeURIComponent(post_data));';
code+= 'const form = document.createElement("form");';
code+= 'form.setAttribute("method", "post");';
code+= 'form.setAttribute("action", decodeURIComponent(url));';
code+= 'fields.forEach(function(f) { var input = document.createElement("input"); input.setAttribute("type", "hidden"); input.setAttribute("name", f[\'name\']); input.setAttribute("value", f[\'value\']); form.appendChild(input); });';
code+= 'document.body.appendChild(form);'
code+= 'form.submit();';
exec(code)
}
chrome.runtime.sendMessage({
tabId: currentTabId,
action: 'send_requests',
data: {headers: Headers}
});
}
function getSelectedText(callbackFunction) {
const selectionStart = currentFocusField.prop('selectionStart');
const selectionEnd = currentFocusField.prop('selectionEnd');
if (selectionEnd - selectionStart < 1) {
$('#myModal').modal();
$('#myModal input').val("");
$('#myModal button').bind('click', () => {
const selected_text = $('#myModal input').val();
callbackFunction(selected_text);
$('#myModal').modal('hide');
});
} else {
callbackFunction(currentFocusField.val().substr(selectionStart, selectionEnd - selectionStart));
}
}
function setSelectedText(str) {
let selectionStart = currentFocusField.prop('selectionStart');
let selectionEnd = currentFocusField.prop('selectionEnd');
let pre = currentFocusField.val().substr(0, selectionStart);
let post = currentFocusField.val().substr(selectionEnd, currentFocusField.val().length);
currentFocusField.val(pre + str + post);
currentFocusField[0].setSelectionRange(selectionStart, selectionEnd + str.length)
}
function onclickMenu(action, val) {
switch (action) {
case 'md5':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.md5(txt));
}
});
break;
case 'sha1':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.sha1(txt));
}
});
break;
case 'sha256':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.sha2(txt));
}
});
break;
case 'rot13':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.rot13(txt));
}
});
break;
case 'base64_encode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.base64Encode(txt));
}
});
break;
case 'base64_decode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.base64Decode(txt));
}
});
break;
case 'url_encode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(urlEncode(txt));
}
});
break;
case 'url_decode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(unescape(txt));
}
});
break;
case 'hex_encode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.strToHex(txt));
}
});
break;
case 'hex_decode':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(Encrypt.hexToStr(txt));
}
});
break;
case 'jsonify':
getSelectedText(function (txt) {
if (txt && jsonBeautify(txt)) {
setSelectedText(jsonBeautify(txt));
}
});
break;
case 'uppercase':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(upperCaseString(txt));
}
});
break;
case 'lowercase':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(lowerCaseString(txt));
}
});
break;
case 'sql_mysql_char':
getSelectedText(function (txt) {
if (txt) {
setSelectedText(SQL.selectionToSQLChar("mysql", txt));
}
});
break;
case 'sql_basic_info_column':
let sqlBasicStr = 'CONCAT_WS(CHAR(32,58,32),user(),database(),version())';
this.setSelectedText(sqlBasicStr);
break;
case 'sql_convert_utf8':
getSelectedText(function (txt) {
if (txt) {
setSelectedText("CONVERT(" + txt + " USING utf8)");
}
});
break;
case 'sql_convert_latin1':
getSelectedText(function (txt) {
if (txt) {
const newString = "CONVERT(" + txt + " USING latin1)";
setSelectedText(newString);
}
});
break;
case 'sql_mssql_char':
getSelectedText(function (txt) {
if (txt) {
const newString = SQL.selectionToSQLChar("mssql", txt);
setSelectedText(newString);
}
});
break;
case 'sql_oracle_char':
getSelectedText(function (txt) {
if (txt) {
const newString = SQL.selectionToSQLChar("oracle", txt);
setSelectedText(newString);
}
});
break;
case 'sql_union_statement':
getSelectedText(function (txt) {
if (txt) {
const newString = SQL.selectionToUnionSelect(txt);
setSelectedText(newString);
}
});
break;
case 'sql_spaces_to_inline_comments':
getSelectedText(function (txt) {
if (txt) {
const newString = SQL.selectionToInlineComments(txt);
setSelectedText(newString);
}
});
break;
case 'xss_string_from_charcode':
getSelectedText(function (txt) {
if (txt) {
const newString = XSS.selectionToChar('stringFromCharCode', txt);
setSelectedText(newString);
}
});
break;
case 'xss_html_characters':
getSelectedText(function (txt) {
if (txt) {
const newString = XSS.selectionToChar('htmlChar', txt);
setSelectedText(newString);
}
});
break;
case 'xss_alert':
const alertStr = "<script>alert(1)</script>";
this.setSelectedText(alertStr);
break;
case 'LFI':
this.setSelectedText(val);
break;
}
currentFocusField.focus();
}
//on focus listener field
urlField.bind('click', onFocusListener, false);
postDataField.bind('click', onFocusListener, false);
refererField.bind('click', onFocusListener, false);
userAgentField.bind('click', onFocusListener, false);
cookieField.bind('click', onFocusListener, false);
//Events
loadUrlBtn.bind('click', function(){
loadUrl();
});
splitUrlBtn.bind('click', function(){
splitUrl();
});
executeBtn.bind('click', function(){
execute();
});
clearAllBtn.bind('click', function () {
refererField.val('');
userAgentField.val('');
cookieField.val('');
});
enablePostBtn.click(function () {
toggleElement($(this), postDataField.closest('.block'))
});
enableRefererBtn.click(function () {
toggleElement($(this), refererField.closest('.block'))
});
enableUserAgentBtn.click(function () {
toggleElement($(this), userAgentField.closest('.block'))
});
enableCookieBtn.click(function () {
toggleElement($(this), cookieField.closest('.block'))
});
addSlash.click(function () {
let currentValue = currentFocusField.val();
currentValue+="/"
currentFocusField.val(currentValue);
});
//Add event listener
menu_btn_array.forEach(function (elementID) {
$('#' + elementID).bind('click', function(){
onclickMenu(elementID)
});
});
$('#lfi .lfi_data').bind('click', function(e){
onclickMenu('LFI', this.text);
});
// Keyboard listener
$(document).on('keypress', function (event) {
console.log(event);
if ('key' in event && event.ctrlKey && event.charCode === 13) {
execute();
}
});

theme/hackbar-panel.html

删掉下面这段代码

<p class="alert alert-danger text-center hidden" id="alert-license">
Please enter your license to use hackbar. <a href="https://hackbar.herokuapp.com" target="_blank">Get license</a>
<br/>
<input type="text" id="licence-input"/>&nbsp;<button id="licence-save">Save</button><br/>
<span></span>
</p>

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

下面这句可以修改也可以删掉, 也可以不管.

<a href="https://www.paypal.me/khoiasd" target="_blank">Contribute now!</a>

我修改如下:

<a href="https://github.com/fengwenhua/hackbar_crack" target="_blank">&copy;微信公众号: 江南小虫虫</a>

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 


 

打包上传签名

修改完后, 就是打包上传签名了.

将其他文件/文件夹打包成 zip

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

前往 https://addons.mozilla.org/zh-CN/firefox/ 注册登录开发者账号

进入开发者中心

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

如果你是第一次进来, 可能要同意一些协议之类的. 因为我之前已经搞过一次, 所以这里直接提交新的附加组件

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

选择我自己托管

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

上传完刚刚压缩的文件, 让网站验证一下, 验证通过后选择签名附加组件

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

等三分钟左右, 就会收到审核通过的邮件了

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

然后打开邮件中的链接提示的那个下载链接, 点击那个版本 2.2.9

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

再点击hackbar-2.2.9-fx.xpi , 如果你当前是 Firefox 浏览器, 点击之后会自动安装该插件, 而且还可随账号同步.

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

如果当前是其他浏览器, 点击之后则会自动下载

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

下载地址

我已经将签名好的插件丢到 GitHub 上了

GitHub 链接: https://github.com/fengwenhua/hackbar_crack
雨苁网盘: https://w.ddosi.workers.dev

下载下来, 选择从文件导入即可

火狐hackbar2.2.9破解教程 firefox/mozilla hackbar破解版

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146054.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 微机原理与接口技术实验报告心得_微型计算机原理与接口技术第二版

    微机原理与接口技术实验报告心得_微型计算机原理与接口技术第二版微机原理与接口技术实验总结寒黎实验内容以及设计思路1、=1\*GB3①试编写一程序,比较两个字符串STRING1、STRING2 所含字符是否相同,若相同输出“MATCH”,若不相同输出“NOMATCH”。设计思路:定义一个数据段,在数据段中定义两个字符串作为STRING1、STRING2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以…

  • docker部署jenkins安装使用教程_docker安装python

    docker部署jenkins安装使用教程_docker安装python前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

  • redis RDB持久化方式的工作原理是怎样的_杜兰特挽留纳什

    redis RDB持久化方式的工作原理是怎样的_杜兰特挽留纳什我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的,持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面,比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用,重启redis,尽快让它对外提供服务。………

  • 前端面试题大全_最新前端面试题

    前端面试题大全_最新前端面试题进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份腾讯、字节跳动、百度、阿里等一线互联网公司面试题大全,其中概括的知识点(HTML,CSS,JS,React,Vue,NodeJS,互联网基础知识)

  • ETL是什么_ETL平台

    ETL是什么_ETL平台一、ETL发展的背景信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。据统计,数据量每经过2-3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占总数据量的2%~4

  • 学生成绩管理系统(C语言版)「建议收藏」

    学生成绩管理系统(C语言版)「建议收藏」大一上学期实训项目总结(学生成绩管理系统)大一刚接触这个计算机专业的相关知识,就觉得这个专业很有趣。最先接触的编程语言就是C语言,想必大多数人都是如此吧。我们这个学期末,也就是期末考试结束后,开始这个实训。我也是第一次听说实训这个东西,当然可能这个实训也主要针对我们计算机专业的学生。我们这次实训历时5天,是由公司请来的专业人员给我们进行指导的。前面几天时进行C语言基础知识的复习与巩固,后面两天就是给每个组时间,进行实训项目的制作。我们组选择的是学生成绩管理系统,这个也是比较常见的项目,有些组选择的是贪吃

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号