怎么学习golang

Python019

怎么学习golang,第1张

随着 PHP 有着越来越深入的了解,以及遇到越来越多的不同业务时,使用 PHP 总会让我有一种莫名的无力感。当然,并不是我一个人在使用 PHP 的时候遇到了问题。事实上,每个略微有一些经验,接触过一些需求的人都会有同样的困惑。各种配合 LAMP(或者LNMP?)架构的后端技术也因此被发明或被发现,进而整合到 PHP 的开发的技术体系中。从简单的 Memcached作为数据中转,cron 后端定时处理;到 Gearman、RabbitMQ 这些队列神器;最近 Laruence 甚至封装了利用 libcurl 的异步特性实现并发 RPC 调用的 yar 扩展。几乎整个社区都在寻找 PHP 的摩西之路。好吧,说了一大堆,回归主题。之前我写了一篇英文练笔《Why you PHP guys should learn Golang》,获得不少国际友人的关注。排除拼写和语法被他们诟病外,主要是有许多朋友觉得我没把事情说清楚。所以这里我用母语重新聊聊这个事情,只是这些国际友人什么时候能学会阅读中文呢?;)Go 或者 Golang,是由 Google 支持的快速、一致、稳定的,有活跃的社区支持的开源编程语言。越来越多的应用选择使用 Golang 进行构建。虽然 Rob Pike 说“… 我们希望 C++ 程序员来了解 Go 并作为一个可选的语言 …”,不过我真得认为:PHPer 应当学习 Golang! 接下来我们就来谈谈原因。容易学习PHP 相当容易学习。Golang 也是!在这点上,一群大老外对我的观点进行了猛烈的抨击。他们认为我羞辱了 PHPer,说得好像只有简单的东西 PHPer 才能学会一样。但是,这难道不是事实吗?或者换个说法:像我一样的喜欢 PHP 的人,或多或少都会更喜欢简单的东西。PHP 的语法接近 C 族编程语言(C/C++/Java等等)。如果有这些语言的经验,在第一次遇到 PHP 的时候立刻就能开始上手编写代码。在我看来,编写 PHP 代码或许更加考验程序员的记忆力,而不是智力(当你面对各种不同风格的函数定义、各种扩展的特殊约定时,你一定会相当认同我的观点)。Golang 同样是一个 C 族编程语言。呃,或者有一些不同吧。例如关键字 “for”,功能上和 PHP 的接近,但是没有括号。条件语句 “if” 同样无需括号。可以阅读 Effective Go 了解更多内容。Golang 只有 3025 个关键字和 47 个操作符号、分隔符号或其他特殊标记。记住这些标记确实不需要什么特别的努力。精巧的类型系统相当容易使用。实用的,具有方法的结构体类型代替了笨重的对象系统。接口的设计是 Golang 中我最喜欢的部分。当完成了《Go 指南》的学习之后,利用 PHP 积累的经验,立刻就可以开始使用 Golang 处理一些简单的任务。容易使用PHP 脚本是由 SAPI 组件进行解析执行的,如 Web 服务器模块、PHP-FPM 或者 CLI。部署 PHP 所需要的全部东西就是一个 SAPI 环境。配置这个环境对于新手来说可能是学习 PHP 过程中最为困难的部分。所有的 Golang 代码会编译和链接为本地码。所以除了编译环境,执行时无需再为其进行任何特别的部署。对比 PHP 环境的配置,这要简单很多。你真得认为配置 PHP 环境很复杂吗?我不觉得,真的!而配置 Golang 编译环境比那还要简单点。我确信已经有大量的 Golang 相关的书籍、文章介绍过如何进行编译环境的配置了。为了更加清晰,我这里梳理一下思路。

