- 博客(118)
- 收藏
- 关注
原创 利用Recon-ng进行被动信息搜集
利用Recon-ng进行被动信息搜集全特性的web信息搜索框架,基于Python开发。注:阅读本文的时候注意同时阅读代码中的注释。文章目录利用Recon-ng进行被动信息搜集1 进入recon-ng环境1.1 欢迎界面1.2 帮助界面1.2.1 查看交互模式下可使用的命令1.2.2 查看recon-ng命令2 工作区2.1 查看已有的工作区2.2 添加新的工作区2.3 进入某个工作区2.4 工作区参数2.4.1 显示工作区参数2.4.2 设置工作区参数3 DNS查询3.1 查询hosts3.1.1
2021-10-09 10:16:02
459
原创 DIG命令的使用
DIG命令的使用1 直接查询基本格式:dig [@server] host例子:$ dig www.nju.edu.cn; <<>> DiG 9.16.12-Debian <<>> www.nju.edu.cn;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36607;; flags: q
2021-10-01 16:00:59
1857
原创 nslookup命令的使用
NSLOOKUP命令的使用nslookup 主要用来诊断域名系统 (DNS = Domain Name System) 基础结构的信息。查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。文章目录NSLOOKUP命令的使用1 查询域名解析地址2 查询域名的指定解析类型的解析记录3 查询全部1 查询域名解析地址基本格式:nslookup host [server]每个DNS服务器查询到的IP可能不相同可能查询出来的记录会出现多个对于被污染的域名,查询的结果是不准确的
2021-10-01 15:06:48
2348
原创 Qt-02 创建Qt项目
2 创建Qt项目2.1 使用向导创建打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项弹出New Project对话框,选择Qt Widgets Application,选择【Choose】按钮,弹出如下对话框设置项目名称和路径,按照向导进行下一步,选择编译套件向导会默认添加一个继承自CMainWindow的类,可以在此修改类的名字和基类。继续下一步即可创建出一个Qt桌面程序。2.2 手动创建添加一个空项目选择【c
2021-06-26 23:12:19
246
1
原创 Qt-01 Qt概述
1 Qt概述1.1 什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。1.2 Qt的发展史1991年 Qt最早由奇趣科技开发1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言2012年 Qt又被Digia公司收购2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,
2021-06-26 22:55:10
284
原创 FP-24 事件(消息)驱动的程序设计
Lecture 24 事件(消息)驱动的程序设计Windows简介Windows是一种基于图形界面的多任务操作系统。系统中可以同时运行多个应用程序。每个应用程序通过各自的“窗口”与用户进行交互。用户通过鼠标的单击/双击/拖放、菜单选择以及键盘输入来与程序进行交互。Windows的功能以两种方式提供:工具(应用程序):资源管理器、记事本、画图、…,供用户(人)使用。函数库:作为Windows的应用程序接口(API),以C语言函数形式提供(在windows.h等头文件中申
2021-06-10 14:30:59
287
原创 FP-23 异常处理
Lecture 23 异常处理异常概述程序的错误通常包括:语法错误:指程序的书写不符合语言的语法规则。例如:使用了未定义或未声明的标识符左右括号不匹配…这类错误可由编译程序发现。逻辑错误(或语义错误):指程序设计不当造成程序没有完成预期的功能。例如:把两个数相加写成了相乘排序功能未能正确排序…这类错误可通过对程序进行静态分析和动态测试发现。运行异常:指程序设计对程序运行环境考虑不周而造成的程序运行错误。例如:对于“x/y”操作,给y输入了
2021-06-10 09:19:35
259
原创 FP-22 输入/输出(面向对象途径)
Lecture 22 输入/输出(面向对象途径)输入/输出(I/O)概述输入/输出(简称I/O)是程序的一个重要组成部分:程序运行所需要的数据往往要从外设(如:键盘、文件等)得到程序的运行结果通常也要输出到外设(如:显示器、打印机、文件等)中去。在C++中,输入/输出操作不是语言定义的成分,而是由具体的实现作为标准库的功能来提供。在C++中,输入/输出是一种基于字节流的操作:在进行输入操作时,可把输入的数据看成逐个字节地从外设流入到计算机内存。在进行输出操作时,则把输出的
2021-05-27 10:50:08
549
原创 FP-21 函数式程序设计
Lecture 21 函数式程序设计命令式程序设计范式(imperative programming)过程式与面向对象程序设计属于命令式程序设计范式(imperative programming)需要对“如何做”进行详细描述,包括操作步骤和状态变化。它们与冯诺依曼体系结构一致,是使用较广泛的程序设计范式,适合于解决大部分的实际应用问题。声明式程序设计范式(declarative programming)除了命令式程序设计范式外,还有一类是声明式程序设计范式(declarative p
2021-05-27 10:45:08
251
原创 FP-20 基于STL的编程
Lecture 20 基于STL的编程什么是STL?除了从C标准库保留下来的一些功能外,C++还提供了一个基于模板实现的标准模板库(Standard Template Library,简称STL)。STL基于模板实现了一些面向序列数据的表示及常用的操作。STL支持了一种抽象的编程模式。隐藏了一些低级的程序元素,如数组、链表、循环等。STL包含什么?容器类模板容器用于存储序列化的数据,如:向量、队列、栈、集合等。算法(函数)模板算法用于对容器中的数据元素进行一些常用操作,
2021-05-27 10:42:04
310
原创 FP-19 泛型(类属)程序设计
Lecture 19 泛型(类属)程序设计面临的问题在程序设计中,经常需要用到一些功能完全相同的程序实体,但它们所涉及的数据的类型不同。例如,对不同元素类型的数组进行排序的函数:void int_sort(int x[],int num);void double_sort(double x[],int num);void A_sort(A x[],int num);这三个函数的实现是一样的(如都采用快速排序算法)。再例如,元素类型不同的栈类:class IntStack{ int
2021-05-27 10:36:10
350
原创 FP-18 聚合/组合
Lecture 18 聚合/组合继承不是类代码复用的唯一方式在面向对象程序设计中,有些代码复用不宜用继承来实现:继承除了支持代码复用外,还体现了类之间在概念上的一般与特殊关系(is-a-kind-of)。如果两个类之间没有这个关系,纯粹是为了代码复用而用继承把它们关联起来,这样会造成概念上的混乱。例如:“飞机”类复用“发动机”类的功能就不宜用继承来实现。类之间的整体与部分关系类之间除了继承关系外,还存在一种整体与部分的关系(is-a-part-of),即一个类的对象包含了另一个类的对
2021-05-27 10:32:48
208
原创 FP-17 多继承
Lecture 17 多继承多继承的需要性对于下面的两个类A和B:class A{ int m; public: void fa();};class B{ int n; public: void fb();};如何定义一个类C,它包含A和B的所有成员,另外还拥有新的数据成员r和成员函数fc?用单继承实现:class C: public A{ int n,r; //把B类中的n复制过来 public: void fb(); //把B类中的fb复制过来 vo
2021-05-27 10:30:08
125
原创 FP-16 抽象类
Lecture 16 抽象类纯虚函数纯虚函数是没给出实现的虚函数,函数体用“=0”表示, 例如:class A{ ...... public: virtual int f()=0; //纯虚函数 ......};纯虚函数需要在派生类中给出实现。抽象类包含纯虚函数的类称为抽象类。抽象类不能用于创建对象。 例如:class A //抽象类{ ...... public: virtual int f()=0; //纯虚函数 ......};......A a; //
2021-05-27 10:27:39
248
1
原创 FP-15 消息的动态绑定
Lecture 15 消息的动态绑定消息的多态性消息的多态性体现为:相同的一条消息可以发送到不同类的对象,从而会得到不同的解释。对于具有public继承关系的两个类,一条可以发送到基类对象的消息,也可以发送到派生类对象,如果在基类和派生类中都给出了对这条消息的处理,那么这条消息就存在多态性。由于基类的指针或引用可以指向或引用基类对象,也可以指向或引用派生类对象:当通过基类的指针或引用向它指向或引用的对象发送消息时,就存在对消息(成员函数调用)的绑定问题。C++默认采用的是静态的消息绑定:
2021-04-19 19:10:26
114
原创 FP-14 继承——派生类
Lecture 14 继承——派生类继承的基本概念在开发一个新软件时,把现有软件或软件的一部分拿过来用称为软件复用。目前,不加修改地直接复用已有软件比较困难。已有软件的功能与新软件所需要的功能总是有差别的。解决这个差别有下面的途径:修改已有软件的源代码,它的缺点是:需读懂源代码,可靠性差、易出错,有时源代码难以获得继承机制(Inheritance):在定义一个新的类时,先把已有的一个或多个类的功能全部包含进来,然后在新的类中再给出新功能的定义或对已有类的某些功能重新定义。不需要
2021-04-19 19:08:02
221
原创 FP-13 λ表达式
Lecture 13 λ表达式问题的提出对于下面求定积分的函数:double integrate(double (*f)(double), double a, double b);如果要求函数x^2在区间[0,1]的定积分,则一般要先定义一个函数square:double square(double x) { return x*x; }然后再把它作为参数去调用integrate:integrate(square,0,1);如果还要再求函数x^3 、…等一些在程序中很少使用的简单函数的定
2021-04-08 09:27:17
107
原创 FP-12 类成员指针
Lecture 12 类成员指针操作符.*和->*a.*pa是一个对象(或结构)p是一个指针,它指向a所属类的某个成员含义:访问a的由p指向的成员pa->*ppa是一个指向对象(或结构)的指针p是一个指针,它指向*pa所属类的某个成员含义:访问pa所指向的对象的由p指向的成员p的类型如何定义?类成员指针class A{ public: int x; void f();};int *p_x = &A::x; //Erro
2021-04-08 09:26:01
155
原创 FP-11 C++特殊操作符的重载
Lecture 11 C++特殊操作符的重载C++特殊操作符赋值操作符=访问数组元素操作符[]动态对象创建与撤销操作符new与delete函数调用操作符()类成员访问操作符->类型转换操作符赋值操作符“=”的重载同一个类的两个对象如何赋值?A a,b;......a = b; C++编译程序会为每个类定义一个隐式的赋值操作,其行为是:逐个成员进行赋值操作。对于普通成员,它采用常规的赋值操作。对于成员对象,则调用该成员对象类的赋值操作进行成员
2021-04-08 08:47:23
173
原创 FP-10 操作符重载
Lecture 10 操作符重载操作符重载的需要性C++语言本身没有提供复数类型,可通过定义一个类来实现:class Complex //复数类定义{public: Complex(double r=0.0,double i=0.0) { real=r; imag=i; } void display() const { cout << real << '+' << imag << 'i'; } ...... p
2021-04-07 08:18:22
164
原创 FP-09 类作为模块
Lecture 09 类作为模块什么是模块?模块是指:从物理上对程序中定义的实体进行分组,是可以单独编写和编译的程序单位。模块是组织和管理大型程序的一个重要手段。一个模块包含接口和实现两部分:接口:是指在模块中定义的、可以被其它模块使用的一些程序实体的描述。实现:是指在模块中定义的所有程序实体的具体实现描述。对于C语言程序中的模块:接口:包含被外界使用的类型定义、常量定义以及全局变量和函数的声明。(.h文件)实现:包含本模块中所有的类型、常量、全局变量和函数的定义。(.c文件)
2021-04-07 08:13:13
163
原创 FP-08 友元
Lecture 08 友元根据数据封装的要求,类中定义的数据成员不能在外界直接访问,必须要通过类中定义的public成员函数来访问。在有些情况下,这种对数据的访问方式效率不高!为了提高在类的外部对类的数据成员的访问效率,在C++中,可以指定某些与一个类密切相关的、又不适合作为该类成员的程序实体直接访问该类的非public成员,这些程序实体称为该类的友元。友元是数据保护和数据访问效率之间的一种折衷方案。友元需要在类中用friend显式指出,它们可以是全局函数、其它的类或其它类的某些成员函
2021-04-07 08:11:24
214
原创 FP-07 常成员函数、静态成员
Lecture 07 常成员函数、静态成员获取 vs. 改变 对象的状态在程序运行的不同时刻,一个对象可能会处于不同的状态(由对象的数据成员的值来体现)。可以把类中的成员函数分成两类:获取对象状态(不改变数据成员的值)改变对象状态(改变数据成员的值)例如:class Date{ public: void set(int y, int m, int d); //改变对象状态 int get_day(); //获取对象状态 int get_month(); //获取对象状态 in
2021-04-07 08:09:03
134
原创 FP-06 拷贝构造函数
Lecture 06 拷贝构造函数若一个构造函数的参数类型为本类的引用,则称它为拷贝构造函数。例如:class A{ ...... public: A(); //默认构造函数 A(const A& a); //拷贝构造函数}; 在创建一个对象时,若用另一个同类型的对象对其初始化,将会调用对象类中的拷贝构造函数。在三种情况下,会调用类的拷贝构造函数:创建对象时显式指出。例如:A a1; A a2(a1); //创建对象a2,用对象a1初始化对象a2把对象作
2021-04-07 08:06:42
142
原创 FP-05 构造函数与析构函数
Lecture 05 构造函数与析构函数对象的初始化–构造函数当一个对象被创建时,它将获得一块存储空间,该存储空间用于存储对象的数据成员。在使用对象前,需要对对象存储空间中的数据成员进行初始化。C++提供了一种对象初始化的机制:构造函数它是类的特殊成员函数,名字与类名相同、无返回值类型。创建对象时,构造函数会被自动调用。例如:class A{ int x,y; public: A() { x = 0; y = 0; } //构造函数 ......};......A a; /
2021-04-07 08:04:52
126
原创 FP-04 “this”指针
Lecture 04 “this”指针类的每一个成员函数(静态成员函数除外)都有一个隐藏的形参this,其类型为该类对象的指针;在成员函数中对类成员的访问是通过this来进行的。例如,对于前面A类的成员函数g:void g(int i) { x = i; }编译程序将会把它编译成:void g(A *const this, int i) { this->x = i; }; 当通过对象访问类的成员函数时,将会把相应对象的地址传给成员函数的this参数。例如,对于下面的成
2021-04-07 08:01:53
110
原创 FP-03 对象与类
Lecture 03 对象与类类对象构成了面向对象程序的基本计算单位,而对象的特征则由相应的类来描述。对象是用类来创建的,因此,程序中首先要定义类。C++的类是一种用户自定义类型,定义形式如下:class <类名> { <成员描述> } ;成员包括:数据成员和成员函数。类成员标识符的作用域为整个类定义范围。数据成员数据成员是对类的对象所包含的数据描述,它们可以是常量和变量,类型可以是任意的C++类型(void除外) 。数据成员的描述格式与C的结构成员的描述格
2021-04-07 07:59:53
248
原创 FP-02 面向对象程序设计概述
Lecture 02 面向对象程序设计概述什么是面向对象程序设计(Object-oriented Programming)面向对象程序设计具有以下几个特征:程序由若干对象组成,每个对象是由一些数据以及对这些数据所能实施的操作所构成的封装体;对象的特征(包含那些数据与操作)由相应的类来描述;对数据的使用是通过向包含数据的对象发送消息(调用对象类的对外接口中的操作)来实现的;一个类所描述的对象特征可以从其它的类继承(获得)。面向对象程序设计的基础是数据抽象与封装。注意:如果没有“继承”,则称
2021-04-07 07:56:18
182
原创 FP-01 数据抽象与封装概述
Lecture 01 数据抽象与封装概述抽象与封装抽象与封装是两个重要的程序设计手段,主要是用来驾驭程序的复杂度,便于大型程序的设计、理解与维护。对于一个程序实体而言,抽象是指该程序实体的外部可观察到的行为,不考虑该程序实体的内部是如何实现的。(控制复杂度)封装是指把该程序实体内部的具体实现细节对使用者隐藏起来,只对外提供一个接口。(信息保护)主要的程序抽象与封装机制包括:过程抽象与封装数据抽象与封装过程抽象与封装过程抽象用一个名字来代表一段完成一定功能的程序代码,代码的使用
2021-04-07 07:54:42
592
原创 STL-28 Pair in C++ Standard Template Library (STL)
Pair in C++ Standard Template Library (STL)The pair container is a simple container defined in <utility> header consisting of two data elements or objects.The first element is referenced as ‘first’ and the second element as ‘second’ and the order
2021-04-03 00:02:07
148
原创 STL-27 Iterators in C++ STL
Iterators in C++ STLIterators are used to point at the memory addresses of STL containers. They are primarily used in sequence of numbers, characters etc. They reduce the complexity and execution time of program.Operations of iterators:begin():- This
2021-04-03 00:01:57
115
原创 STL-26 Introduction to Iterators in C++
Introduction to Iterators in C++An iterator is an object (like a pointer) that points to an element inside the container. We can use iterators to move through the contents of the container. They can be visualized as something similar to a pointer pointing
2021-04-03 00:01:47
145
原创 STL-25 Functors in C++
Functors in C++Please note that the title is Functors (Not Functions)!!Consider a function that takes only one argument. However, while calling this function we have a lot more information that we would like to pass to this function, but we cannot as it
2021-04-03 00:01:32
117
原创 STL-24 unordered_multimap and its application(Introduced in C++11)
unordered_multimap and its application(Introduced in C++11)Allows Duplicates:I have discussed unordered_map in my previous post, but there is a limitation, we can not store duplicates in unordered_map, that is if we have a key-value pair already in our u
2021-04-03 00:01:16
120
原创 STL-23 unordered_map in C++ STL (Introduced in C++11)
unordered_map in C++ STL (Introduced in C++11)unordered_map is an associated container that stores elements formed by combination of key value and a mapped value. The key value is used to uniquely identify the element and mapped value is the content assoc
2021-04-03 00:01:05
147
原创 STL-22 unordered_multiset and its uses(Introduced in C++11)
unordered_multiset and its uses(Introduced in C++11)I have discussed about unordered_set in my previous post the problem with unordered_set is that, it is not possible to store duplicate entries in that data structure. For example if we have some value v
2021-04-03 00:00:54
157
原创 STL-20 Multimap in C++ Standard Template Library
Multimap in C++ Standard Template LibraryMultimap is similar to map with an addition that multiple elements can have same keys. Also, it is NOT required that the key value and mapped value pair has to be unique in this case. One important thing to note ab
2021-04-03 00:00:42
111
原创 STL-19 Map in C++ Standard Template Library (STL)
Map in C++ Standard Template Library (STL)Maps are associative containers that store elements in a mapped fashion. Each element has a key value and a mapped value. No two mapped values can have same key values.Some basic functions associated with Map:
2021-04-02 00:06:09
118
原创 STL-18 Multiset in C++ Standard Template Library (STL)
Multiset in C++ Standard Template Library (STL)Multisets are a type of associative containers similar to set, with an exception that multiple elements can have same values.Some Basic Functions associated with multiset:begin() – Returns an iterator to
2021-04-02 00:05:58
121
原创 STL-17 Set in C++ Standard Template Library (STL)
Set in C++ Standard Template Library (STL)Sets are a type of associative containers in which each element has to be unique, because the value of the element identifies it. The value of the element cannot be modified once it is added to the set, though it
2021-04-02 00:05:46
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人