1#!/usr/bin/env python 2 3# Unix SMB/CIFS implementation. 4# Copyright (C) Volker Lendecke 2008 5# Copyright (C) Stefan Metzmacher 2008 6# 7# Extract our own machine pw from secrets.ldb 8# 9# This program is free software; you can redistribute it and/or modify 10# it under the terms of the GNU General Public License as published by 11# the Free Software Foundation; either version 3 of the License, or 12# (at your option) any later version. 13# 14# This program is distributed in the hope that it will be useful, 15# but WITHOUT ANY WARRANTY; without even the implied warranty of 16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17# GNU General Public License for more details. 18# 19# You should have received a copy of the GNU General Public License 20# along with this program. If not, see <http://www.gnu.org/licenses/>. 21# 22 23import samba.param as param, ldb, sys, getopt 24 25optlist, args = getopt.getopt(sys.argv[1:], "s:") 26 27conf = param.LoadParm() 28loaded = False 29 30for o, v in optlist: 31 if o == "-s": 32 if not conf.load(v): 33 print(v + " not found") 34 exit(1) 35 loaded = True 36 37if not loaded: 38 conf.load_default() 39 40path=conf.get("private dir") + "/secrets.ldb" 41netbios=conf.get("netbios name") 42 43secrets = ldb.Ldb(path) 44 45search = "(&(objectclass=primaryDomain)(samaccountname=" + \ 46 netbios + "$))" 47 48msg = secrets.search(expression=search, attrs=['secret']) 49 50if not msg: 51 print "Error:" 52 print "Password for host[%s] not found in path[%s]." % (netbios, path) 53 print "You may want to pass the smb.conf location via the -s option." 54 exit(1) 55 56password=msg[0]['secret'][0] 57 58print(password) 59exit(0) 60