Guest User

Untitled

a guest
Dec 2nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import daemon
  4. import time
  5. import socket
  6. import fcntl
  7. import struct
  8. import md5
  9. import sys
  10. import os
  11.  
  12. def getHwAddr(ifname):
  13. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  14. info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', ifname[:15]))
  15. return ''.join(['%02x:' % ord(char) for char in info[18:24]])[:-1]
  16.  
  17. serverkey = md5.md5(getHwAddr('eth0')).hexdigest()
  18.  
  19. addr = ('', 30331)
  20. isock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  21. isock.bind(addr)
  22.  
  23. daemon.daemonize()
  24. while True:
  25. isock.listen(1)
  26. conn, addr = isock.accept()
  27. data = conn.recv(1024)
  28. print data
  29. sdata = data.split()
  30. if len(sdata) > 0:
  31. if sdata[0] != serverkey:
  32. conn.send('access denied')
  33. conn.close()
  34. else :
  35. if sdata[1] == 'create':
  36. if len(sdata) < 5:
  37. conn.send(&#039;Invalid parameters&#039;)
  38. else:
  39. username = sdata[2]
  40. password = sdata[3]
  41. quota = sdata[4]
  42. cmd = &#039;/usr/sbin/useradd -G backup -s /bin/bash %s 2>&1&#039; % (username)
  43. res = os.popen(cmd).read().rstrip()
  44. if len(res) == 0:
  45. cmd = &#039;/bin/echo %s > /var/lib/php/session/pw ; /usr/bin/passwd --stdin %s < /var/lib/php/session/pw; /bin/rm -f /var/lib/php/session/pw&#039; % (password, username)
  46. res = os.popen(cmd).read()
  47. cmd = &#039;/usr/sbin/jk_jailuser -m -j /home/jail %s&#039; % (username)
  48. res = os.popen(cmd).read()
  49. cmd = &#039;sed "s=/home/%s:/usr/sbin/jk_lsh=/home/%s:/bin/bash=g" /home/jail/etc/passwd > /home/jail/etc/passwd.new; rm -f /home/jail/etc/passwd; mv /home/jail/etc/passwd.new /home/jail/etc/passwd&#039; % (username,username)
  50. res = os.popen(cmd).read()
  51. cmd= &#039;/usr/sbin/setquota -u %s 0 %s 0 0 -a /home&#039; % (username, quota)
  52. res = os.popen(cmd).read()
  53. conn.send(&#039;success&#039;)
  54. else:
  55. conn.send(&#039;username already exists&#039;)
  56. elif sdata[1] == &#039;terminate&#039;:
  57. username = sdata[2]
  58. cmd = &#039;/usr/sbin/userdel -rf %s&#039; % (username)
  59. res = os.popen(cmd).read().rstrip()
  60. cmd = &#039;cat /home/jail/etc/passwd | grep -v %s > /home/jail/etc/passwd.new; rm -f /home/jail/etc/passwd; mv /home/jail/etc/passwd.new /home/jail/etc/passwd&#039; % (username)
  61. res = os.popen(cmd).read().rstrip()
  62. cmd = &#039;cat /home/jail/etc/group | grep -v ^%s > /home/jail/etc/group.new; rm -f /home/jail/etc/group; mv /home/jail/etc/group.new /home/jail/etc/group&#039; % (username)
  63. res = os.popen(cmd).read().rstrip()
  64. conn.send(&#039;success&#039;)
  65. elif sdata[1] == &#039;suspend&#039;:
  66. username = sdata[2]
  67. cmd = &#039;/usr/bin/chsh -s /bin/false %s 2>&1&#039; % (username)
  68. res = os.popen(cmd).read()
  69. conn.send(&#039;success&#039;)
  70. elif sdata[1] == &#039;unsuspend&#039;:
  71. username = sdata[2]
  72. cmd = &#039;/usr/bin/chsh -s /bin/bash %s 2>&1&#039; % (username)
  73. res = os.popen(cmd).read()
  74. conn.send(&#039;success&#039;)
  75. elif sdata[1] == &#039;chpw&#039;:
  76. username = sdata[2]
  77. password = sdata[3]
  78. cmd = &#039;/bin/echo %s > /var/lib/php/session/pw ; /usr/bin/passwd --stdin %s < /var/lib/php/session/pw; /bin/rm -f /tmp/pw&#039; % (password, username)
  79. res = os.popen(cmd).read()
  80. conn.send(&#039;success&#039;)
  81. elif sdata[1] == &#039;changepackage&#039;:
  82. username = sdata[2]
  83. quota = sdata[4]
  84. cmd =&#039;/usr/sbin/setquota -u %s 0 %s 0 0 -a /home&#039; % (username, quota)
  85. res = os.popen(cmd).read()
  86. conn.send(res)
  87. elif sdata[1] == &#039;getuserusage&#039;:
  88. username = sdata[2]
  89. cmd = &#039;/usr/bin/quota %s | /usr/bin/tail -1 | /bin/awk {\&#039;print $2\&#039;}&#039; % (username)
  90. res = os.popen(cmd).read()
  91. conn.send(res)
  92. elif sdata[1] == &#039;getuserlimit&#039;:
  93. username = sdata[2]
  94. cmd = &#039;/usr/bin/quota %s | /usr/bin/tail -1 | /bin/awk {\&#039;print $4\&#039;}&#039; % (username)
  95. res = os.popen(cmd).read()
  96. conn.send(res)
  97. else:
  98. conn.send(&#039;access denied&#039;)
  99. conn.close()
Add Comment
Please, Sign In to add comment