mirror of
https://github.com/aljazceru/cowrie.git
synced 2025-12-17 14:04:28 +01:00
initial import
git-svn-id: https://kippo.googlecode.com/svn/trunk@1 951d7100-d841-11de-b865-b3884708a8e2
This commit is contained in:
72
commands/ls.py
Normal file
72
commands/ls.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from core.Kippo import HoneyPotCommand
|
||||
from core.fstypes import *
|
||||
import stat, time
|
||||
|
||||
class command_ls(HoneyPotCommand):
|
||||
|
||||
def uid2name(self, uid):
|
||||
if uid == 0:
|
||||
return 'root'
|
||||
return uid
|
||||
|
||||
def gid2name(self, gid):
|
||||
if gid == 0:
|
||||
return 'root'
|
||||
return gid
|
||||
|
||||
def call(self, args):
|
||||
path = self.honeypot.cwd
|
||||
paths = []
|
||||
if len(args):
|
||||
for arg in args.split():
|
||||
if not arg.startswith('-'):
|
||||
paths.append(self.honeypot.fs.resolve_path(arg,
|
||||
self.honeypot.cwd))
|
||||
if not paths:
|
||||
self.do_ls_l(path)
|
||||
else:
|
||||
for path in paths:
|
||||
self.do_ls_l(path)
|
||||
|
||||
def do_ls_l(self, path):
|
||||
try:
|
||||
files = self.honeypot.fs.list_files(path)
|
||||
except:
|
||||
self.honeypot.writeln(
|
||||
'ls: cannot access %s: No such file or directory' % path)
|
||||
return
|
||||
|
||||
largest = 0
|
||||
if len(files):
|
||||
largest = max([x[A_SIZE] for x in files])
|
||||
|
||||
for file in files:
|
||||
perms = ['-'] * 10
|
||||
|
||||
if file[A_MODE] & stat.S_IRUSR: perms[1] = 'r'
|
||||
if file[A_MODE] & stat.S_IWUSR: perms[2] = 'w'
|
||||
if file[A_MODE] & stat.S_IXUSR: perms[3] = 'x'
|
||||
|
||||
if file[A_MODE] & stat.S_IRGRP: perms[4] = 'r'
|
||||
if file[A_MODE] & stat.S_IWGRP: perms[5] = 'w'
|
||||
if file[A_MODE] & stat.S_IXGRP: perms[6] = 'x'
|
||||
|
||||
if file[A_MODE] & stat.S_IROTH: perms[7] = 'r'
|
||||
if file[A_MODE] & stat.S_IWOTH: perms[8] = 'w'
|
||||
if file[A_MODE] & stat.S_IXOTH: perms[9] = 'x'
|
||||
|
||||
if file[A_TYPE] == T_DIR:
|
||||
perms[0] = 'd'
|
||||
|
||||
perms = ''.join(perms)
|
||||
ctime = time.localtime(file[A_CTIME])
|
||||
|
||||
l = '%s 1 %s %s %s %s %s' % \
|
||||
(perms,
|
||||
self.uid2name(file[A_UID]),
|
||||
self.gid2name(file[A_GID]),
|
||||
str(file[A_SIZE]).rjust(len(str(largest))),
|
||||
time.strftime('%Y-%m-%d %H:%M', ctime),
|
||||
file[A_NAME])
|
||||
|
||||
self.honeypot.writeln(l)
|
||||
Reference in New Issue
Block a user