IPC(Inter-Process Communication,进程间通信)。进程间通信是指两个进程的数据之间产生交互
IPC的概念
空会话的概念
空会话是在没有信任的情况下与服务器建立的会话,对于一个空会话,LSA提供的令牌的SID(空会话的SID)是S-1-5-7,用户名是:ANONYMOUS LOGON(系统内置的帐号),该访问令牌包含下面伪装的组:Everyone和Network。
IPC建立的过程
1)会话请求者(客户)向会话接收者(服务器)传送一个数据包,请求安全隧道的建立;
2)服务器产生一个随机的64位数(实现挑战)传送回客户;
3)客户取得这个由服务器产生的64位数,用试图建立会话的帐号的口令打乱它,将结果返回到服务器(实现响应);
4)服务器接受响应后发送给本地安全验证(LSA),LSA通过使用该用户正确的口令来核实响应以便确认请求者身份。如果请求者的帐号是服务器的本地帐号,核实本地发生;如果请求的帐号是一个域的帐号,响应传送到域控制器去核实。当对挑战的响应核实为正确后,一个访问令牌产生,然后传送给客户。客户使用这个访问令牌连接到服务器上的资源直到建议的会话被终止。
IPC连接条件
★ 跟操作系统相关(NT/2000/XP可以建立ipc
连
接
,
98
/
M
E
不
能
建
立
i
p
c
连接,98/ME不能建立ipc
连接,98/ME不能建立ipc连接);
★ 目标主机必须要开启ipc
共
享
;
★
本
地
主
机
必
须
要
启
动
L
a
n
m
a
n
w
o
r
k
s
t
a
t
i
o
n
服
务
(
功
能
为
提
供
网
络
链
结
和
通
讯
)
;
★
目
标
主
机
必
须
要
启
动
L
a
n
m
a
n
s
e
r
v
e
r
服
务
(
i
p
c
共享; ★本地主机必须要启动Lanmanworkstation服务(功能为提供网络链结和通讯); ★ 目标主机必须要启动Lanmanserver服务(ipc
共享;★本地主机必须要启动Lanmanworkstation服务(功能为提供网络链结和通讯);★目标主机必须要启动Lanmanserver服务(ipc依赖于此服务,它提供了 RPC 支持、文件、打印以及命名管道共享);
★ 目标主机必须要启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份;
★ 目标主机应该启动NBT(打开139端口);
★ 目标主机防火墙配置(如果屏蔽139和445端口也将导致连接失败);
★ 用户名或者密码错误;
★ 命令输入错误(特别要注意空格的输入,用户名和密码中不包含空格时两边的双引号可以省略,密码为空,直接输入两个引号"");
★ 建立好连接后目标主机重启,ipc
连
接
会
自
动
断
开
。
连
接
错
误
号
分
析
错
误
号
5
:
拒
绝
访
问
,
权
限
不
够
;
错
误
号
51
:
无
法
找
到
网
络
路
径
(
网
络
有
问
题
)
;
错
误
号
53
:
找
不
到
网
络
路
径
(
i
p
地
址
错
误
;
目
标
主
机
未
开
机
;
目
标
主
机
l
a
n
m
a
n
s
e
r
v
e
r
服
务
未
启
动
;
目
标
主
机
防
火
墙
设
置
过
滤
端
口
)
;
错
误
号
67
:
找
不
到
网
络
名
(
本
地
主
机
中
l
a
n
m
a
n
w
o
r
k
s
t
a
t
i
o
n
服
务
未
启
动
或
者
目
标
主
机
删
除
了
i
p
c
连接会自动断开。 连接错误号分析 错误号5: 拒绝访问,权限不够; 错误号51: 无法找到网络路径(网络有问题); 错误号53: 找不到网络路径(ip地址错误;目标主机未开机;目标主机lanmanserver服务未启动;目标主机防火墙设置过滤端口); 错误号67: 找不到网络名(本地主机中lanmanworkstation服务未启动或者目标主机删除了ipc
连接会自动断开。连接错误号分析错误号5:拒绝访问,权限不够;错误号51:无法找到网络路径(网络有问题);错误号53:找不到网络路径(ip地址错误;目标主机未开机;目标主机lanmanserver服务未启动;目标主机防火墙设置过滤端口);错误号67:找不到网络名(本地主机中lanmanworkstation服务未启动或者目标主机删除了ipc);
错误号1219: 提供的凭据与已存在的凭据集冲突(已经建立了一个ipcKaTeX parse error: Undefined control sequence: \ipc at position 122: …连接: net use\\IP\̲i̲p̲c̲"" /user:""
★ 建立非空连接: net use\IP\ipc$“password” /user:“username”
★ 查看远程主机的共享资源(但看不到默认共享) net view\IP
★ 查看本地主机的共享资源(可以看到本地的默认共享) net share
★ 得到远程主机的用户名列表 nbtstat -A IP
★ 得到本地主机的用户列表 net user
★ 查看远程主机的当前时间 net time\IP
★ 显示本地主机当前服务 net start
★ 启动/关闭本地服务 net start 服务名 /y net stop 服务名 /y
★ 映射远程共享: net use z:\IP\sihochina此命令将共享名为sihochina的共享资源映射到z盘
★ 删除共享映射 net use z: /del /y 删除映射的z盘net use * /del /y 删除全部
★ 向远程主机复制文件 copy \路径*.exe\IP\共享目录名,如: copy sihochina.exe\IP\c将当前目录下的sihochina.exe复制到对方c盘内
★ 远程添加计划任务 at\ip时间 程序名,如: at\192.168.0.111:00 sihochina.exe 11:00在主机192.168.0.1上运行sihochina.exe
代码实现
from multiprocessing import Queue, Process
"""
一.主进程跟子进程借助于队列通信
二.子进程跟子进程借助于队列通信
"""
def producer(A):
A.put('准备服务')
def consumer(A):
print(A.get())
if __name__ == '__main__':
A = Queue()
B = Process(target=producer,args=(A,))
B1 = Process(target=consumer,args=(A,))
B.start()
B1.start()
效果