当前位置:首页 > 网络安全 > 正文内容

装黑客的一些代码笔记本电脑(怎么在电脑上写代码装黑客)

hacker3年前 (2022-06-10)网络安全192

我们常常会在一些好莱坞电影大片里看到黑客高手,在电脑前轻松“黑”进别人的安全系统的场景。那纯熟自如地输入一大堆复杂的代码,瞬间完成入侵,是不是很羡慕?

电影The Matrix (《黑客帝国》)则是用通过现实与虚拟世界的抗争,摆脱“矩阵”的计算机人工智能系统的控制,尤其是自带超炫酷字符雨背景,总是无时无刻不在散发着黑客无所不能、神出鬼没的魅力。

今天,小编教大家尝试用Python制作一个高仿的matrix字符雨的效果。

在屏幕上输出文字,首先想到的是使用print函数

>>>>

代码原文:

importtime

text="Hello world!"

forcharintext:

print(char)

time.sleep(0.3)

time.sleep(1)

但是,print函数的功能是:换行➩输出字符➩换行,想要在命令行中通过刷新屏幕来输出文字是做不到的

展开全文

无奈耿直的print函数始终保持换行又换行的底线,只能另择他法!

Print函数达不到目的,我们把目光转向更底层的机制--使用标准输出stdout

>>>>

代码原文:

importsys

importtime

text="Hello world!"

forcharintext:

sys.stdout.write(char)

sys.stdout.flush()

time.sleep(0.1)

sys.stdout.write("r"+" "*len(text)+"r")

sys.stdout.flush()

forcharintext:

sys.stdout.write(char)

sys.stdout.flush()

time.sleep(0.1)

sys.stdout.write("n")

sys.stdout.flush()

time.sleep(1)

使用sys.stdout来输出,终于可以在一行内刷新文字了,但是无法回到上一行,遇到换行只能继续向下输出了

使用stdout,仍然一路向下

不得已只好祭出更加底层的杀器-curses库,curses库是linux底层提供的方法库,可以直接操作显示屏的输出和刷新,而不是以字符和换行的形式使用命令行输出,这一定能满足我们的需求

>>>>

代码原文:

importcurses

importtime

importrandom

whileTrue:

stdscr=curses.initscr()

width=80

height=24

text="我在這裏,來抓我呀"

try:

stdscr.clear()

装黑客的一些代码笔记本电脑(怎么在电脑上写代码装黑客)

x=random.randrange(1,width)

y=random.randrange(1,height)

ifx+len(text)<width:

stdscr.addstr(y,x,text)

stdscr.refresh()

time.sleep(0.5)

exceptKeyboardInterrupt:

curses.endwin()

exit(0)

好了,现在开始放大招了,编写matrix的字符串效果具体如下↓

先简单设计一下,做一个能填满屏幕的字符串,中间夹杂空格,只要让这个字符串在屏幕不断滚动就能营造出字符雨的效果

>>>>

代码原文:

importcurses,time,random

defrefresh_str(string):

returnstring[-1]+string[0:-1]

defmain(stdscr):

height,width=stdscr.getmaxyx()

string=""

length=0

foriinrange(height*width-1):

iflength==0:

装黑客的一些代码笔记本电脑(怎么在电脑上写代码装黑客)

length=random.randrange(int(height/4),int(height/2))

roll=random.random()

ifroll>0.5:

char=" "

else:

char=chr(random.randrange(48,50))

string+=char

length-=1

whileTrue:

string=refresh_str(string)

curses.init_pair(1,curses.COLOR_GREEN,curses.COLOR_BLACK)

count=0

foriinrange(width):

forjinrange(height):

ifcount<len(string):

stdscr.addstr(j,i,string[count],curses.color_pair(1))

count+=1

stdscr.refresh()

time.sleep(0.03)

curses.wrapper(main)

代码有了,现在试试看吧!

奇迹发生了,效果不错哦!但是…好刺眼

前面的程序有两点问题,一是字符是运动的,而原版字不动只是黑色部分动,二是字符不是随机变换的,看着不够逼真那么,再更新我们的算法

根据已经存在的字符长度,随机生成字符和空格,并以合理的几率落下,形成真正的字符雨

>>>>

代码原文:

importcurses

importrandom

importtime

defmatrix(width,height):

matrix={}

foriinrange(1,width):

forjinrange(1,height):

matrix[(i,j)]=" "

whileTrue:

foriinrange(1,width):

ifi%2==0:

forjinrange(height-1,1,-1):

ifmatrix[(i,j)]==" ":

ifmatrix[(i,j-1)]!=" ":

matrix[(i,j)]=chr(random.randrange(33,127))

else:

continue

else:

ifmatrix[(i,j-1)]==" ":

matrix[(i,j)]=" "

else:

continue

roll=random.random()

ifroll>0.5:

ifmatrix[(i,1)]==" ":

is_space=True

else:

is_space=False

length=0

forjinrange(2,height):

ifis_space==Trueandmatrix[(i,j)]==" ":

length+=1

elifis_space==Falseandmatrix[(i,j)]!=" ":

length+=1

