mirror of
https://github.com/narkoz/hacker-scripts
synced 2025-08-24 19:37:10 +00:00
Add Python 3 implementation
This commit is contained in:
parent
8260c7dca5
commit
11a67dfaac
39
python3/fucking_coffee.py
Executable file
39
python3/fucking_coffee.py
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import telnetlib
|
||||||
|
import time
|
||||||
|
|
||||||
|
from hackerutils import sh
|
||||||
|
|
||||||
|
COFFEE_MACHINE_ADDR = '10.10.42.42'
|
||||||
|
COFFEE_MACHINE_PASS = '1234'
|
||||||
|
COFFEE_MACHINE_PROM = 'Password: '
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Skip on weekends.
|
||||||
|
if datetime.date.today().weekday() in (0, 6,):
|
||||||
|
return
|
||||||
|
|
||||||
|
# Exit early if no sessions with my_username are found.
|
||||||
|
if not any(s.startswith(b'my_username ') for s in sh('who').split(b'\n')):
|
||||||
|
return
|
||||||
|
|
||||||
|
time.sleep(17)
|
||||||
|
|
||||||
|
conn = telnetlib.Telnet(host=COFFEE_MACHINE_ADDR)
|
||||||
|
conn.open()
|
||||||
|
conn.expect([COFFEE_MACHINE_PROM])
|
||||||
|
conn.write(COFFEE_MACHINE_PASS)
|
||||||
|
|
||||||
|
conn.write('sys brew')
|
||||||
|
time.sleep(64)
|
||||||
|
|
||||||
|
conn.write('sys pour')
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
23
python3/hackerutils.py
Normal file
23
python3/hackerutils.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import pathlib
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
from dotenv import Dotenv
|
||||||
|
|
||||||
|
|
||||||
|
def get_dotenv(filename='.env'):
|
||||||
|
return Dotenv(str(pathlib.Path(__file__).parent / filename))
|
||||||
|
|
||||||
|
|
||||||
|
def sh(*args):
|
||||||
|
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
|
||||||
|
stdout, _ = proc.communicate()
|
||||||
|
return stdout
|
||||||
|
|
||||||
|
|
||||||
|
def get_log_path(name):
|
||||||
|
path = pathlib.Path(__file__).parent / 'logs' / name
|
||||||
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
return path
|
57
python3/hangover.py
Executable file
57
python3/hangover.py
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import random
|
||||||
|
|
||||||
|
from twilio import TwilioRestException
|
||||||
|
from twilio.rest import TwilioRestClient
|
||||||
|
|
||||||
|
from hackerutils import get_dotenv, get_log_path, sh
|
||||||
|
|
||||||
|
dotenv = get_dotenv()
|
||||||
|
|
||||||
|
TWILIO_ACCOUNT_SID = dotenv['TWILIO_ACCOUNT_SID']
|
||||||
|
TWILIO_AUTH_TOKEN = dotenv['TWILIO_AUTH_TOKEN']
|
||||||
|
|
||||||
|
LOG_FILE_PATH = get_log_path('hangover.txt')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Skip on weekends.
|
||||||
|
if datetime.date.today().weekday() in (0, 6,):
|
||||||
|
return
|
||||||
|
|
||||||
|
# Exit early if any session with my_username is found.
|
||||||
|
if any(s.startswith(b'my_username ') for s in sh('who').split(b'\n')):
|
||||||
|
return
|
||||||
|
|
||||||
|
client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
|
||||||
|
|
||||||
|
# Phone numbers.
|
||||||
|
my_number = '+xxx'
|
||||||
|
number_of_boss = '+xxx'
|
||||||
|
|
||||||
|
excuses = [
|
||||||
|
'Locked out',
|
||||||
|
'Pipes broke',
|
||||||
|
'Food poisoning',
|
||||||
|
'Not feeling well',
|
||||||
|
]
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Send a text message.
|
||||||
|
client.messages.create(
|
||||||
|
to=number_of_boss,
|
||||||
|
from_=my_number,
|
||||||
|
body='Gonna work from home. ' + random.choice(excuses),
|
||||||
|
)
|
||||||
|
except TwilioRestException as e:
|
||||||
|
# Log errors.
|
||||||
|
with LOG_FILE_PATH.open('a') as f:
|
||||||
|
f.write('Failed to send SMS: {}'.format(e))
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
44
python3/kumar_asshole.py
Executable file
44
python3/kumar_asshole.py
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
import gmail
|
||||||
|
import yagmail
|
||||||
|
|
||||||
|
from hackerutils import get_dotenv
|
||||||
|
|
||||||
|
dotenv = get_dotenv()
|
||||||
|
|
||||||
|
GMAIL_USERNAME = dotenv['GMAIL_USERNAME']
|
||||||
|
GMAIL_PASSWORD = dotenv['GMAIL_PASSWORD']
|
||||||
|
|
||||||
|
KUMAR_EMAIL = 'kumar.a@example.com'
|
||||||
|
KEYWORDS_REGEX = re.compile(r'sorry|help|wrong', re.IGNORECASE)
|
||||||
|
|
||||||
|
REPLY_BODY = "No problem. I've fixed it. \n\n Please be careful next time."
|
||||||
|
|
||||||
|
|
||||||
|
yagmail.register(GMAIL_USERNAME, GMAIL_PASSWORD)
|
||||||
|
|
||||||
|
|
||||||
|
def send_reply(subject):
|
||||||
|
yag = yagmail.SMTP(GMAIL_USERNAME)
|
||||||
|
yag.send(
|
||||||
|
to=KUMAR_EMAIL,
|
||||||
|
subject='RE: {}'.format(subject),
|
||||||
|
contents=REPLY_BODY,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
g = gmail.login(GMAIL_USERNAME, GMAIL_PASSWORD)
|
||||||
|
for mail in g.inbox().mail(unread=True, sender=KUMAR_EMAIL, prefetch=True):
|
||||||
|
if KEYWORDS_REGEX.search(mail.body):
|
||||||
|
# Restore DB and send a reply.
|
||||||
|
mail.add_label('Database fixes')
|
||||||
|
send_reply(mail.subject)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
4
python3/requirements.txt
Normal file
4
python3/requirements.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
dotenv
|
||||||
|
twilio
|
||||||
|
yagmail
|
||||||
|
git+https://github.com/charlierguo/gmail
|
56
python3/smack_my_bitch_up.py
Executable file
56
python3/smack_my_bitch_up.py
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import random
|
||||||
|
|
||||||
|
from twilio import TwilioRestException
|
||||||
|
from twilio.rest import TwilioRestClient
|
||||||
|
|
||||||
|
from hackerutils import get_dotenv, get_log_path, sh
|
||||||
|
|
||||||
|
dotenv = get_dotenv()
|
||||||
|
|
||||||
|
TWILIO_ACCOUNT_SID = dotenv['TWILIO_ACCOUNT_SID']
|
||||||
|
TWILIO_AUTH_TOKEN = dotenv['TWILIO_AUTH_TOKEN']
|
||||||
|
|
||||||
|
LOG_FILE_PATH = get_log_path('smack_my_bitch_up.txt')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Skip on weekends.
|
||||||
|
if datetime.date.today().weekday() in (0, 6,):
|
||||||
|
return
|
||||||
|
|
||||||
|
# Exit early if no sessions with my_username are found.
|
||||||
|
if not any(s.startswith(b'my_username ') for s in sh('who').split(b'\n')):
|
||||||
|
return
|
||||||
|
|
||||||
|
client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
|
||||||
|
|
||||||
|
# Phone numbers.
|
||||||
|
my_number = '+xxx'
|
||||||
|
her_number = '+xxx'
|
||||||
|
|
||||||
|
reasons = [
|
||||||
|
'Working hard',
|
||||||
|
'Gotta ship this feature',
|
||||||
|
'Someone fucked the system again',
|
||||||
|
]
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Send a text message.
|
||||||
|
client.messages.create(
|
||||||
|
to=her_number,
|
||||||
|
from_=my_number,
|
||||||
|
body='Late at work. ' + random.choice(reasons),
|
||||||
|
)
|
||||||
|
except TwilioRestException as e:
|
||||||
|
# Log errors.
|
||||||
|
with LOG_FILE_PATH.open('a') as f:
|
||||||
|
f.write('Failed to send SMS: {}'.format(e))
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
x
Reference in New Issue
Block a user