写几个自己比较喜欢的字体
DejaVu Sans Mono -Regular
Hasklig -Semibold
Fira Mono for Powerline -Medium
Inconsolata系列 都很好看
Anonymous Pro -Bold
Hack Nerd Font -Regular
目前用的是DejaVu Sans Mono for Powerline 圆润好看,还有就是非ascii码的字体大小要与默认字体大小一致,不然会有字间距过宽的问题。
记录下kali里burpsuite的配置过程
Java环境配置
kali里默认的都是openjdk的java,先换成oracle的(依稀记得之前也能跑,不行再来做这一步吧
下载地址https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
要登录Oracle账号,我下载的是jdk-8u202-linux-x64.tar.gz
进行java环境更换
update-alternatives --config java
update-alternatives --config javac
这两条语句用来更换环境
123456mv 桌面/jdk-8u202-linux-x64.tar.gz /optcd /opttar -xzvf jdk-8u202-linux-x64.tar.gz rm jdk-8u202-linux-x64.tar.gzcd jdk1.8.0_202vi ./zshrc
我这里用的是zsh,如果你是bash就是.bashrc
输入
1234567# install JAVA JDKexport JAVA_HOM ...
一些前端知识
html、css、js
html是框架,css则是颜色布局文件,js则实现逻辑。
同时还可以通过js来实现动态网页
ajax、json、xml
ajax就是动态加载,像下划刷新那种
json实质上是dic,通过键值对来储存数据
xml是一种可扩展的标记语言,可以自定义标签
dom树
就是。。结构树一样的东西
Http&简单Socket的学习
学习爬虫顺便学习一下
网络请求的过程
IP地址和url
动态ip和静态ip的问题
动态ip,对外是不固定的,定时收回更换,同时在家中布置服务器也不现实
静态ip,花钱买呗
url协议
url即资源地址
模板:http://www.example.com:80/path/to/xxx.html?key1=www&key2=333#chap
常用协议:http https file ftp
TCP/IP协议
TCP
是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在协议族中位于IP层之上,应用层之下,负责处理数据流,处理丢包等情况。相当于一个中间者
TCP的三次握手连接(three-way handshake)
ps:SYN(建立连接), ACK(响应) == 数据包 (SYN攻击也是DDoS的一种, 消耗CPU和内存)
流程:Client 向 Server 发送一个 SYN 来创建一个主动打开,Client 把这段连接的序号设为随机数 A ,然后 Server 为合法的 SYN 传回一个 SYN/ACK ,其中 ACK 的确认码为 A+1, SYN/ACK 包 ...
UIKit-让TextView和键盘动起来
今天在写评论页面,需要实现评论框和页面一起动起来
使用固定高度
12345678910111213141516171819202122232425enum Move { case up case down}func animatetextView(textView: UITextView, move: Move){ let movementDistance:CGFloat = -350 let movementDuration: Double = 0.3 var movement:CGFloat = 0 if move == .up { movement = movementDistance } else { movement = -movementDistance } UIView.animate(withDuration: movementDuration) { self.com ...
UIKit-两种可行的计算Label高度的方法
今天做ZrMusic的评论页面的时候需要通过text来自适应Label的高度,用了两种比较好的方法,分享一下
提醒
label的numberOfLines属性要设置为0,即能显示多少行就显示多少行,不然默认是只有一行的
通过textBound的形式
123456func heightWithText(text:String) -> CGFloat { let size:CGRect = text.boundingRect(with: CGSize(width: 100, height: 999.9), options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font:UIFont.systemFont(ofSize: 14)], context: nil) return size.height }
可以通过配置参数得到
通过sizeToFit ...
UIKit-For循环可恶的值传递
今天在写一个判断程序的时候,遇到了for循环中值传递和引用传递的问题
这是原代码:
然后输出显示
一堆的nil
可以看到有属性但是无法修改
当我改成利用下标来访问时
成功了,所以猜测for item in items采用的值传递,for i in 0..<count是引用
UIKit-关于UISearchController那些事
本篇讲到SearchBar一些配置中的问题
我使用的是在要添加的页面添加Controller然后新增一个TableViewController配合使用的模式
即
123let sr = SearchResults() searchController = UISearchController(searchResultsController: sr) searchController.searchResultsUpdater = sr
可以减少代码的臃肿量,尤其是在代码量很大的Player页面里,但会有很多数据传输的问题,这个先不谈
位置偏移
如果直接设置navigationBar隐藏,然后把searchBar添加到一个位置,会出现tableVIew留空的状态
这是tableVIew自动处理边距的问题
把tableView.contentInsetAdjustmentBehavior设置为never就行
如果设置一个View然后把bar放进去,不会又偏移,但是拖动列表后会出现偏移,解决方法也是把tableView.contentInsetAdjust ...
UIKit-Pass Data Between View Controllers
这几天都在写播放器… 相关的内容写完再上传吧
本文来源:https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/
Use var controller
假设我们有两个ViewController名为First和Second
Second里面有一个UILabel
1234567891011121314151617181920212223class Second: UIViewController { var text: String? override func viewDidLoad() { super.viewDidLoad() let btn = UIButton(frame: CGRect(x: 0, y: 500, width: 200, height: 200)) btn.backgroundColor = .red btn.addTarget(self, action: ...
冬令营Day6:安卓提权漏洞基础、原理、利用和发现方法简介
安卓NativeLib和Kernel简介和攻击面
安卓底层安全架构简介
安卓开源问题
什么是开源?
谷歌使用HAL接口
安卓碎片化问题:厂商和系统
安卓底层安全框架及攻击缓释技术
自主访问控制
基于uid、gid
容易被突破
强制访问控制
SELinux
攻破较为困难
极大降低攻击后危害
验证启动模式(Verified Boot)
通过硬件密钥,逐步验证整个系统
一旦出厂之后,不可修改
修改之后系统无法启动(测试,解锁BootLoader后可以)
6.0后开始支持,7.0之后更加严格
代码签名和平台密钥
无法刷入任何非签名镜像(不解锁BootLoader)
System级别的签名验证(系统APP)
安卓系统启动
init的过程
Root相关基础知识
名词解释
rwx之外的权限s位
BootLoader(解锁、刷机)
Recovery(twrp、验证签名、OTA更新)
Root类型(时间)
永久Root
临时Root
取消Root
Root方式
直接使用Recovery刷入su和deamon-su
使用BootLoader替换Recovery之后,再刷 ...