自己的Telegram BOT自己寫
2017-12-31 03:58:27 Author: blog.kaibro.tw(查看原文) 阅读量:37 收藏

img

前言

因為之前有在用別人寫的HITCON ZeroDay BOT

可是最近好像壞惹,都收不到通知

所以就想說,好吧,那就自己來寫一個吧!

開寫

首先,我想要的BOT功能是:

  • 每天同一時間,自己爬HITCON ZeroDay

  • 如果有新的Open漏洞,就傳通知給我

Telegram BOT可以去找一個叫做BOTFather的帳號申請

連結在這 https://telegram.me/botfather

輸入/newbot,之後填寫帳號名稱等資訊就申請完成了

申請完後會拿到Token

有了這個Token,我們才能對BOT做一些操作

接著,因為我們定位是給自己使用的

所以只要讓BOT傳訊息給我們就好

傳訊息要有使用者ID才能傳

使用者ID怎麼取得呢?

可以先用自己的帳號加BOT

然後隨便傳個訊息給BOT

之後去https://api.telegram.org/bot$TOKEN/getUpdates就可以看到自己的ID惹

($TOKEN這邊填我們前面拿到的Token)

有了IDToken,我們就能傳訊息惹

例如:https://api.telegram.org/bot$TOKEN/sendMessage?chat_id=8787&text=Hello+Kaibro

就會傳Hello Kaibro的訊息給id=8787的使用者

(這邊訊息要用URL Encode過)

潮簡單der

爬蟲

接著,就要開始寫我們的爬蟲惹

基本上,ZeroDay一天更新一次Open漏洞

(似乎是每天半夜3點左右)

所以不需要一直Polling爬網站

只要24小時爬一次就行,這邊可以用Crontab達成

爬的方式很簡單,把公開漏洞的頁面抓下來

然後用正規表達式抓出漏洞名稱和連結

再去和之前抓過的比對,如果有沒看過的

就傳送該漏洞訊息給使用者

詳細實作如下: (Ruby)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

require 'net/http'

require 'uri'

require 'cgi'

$userid = 'YOUR_ID'

$token = 'YOUR_BOT_TOKEN'

$log_path = 'YOUR_LOG_PATH'

f = File.open($log_path, "r+")

prev = f.read()

def get_vul()

uri = URI('https://zeroday.hitcon.org/vulnerability/disclosed')

http = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https')

request = Net::HTTP::Get.new(uri.request_uri)

r = http.request(request)

vuls = r.body.scan(/<a href="(.*)">(.*)<\/a><\/h4>/)

end

new_vuls = get_vul()

new_vuls.each do |s|

if !prev.include? s[0]

$msg = URI.encode s[1]

sendMsg = "https://api.telegram.org/bot#{$token}/sendMessage?chat_id=#{$userid}&text=#{$msg}"

uri = URI(sendMsg)

Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|

request = Net::HTTP::Get.new uri

response = http.request request

end

f.write(s[0] + "\n")

sleep(0.5)

end

end

f.close()

github repo連結在這: https://github.com/w181496/TG_Zeroday

IDTOKEN換成你自己的

再設定log檔的絕對路徑就OK了

之後設定crontab

crontab -e

設定每天19點5分跑一次script:

5 19 * * * /usr/bin/ruby /home/kaibro/bot/zero.rb

到這邊就大功告成惹

Easy Peasy

不過Telegram BOT當然不只有這樣而已

Telegram BOT有各式各樣的類型

這個只是其中一種通知型的BOT

Reference

https://www.forsomedefinition.com/automation/creating-telegram-bot-notifications/


文章来源: http://blog.kaibro.tw/2017/12/31/%E8%87%AA%E5%B7%B1%E7%9A%84Telegram-BOT%E8%87%AA%E5%B7%B1%E5%AF%AB/
如有侵权请联系:admin#unsafe.sh