先说一下发现的两个问题吧
smb.py中:
1. nt_create_andx 函数,缺少设置 权限参数 没改前
def nt_create_andx(self,tid,filename):
Disposition = mode
这个mode 参数没有个给定设置,而默认的确是只读
mode=01 只读
mode=02 只创建
mode=03 读写
设置权限参数 参数
修改后 nt_create_andx 多了一个参数,如下:默认我给你的是读写
def nt_create_andx(self,tid,filename,mode=0x03):
而类SMBNtCreateAndX_Parameters() 也要修改一下
class SMBNtCreateAndX_Parameters(SMBAndXCommand_Parameters):
structure = (
('_reserved', 'B=0'),
('FileNameLength','<H'),
('CreateFlags','<L'),
('RootFid','<L=0'),
('AccessMask','<L'),
('AllocationSizeLo','<L=0'),
('AllocationSizeHi','<L=0'),
('FileAttributes','<L=0'),
('ShareAccess','<L=3'),
('Disposition','<L'), (原来是: ('Disposition','<L=1'), )
('CreateOptions','<L'),
('Impersonation','<L=2'),
('SecurityFlags','B=3'),
)
第二个是winreg.py windows远程共享操作
winreg.py
1.regOpenKey()
class WINREGOpenKey(ImpactPacket.Header):
setkeyname():
原始(padlen = 2 * (int((namelen+2) / 4) * 4 + 2 - namelen))
修改后(padlen = 2*namelen-int(2*namelen/4)*4+4)
计算namelen4的倍数出错, 为了符合传送数据格式需要计算一个值来填充,在一些情况下会出错