博文
E-mail密码暴力破解器(2008-05-13 18:34:00)
摘要://E-mail密码暴力破解器
//By RedIce
//E-mail:redice@see.xidian.edu.cn
#include
#include
#pragma comment(lib,"ws2_32.lib")
char* ch64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
FILE *FileOpr;
SOCKET sender;
unsigned char *encode(unsigned char *,int);//函数声明;Base64编码
char send_wait(char *,char *,char);//函数声明:发送数据并等待接收到响应码
void usage();//程序使用说明
void initialsocket();//重置Socket连接
struct sockaddr_in dest;//目的地址结构体
void main(int argc,char *argv[])
{
char temp[1024]; //读取密码字典缓冲区
int k=0,i=0;//已读取密码文件行数
DWORD starttime;//程序运行开始时间
WSADATA wsa;//WSAData结构体
PHOSTENT hostinfo;//主机信息(域名->IP)
char passfile[201];//密码字典文件路径
char username[51];//用户名
char *ICMP_DEST_IP;//目的IP
//char ret;//返回值
memset(passfile,0,201);//密码字典文件路径
memset(username,0,51);//欲破解的用户名
if(1==argc)//如果只有默认的命令行参数 则给出程序说明 并退出程序
{
usage();
return;
}
else//如果有多个参数
{
for(i=1;i=200)
{
printf("密码字典文件名太长!\n");
return;
}
strcpy(......
SMTP协议原始命令码和工作原理(2008-05-02 13:46:00)
摘要:1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器.
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返回状态的三位数字代码.
3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程:
a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件
d.协商结束,发送邮件,用命令DATA发送
e. 以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。
5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
EXPN---用于扩充邮件列表。
6.邮件路由过程:
SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。
若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com:
a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求shmail.abc.com的CNAME记录,直到没有为止.
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,shmail MX 5 shmail.abc.com 10 shmail2.abc.com
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4
d. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序
7.SMTP基本命......
0.618算法(matlab)(2008-05-01 13:21:00)
摘要:a=-1;
b=1;
l=.16;
x1=a+.382*(b-a);
x2=a+b-x1;
while(abs(b-a)>l)
f1=fun(x1);
f2=fun(x2);
if(f1>f2)
a=x1;x1=x2;x2=a+b-x1;
else b=x2;x2=x1;x1=a+b-x2;
end
end
answer=(a+b)/2;
调用
function f=fun(x)
f=2*x^2-x-1;
使用matlab描述......
鼠标编程(2008-04-25 10:15:00)
摘要:鼠标编程分享
调试环境为TC2.0或者TC3.0。
#include<dos.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
#define HEX 0
#define DEC 1
#define OCT 2
#define BIN 3
int index=0,choice=0;
/*初始化鼠标器*/
void initmouse()
{
_AX=0;
geninterrupt(0x33);
}
/*显示鼠标光标*/
void showmouse()
{
_AX=1;
geninterrupt(0x33);
}
/*隐藏鼠标*/
void hidemouse()
{
_AX=2;
geninterrupt(0x33);
}
/*取鼠标状态和鼠标位置*/
void getmouse(int *button,int *x,int *y)
{
_AX=3;
_BX=0;
geninterrupt(0x33);
*button=_BL;
*x=_CX;
*y=_DX;
}
/*设置程序中的数字字符表*/
int getnum(char......
DLL编程(2008-04-22 09:20:00)
摘要:【转】http://blog.programfan.com/article.asp?id=33275
静态链接:每个应用程序使用函数库,必须拥有一份库的备份。多个应用程序运行时,内存中就有多份函数库代码的备份。
动态连接库:多个应用程序可以共享一份函数库的备份。
DLL的调用方式:即DLL的使用者在调用库中输出函数时,函数参数的压栈和出栈顺序和方法。
VC++支持四种方式:
_cdecl调用方式: 也叫C调用方式,函数参数的压栈顺序是从右至左,参数的出栈方式由调用者完成,在调用DLL的函数的地方都应包含清空堆栈的代码,它是C/C++缺省的调用方式。
_stdcall标准调用方式:函数参数压栈顺序是从右至左,参数出栈工作由被调用者负责完成。系统将加在函数原型定义前的”WINAPI”宏翻译为适当的调用方式,对于Win32是_stdcall调用方式。
_fastcall:主要特点是调用速度快,被调用的函数参数传递不依靠堆栈,而是通过寄存器,但并不是对所有的参数传递均使用寄存器,往往只是用ECX和EDX传送前两个双字或比较小的参数,其余的参数传递仍然采用从右至左压栈方式,出栈工作由被调用的函数完成。
thiscall:前三种是关键字,可以加到函数前作修饰,thiscall不是关键字,因此程序中不能显式写入,这种方式仅应用于C++成员函数,this指C++中指向对象的指针,this存放在ECX寄存器中,参数从右至左压栈,出栈由被调用者完成。
DLL的入口函数
DllMain()函数负责完成DLL的初始化和解说DLL调用后的清理工作。当加载DLL时,如存在DllMain()函数则调用它。
MFC DLL
MFC DLL可以让我们的程序使用MFC库,它分为3类:
Regular Dll with MFC Statically linked (正规)
静态链接MFC库,在DLL工程中将包含工程中所需的MFC库代码的拷贝,因此,程序可以脱离MFC库使用。
Regular Dll using shared MFC Dll (正规)
动态共享MFC库,工程必须在装有MFC库的机器上才能运行。
MFC正规DLL编写注意......
男士20条黄金穿衣法则(2008-04-19 15:18:00)
摘要:1、记住三种颜色:白色、黑色、米色这三种颜色被称为“百搭色”。也就是说他们和任意的颜色搭配都是合理的,因此购买服饰的时候如果不知道什么颜色好,那么这3种颜色将不会出错。
2、三点一线:衣冠楚楚的男人,他的衬衫领开口、皮带袢和裤子前开口外侧应该在一条线上。
3、如果你穿着西装而不系领带,就可以穿那种平底便鞋;如果你系了领带,就绝不可以。
4、新买的衬衫,如果你在脖子与领子之间插进两个手指,说明这件衬衫洗过后仍然会很合适。
5、如果你身材强壮,就需穿深色西服,而不要穿茄克。
6、细条纹或者方格越不明显越好,选择那种只有细看才能看得出图案的面料。
7、在办公室里背背包:在一栋精英云集的高层写字楼里,那里充斥着律师和各种各样其他的职业人,如果你需要一个能用来装你杂七杂八的文件,手机,备忘录等东西的包,买一个好看的MESSENGER包吧!
8、欧式对排扣西服由于钮扣位置较低,有一种上半身显长的感觉,所以身材较矮的男士应该慎重穿着。
9、衣领带钮扣的衬衫不能搭配双排扣西服。
10、如果拥有一件大衣,那么应该是灰色的,第二件大衣应该是黑色的,第三件是咖啡色的,第四件是藏青色的。
11、通常锥形西裤应与椭圆形尖头皮鞋相配;直筒裤要与鞋面有W型接缝的皮鞋相配;猎装裤应配高帮翻毛皮鞋才显得帅气、粗犷,鞋与裤子搭配和谐的关键是鞋形、鞋夹与裤形、裤口的几何造型相近。
12、穿西服一般要系领带。领带的色彩应与西服、衬衫和谐相配。按照西服——衬衫——领带这三者的顺序是:深—浅—深,浅——中—浅或深——中——浅的配色方法。
13、穿休闲衬衫时不要忘记配衬卡其布、细帆布等同样的休闲风格的裤子以及休闲鞋,颜色的选择你就可以随心所欲
14、穿花衬衫时一定要避免带大量的金银饰品,
15、格子衬衣配斜纹的领带,直纹的衬衣配方格图案的领带,虽然都是直线条,但却有纹路方向的变化,不会单调呆板。
16、一般而言,只要线与线之间的间距不要过大,线条不致于过粗,都是可以接受的。最安全的条纹尺度,其条纹间的间距小于1厘米,并以规则的距离排列,线条宽度极细,有如自动铅笔划过之线条,即为不易出错的样式,值得推荐。
17、就如同条纹衬衫一般,格子的面积若是呈微小保守的细格子,大致没啥问题,但若格子的面积甚大,休闲味道便浓厚,此时就不适宜于工作等正式场合穿着,因为无法传达出庄重之惑,而在平常假......
图象格式转换(2008-04-19 14:45:00)
摘要:图像格式的多样性,给我们带来了方便,也同样带来了不方便。raw,pgm,bmp,jpg我需要的格式不断地变,变,变...
Raw的主要原理
Raw实际上是各个相机厂商自己的原始数据格式,也是点的集合。由于每个厂商,其格式不一样,所以兼容性肯
定是大大的差。但是Raw由它独特的好处:
1,无失真
2,保留了CCD捕捉的最原始数据,如果采用好的转化软件,可以得到比相机缺省转化要好的图像!专业摄影推荐。
3,所有EXIF都有,原始信息嘛,不过不一定能很容易读出来(格式不兼容)
4,里面的数据跟CCD的模数转化深度(数字信号的量化精度)一样,一般都在普通图像的8位以上,譬如12bit或
16bit。也就是说精度高。当Raw转化到JPG的时候,一般精度就立刻降为8bit,Raw一般也会用无失真的压缩办法压缩一下。
raw是最直接也容易处理的图像,处理像素的信息,从文件中得不到图像的其他信息了,比如图像的大小,色彩等。虽然直观,还是使用的不多。
由raw转化为其他图像的最简单的方法就是利用matlab来处理,读数据到二维矩阵,然后以需要的格式再写道文件里就行了。由其他的文件转为raw 的格式也很简单,把图像以正确的格式读到矩阵中,把该矩阵写到文件里就ok了。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
rh = fopen('test.raw','rb');
image = fread(rh,'uint8');
fclose(rh);
imagesize = sqrt(size(image(:,1)))
for i=1:imagesize
for j= 1:imagesize
in(i,j) = uint8(image((i......
剖析VC中的文件操作(2008-04-15 18:58:00)
摘要:VC之文件操作 一、 剖析VC中的文件操作
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时
间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经
常遇到的一些疑难问题进行详细的分析。
1.文件的查找
当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以
方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。
CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}
2.文件的打开/保存对话框
让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明
一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。
在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此
CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致
操作失败。下面这段程序演示了文件打开对话框的使用方法。
CFileDialog mFileDlg(TRUE,NULL,NULL,
......
huffman编码及译码(2008-04-14 22:41:00)
摘要:变量和内存的问题,原来是自己理解,通过写小代码来验证,但是总感觉有什么地方不对,使我很混乱,所以今天就在网上看了一些文章,然后重新认识了这个问题。下面算是我的认识,如果有不对的地方,请指出,多多交流................ 我是新手!!!
C++中内存的分配:
1.栈:是用来存放像一般变量和函数参数等的一块内存。系统会在变量生存期结束时自动释放内存,即把内存从栈中弹出。
2.堆:用来存放动态变量,如指针。要通过设计者自己管理变量,自行进行创建和清理工作。(利用new和delete)
3.自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
4.全局/静态存储区:全局变量和静态变量被分配到同一块内存。
5.常量存储区:用来存储常量,即不能被修改的变量。
以上是内存分区的问题,下面是我理解的问题:
1.变量声明与定义:
声明只是告诉编译器有这么一个变量,而定义在声明的同时便进行内存分配。
//------1.cpp--------------
#include<iostream>
using namespace std;
extern int n;//声明变量n,只告诉有这么一个名字
void function(int a){....};//定义形参a,并分配内存
int main(){
int i; //定义变量i,并分配内存
return 0;
}
C++中的内存划分(2008-04-14 22:21:00)
摘要:在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)
---------------------------------------------------------------------------------------------------------
变量和内存的问题,原来是自己理解,通过写小代码来验证,但是总感觉有什么地方不对,使我很混乱,所以今天就在网上看了一些文章,然后重新认识了这个问题。下面算是我的认识,如果有不对的地方,请指出,多多交流................ 我是新手!!!
C++中内存的分配:
1.栈:是用来存放像一般变量和函数参数等的一块内存。系统会在变量生存期结束时自动释放内存,即把内存从栈中弹出。
2.堆:用来存放动态变量,如指针。要通过设计者自己管理变量,自行进行创建和清理工作。(利用new和delete)
3.自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
4.全局/静态存储区:全局变量和静态变量被分配到同一块......