From 7f9d6b1c4d076380aa2665d6b0db9d69c2da6ae9 Mon Sep 17 00:00:00 2001 From: Chris Topaloudis Date: Fri, 4 Dec 2015 15:48:45 +0100 Subject: [PATCH 01/27] Indentation fix --- python/smack_my_bitch_up.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/smack_my_bitch_up.py b/python/smack_my_bitch_up.py index 02c7e051..17bd3216 100755 --- a/python/smack_my_bitch_up.py +++ b/python/smack_my_bitch_up.py @@ -17,7 +17,7 @@ TWILIO_AUTH_TOKEN = os.environ.get('TWILIO_AUTH_TOKEN') # Phone numbers -my_number = '+xxx' +my_number = '+xxx' her_number = '+xxx' reasons = [ From a78bc2dbb5e261519c23bd39b461c7e2ecff05b4 Mon Sep 17 00:00:00 2001 From: Mohammad Nasirifar Date: Fri, 4 Dec 2015 22:22:51 +0330 Subject: [PATCH 02/27] Added java directory + fucking_coffee.java --- java/fucking_coffee.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 java/fucking_coffee.java diff --git a/java/fucking_coffee.java b/java/fucking_coffee.java new file mode 100644 index 00000000..569314ac --- /dev/null +++ b/java/fucking_coffee.java @@ -0,0 +1,34 @@ +import java.net.*; +import java.io.*; + +public class fucking_coffee{ + + private static final String MY_USERNAME = "my_username"; + private static final String PASSWORD_PROMPT = "Password: "; + private static final String PASSWORD = "1234"; + private static final String COFFEE_MACHINE_IP = "10.10.42.42"; + private static int DELAY_BEFORE_BREW = 17; + private static int DELAY = 24; + + public static void main(String[] args)throws Exception{ + for(int i = 1; i< args.length ; i++){ + if(!args[i].contains(MY_USERNAME)){ + return; + } + } + Socket telnet = new Socket(COFFEE_MACHINE_IP, 23); + PrintWriter out = new PrintWriter(telnet.getOutputStream(), true); + BufferedReader in = new BufferedReader(new InputStreamReader(telnet.getInputStream())); + Thread.sleep(DELAY_BEFORE_BREW*1000); + if(in.readLine() != PASSWORD_PROMPT){ + return ; + } + out.println(PASSWORD); + out.println("sys brew"); + Thread.sleep(DELAY*1000); + out.println("sys pour"); + out.close(); + in.close(); + telnet.close(); + } +} From 7d11758390001c82b19e792f7d81471903fcb26b Mon Sep 17 00:00:00 2001 From: Amir Karimi Date: Mon, 7 Dec 2015 13:31:01 +0330 Subject: [PATCH 03/27] Implement Scala version of the fucking-coffee script using Ammonite shell --- scala/fucking-coffee.scala | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 scala/fucking-coffee.scala diff --git a/scala/fucking-coffee.scala b/scala/fucking-coffee.scala new file mode 100644 index 00000000..20432bc4 --- /dev/null +++ b/scala/fucking-coffee.scala @@ -0,0 +1,43 @@ +/******************************************* + * + * Get and run Ammonite (http://lihaoyi.github.io/Ammonite/#Ammonite-Shell): + * $ mkdir ~/.ammonite; curl -L -o ~/.ammonite/predef.scala http://git.io/vR04f + * $ curl -L -o amm http://git.io/vR08A; chmod +x amm; ./amm + * + * Run script: + * @ load.exec("fucking-coffee.scala") + * + *******************************************/ + +import java.net._ +import java.io._ +import ammonite.ops._ + +val coffeeMachineIP = "10.10.42.42" +val password = "1234" +val passwordPrompt = "Password: " +val delayBeforeBrew = 17 +val delay = 24 + +if ((%%who "-q").out.string.contains(sys.props("user.name"))) { + + val telnet = new Socket(coffeeMachineIP, 23) + val out = new PrintWriter(telnet.getOutputStream, true) + val in = new BufferedReader(new InputStreamReader(telnet.getInputStream)) + + Thread.sleep(delayBeforeBrew * 1000); + + if(in.readLine == passwordPrompt){ + out.println(password) + + out.println("sys brew") + Thread.sleep(delay * 1000) + out.println("sys pour") + + } + + out.close() + in.close() + telnet.close() + +} \ No newline at end of file From 7669e87e0a707a4bb9a2d4828cbfbf5f3f24f119 Mon Sep 17 00:00:00 2001 From: gandrianakis Date: Mon, 7 Dec 2015 13:11:33 +0200 Subject: [PATCH 04/27] Added a groovy version of fucking_coffee --- groovy/fucking_coffee.groovy | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 groovy/fucking_coffee.groovy diff --git a/groovy/fucking_coffee.groovy b/groovy/fucking_coffee.groovy new file mode 100644 index 00000000..7411f3cc --- /dev/null +++ b/groovy/fucking_coffee.groovy @@ -0,0 +1,26 @@ +@Grab(group='org.hidetake', module='groovy-ssh', version='1.1.8') +@GrabExclude('org.codehaus.groovy:groovy-all') +import org.hidetake.groovy.ssh.Ssh + +final def ssh = Ssh.newService() + +final def HOST = '10.10.42.42' +final def USER = 'my_username' +final def PASSWORD = '1234' +final def DELAY = 24 + +ssh.remotes { + webServer { + host = HOST + user = USER + password = PASSWORD + } +} + +ssh.run { + session(ssh.remotes.webServer) { + execute 'sys brew' + execute "sleep ${DELAY}s" + execute 'sys pour' + } +} From 895b9228d3d2f7bf7ec7b950e8d03f446bbbf043 Mon Sep 17 00:00:00 2001 From: Amir Karimi Date: Mon, 7 Dec 2015 14:54:43 +0330 Subject: [PATCH 05/27] Run script from bash --- scala/fucking-coffee.scala | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scala/fucking-coffee.scala b/scala/fucking-coffee.scala index 20432bc4..b40d0834 100644 --- a/scala/fucking-coffee.scala +++ b/scala/fucking-coffee.scala @@ -1,17 +1,18 @@ /******************************************* * - * Get and run Ammonite (http://lihaoyi.github.io/Ammonite/#Ammonite-Shell): + * Get Ammonite (http://lihaoyi.github.io/Ammonite/#Ammonite-Shell): * $ mkdir ~/.ammonite; curl -L -o ~/.ammonite/predef.scala http://git.io/vR04f - * $ curl -L -o amm http://git.io/vR08A; chmod +x amm; ./amm + * $ curl -L -o amm http://git.io/vR08A; chmod +x amm * - * Run script: - * @ load.exec("fucking-coffee.scala") + * Run script + * $ ./amm fucking-coffee.scala * *******************************************/ import java.net._ import java.io._ import ammonite.ops._ +import ammonite.ops.ImplicitWd._ val coffeeMachineIP = "10.10.42.42" val password = "1234" @@ -25,6 +26,7 @@ if ((%%who "-q").out.string.contains(sys.props("user.name"))) { val out = new PrintWriter(telnet.getOutputStream, true) val in = new BufferedReader(new InputStreamReader(telnet.getInputStream)) + println(s"Wait for $delayBeforeBrew seconds") Thread.sleep(delayBeforeBrew * 1000); if(in.readLine == passwordPrompt){ From 48f2da4d084b452809b402afc0805502f8321b49 Mon Sep 17 00:00:00 2001 From: Yoann Duc Date: Tue, 8 Dec 2015 15:07:35 +0100 Subject: [PATCH 06/27] Update smack_my_bitch_up.go Line 34, added %s to string output --- go/smack_my_bitch_up.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/smack_my_bitch_up.go b/go/smack_my_bitch_up.go index 66f7311f..7e7fb7a3 100755 --- a/go/smack_my_bitch_up.go +++ b/go/smack_my_bitch_up.go @@ -31,7 +31,7 @@ func main(){ response,err := exec.Command("curl","-fSs","-u",TWILIO_ACCOUNT_SID + ":" + TWILIO_AUTH_TOKEN, "-d", "From=" + MY_NUMBER, "-d", "To=" + HER_NUMBER, "-d" , "Body=" + message, "https://api.twilio.com/2010-04-01/Accounts/" + TWILIO_ACCOUNT_SID + "/Messages").Output() if(err != nil){ - fmt.Printf("Failed to send SMS: ",err) + fmt.Printf("Failed to send SMS: %s",err) return } From 01f35717c7b3e3c3ff47e206b3420609c1c41270 Mon Sep 17 00:00:00 2001 From: Eli B Date: Tue, 8 Dec 2015 21:02:43 -0600 Subject: [PATCH 07/27] fix never detecting no password prompt --- java/fucking_coffee.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/fucking_coffee.java b/java/fucking_coffee.java index 569314ac..f6063119 100644 --- a/java/fucking_coffee.java +++ b/java/fucking_coffee.java @@ -20,7 +20,7 @@ public static void main(String[] args)throws Exception{ PrintWriter out = new PrintWriter(telnet.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(telnet.getInputStream())); Thread.sleep(DELAY_BEFORE_BREW*1000); - if(in.readLine() != PASSWORD_PROMPT){ + if(!in.readLine().equals(PASSWORD_PROMPT)){ return ; } out.println(PASSWORD); From d33d1f55bd91af45dab869310d0af514f9738029 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 10 Dec 2015 08:31:16 -0500 Subject: [PATCH 08/27] Created "smack_my_bitch_up" in php --- php/smack_my_bitch_up.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 php/smack_my_bitch_up.php diff --git a/php/smack_my_bitch_up.php b/php/smack_my_bitch_up.php new file mode 100644 index 00000000..f1fc68fb --- /dev/null +++ b/php/smack_my_bitch_up.php @@ -0,0 +1,32 @@ +#!/usr/bin/env php +load(); + +(strpos(exec('who'), getenv('USER')) !== false) or exit('no session'); + +// Phone numbers +$my_number = '+xxx'; +$her_number = '+xxx'; + +$reasons = [ + 'Working hard', + 'Gotta ship this feature', + 'Someone fucked up the system again' +]; + +$rand = rand(0,count($reasons)-1); +$random_reason = $reasons[$rand]; + +$message = 'Late at work. '.$random_reason; + +// Send a text message +$twilio = new Services_Twilio(getenv('TWILIO_ACCOUNT_SID'), getenv('TWILIO_AUTH_TOKEN')); +$twilio->account->messages->sendMessage( + $my_number, + $her_number, + $message +); + +echo 'Message sent at: #'.date('Y-m-d').' | Reason: '.$random_reason; From 3eeb95f0eada2906dd33918e7eb5769f8c404260 Mon Sep 17 00:00:00 2001 From: Luis Moneda Date: Tue, 29 Dec 2015 18:05:30 -0200 Subject: [PATCH 09/27] Update kumar_asshole.py prefetch=True prevents getting None for msg.body --- python/kumar_asshole.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/kumar_asshole.py b/python/kumar_asshole.py index 36f5f67a..6e95d7df 100755 --- a/python/kumar_asshole.py +++ b/python/kumar_asshole.py @@ -12,7 +12,7 @@ if not g.logged_in: sys.exit() -msgs = g.inbox().mail(sender="kumar.a@example.com", unread=True) +msgs = g.inbox().mail(sender="kumar.a@example.com", unread=True, prefetch=True) pattern = re.compile("\bsorry\b | \bhelp\b | \bwrong\b ", flags=re.I) From 66d694ce87cffa648399740668227f5202996ec4 Mon Sep 17 00:00:00 2001 From: matthew-z Date: Fri, 22 Jan 2016 05:11:13 +0900 Subject: [PATCH 10/27] added hangout.R, improved smack-my-bitch-up.R --- R/hangover.R | 35 +++++++++++++++++++++++++++++++++++ R/smack_my_bitch_up.R | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 R/hangover.R diff --git a/R/hangover.R b/R/hangover.R new file mode 100644 index 00000000..44123c01 --- /dev/null +++ b/R/hangover.R @@ -0,0 +1,35 @@ +library(httr) + +today = Sys.Date() + +# skip weekends +if( weekdays(today) %in% c('Saturday','Sunday') ){ + quit() + } + +# exit if no sessions with my username are found +output = system("who", intern = TRUE) +if( !( grep('^my_user_name', output) ) ){ + quit() + } + +# returns 'None' if the key doesn't exist +TWILIO_ACCOUNT_SID = Sys.getenv('TWILIO_ACCOUNT_SID') +TWILIO_AUTH_TOKEN = Sys.getenv('TWILIO_AUTH_TOKEN') + +# Phone numbers +my_number = '+xxx' +number_of_boss= '+xxx' + +excuse = c( + 'Locked out', + 'Pipes broke', + 'Food poisoning', + 'Not feeling well' + ) + +POST(paste("https://api.twilio.com/2010-04-01/Accounts/",TWILIO_ACCOUNT_SID,"/Messages.json",sep=""), + body = list(From=my_number,To=number_of_boss,Body=paste("Gonna work from home. ", sample(excuse,1))), + authenticate(TWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN) ) + +print( paste("Message sent at",Sys.time()) ) diff --git a/R/smack_my_bitch_up.R b/R/smack_my_bitch_up.R index 7257f88e..28fd2868 100644 --- a/R/smack_my_bitch_up.R +++ b/R/smack_my_bitch_up.R @@ -28,7 +28,7 @@ reasons = c( ) POST(paste("https://api.twilio.com/2010-04-01/Accounts/",TWILIO_ACCOUNT_SID,"/Messages.json",sep=""), - body = list(From=my_number,To=her_number,Body=sample(reasons,1) ), + body = list(From=my_number,To=her_number,Body=paste("Late at work. ", sample(reasons,1))), authenticate(TWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN) ) print( paste("Message sent at",Sys.time()) ) From 0937bac54420dca63648b7697e5c02cbdb77c9cb Mon Sep 17 00:00:00 2001 From: syedautherabbas Date: Wed, 27 Jan 2016 23:25:56 +0530 Subject: [PATCH 11/27] Added Kumar_Asshole.java --- java/Kumar_asshole.java | 95 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 java/Kumar_asshole.java diff --git a/java/Kumar_asshole.java b/java/Kumar_asshole.java new file mode 100644 index 00000000..cd94ce15 --- /dev/null +++ b/java/Kumar_asshole.java @@ -0,0 +1,95 @@ + +import java.io.File; +import java.io.FileInputStream; +import java.util.*; +import java.util.regex.*; + +import javax.mail.*; +import javax.mail.internet.*; +import javax.mail.search.FlagTerm; +//Dependencies- Java mail API + +public class Kumar_Asshole { + + public static void main(String[] args) { + Kumar_Asshole gmail = new Kumar_Asshole(); + gmail.read(); + } + + public void read() { + Properties props = new Properties(); + + + //modify below properties to your details + String host = "smtp.gmail.com"; + String username = "yourmailaddress@example.com goes here"; + String password = "your password goes here "; + String Kumar_mail = "the mail address to be replied to !"; + + try { + + Session session = Session.getDefaultInstance(props, null); + + Store store = session.getStore("imaps"); + store.connect(host, username, password); + + Folder inbox = store.getFolder("inbox"); + inbox.open(Folder.READ_ONLY); + + Message messages[] = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); + + for (int i = 0; i < messages.length; i++) { + + if (messages[i].getFrom()[0].toString().contains(Kumar_mail)) { + + String bodytext = null; + Object content = messages[i].getContent(); + if (content instanceof String) { + bodytext = (String) content; + + } else if (content instanceof Multipart) { + + Multipart mp = (Multipart) content; + + BodyPart bp = mp.getBodyPart(mp.getCount() - 1); + bodytext = (String) bp.getContent(); + + } + + Pattern pattern = Pattern.compile("sorry|help|wrong", Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(bodytext); + // check all occurance + + if (matcher.find()) { + + Properties props1 = new Properties(); + Address[] tomail; + + MimeMessage msg = new MimeMessage(session); + msg.setFrom(new InternetAddress(username)); + tomail = messages[i].getFrom(); + String t1 = tomail[0].toString(); + msg.addRecipient(Message.RecipientType.TO, new InternetAddress(t1)); + msg.setSubject("Database fixes"); + msg.setText("No problem. I've fixed it. \n\n Please be careful next time."); + Transport t = null; + t = session.getTransport("smtps"); + t.connect(host, username, password); + t.sendMessage(msg, msg.getAllRecipients()); + + + } + + + } + } + inbox.close(true); + store.close(); + + }catch(Exception e) + { + + e.printStackTrace(); + } + } +} \ No newline at end of file From 73e27a8975bbe073ad3f45ab0cf146db7f8005d8 Mon Sep 17 00:00:00 2001 From: Shadab Mehdi Date: Wed, 27 Jan 2016 23:58:29 +0530 Subject: [PATCH 12/27] Added SmackMyBitch.java --- java/SmackMyBitch.java | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 java/SmackMyBitch.java diff --git a/java/SmackMyBitch.java b/java/SmackMyBitch.java new file mode 100644 index 00000000..c3011ef6 --- /dev/null +++ b/java/SmackMyBitch.java @@ -0,0 +1,43 @@ +import com.twilio.sdk.TwilioRestClient; +import com.twilio.sdk.TwilioRestException; +import com.twilio.sdk.resource.factory.MessageFactory; +import com.twilio.sdk.resource.instance.Message; +import org.apache.http.NameValuePair; +import org.apache.http.message.BasicNameValuePair; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + + +public class SmackMyBitch { + + public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID"); + public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN"); + + public static final String YOUR_NUMBER = "1231231231"; + public static final String HER_NUMBER = "3213213213"; + + public static void main(String[] args) throws TwilioRestException { + + TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN); + + String[] randomMessages = { + "Working hard", + "Gotta ship this feature", + "Someone fucked the system again", + }; + + int randomIndex = new Random().nextInt(randomMessages.length); + String finalMessage = (randomMessages[randomIndex]); + + List params = new ArrayList(); + params.add(new BasicNameValuePair("Body", "Late at work. " + finalMessage)); + params.add(new BasicNameValuePair("From", YOUR_NUMBER)); + params.add(new BasicNameValuePair("To", HER_NUMBER)); + + MessageFactory messageFactory = client.getAccount().getMessageFactory(); + Message message = messageFactory.create(params); + System.out.println(message.getSid()); + } +} \ No newline at end of file From 1c53ad617820df3f43e9cdb0b42360f4473041cd Mon Sep 17 00:00:00 2001 From: Shadab Mehdi Date: Thu, 28 Jan 2016 00:37:59 +0530 Subject: [PATCH 13/27] Added Hangover.java --- java/Hangover.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 java/Hangover.java diff --git a/java/Hangover.java b/java/Hangover.java new file mode 100644 index 00000000..50177ef6 --- /dev/null +++ b/java/Hangover.java @@ -0,0 +1,44 @@ +import com.twilio.sdk.TwilioRestClient; +import com.twilio.sdk.TwilioRestException; +import com.twilio.sdk.resource.factory.MessageFactory; +import com.twilio.sdk.resource.instance.Message; +import org.apache.http.NameValuePair; +import org.apache.http.message.BasicNameValuePair; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class Hangover { + + public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID"); + public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN"); + + public static final String YOUR_NUMBER = "1231231231"; + public static final String BOSS_NUMBER = "3213213213"; + + public static void main(String[] args) throws TwilioRestException { + + TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN); + + String[] randomMessages = { + "Locked out", + "Pipes broke", + "Food poisoning", + "Not feeling well" + }; + + int randomIndex = new Random().nextInt(randomMessages.length); + String finalMessage = (randomMessages[randomIndex]); + + List params = new ArrayList(); + params.add(new BasicNameValuePair("Body", "Gonna work from home. " + finalMessage)); + params.add(new BasicNameValuePair("From", YOUR_NUMBER)); + params.add(new BasicNameValuePair("To", BOSS_NUMBER)); + + MessageFactory messageFactory = client.getAccount().getMessageFactory(); + Message message = messageFactory.create(params); + System.out.println(message.getSid()); + } +} + From 01e916f59cf76e1ac4bc9cb9add32df7490a423c Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Mon, 29 Feb 2016 12:57:12 +0400 Subject: [PATCH 14/27] rm extra files --- java/Kumar_asshole.java | 95 ---------------------------------------- java/fucking_coffee.java | 34 -------------- 2 files changed, 129 deletions(-) delete mode 100644 java/Kumar_asshole.java delete mode 100644 java/fucking_coffee.java diff --git a/java/Kumar_asshole.java b/java/Kumar_asshole.java deleted file mode 100644 index cd94ce15..00000000 --- a/java/Kumar_asshole.java +++ /dev/null @@ -1,95 +0,0 @@ - -import java.io.File; -import java.io.FileInputStream; -import java.util.*; -import java.util.regex.*; - -import javax.mail.*; -import javax.mail.internet.*; -import javax.mail.search.FlagTerm; -//Dependencies- Java mail API - -public class Kumar_Asshole { - - public static void main(String[] args) { - Kumar_Asshole gmail = new Kumar_Asshole(); - gmail.read(); - } - - public void read() { - Properties props = new Properties(); - - - //modify below properties to your details - String host = "smtp.gmail.com"; - String username = "yourmailaddress@example.com goes here"; - String password = "your password goes here "; - String Kumar_mail = "the mail address to be replied to !"; - - try { - - Session session = Session.getDefaultInstance(props, null); - - Store store = session.getStore("imaps"); - store.connect(host, username, password); - - Folder inbox = store.getFolder("inbox"); - inbox.open(Folder.READ_ONLY); - - Message messages[] = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); - - for (int i = 0; i < messages.length; i++) { - - if (messages[i].getFrom()[0].toString().contains(Kumar_mail)) { - - String bodytext = null; - Object content = messages[i].getContent(); - if (content instanceof String) { - bodytext = (String) content; - - } else if (content instanceof Multipart) { - - Multipart mp = (Multipart) content; - - BodyPart bp = mp.getBodyPart(mp.getCount() - 1); - bodytext = (String) bp.getContent(); - - } - - Pattern pattern = Pattern.compile("sorry|help|wrong", Pattern.CASE_INSENSITIVE); - Matcher matcher = pattern.matcher(bodytext); - // check all occurance - - if (matcher.find()) { - - Properties props1 = new Properties(); - Address[] tomail; - - MimeMessage msg = new MimeMessage(session); - msg.setFrom(new InternetAddress(username)); - tomail = messages[i].getFrom(); - String t1 = tomail[0].toString(); - msg.addRecipient(Message.RecipientType.TO, new InternetAddress(t1)); - msg.setSubject("Database fixes"); - msg.setText("No problem. I've fixed it. \n\n Please be careful next time."); - Transport t = null; - t = session.getTransport("smtps"); - t.connect(host, username, password); - t.sendMessage(msg, msg.getAllRecipients()); - - - } - - - } - } - inbox.close(true); - store.close(); - - }catch(Exception e) - { - - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/java/fucking_coffee.java b/java/fucking_coffee.java deleted file mode 100644 index f6063119..00000000 --- a/java/fucking_coffee.java +++ /dev/null @@ -1,34 +0,0 @@ -import java.net.*; -import java.io.*; - -public class fucking_coffee{ - - private static final String MY_USERNAME = "my_username"; - private static final String PASSWORD_PROMPT = "Password: "; - private static final String PASSWORD = "1234"; - private static final String COFFEE_MACHINE_IP = "10.10.42.42"; - private static int DELAY_BEFORE_BREW = 17; - private static int DELAY = 24; - - public static void main(String[] args)throws Exception{ - for(int i = 1; i< args.length ; i++){ - if(!args[i].contains(MY_USERNAME)){ - return; - } - } - Socket telnet = new Socket(COFFEE_MACHINE_IP, 23); - PrintWriter out = new PrintWriter(telnet.getOutputStream(), true); - BufferedReader in = new BufferedReader(new InputStreamReader(telnet.getInputStream())); - Thread.sleep(DELAY_BEFORE_BREW*1000); - if(!in.readLine().equals(PASSWORD_PROMPT)){ - return ; - } - out.println(PASSWORD); - out.println("sys brew"); - Thread.sleep(DELAY*1000); - out.println("sys pour"); - out.close(); - in.close(); - telnet.close(); - } -} From 7a82ced99fa0827e47cd9cb554acc3f134f65cc1 Mon Sep 17 00:00:00 2001 From: Will Webb Date: Thu, 31 Mar 2016 18:41:37 +0100 Subject: [PATCH 15/27] Update fucking_coffee.psm1 Corrected spelling in synopsis. --- powershell/fucking_coffee.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powershell/fucking_coffee.psm1 b/powershell/fucking_coffee.psm1 index 55b12898..980eb621 100644 --- a/powershell/fucking_coffee.psm1 +++ b/powershell/fucking_coffee.psm1 @@ -1,7 +1,7 @@ <# .SYNOPSIS Simple script to connect to a coffee part using TelNet then issue specific commands that - brew and pourt a cup of coffee for the user. + brew and pour a cup of coffee for the user. .DESCRIPTION This script was converted using the ruby version of the fucking_coffee script. In this script, I left the use of environment variables since its only use was to determine if the user was @@ -59,4 +59,4 @@ Function Send-TelNetCommands $writer.WriteLine($command) $writer.Flush() Start-Sleep -Milliseconds $WaitTime -} \ No newline at end of file +} From 0347b0ca02130334db78fef7adffcf2b7838c4dd Mon Sep 17 00:00:00 2001 From: Shahjada Date: Sun, 31 Jan 2016 20:16:24 +0600 Subject: [PATCH 16/27] Added Hangover.cs and implementation Added SmackMyBitch.cs and implementation --- CSharp/Hangover.cs | 34 ++++++++++++++++++++++++++++++++++ CSharp/SmackMyBitch.cs | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 CSharp/Hangover.cs create mode 100644 CSharp/SmackMyBitch.cs diff --git a/CSharp/Hangover.cs b/CSharp/Hangover.cs new file mode 100644 index 00000000..fe7a5888 --- /dev/null +++ b/CSharp/Hangover.cs @@ -0,0 +1,34 @@ +namespace Hacker_Scripts +{ + using System; + using Twilio; + using System.Linq; + + class Hangover + { + public static string TWILIO_ACCOUNT_SID = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); + public static string AUTH_TOKEN = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); + + public static string YOUR_NUMBER = "9879789978"; + public static string BOSS_NUMBER = "3213213233"; + + static void Main(string[] args) + { + var twilio = new TwilioRestClient(TWILIO_ACCOUNT_SID, AUTH_TOKEN); + + string[] randomMessages = { + "Locked out", + "Pipes broke", + "Food poisoning", + "Not feeling well" + }; + + int randomIndex = new Random().Next(randomMessages.Count()); + String messageToSend = (randomMessages[randomIndex]); + + var message = twilio.SendMessage(YOUR_NUMBER, BOSS_NUMBER, messageToSend); + Console.WriteLine(message.Sid); + } + } +} + diff --git a/CSharp/SmackMyBitch.cs b/CSharp/SmackMyBitch.cs new file mode 100644 index 00000000..d5c13fc1 --- /dev/null +++ b/CSharp/SmackMyBitch.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Twilio; + +namespace Hacker_Scripts +{ + class SmackMyBitch + { + public static string TWILIO_ACCOUNT_SID = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); + public static string AUTH_TOKEN = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); + + public static string YOUR_NUMBER = "9879789978"; + public static string HER_NUMBER = "3213213233"; + + static void Main(string[] args) + { + var twilio = new TwilioRestClient(TWILIO_ACCOUNT_SID, AUTH_TOKEN); + + string[] randomMessages = { + "Working hard", + "Gotta ship this feature", + "Someone fucked the system again" + }; + + int randomIndex = new Random().Next(randomMessages.Count()); + String messageToSend = (randomMessages[randomIndex]); + + var message = twilio.SendMessage(YOUR_NUMBER, HER_NUMBER, messageToSend); + Console.WriteLine(message.Sid); + } + } +} From e06146e10a6c0af2bf177c31d02cb44f60062767 Mon Sep 17 00:00:00 2001 From: PenguWin Date: Sat, 8 Oct 2016 18:16:55 +0200 Subject: [PATCH 17/27] go fmt on smack_my_bitch_up.go --- go/smack_my_bitch_up.go | 71 ++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/go/smack_my_bitch_up.go b/go/smack_my_bitch_up.go index 7e7fb7a3..41966881 100755 --- a/go/smack_my_bitch_up.go +++ b/go/smack_my_bitch_up.go @@ -1,39 +1,38 @@ package main -import( - "os/exec" - "fmt" - "strings" - "os" - "math/rand" - "time" - ) - -func main(){ - output1,err := exec.Command("who").Output() - output2 := os.Getenv("USER") - users := string(output1[:]) - current_user := string(output2[:]) - if(!strings.Contains(users,current_user)){ - return - } - - - reasons := []string {"Working hard","Gotta ship this feature","Someone fucked the system again"} - - rand.Seed(time.Now().UTC().UnixNano()) - message := "Late at work. " + reasons[rand.Intn(len(reasons))] - - TWILIO_ACCOUNT_SID := string(os.Getenv("TWILIO_ACCOUNT_SID")) - TWILIO_AUTH_TOKEN := string(os.Getenv("TWILIO_AUTH_TOKEN")) - MY_NUMBER := string(os.Getenv("MY_NUMBER")) - HER_NUMBER := string(os.Getenv("HER_NUMBER")) - - response,err := exec.Command("curl","-fSs","-u",TWILIO_ACCOUNT_SID + ":" + TWILIO_AUTH_TOKEN, "-d", "From=" + MY_NUMBER, "-d", "To=" + HER_NUMBER, "-d" , "Body=" + message, "https://api.twilio.com/2010-04-01/Accounts/" + TWILIO_ACCOUNT_SID + "/Messages").Output() - if(err != nil){ - fmt.Printf("Failed to send SMS: %s",err) - return - } - - fmt.Printf("Message Sent Successfully with response: %s ",response) +import ( + "fmt" + "math/rand" + "os" + "os/exec" + "strings" + "time" +) + +func main() { + output1, err := exec.Command("who").Output() + output2 := os.Getenv("USER") + users := string(output1[:]) + current_user := string(output2[:]) + if !strings.Contains(users, current_user) { + return + } + + reasons := []string{"Working hard", "Gotta ship this feature", "Someone fucked the system again"} + + rand.Seed(time.Now().UTC().UnixNano()) + message := "Late at work. " + reasons[rand.Intn(len(reasons))] + + TWILIO_ACCOUNT_SID := string(os.Getenv("TWILIO_ACCOUNT_SID")) + TWILIO_AUTH_TOKEN := string(os.Getenv("TWILIO_AUTH_TOKEN")) + MY_NUMBER := string(os.Getenv("MY_NUMBER")) + HER_NUMBER := string(os.Getenv("HER_NUMBER")) + + response, err := exec.Command("curl", "-fSs", "-u", TWILIO_ACCOUNT_SID+":"+TWILIO_AUTH_TOKEN, "-d", "From="+MY_NUMBER, "-d", "To="+HER_NUMBER, "-d", "Body="+message, "https://api.twilio.com/2010-04-01/Accounts/"+TWILIO_ACCOUNT_SID+"/Messages").Output() + if err != nil { + fmt.Printf("Failed to send SMS: %s", err) + return + } + + fmt.Printf("Message Sent Successfully with response: %s ", response) } From 166cae8079dd333235036dba5e9cb3a2240bbbd0 Mon Sep 17 00:00:00 2001 From: Sam Adams Date: Tue, 23 Apr 2019 02:16:28 -0700 Subject: [PATCH 18/27] Clojure implementation (#174) * clojure implementation * gf --> boss * newlines --- clojure/coffee.clj | 39 +++++++++++++++++++++++++ clojure/hangover.clj | 28 ++++++++++++++++++ clojure/kumar.clj | 68 ++++++++++++++++++++++++++++++++++++++++++++ clojure/smack.clj | 28 ++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 clojure/coffee.clj create mode 100644 clojure/hangover.clj create mode 100644 clojure/kumar.clj create mode 100644 clojure/smack.clj diff --git a/clojure/coffee.clj b/clojure/coffee.clj new file mode 100644 index 00000000..96d87eb2 --- /dev/null +++ b/clojure/coffee.clj @@ -0,0 +1,39 @@ +(ns hacker-scripts.coffee + (:require [environ.core :refer [env]]) + (:import + (java.net Socket) + (java.io BufferedReader PrintWriter InputStreamReader))) + +(def my-username "my-username") +(def my-password "my-password") + +(def coffee-machine-ip "10.10.42.42") +(def password-prompt "Password: ") +(def connection-port 23) + +(def sec-delay-before-brew 17) +(def sec-delay-before-pour 24) + +(defn logged-in? [] (= (:USER env) my-username)) + +(defn auth [in-stream out-stream] + (if (= (.readLine in-stream) password-prompt) + (.println out-stream my-password) + (throw (RuntimeException. + "Failed to authenticate with coffee machine")))) + +(defn command-brew-pour [out-stream] + (do + (Thread/sleep (* 1000 sec-delay-before-brew)) + (.println out-stream "sys brew") + (Thread/sleep (* 1000 sec-delay-before-pour)) + (.println out-stream "sys pour"))) + +(defn coffee [] + (if (logged-in?) + (with-open [socket (Socket. coffee-machine-ip connection-port) + out-stream (PrintWriter. (.getOutputStream socket) true) + in-stream (BufferedReader. (InputStreamReader. (.getInputStream socket)))] + (do + (auth in-stream out-stream) + (command-brew-pour out-stream))))) diff --git a/clojure/hangover.clj b/clojure/hangover.clj new file mode 100644 index 00000000..7a71372a --- /dev/null +++ b/clojure/hangover.clj @@ -0,0 +1,28 @@ +(ns hacker-scripts.hangover + (:import + (com.twilio Twilio) + (com.twilio.rest.api.v2010.account Message) + (com.twilio.type PhoneNumber))) + +(def acc-sid "my twilio account SID") +(def acc-tkn "my twilio secret token") + +(def my-num (PhoneNumber. "+10001112222")) +(def boss-num (PhoneNumber. "+19998887777")) + +(def reasons ["Receiving delivery" + "Waiting for repairman" + "Nasty cold"]) + +(defn twilio-init [] + (Twilio/init acc-sid acc-tkn)) + +(defn send-sms [to-num from-num message] + (.. Message (creator to-num from-num message) create)) + +(def send-sms-boss (partial send-sms boss-num my-num)) + +(defn hangover [] + (twilio-init) + (let [message (rand-nth reasons)] + (send-sms-boss message))) diff --git a/clojure/kumar.clj b/clojure/kumar.clj new file mode 100644 index 00000000..e406ce95 --- /dev/null +++ b/clojure/kumar.clj @@ -0,0 +1,68 @@ +(ns hacker-scripts.kumar + (:import + (java.util Properties) + (javax.mail Session Authenticator PasswordAuthentication Message$RecipientType Transport Folder Flags Flags$Flag) + (javax.mail.internet MimeMessage InternetAddress) + (javax.mail.search FlagTerm FromTerm AndTerm OrTerm SubjectTerm BodyTerm SearchTerm))) + +(def host "smtp.gmail.com") +(def my-email "my-email@gmail.com") +(def my-password "my-gmail-password") +(def kumar-email "kumar@gmail.com") + +(def seen-flag (Flags. (Flags$Flag/SEEN))) + +(def unread-term (FlagTerm. seen-flag false)) + +(defn get-session [] + (let [authenticator (proxy [Authenticator] [] + (getPasswordAuthentication [] + (PasswordAuthentication. my-email my-password))) + props (Properties.)] + (.put props "mail.smtp.host" "smtp.gmail.com") + (.put props "mail.smtp.port" "587") + (.put props "mail.smtp.auth" "true") + (.put props "mail.smtp.starttls.enable" "true") + (.. Session (getInstance props authenticator)))) + +(defn get-inbox [session] + (let [store (.getStore session "imaps") + inbox (do + (.connect store host my-email my-password) + (.getFolder store "inbox"))] + (.open inbox Folder/READ_WRITE) + inbox)) + +(defn get-no-worries-message [session] + (let [message (MimeMessage. session)] + (.setFrom message (InternetAddress. my-email)) + (.addRecipient message Message$RecipientType/TO (InternetAddress. kumar-email)) + (.setSubject message "Database fixes") + (.setText message "No worries mate, be careful next time") + message)) + +(defn search-term [pattern] + (OrTerm. (into-array SearchTerm [(SubjectTerm. pattern) (BodyTerm. pattern)]))) + +(defn any-of-search-term [& patterns] + (OrTerm. (into-array (map search-term patterns)))) + +(defn from-term [addr] + (FromTerm. (InternetAddress. addr))) + +(defn get-unread-sos-from-kumar [inbox] + (let [flag (AndTerm. (into-array SearchTerm [unread-term + (from-term kumar-email) + (any-of-search-term "help" "sorry" "trouble")]))] + (.search inbox flag))) + +(defn mark-as-read [inbox messages] + (.setFlags inbox messages seen-flag true)) + +(defn kumar-asshole [] + (let [session (get-session) + inbox (get-inbox session) + unread-sos-from-kumar (get-unread-sos-from-kumar inbox)] + (when (seq unread-sos-from-kumar) + (mark-as-read inbox unread-sos-from-kumar) + (Transport/send (get-no-worries-message session))))) diff --git a/clojure/smack.clj b/clojure/smack.clj new file mode 100644 index 00000000..232a0b1e --- /dev/null +++ b/clojure/smack.clj @@ -0,0 +1,28 @@ +(ns hacker-scripts.smack + (:import + (com.twilio Twilio) + (com.twilio.rest.api.v2010.account Message) + (com.twilio.type PhoneNumber))) + +(def acc-sid "my twilio account SID") +(def acc-tkn "my twilio secret token") + +(def my-num (PhoneNumber. "+10001112222")) +(def her-num (PhoneNumber. "+19998887777")) + +(def reasons ["Working hard" + "Gotta ship this feature" + "Someone fucked the system again"]) + +(defn twilio-init [] + (Twilio/init acc-sid acc-tkn)) + +(defn send-sms [to-num from-num message] + (.. Message (creator to-num from-num message) create)) + +(def send-sms-girlfriend (partial send-sms her-num my-num)) + +(defn smack [] + (twilio-init) + (let [message (rand-nth reasons)] + (send-sms-girlfriend message))) From d98c96fbdbc07b7672fa9383a1339bcf18a61a00 Mon Sep 17 00:00:00 2001 From: theapache64 Date: Mon, 29 Apr 2019 18:51:33 +0530 Subject: [PATCH 19/27] =?UTF-8?q?=F0=9F=8C=9F=20Added=20kotlin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kotlin/FuckingCoffee.kt | 33 +++++++++++++++ kotlin/Hangover.kt | 41 +++++++++++++++++++ kotlin/KumarAsshole.kt | 91 +++++++++++++++++++++++++++++++++++++++++ kotlin/SmackMyBitch.kt | 42 +++++++++++++++++++ 4 files changed, 207 insertions(+) create mode 100644 kotlin/FuckingCoffee.kt create mode 100644 kotlin/Hangover.kt create mode 100644 kotlin/KumarAsshole.kt create mode 100644 kotlin/SmackMyBitch.kt diff --git a/kotlin/FuckingCoffee.kt b/kotlin/FuckingCoffee.kt new file mode 100644 index 00000000..f775ea93 --- /dev/null +++ b/kotlin/FuckingCoffee.kt @@ -0,0 +1,33 @@ +import java.io.BufferedReader +import java.io.InputStreamReader +import java.io.PrintWriter +import java.net.Socket + +private const val MY_USERNAME = "my_username" +private const val PASSWORD_PROMPT = "Password: " +private const val PASSWORD = "1234" +private const val COFFEE_MACHINE_IP = "10.10.42.42" +private const val DELAY_BEFORE_BREW = 17 +private const val DELAY = 24 + +fun main(args: Array) { + for (i in 1 until args.size) { + if (!args[i].contains(MY_USERNAME)) { + return + } + } + val telnet = Socket(COFFEE_MACHINE_IP, 23) + val out = PrintWriter(telnet.getOutputStream(), true) + val reader = BufferedReader(InputStreamReader(telnet.getInputStream())) + Thread.sleep((DELAY_BEFORE_BREW * 1000).toLong()) + if (reader.readLine() != PASSWORD_PROMPT) { + return + } + out.println(PASSWORD) + out.println("sys brew") + Thread.sleep((DELAY * 1000).toLong()) + out.println("sys pour") + out.close() + reader.close() + telnet.close() +} \ No newline at end of file diff --git a/kotlin/Hangover.kt b/kotlin/Hangover.kt new file mode 100644 index 00000000..35f13ef5 --- /dev/null +++ b/kotlin/Hangover.kt @@ -0,0 +1,41 @@ +import com.twilio.sdk.TwilioRestClient +import com.twilio.sdk.TwilioRestException +import com.twilio.sdk.resource.factory.MessageFactory +import com.twilio.sdk.resource.instance.Message +import org.apache.http.NameValuePair +import org.apache.http.message.BasicNameValuePair + +import java.util.ArrayList +import java.util.Random + +private val ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID") +private val AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN") + +private const val YOUR_NUMBER = "1231231231" +private const val BOSS_NUMBER = "3213213213" + +private val randomMessages = arrayOf( + "Locked out", + "Pipes broke", + "Food poisoning", + "Not feeling well" +) + + +fun main() { + + val client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) + + val finalMessage = randomMessages.random() + + val params = ArrayList().apply { + add(BasicNameValuePair("Body", "Gonna work from home. $finalMessage")) + add(BasicNameValuePair("From", YOUR_NUMBER)) + add(BasicNameValuePair("To", BOSS_NUMBER)) + } + + val messageFactory = client.getAccount().getMessageFactory() + val message = messageFactory.create(params) + System.out.println(message.getSid()) +} + diff --git a/kotlin/KumarAsshole.kt b/kotlin/KumarAsshole.kt new file mode 100644 index 00000000..75c23988 --- /dev/null +++ b/kotlin/KumarAsshole.kt @@ -0,0 +1,91 @@ +import java.io.File +import java.io.FileInputStream +import java.util.* +import java.util.regex.* + +import javax.mail.* +import javax.mail.internet.* +import javax.mail.search.FlagTerm + +//modify below properties to your details +private const val host = "smtp.gmail.com" +private const val username = "yourmailaddress@example.com goes here" +private const val password = "your password goes here " +private const val Kumar_mail = "the mail address to be replied to !" + + +//Dependencies- Java mail API +fun main() { + val asshole = KumarAsshole() + asshole.read() +} + +object KumarAsshole { + + fun read() { + val props = Properties() + + try { + + val session = Session.getDefaultInstance(props, null) + + val store = session.getStore("imaps") + store.connect(host, username, password) + + val inbox = store.getFolder("inbox") + inbox.open(Folder.READ_ONLY) + + val messages = inbox.search(FlagTerm(Flags(Flags.Flag.SEEN), false)) + + for (i in messages.indices) { + + if (messages[i].getFrom()[0].toString().contains(Kumar_mail)) { + + var bodytext: String? = null + val content = messages[i].getContent() + if (content is String) { + bodytext = content + + } else if (content is Multipart) { + + val mp = content as Multipart + + val bp = mp.getBodyPart(mp.getCount() - 1) + bodytext = bp.getContent() + + } + + val pattern = Pattern.compile("sorry|help|wrong", Pattern.CASE_INSENSITIVE) + val matcher = pattern.matcher(bodytext!!) + // check all occurance + + if (matcher.find()) { + + val props1 = Properties() + val tomail: Array
+ + val msg = MimeMessage(session) + msg.setFrom(InternetAddress(username)) + tomail = messages[i].getFrom() + val t1 = tomail[0].toString() + msg.addRecipient(Message.RecipientType.TO, InternetAddress(t1)) + msg.setSubject("Database fixes") + msg.setText("No problem. I've fixed it. \n\n Please be careful next time.") + var t: Transport? = null + t = session.getTransport("smtps") + t!!.connect(host, username, password) + t!!.sendMessage(msg, msg.getAllRecipients()) + } + + + } + } + inbox.close(true) + store.close() + + } catch (e: Exception) { + e.printStackTrace() + } + + } +} \ No newline at end of file diff --git a/kotlin/SmackMyBitch.kt b/kotlin/SmackMyBitch.kt new file mode 100644 index 00000000..9a73bb34 --- /dev/null +++ b/kotlin/SmackMyBitch.kt @@ -0,0 +1,42 @@ +import com.twilio.sdk.TwilioRestClient +import com.twilio.sdk.TwilioRestException +import com.twilio.sdk.resource.factory.MessageFactory +import com.twilio.sdk.resource.instance.Message +import org.apache.http.NameValuePair +import org.apache.http.message.BasicNameValuePair + +import java.util.ArrayList +import java.util.Random + +//Pre-requisite apache http and twilio java libraries + +private const val ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID") +private const val AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN") + +private const val YOUR_NUMBER = "1231231231" +private const val HER_NUMBER = "3213213213" + +private val randomMessages = arrayOf( + "Working hard", + "Gotta ship this feature", + "Someone fucked the system again" +) + + +@Throws(TwilioRestException::class) +fun main() { + + val client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) + + val finalMessage = randomMessages.random() + + val params = mutableListOf().apply { + add(BasicNameValuePair("Body", "Late at work. $finalMessage")) + add(BasicNameValuePair("From", YOUR_NUMBER)) + add(BasicNameValuePair("To", HER_NUMBER)) + } + + val messageFactory = client.getAccount().getMessageFactory() + val message = messageFactory.create(params) + System.out.println(message.getSid()) +} \ No newline at end of file From 5c59766b505d26665d2f91faf8065b9faec39c35 Mon Sep 17 00:00:00 2001 From: Kudzai Chasinda Date: Sun, 3 Nov 2019 13:56:51 +0200 Subject: [PATCH 20/27] Fix space issue on python reply (#184) --- python3/kumar_asshole.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python3/kumar_asshole.py b/python3/kumar_asshole.py index c85155b7..a66b255a 100755 --- a/python3/kumar_asshole.py +++ b/python3/kumar_asshole.py @@ -16,7 +16,7 @@ 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." +REPLY_BODY = "No problem. I've fixed it. \n\nPlease be careful next time." yagmail.register(GMAIL_USERNAME, GMAIL_PASSWORD) From 4bf5fe9831a865cc3b1dd7b218ef83ba045ab5e1 Mon Sep 17 00:00:00 2001 From: mpetitjean Date: Wed, 8 Jan 2020 14:19:36 +0100 Subject: [PATCH 21/27] Add 17s delay in fucking-coffee, python (#178) --- python/fucking_coffee.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/fucking_coffee.py b/python/fucking_coffee.py index c19572f3..a6ea5e94 100755 --- a/python/fucking_coffee.py +++ b/python/fucking_coffee.py @@ -10,6 +10,8 @@ if 'my_username' not in output: sys.exit() +time.sleep(17) + coffee_machine_ip = '10.10.42.42' password = '1234' password_prompt = 'Password: ' From c03021e12848e3a807f46720ec4219753897fcc4 Mon Sep 17 00:00:00 2001 From: Bharath Srinivas Date: Wed, 8 Jan 2020 18:49:57 +0530 Subject: [PATCH 22/27] ported fucking-coffee script to golang (#163) --- go/fucking-coffee.go | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 go/fucking-coffee.go diff --git a/go/fucking-coffee.go b/go/fucking-coffee.go new file mode 100644 index 00000000..23149d83 --- /dev/null +++ b/go/fucking-coffee.go @@ -0,0 +1,50 @@ +package main + +import ( + "fmt" + "log" + "os" + "regexp" + "time" + + "github.com/codeskyblue/go-sh" + "github.com/google/goexpect" +) + +func main() { + // exit early if no sessions with my username are found + currentUser, _ := sh.Command("who").Command("grep", "my_username").Output() + if currentUser == nil { + os.Exit(1) + } + + // info about the coffee machine + coffeeMachineIP := "10.10.42.42" + password := "1234" + passwordPrompt := "Password: " + delayBeforeBrew := 17 * time.Second + delay := 24 * time.Second + + // timeout for the telnet prompts + timeout := 10 * time.Minute + + // sleep 17 seconds before brewing coffee + time.Sleep(delayBeforeBrew) + + // spawn a new telnet session with the coffee machine + t, _, err := expect.Spawn(fmt.Sprintf("telnet %s", coffeeMachineIP), -1) + if err != nil { + log.Fatal(err) + } + defer t.Close() + + t.Expect(regexp.MustCompile(passwordPrompt), timeout) + t.Send(password + "\n") + t.Expect(regexp.MustCompile("telnet>"), timeout) + t.Send("sys brew\n") + time.Sleep(delay) + t.Expect(regexp.MustCompile("telnet>"), timeout) + t.Send("sys pour\n") + t.Expect(regexp.MustCompile("telnet>"), timeout) + t.Send("exit\n") +} From 0ce706d30a80b511635a5b6414957e2921ab06bb Mon Sep 17 00:00:00 2001 From: linbudu599 Date: Sat, 18 Jan 2020 15:59:35 +0800 Subject: [PATCH 23/27] add simplified chinese README --- README.md | 3 +++ README.zh-CN.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 README.zh-CN.md diff --git a/README.md b/README.md index bfda095d..8b46c69d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ + +English | [简体中文](./README.zh-CN.md) + # Hacker Scripts Based on a _[true diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 00000000..3d07a559 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,59 @@ +# Hacker Scripts + +根据 *[真实故事](https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/)* 改编: + +> xxx: 是这样的,我们的构建工程师离职去了另外一家公司,这货基本算是生活在终端里。 你知道么,这人热爱Vim,用Dot作图,甚至用MarkDown来写维基帖子...,如果有什么事情要花上他超过90秒,她一定会整个脚本来让这件事变得“自动化”。 + +> xxx: 我们现在坐在他的工位上,看着他留下来的这些,呃,“遗产”? + +> xxx: 我觉得你们会喜欢这些的 + +> xxx: [`smack-my-bitch-up.sh(拍老婆马屁脚本)`](https://github.com/NARKOZ/hacker-scripts/blob/master/smack-my-bitch-up.sh) - 它会给他的老婆(很明显是他老婆)发送一条“今晚要加班了”的短信,再自动从文本库中随机地选择一条理由。这个脚本被设置为定时触发,而且只有在工作日晚9点以后,服务器上还有他登陆的SSH进程在运行时才会执行。 + +> xxx: [`kumar-asshole.sh(库马尔个傻*)`](https://github.com/NARKOZ/hacker-scripts/blob/master/kumar-asshole.sh) - 这个脚本会自动扫描邮箱,如果发现其中有库马尔(库马尔是我们客户公司的一位数据库管理员)发来的邮件,就会在其中寻找关键字如“求助”,“遇到麻烦了”,“抱歉”等等,如果发现了这些关键字,这个脚本会通过SSH连接上客户公司的服务器,把中间数据库(staging database)回滚到最新一次的可用备份。然后它会给邮件发送回复,“没事了哥们,下次小心点哈”。 + +> xxx: [`hangover.sh(宿醉)`](https://github.com/NARKOZ/hacker-scripts/blob/master/hangover.sh) - 同样是个定时执行的任务,被设置为在特定日期触发,它会自动发送诸如“今天不太舒服”或“今天我在家上班”之类的邮件,同样会从文本库里随机选取一条理由。这个任务会在工作日清晨8点45分以后服务器上仍然没有可交互的SSH进程时真正执行。 + +> xxx: (最牛的就是接下来这个) [`fucking-coffee.sh(**的咖啡)`](https://github.com/NARKOZ/hacker-scripts/blob/master/fucking-coffee.sh) - 这个脚本在启动之后,会先等待恰好17秒(!),然后启动一个登录进程连接到我们的咖啡机(淦,我们之前完全不知道我们的咖啡机是联网的,上面还运行着Linux系统,甚至还跑着TCP socket连接!),然后它会发送类似“系统!开始煮咖啡!”之类的消息,结果这条消息会让咖啡机开始工作,煮一杯 中杯大小、半咖啡因的拿铁,再等待恰好24秒(!)后,才倒进咖啡杯里。这些时间加起来刚好就是这位程序员从自己的工位走到机器前要的时间。 + +> xxx: 天了噜我要把这些保留下来。 + +原文: http://bash.im/quote/436725 (俄语) + +欢迎使用其它语言来实现 (Python, Perl, Shell等等)并提交PR。 + +## 用法 + +你需要以下这些环境变量: + +```bash +# used in `smack-my-bitch-up` and `hangover` scripts +TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +TWILIO_AUTH_TOKEN=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +# used in `kumar_asshole` script +GMAIL_USERNAME=admin@example.org +GMAIL_PASSWORD=password +``` + +为了执行Ruby脚本,你需要安装gems: `gem install dotenv twilio-ruby gmail` + +## 定时任务 + +```bash +# Runs `smack-my-bitch-up.sh` monday to friday at 9:20 pm. +20 21 * * 1-5 /path/to/scripts/smack-my-bitch-up.sh >> /path/to/smack-my-bitch-up.log 2>&1 + +# Runs `hangover.sh` monday to friday at 8:45 am. +45 8 * * 1-5 /path/to/scripts/hangover.sh >> /path/to/hangover.log 2>&1 + +# Runs `kumar-asshole.sh` every 10 minutes. +*/10 * * * * /path/to/scripts/kumar-asshole.sh + +# Runs `fucking-coffee.sh` hourly from 9am to 6pm on weekdays. +0 9-18 * * 1-5 /path/to/scripts/fucking-coffee.sh +``` + +------ + +代码的使用遵循WTFPL(Do What The Fuck You Want To Public License)协议。 \ No newline at end of file From 9cb4a2e49dd7f614b901066c9e3a3ccb2255558e Mon Sep 17 00:00:00 2001 From: Meyers Tom Date: Sun, 23 Feb 2020 20:15:21 +0200 Subject: [PATCH 24/27] Fixed Delay Typo's in fucking_coffee.py (#187) --- python/fucking_coffee.py | 2 +- python3/fucking_coffee.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/fucking_coffee.py b/python/fucking_coffee.py index a6ea5e94..82609323 100755 --- a/python/fucking_coffee.py +++ b/python/fucking_coffee.py @@ -22,7 +22,7 @@ # Make some coffee! con.write("sys brew\n") -time.sleep(64) +time.sleep(24) # love the smell! con.write("sys pour\n") diff --git a/python3/fucking_coffee.py b/python3/fucking_coffee.py index 0268b79a..b3007804 100755 --- a/python3/fucking_coffee.py +++ b/python3/fucking_coffee.py @@ -24,7 +24,7 @@ def main(): conn.write(COFFEE_MACHINE_PASS) conn.write('sys brew') - time.sleep(64) + time.sleep(24) conn.write('sys pour') conn.close() From 91f0a00c5542ed89495f008d115e92705c3a01ca Mon Sep 17 00:00:00 2001 From: Witcher01 Date: Tue, 14 Apr 2020 17:34:57 +0200 Subject: [PATCH 25/27] code cleanup cleaned up code in 'KumarAsshole.java'. fixed confusing indentation and newlines for better readability. --- java/KumarAsshole.java | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/java/KumarAsshole.java b/java/KumarAsshole.java index 24471c9e..cbbd97a4 100644 --- a/java/KumarAsshole.java +++ b/java/KumarAsshole.java @@ -1,4 +1,3 @@ - import java.io.File; import java.io.FileInputStream; import java.util.*; @@ -19,15 +18,13 @@ public static void main(String[] args) { public void read() { Properties props = new Properties(); - - //modify below properties to your details - String host = "smtp.gmail.com"; - String username = "yourmailaddress@example.com goes here"; - String password = "your password goes here "; - String Kumar_mail = "the mail address to be replied to !"; - - try { + //modify below properties to your details + String host = "smtp.gmail.com"; + String username = "yourmailaddress@example.com goes here"; + String password = "your password goes here "; + String Kumar_mail = "the mail address to be replied to !"; + try { Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("imaps"); @@ -39,21 +36,16 @@ public void read() { Message messages[] = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); for (int i = 0; i < messages.length; i++) { - if (messages[i].getFrom()[0].toString().contains(Kumar_mail)) { - String bodytext = null; Object content = messages[i].getContent(); if (content instanceof String) { bodytext = (String) content; - } else if (content instanceof Multipart) { - Multipart mp = (Multipart) content; BodyPart bp = mp.getBodyPart(mp.getCount() - 1); bodytext = (String) bp.getContent(); - } Pattern pattern = Pattern.compile("sorry|help|wrong", Pattern.CASE_INSENSITIVE); @@ -61,7 +53,6 @@ public void read() { // check all occurance if (matcher.find()) { - Properties props1 = new Properties(); Address[] tomail; @@ -73,23 +64,18 @@ public void read() { msg.setSubject("Database fixes"); msg.setText("No problem. I've fixed it. \n\n Please be careful next time."); Transport t = null; - t = session.getTransport("smtps"); - t.connect(host, username, password); - t.sendMessage(msg, msg.getAllRecipients()); - - + t = session.getTransport("smtps"); + t.connect(host, username, password); + t.sendMessage(msg, msg.getAllRecipients()); + } + } } - - } - } inbox.close(true); store.close(); - }catch(Exception e) - { - + } catch(Exception e) { e.printStackTrace(); } } -} \ No newline at end of file +} From 2be4a07f740ab4cf2ba35518cf00781dec6b3d98 Mon Sep 17 00:00:00 2001 From: ONEmoertime <51313428+ONEmoertime@users.noreply.github.com> Date: Thu, 20 Aug 2020 15:57:58 +0800 Subject: [PATCH 26/27] Update README.zh-CN.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Chinese, the translation of "he" is "他" instead of "她",“她”is"she" --- README.zh-CN.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.zh-CN.md b/README.zh-CN.md index 3d07a559..b3f184d6 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -2,7 +2,7 @@ 根据 *[真实故事](https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/)* 改编: -> xxx: 是这样的,我们的构建工程师离职去了另外一家公司,这货基本算是生活在终端里。 你知道么,这人热爱Vim,用Dot作图,甚至用MarkDown来写维基帖子...,如果有什么事情要花上他超过90秒,她一定会整个脚本来让这件事变得“自动化”。 +> xxx: 是这样的,我们的构建工程师离职去了另外一家公司,这货基本算是生活在终端里。 你知道么,这人热爱Vim,用Dot作图,甚至用MarkDown来写维基帖子...,如果有什么事情要花上他超过90秒,他一定会整个脚本来让这件事变得“自动化”。 > xxx: 我们现在坐在他的工位上,看着他留下来的这些,呃,“遗产”? @@ -56,4 +56,4 @@ GMAIL_PASSWORD=password ------ -代码的使用遵循WTFPL(Do What The Fuck You Want To Public License)协议。 \ No newline at end of file +代码的使用遵循WTFPL(Do What The Fuck You Want To Public License)协议。 From f394120de09a86e59ee2eebb455f1205c2c0b188 Mon Sep 17 00:00:00 2001 From: Ash Jindal Date: Mon, 18 Jul 2022 09:48:28 +0100 Subject: [PATCH 27/27] Add archive.org link for the dead bash.im link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b46c69d..00d6deef 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ story](https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/)_: > xxx: holy sh*t I'm keeping those -Original: http://bash.im/quote/436725 (in Russian) +Original: http://bash.im/quote/436725 (in Russian) (Archive.org [link](https://web.archive.org/web/20210226092253/http://bash.im/quote/436725)) Pull requests with other implementations (Python, Perl, Shell, etc) are welcome. ## Usage