-
-
Save omnidan/1456674 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env python | |
| """ | |
| Copyright (c) 2011, Daniel Bugl | |
| All rights reserved. | |
| Redistribution and use in source and binary forms, with or without | |
| modification, are permitted provided that the following conditions are met: | |
| 1. Redistributions of source code must retain the above copyright | |
| notice, this list of conditions and the following disclaimer. | |
| 2. Redistributions in binary form must reproduce the above copyright | |
| notice, this list of conditions and the following disclaimer in the | |
| documentation and/or other materials provided with the distribution. | |
| 3. All advertising materials mentioning features or use of this software | |
| must display the following acknowledgement: | |
| This product includes software developed by Daniel Bugl. | |
| 4. Neither the name of Daniel Bugl nor the names | |
| of its other contributors may be used to endorse or promote products | |
| derived from this software without specific prior written permission. | |
| THIS SOFTWARE IS PROVIDED BY Daniel Bugl ''AS IS'' AND ANY | |
| EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
| DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY | |
| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| """ | |
| import time | |
| import socket | |
| def getInput(): | |
| motd = raw_input('MOTD: ') | |
| host = raw_input('IP Address: ') | |
| while True: | |
| try: | |
| port = int(raw_input('Port: ')) | |
| except TypeError: | |
| print 'Error: Invalid port number.' | |
| continue | |
| else: | |
| if (port < 1) or (port > 65535): | |
| print 'Error: Invalid port number.' | |
| continue | |
| else: | |
| return (host, port, motd) | |
| def writeLog(client, data=''): | |
| separator = '='*50 | |
| fopen = open('./honey.mmh', 'a') | |
| fopen.write('Time: %s\nIP: %s\nPort: %d\nData: %s\n%s\n\n'%(time.ctime(), client[0], client[1], data, separator)) | |
| fopen.close() | |
| def main(host, port, motd): | |
| print 'Starting honeypot!' | |
| s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
| s.bind((host, port)) | |
| s.listen(100) | |
| while True: | |
| (insock, address) = s.accept() | |
| print 'Connection from: %s:%d' % (address[0], address[1]) | |
| try: | |
| insock.send('%s\n'%(motd)) | |
| data = insock.recv(1024) | |
| insock.close() | |
| except socket.error, e: | |
| writeLog(address) | |
| else: | |
| writeLog(address, data) | |
| if __name__=='__main__': | |
| try: | |
| stuff = getInput() | |
| main(stuff[0], stuff[1], stuff[2]) | |
| except KeyboardInterrupt: | |
| print 'Bye!' | |
| exit(0) | |
| except BaseException, e: | |
| print 'Error: %s' % (e) | |
| exit(1) |
I am a beginner in python programming and i really want to know if you can help me to run this code: when i'm executing honeypot.py, i meet the following error "Invalid syntax for except socket.error, e:"..
I cleared "e" from the syntax and now is going into BaseException
I am running like this: python3 honeypot.py 10.10.5.221 80 Message -> Is the correct type for the arguments?
Thank you
Hi, @florinstefan4197 !
The errors you see are because of the python version. If you run the honeypot code on python3, you should replace
except socket.error, e:
with
except socket.error as e:
on both places.
Try this code instead:
import time
import socket
def getInput():
motd = input('MOTD: ')
host = input('IP Address: ')
while True:
try:
port = int(input('Port: '))
except TypeError:
print ('Error: Invalid port number.')
continue
else:
if (port < 1) or (port > 65535):
print ('Error: Invalid port number.')
continue
else:
return (host, port, motd)
def writeLog(client, data=''):
separator = '='*50
fopen = open('./honey.mmh', 'a')
fopen.write('Time: %s\nIP: %s\nPort: %d\nData: %s\n%s\n\n'%(time.ctime(), client[0], client[1], data, separator))
fopen.close()
def main(host, port, motd):
print ('Starting honeypot!')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(100)
while True:
(insock, address) = s.accept()
print ('Connection from:{1}:{2}'.format(address[0], address[1]))
try:
insock.send('%s\n'%(motd))
data = insock.recv(1024)
insock.close()
except socket.error as e:
writeLog(address)
else:
writeLog(address, data)
if __name__=='__main__':
try:
stuff = getInput()
main(stuff[0], stuff[1], stuff[2])
except KeyboardInterrupt:
print ('Bye!')
exit(0)
except BaseException as e:
print('Error: {0}'.format(str(e)))
exit(1)
@florinstefan4197
I'm very new to python and i stumbled upon honeypots and I'm trying to learn it . I wanted to know the entire execution process of this. Did you connect your phone to the laptop hotspot? And how did you get that IP that you enter in?
Hey ! How did i run the file please ?
Hi! Thank you very much for your time and for this code. I have to face another little error -> For Example: MOTD: MessageOFTheDAY IP Address: 192.168.100.112 Port: 80 Starting honeypot! Connection from 192.168.100.112:42482 Error: a bytes-like object is required, not 'str' (This happens when i try to access the ip of my laptop from another device - my mobile phone - ).. It breaks in main at the line: try: insock,send('%s\n%(motd)) I am sorry for wasting your time! All the best!
Change line to this to make it a bytes-like object.
insock.send(f"{motd}\n".encode("UTF-8"))
How to run the file please answer ASAP
???
I am a beginner in python programming and i really want to know if you can help me to run this code: when i'm executing honeypot.py, i meet the following error "Invalid syntax for except socket.error, e:"..
I cleared "e" from the syntax and now is going into BaseException
I am running like this: python3 honeypot.py 10.10.5.221 80 Message -> Is the correct type for the arguments?
Thank you