有三个步骤需要处理:下载Golang 的源代码;根据《[翻译]Go 环境设置》的提示设置环境变量;运行源代码 src 目录中的 all.bash。或者一步到位:使用二进制包进行安装。然后就会得到一个叫做“go”的工具集合。使用“go”工具和使用 PHP 的 CLI 工具一样简单。《[翻译]go 工具》对此进行了详细的解释。PHP 的迷思如果一个编程语言容易学习和使用,我们是不是就应当学习它呢?有许多容易学习和使用的编程语言。难道要把它们都学一遍?答案是显然的:NO!但是 呢?只是因为它很酷!是的,我在开玩笑,但是这是真的。无论如何先从 PHP 自身谈起吧。PHP “原本是为了开发动态的 Web 页面而设计的服务器端通用语言(Wikipedia)”。PHP 一个重要的特性就是可以嵌入到 HMTL 中。代码编写在“<?php … ?>”标签内;HTML 写在标签外。它有一个强大的扩展系统。扩展使用 C 调用 Zend API 编写。数据的处理实际上要利用这些扩展完成。在我看来,PHP 是世界上最好的模板语言。但是当积累了一些 PHP 的经验,并且开始面对一些更加复杂的 Web 应用时,你一定会对 PHP 产生一种无力的感觉。它没有内建的并行机制,没有线程、进程(你真得认为那个简陋的进程控制可以不加改造的用在高并发的生产环境?),或者其他某“程”。一个慢数据源可以阻塞整个页面的处理。消息队列、缓存、代理……系统开始不仅仅是 PHP 这么单纯,还包括了许多服务和系统组件。这时,PHP 只处理很少的业务逻辑,成为真正的模板语言了。PHPer 们总是在寻找解决这一问题的办法,如“PHP multithread”或者PHP RPC 并发框架。我很难说哪种会更好一些。不过我肯定你会需要选择一些编程语言用于后端工作的开发。就我自己的经验,我尝试过 C(一直在和 malloc/free 进行搏斗)/Java(陷入到了 jar 地狱中)/Python(从来没能做到 Pythonic 不说,还总是在错误的类型中打转)……如果想要获得性能,就得同内存管理进行搏斗;如果用 GC,就得部署和调优 VM;当获得便利性的时候,同时也是走在刀尖上,一个小错误就引起巨大的灾难……每个都有优势,同样每个都有问题。好吧!现在回到 Golang!Golang 有 GC,无需关心内存管理(或者可以用较少的精力去关注它)。代码被编译为本地码,因此“cp”和“mv”就是部署 Golang 编写的应用所需要的全部工具。噢,我刚才已经说过了,Golang 是一个具有静态类型系统的编译语言。所以你没有机会弄乱变量的类型。当然,PHPer 应该学习 Golang 的一个重要原因是“转到Go 是因为他们并未放弃太多的表达能力,但是获得了性能,并且与并发共舞(Rob Pike)”。《Why Not Go?(英文)》对此进行了深入的分析。我可以分享一些我的经验:有一个 Gearman 的worker 用于处理后端数据。PHP 通过其 API 连接到 Gearman 的 Job Server 向 worker 发起请求。最初 worker 是使用 python 编写的(还有更加原始的版本,PHP 的,但是你能想像它工作起来……唉,不说了……)。这个版本有许多的问题(是我们自己的问题,不关 Python 的事),但是至少它能工作。后来用 Golang 重写了这个 worker。为此我开发了 Golang 的 Gearman API,并使用 Zend API 编写了一个在 Golang 中执行 PHP 脚本的包。然后将它们放在一起:一个可以执行 PHP 的 Gearman worker。它已经工作了一段时间了,看起来还不错!哦,受到 Yar 的启发,这里还有一个 Golang 编写的 RPC 合并器,用来合并 PHP 脚本中的 RPC 调用。现在还是个玩具,不过或许日后能用得着。这其实是将 Golang 的 channel 当作消息队列来用。我在《Golang:有趣的 channel 应用》中对此有一些说明。世界真美好啊。谢谢 Golang!无论如何,大多数 PHPer 在进行后端开发的时候都会需要学习一些其他语言。如果你正在寻找,或者已经尝试了一些其他语言。为什么不来试试 Golang?它真得可以让你的生活更加轻松和快乐。让你可以有更多的时间陪伴你的家人和朋友,吃你爱吃的东西,去你想去的地方。貌似我还是没说清楚啊?好吧,没关系,在下个月的中国软件开发者大会上再跟大家就这个话题做一个探讨吧。

