Or1onX's blog


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Search

C++优先队列实现哈夫曼编码

Posted on 2019-03-02

0x00 介绍

哈夫曼算法

  • 《数据结构与算法分析》给出定义:

    算法对一个由树组成的森林进行。一棵树的权等于它的树叶的频率的和。任意选取最小权的两棵树T1和T2,并任意形成以T1和T2为子树的新树,将这样的过程进行C - 1次。在算法的开始,存在C棵单节点树——每个字符一棵。在算法结束时得到一棵树,这棵树就是最优哈夫曼编码树。

    哈夫曼编码过程

  • 给出n个字符,对这n个字符进行编码。在这里,我们令n等于5,代表的权值分别为0.1、0.2、0.3、0.4和0.5。根据哈夫曼算法,对其进行哈夫曼编码将按照下列方式依次完成:
  • 5个结点,令其名称即为各自权值:
    Read more »

narnia writeup

Posted on 2018-04-23

前言

  1. narnia 是 overthewire 上的一个二进制漏洞闯关游戏,总共有9个关卡

    平台上编译的二进制可执行文件没有开启 ASLR,关闭了 DEP 以及栈保护。该系列在 overthewire 上的难度系数是 2/10。
  2. 在通关结尾处作者提到如下

    作者想保证游戏的体验度,不希望大家把 writeup 公布出来,犹豫了好久,决定还是把解题过程放出来吧,一方面记录自己入坑二进制的过程,另一方面希望能给其他同学一些参考。
    Read more »

初探缓冲区溢出

Posted on 2018-04-19

0x00 前言

  • 缓冲区溢出是一种历史悠久的漏洞,早在 1988 年,由罗伯特,莫里斯(R ob。rtMorris)制造的 Morris 蠕虫,它曾造成全世界6000多台网络服务器瘫痪。
  • 虽然这一漏洞出现时间很久远,现有的防御方法也很有效,但我觉得它依然有很大的研究意义。毕竟攻防没有任何一端会停滞,理解旧的漏洞也是为了更好地理解新的攻击手段,进而更好地完善防御方法。

0x01 环境

  • ubuntu 16.04.4 LTS x86-64

  • 由于现代操作系统针对缓冲区溢出已经有很完善的防御机制,为方便演示,我们进行如下配置:

    • 关闭 ASLR
      在/proc/sys/kernel/randomize_va_space文件中保存有 ASLR 的信息,开启时的值不为 0

      Read more »

Linux下进程状态的切换

Posted on 2018-03-15

前言

  • 我们知道进程是系统进行资源分配和调度的基本单元,在一般的操作系统中,进程至少有如下三种基本状态:就绪态、运行态、阻塞态,它们之间的转化关系为:

    除此之外,还可以有新建态和终止态。我们可以从内核代码来深入其转化的细节。

  • 为了讨论起来更加简单,我们用Linux 0.11的部分内核代码来介绍。

  • 由于内核代码相对复杂,这里只关注和进程切换相关的代码,下面来看一下会涉及到的文件

    Read more »

https攻击小结

Posted on 2018-01-29 | In proto

0x00 前言

  • HTTPS 的全称是 Hyper Text Transfer Protocol over Secure Socket Layer,从字面上看便可得知其是 HTTP 基于 SSL/TLS 的应用。因此,有许多攻击手法实际上是针对安全套接层的攻击。
  • 本篇文章有如下几个部分组成——协议漏洞分析(目前的 TLS 协议设计比较完善,但对于 较久的版本以及 SSL 协议,有很多设计上的漏洞。可以借这些现有漏洞进行攻击。
    )、中间人攻击(逻辑上的攻击)以及一些其他东西。
  • 文章中若有不当之处,还望师傅们指正 :)
    Read more »

DDoS攻防小结

Posted on 2017-10-16

简介

  • DDoS(Distributed Denial of Service)分布式拒绝服务攻击指借助于C/S技术,将多台计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。
  • 利用分布式的客户端,向服务提供者发起大量看似合法的请求,消耗或长期占用大量资源,从而达到拒绝服务的目的。

    从僵尸网络谈起

    僵尸网络

    一般指僵尸主人出于恶意目的,传播大量僵尸程序,并采用一对多方式进行控制的大型网络。

    僵尸网络的组建

    节点

  1. 普通PC利用过程
    1. 感染传播
      Read more »

由一道Vigenere想到的造轮子

Posted on 2017-09-23

插播广告,这是crypto-online

  • 前几次的密码学课程上,几乎每次上课前都会做几道题目(其中包括去解一些古典密码,如Vigenere等)emmm… ,所以就想做一个关于常见古典密码加解密的工具,而碰巧得知编程语言中的 “网红” javascript有一个强大的加解密库 —— CryptoJS,就萌生了建个线上加解密的小站。完全代码见github,还在建设中,大家如果有一些好的想法和建议,欢迎指点交流 ^ _ ^

广告打完了,扯一扯正题

  • 在写crypto-online之前,密码学老师给我们发了一道破解Vigenere的题,异或加密,让我们没事儿的时候做一做。

  • 这题是这样的,已知十六进制编码的密文,密钥长度1-13字节,每一位都是0-255 随机的ascii(密钥可以不在可打印字符内)

  • 在假设密钥长度为n的情况下,常规套路都是将密文分成n段,统计词频

    Read more »

记一次简单的恶意apk逆向分析

Posted on 2017-08-01

故事起因

  • 估计也会有很多同学升学时其亲友收到过这样的短信:

    xxx家长您好,这是您孩子的升学资料 xxx.com 请查看 blablabla~

  • 家人最近也收到了类似的短信,一开始我的心情是比较紧张的,毕竟前不久考完期末。。。

  • 结果访问该网址后发现是自动下载一个apk文件,360发出了警告,

    emmm……突然就来了兴趣-。-

Read more »

Tips-of-Sharkfest_Challenge_2016

Posted on 2017-03-03 | In proto
前言
  • Sharkfest Challenge对于学习wireshark来说是个非常不错的挑战赛,2016年的还没有在网上找到解题思路,索性就自己写一篇(强迫自己写博客学习:))
    Read more »

python与多线程

Posted on 2017-02-27 | In python
多线程
  • 让许多独立的任务同时运行
  • 使用多线程编程时,一个编程任务可以规划成几个执行特定函数的线程
    UserRequestThread:负责读取客户端输入,该输入可能来自I/O通道。程序将创建多个线程,每个客户端各一个,客户端的请求将会被放入队列中。
    RequestProcessor:该程序负责从队列中获取请求并进行处理,为第3个线程提供输出。
    ReplyThread:负责向用户输出,将结果传回给用户(如果是网络应用),或者把数据写到本地文件系统或数据库中。
  • 多线程编程对于具有如下特点的编程任务而言是非常理想的:
    本质上是异步的;
    需要多个并发活动;
    每个活动的处理顺序可能是不确定的(或者说是随机的、不可预测的)
    Read more »
12
Or1onX

Or1onX

Stay hungry, stay foolish.

15 posts
3 categories
12 tags
RSS
© 2019 Or1onX
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4