<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[精彩的艺术]]></title><description><![CDATA[在编程世界中没有什么用分层解决不了的~~~]]></description><link>https://blog.youkuaiyun.com/capnik</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; capnik]]></copyright><item><title><![CDATA[常用iptables命令及概念总结]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/111013073</link><guid>https://blog.youkuaiyun.com/capnik/article/details/111013073</guid><author>capnik</author><pubDate>Thu, 10 Dec 2020 22:13:02 +0800</pubDate><description><![CDATA[开启目的端口22访问

iptables -A INPUT -p tcp --dport 22 -j ACCEPT





开启源端口22访问 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT





显示nat表的PREROUTING链的规则：

iptables -t nat -nL PREROUTING --line-numbers







端口转发：

iptables -t nat -A PREROUTING -p tcp -i b...]]></description><category></category></item><item><title><![CDATA[python - struct的妙用]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/79730023</link><guid>https://blog.youkuaiyun.com/capnik/article/details/79730023</guid><author>capnik</author><pubDate>Wed, 28 Mar 2018 16:43:52 +0800</pubDate><description><![CDATA[转换为字符串 struct.pack(&quot;&amp;lt;I&quot;,data)转换为整数    struct.unpack(&quot;&amp;lt;I&quot;,data[88:92])[0]]]></description><category></category></item><item><title><![CDATA[Linux PATH 添加方法]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/79345769</link><guid>https://blog.youkuaiyun.com/capnik/article/details/79345769</guid><author>capnik</author><pubDate>Thu, 22 Feb 2018 10:21:43 +0800</pubDate><description><![CDATA[Linux平台上的PATH问题一直让我很尴尬,每次在系统PATH中加入路径之后，在当前terminal窗口可以使用命令，但是重新打开另一个窗口之后，或者重启系统之后命令无法继续使用，只能重新在EXPORT PATH，或者修改/etc/profile文件。相信很多人都遇到过这个问题，记得当时我们团队的孩霸子就这个问题纠结了好久，今天记录一下自己的解决方式，以方便以后使用。也希望能够给大家提供一些帮助...]]></description><category></category></item><item><title><![CDATA[保留地址段]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/76106526</link><guid>https://blog.youkuaiyun.com/capnik/article/details/76106526</guid><author>capnik</author><pubDate>Wed, 26 Jul 2017 09:39:56 +0800</pubDate><description><![CDATA[保留地址段
地址起始
IP地址数量
用途


0.0.0.0/8
0.0.0.0 – 0.255.255.255
16,777,216
软件


10.0.0.0/8
10.0.0.0 – 10.255.255.255
16,777,216
内网


100.64.0.0/10
100.64.0.0 – 100.127.255.255
4,194,304
]]></description><category></category></item><item><title><![CDATA[Shellcode结构图]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/70173624</link><guid>https://blog.youkuaiyun.com/capnik/article/details/70173624</guid><author>capnik</author><pubDate>Fri, 14 Apr 2017 16:36:26 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[进程间通信和线程同步结构图]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/70173608</link><guid>https://blog.youkuaiyun.com/capnik/article/details/70173608</guid><author>capnik</author><pubDate>Fri, 14 Apr 2017 16:35:15 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[调试结构图]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/70173598</link><guid>https://blog.youkuaiyun.com/capnik/article/details/70173598</guid><author>capnik</author><pubDate>Fri, 14 Apr 2017 16:34:17 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[寄存器、注入和Hook结构图]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/70173581</link><guid>https://blog.youkuaiyun.com/capnik/article/details/70173581</guid><author>capnik</author><pubDate>Fri, 14 Apr 2017 16:33:03 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[PE文件结构图]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/70173554</link><guid>https://blog.youkuaiyun.com/capnik/article/details/70173554</guid><author>capnik</author><pubDate>Fri, 14 Apr 2017 16:31:08 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[网络编程之服务端和客户端【Python版】]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/60570666</link><guid>https://blog.youkuaiyun.com/capnik/article/details/60570666</guid><author>capnik</author><pubDate>Mon, 06 Mar 2017 09:44:30 +0800</pubDate><description><![CDATA[TCP服务端:
#coding:utf-8
# 导入 socket 模块
import socket

def main():
    print("~~~~~服务端启动~~~~")

    #1.创建sokcet
    sSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #2.绑定
    sSock.bind(('1]]></description><category></category></item><item><title><![CDATA[MYSQL数据库知识]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59510982</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59510982</guid><author>capnik</author><pubDate>Thu, 02 Mar 2017 14:34:10 +0800</pubDate><description><![CDATA[一、ADO主要包括Connection,Recordset和Command三个对象

主要功能如下:

Connection对象: 打开或连接数据库或数据文件;

Recordset对象: 存取数据库的内容

Command对象: 对数据库下达行动查询指令（SELECT,INSERT,UPDATE,DELETE）,或调用存储过程。


二、系统数据库:

master数据]]></description><category></category></item><item><title><![CDATA[平衡二叉树]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59116891</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59116891</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 18:40:25 +0800</pubDate><description><![CDATA[此为头文件.h
#pragma once
class CAVLTree
{
public:
	typedef struct _NODE
	{
		int nData;
		_NODE* pLeft;
		_NODE* pRight;
	}NODE, *PNODE;
public:
	CAVLTree();
	virtual ~CAVLTree();
	bool Insert(int nEle);]]></description><category></category></item><item><title><![CDATA[二叉树]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59109940</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59109940</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 16:04:16 +0800</pubDate><description><![CDATA[此为头文件.h:
#pragma once

class CMyAVL
{
public:
	typedef struct _NODE
	{
		int nData;
		_NODE* pLeft;
		_NODE* pRight;
	}NODE, *PNODE;
public:
	CMyAVL();
	virtual ~CMyAVL();
	bool Insert(int nEle);// 插]]></description><category></category></item><item><title><![CDATA[虚函数的工作原理]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59107939</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59107939</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 14:54:04 +0800</pubDate><description><![CDATA[虚函数的工作原理：


      编译器处理虚函数的方法：给每一个对象添加一个隐含的成员。隐含成员中保存了一个指向函数地址数组的指针。这个数组叫做 虚函数表（virtual function table）

1.假如一个类中有虚函数的话，对象的起始位就是虚函数表指针。虚表指针
2.基类   虚函数表中 存有所有虚函数的地址
3.派生类 包含有独立的虚函数表 （多继承有多个虚函数表，]]></description><category></category></item><item><title><![CDATA[UAC提权示例]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59058123</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59058123</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 10:59:10 +0800</pubDate><description><![CDATA[BOOL EnableDebugPrivilege(BOOL fEnable)
{
 BOOL fOK=FALSE;
	HANDLE hToken = 0;

	//打开指定进程的令牌环
	BOOL Ret = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
	if (Ret)
	{
		TOKEN_]]></description><category></category></item><item><title><![CDATA[IAT Hook示例]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59003807</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59003807</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 08:38:47 +0800</pubDate><description><![CDATA[#include "stdafx.h"
//在这个文件中实现IATHook

//这个函数，只Hook exe文件的IAT

typedef int (WINAPI  *MESSAGEBOXW)(
	_In_opt_ HWND hWnd,
	_In_opt_ LPCWSTR lpText,
	_In_opt_ LPCWSTR lpCaption,
	_In_ UINT uType);
MESSAG]]></description><category></category></item><item><title><![CDATA[消息钩子注入示例]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59002284</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59002284</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 08:37:29 +0800</pubDate><description><![CDATA[MessageHook.dll的h文件:
#pragma  once
extern "C" _declspec(dllexport) bool OnHook();
extern "C" _declspec(dllexport) bool OffHook();

MessageHook.dll的cpp文件:
#include "stdafx.h"
#include "MessageHook.h"
#]]></description><category></category></item><item><title><![CDATA[远程线程注入示例]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/59001140</link><guid>https://blog.youkuaiyun.com/capnik/article/details/59001140</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 08:36:32 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include 
#include 

void Inject(DWORD dwPid,TCHAR* szPath)
{
	DWORD dwWriteSize = 0;
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
	//得到的地址不是本进程内的，是目标进程的地址，str]]></description><category></category></item><item><title><![CDATA[Inline Hook示例]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/58999763</link><guid>https://blog.youkuaiyun.com/capnik/article/details/58999763</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 08:35:20 +0800</pubDate><description><![CDATA[#include "stdafx.h"

#include 
char g_OldAddress[0x5] = {};
char g_NewAddress[0x5] = { 0xE9 };
void HookMessageBox();
void unHookMessageHook();



//自己的MessageBox函数
//思路：拦截到MessageBox之后，修复原来的地方，再执行原来的]]></description><category></category></item><item><title><![CDATA[内存泄漏之GDI泄露检测]]></title><link>https://blog.youkuaiyun.com/capnik/article/details/58996898</link><guid>https://blog.youkuaiyun.com/capnik/article/details/58996898</guid><author>capnik</author><pubDate>Wed, 01 Mar 2017 08:32:27 +0800</pubDate><description><![CDATA[对开发中常见的内存泄露，GDI泄露进行检测
一、GDI泄露检测方法：
在软件测试阶段，可以通过procexp.exe
 工具，或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况。
注意点：Create出来的GDI对象，都要用DeleteObject来释放；Create出来的DC，都要用DeleteDC来释放，GetDC得出的DC,要用ReleaseDC来释放。
 
以下]]></description><category></category></item></channel></rss>