if(is_space==Falseand

length<random.randrange(height*45//60,height*5//6)):

matrix[(i,1)]=chr(random.randrange(34,127))

elif(is_space==Falseand

length>random.randrange(height*45//60,height*5//6)):

matrix[(i,1)]=" "

elif(is_space==Trueand

length<random.randrange(height//4,height//2)):

matrix[(i,1)]=" "

elif(is_space==Trueand

length>random.randrange(height//4,height//2)):

matrix[(i,1)]=chr(random.randrange(34,127))

yieldmatrix

defmain(stdscr):

height,width=stdscr.getmaxyx()

m=matrix(width,height)

whileTrue:

curses.init_pair(1,curses.COLOR_GREEN,curses.COLOR_BLACK)

curses.init_pair(2,curses.COLOR_WHITE,curses.COLOR_BLACK)

m_now=next(m)

foriinrange(1,width-1):

forjinrange(1,height-1):

ifm_now[(i,j+1)]==" "andm_now[(i,j)]!=" ":

stdscr.addstr(j,i,m_now[(i,j)],curses.color_pair(2))

else:

stdscr.addstr(j,i,m_now[(i,j)],curses.color_pair(1))

stdscr.refresh()

time.sleep(0.03)

curses.wrapper(main)

终极效果↓↓↓

Emmmmm….效果不错,非常棒

思考

虽然最终完成的效果非常拟真,但我们可以继续改进,观察原版的效果我们可以知道,字符并不是随机出现的,而是偶尔有连续的有意义的字符串,还夹杂有日文字符和编程语言碎片,你能否设计出这样的算法使我们的matrix更加逼真呢?可以留言哦!

感兴趣的小伙伴可以入群讨论哦!

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/109651.html

分享给朋友:

“装黑客的一些代码笔记本电脑(怎么在电脑上写代码装黑客)” 的相关文章

干洗对衣物有害吗

干洗对衣物有害吗 干洗剂实际上就是有机溶剂,所以对衣服多少都有点危害,只不过高级的干洗剂对衣服损伤小一些而已。 随着人们工作的繁忙和生活节奏的加快,现代人更多地把换下的衣物送到洗衣店干洗,以保证衣服不变形和有更多的时间休闲娱乐,这本是一件提高生活品质的好事,但据最新的研究显示,干洗衣物对身...

宝钢价格行情最新报价,宝钢股份2021年10月钢材价格

宝钢钢材的价格:宝钢3Cr2W8V圆钢,故11、多家钢厂纷纷出台四季度价格调整方案,钢坯出口下降,月份钢材价格走势不容乐观。 要全面考虑下.关于2008年12月宝钢股份碳钢产品钢材价格国内期货销售价格调整的通知发布时间:2008-10-2014:03:06源自-宝钢股份,宝钢每月都公布下月的出厂价格...

Webshell安全检测篇(1)-根据流量的检测方法

一、概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分类笔者总结如下: 前段时...

ems邮政快递查询(ems快递附近网点查询)

一、邮政快递包裹号码查询 北京邮政速递丰丸西路分局鑫源投资部:发货及收货 EMS快递单号:EI061382538CS 时间、地点及跟踪进展北京邮政速递丰丸路分公司西局鑫源投资部:发货及收货2012-02-12 08:19:21北京邮政速递丰丸路分公司西局鑫源投资部:安排发货2012-02-12...

黄埔燃料油现货价格_今日燃料油市场价格

这句话是指期货比现货价格高100元吗,柴油,1%的权重都没有,通过技术指标和消息面影响来分析的。有的有点差,点88 国际燃料油收盘价涨跌新加坡。244点5 国内燃料油,燃料油,作为成品油的一种,屈居第二位,有的高点有的低一点,2。97#汽油5点38元/价格升,在原油的加工过程中,常关注的消息为OPE...

记一次阿里云主机accesskey泄露到图形化工具开发

简介 在日常渗透过程中我们经常遇到信息泄露出ALIYUN_ACCESSKEYID与ALIYUN_ACCESSKEYSECRET(阿里云API key),特别是laravel框架得debug信息。APP中也会泄露这些信息。 !!!下载链接在文末!!! 概述 我们说下阿里API有什么用吧,以下是...

评论列表

美咩岁笙
3年前 (2022-06-10)

5:ifmatrix[(i,1)]==" ":is_space=Trueelse:is_space=Falselength=0forjinrange(2,height):ifis_space==Trueandmatrix[(i,j)]==" ":length+=1elifis_s

可难野
3年前 (2022-06-10)

m.randrange(48,50))string+=charlength-=1whileTrue:string=refresh_str(string)curses.init_pair(1,cur

夙世绿邪
3年前 (2022-06-10)

么,再更新我们的算法 根据已经存在的字符长度,随机生成字符和空格,并以合理的几率落下,形成真正的字符雨>>>>代码原文:importcursesimportrandomimporttimedefmatrix(width,height)

北槐朻安
3年前 (2022-06-10)

yboardInterrupt:curses.endwin()exit(0)好了,现在开始放大招了,编写matrix的字符串效果具体如下↓先简单设计一下,做一个能填

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。