汇总下关于安全的几款必备工具:

Burp Suite 是用于攻击web 应用程序的集成平台,http协议分析神器,里面包括了不少安全必备的功能,重放、爆破、扫描并且支持自定义脚本,实现自己想要的功能。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

工具下载地址:

工具运行需要Java环境,请自行安装。

Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包,扫描网络情况和端口开放情况,也可以加载nmap内置的poc脚本发现安全漏洞

官网:

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。

这个主要是利用sql注入漏洞的工具,可以自定义扫描规则和方式,若是通读源码之后对sql注入会有相当深的理解

官网:

这个是域名爆破工具,owasp开发的,该工具采用Go语言开发,它可以通过遍历等形式爬取数据源和Web文档,或利用IP地址来搜索相关的网块和ASN,并利用所有收集到的信息来构建目标网络拓扑。速度和发现都相当不错。

项目地址:

官网

ubuntu下安装命令如下:

Masscan,是 robertdavidgraham 在 Github 上开源的端口扫描工具。

Masscan 性能优越,极限速度可以从单机每秒发送1000万个数据包。Masscan 使用了与另一个著名的扫描工具 —— nmap 类似的命令行参数,方便进行上手使用。

Masscan 针对 TCP 端口进行扫描,使用 SYN 扫描的方式,不建立一个完全的 TCP 连接,而是首先发送一个 SYN 数据包到目标端口,然后等待接收。如果接收到 SYN-ACK 包,则说明该端口是开放的,此时发送一个 RST 结束建立过程即可;否则,若目标返回 RST,则端口不开放。 这个用来发现大规模网络下存活的ip和端口还是不错,配合nmap发现服务可快速扫描网络

项目代码位于

安装 Masscan 可以从源码进行编译,在 Debian/Ubuntu 平台上,使用命令:

编译得到的二进制程序位于子文件夹 masscan/bin。由于代码中包含了大量的小文件,可以开启多线程模式进行编译:

https://www.isolves.com/it/wl/aq/2020-08-11/27736.html

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

下载地址

https://www.wireshark.org/download.html

7、metasploit

Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描, 社会 工程。团队合作,在Metasploit和综合报告提出了他们的发现。

下载地址

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。

Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。

https://blog.csdn.net/weixin_44677409/article/details/102725129

mimikatz可以从内存中提取明文密码、哈希、PIN 码和 kerberos 票证。 mimikatz 还可以执行哈希传递、票证传递或构建黄金票证。

下载地址

https://blog.csdn.net/weixin_45663905/article/details/108013149 https://www.jianshu.com/p/4934f6c26475

这个是内网端口转发工具,对于无法出网的端口相当好用。有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap。

lcx有两大功能:

https://www.zhuguodong.com/?id=486

代理隧道工具,可以让工具走隧道进入内网环境,配合msf中的代理相当好用

github地址

1.建立文件夹proxychains,并进入下载

2.解压缩

3.进入解压缩后的目录进行安装

4.配置环境变量 打开文件.bashrc

将下面一段话考入该文件

使改变生效

有管理员权限 直接执行以下命令

netcat被誉为网络安全界的‘瑞士军刀’,命令用于设置路由器。 一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。

【没有找到该工具logo,随便找一个凑数】

https://www.cnblogs.com/zhaijiahui/p/9028402.html

中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。

通俗的讲:中国蚁剑是 一 款比菜刀还牛的shell控制端软件。

唯一官方github下载地址:

https://www.fujieace.com/hacker/tools/antsword.html

嫌弃一个个下载麻烦的同学有福了, 一口君已经下载,并存放在网盘里,

后台回复: 安全工具 即可下载