import smbclient

def scan_smb_server(server, username, password):
    files_dict = {}
    with smbclient.SambaClient(server, username=username, password=password) as client:
        for entry in client.listdir(''):
            if client.isdir(entry):
                for root, dirs, files in client.walk(entry):
                    for f in files:
                        file_path = root + '/' + f
                        files_dict[file_path] = f
            else:
                files_dict[entry] = entry
    return files_dict

# Example usage
files = scan_smb_server('smb://myserver/myshare', 'myusername', 'mypassword')
print(files)

- 토큰값은 telegram 내 botfather 채널을 통해 봇생성후 발급

- 토큰ID는 해당 봇을 초대한 방의 ID 인데 Get My ID 를 초대하여 발급

 

 

import telegram
 
telegram_token = '5978653330:AAFBbq5TzOVT2ARdUK61dSI0pZl7P8FPxZU'
telegram_id = -676063172
 

def send_telegram_message(message):
    try:
        bot = telegram.Bot(telegram_token)
        res = bot.sendMessage(chat_id=telegram_id, text=message)
 
        return res
 
    except Exception:
        raise

send_telegram_message('EmergingThreat Blacklist IP ''{{vars.Attacker_ip}}''  12시간 차단(Qurantine)하였습니다.')

import json

data = """
{
    "devname": "FAC3KE3R16000005",       
    "devid": "FAC3KE3R16000005",
    "vd": "root",
    "faclogindex": "38867",
    "logid": "10001",
    "logdesc": "GUI_ENTRY_ADDITION",     
    "type": "event",
    "subtype": "Admin",
    "level": "information",
    "user": "admin",
    "action": "Add",
    "msg": "Added Local User: siemtest3",
    "tz": "+0900"
}
"""

# Load JSON data
json_data = json.loads(data)

# Find key that contains the string "GUI" in its value
key_with_gui = None
for key, value in json_data.items():
    if 'GUI' in value:
        key_with_gui = key
        break

if key_with_gui:
    print("The key that contains the string 'GUI' in its value is:", key_with_gui)
else:
    print("No key contains the string 'GUI' in its value.")

import re
import json

syslog = "<190>date=2023-01-20 time=14:13:18 timestamp=1674191598 devname='FAC3KE3R16000005' devid='FAC3KE3R16000005' vd='root' itime=1674191598 faclogindex='38867' logid='10001' logdesc='GUI_ENTRY_ADDITION' type='event' subtype='Admin' level='information' user='admin' nas='' userip= action='Add' status='' msg='Added Local User: siemtest3' tz='+0900'"

# Use regular expression to extract key-value pairs from syslog
pattern = re.compile(r"(\w+)='([^']+)'")
syslog_data = re.findall(pattern, syslog)

# Convert key-value pairs to a dictionary
data = {}
for key, value in syslog_data:
    data[key] = value

# Output dictionary in JSON format
print(json.dumps(data, indent=4))

import pyautogui
import random
import time

# 이미지 파일 경로
image_path = 'path/to/image.png'

# 이미지 찾기
while True:
    try:
        # 이미지 위치 찾기
        image_location = pyautogui.locateOnScreen(image_path)
        # 이미지 중심 좌표
        image_center = pyautogui.center(image_location)
        # 이미지 크기
        image_width, image_height = pyautogui.size(image_location)
        # 랜덤 좌표 구하기
        random_x = random.randint(image_center.x - image_width // 2, image_center.x + image_width // 2)
        random_y = random.randint(image_center.y - image_height // 2, image_center.y + image_height // 2)
        # 좌클릭
        pyautogui.click(random_x, random_y, button='left')
        # 1~2초 랜덤한 시간 갭
        time.sleep(random.uniform(1, 2))
        break
    except:
        pass

import paramiko
import csv

# SSH 접속 정보
host = "remote_server_ip"
username = "user"
password = "password"

# SSH 접속
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=username, password=password)

# invoke_shell 을 사용해 명령어 전달
channel = client.invoke_shell()
channel.send("your_command")
time.sleep(30)
output = channel.recv(9999).decode('utf-8')

# output 을 csv 파일로 저장
file_name = "output.csv"
with open(file_name, 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(["output"])
    for line in output:
        writer.writerow([line.strip()])

# SSH 접속 종료
client.close()




포스팅 목적


요즘 보안 제품들을 보면, API 는 이제는 없어서는 안될 필수 요건인 것처럼 보여집니다. 폐쇄적인 느낌에서 좀더 개방적인 추세로 전환되고 있습니다. 서로 다른 제품 간의 연계를 통한 상관 관계 분석 또는 데이터 인리치먼트 등을 통해 새로운 도입 제품과 기존 운용중인 제품과의 유기적인 결합을 통해 보안 고도화를 이루어 내는 것이 시장의 분위기 인듯 합니다.

실무자의 입장에서 쉽게 Python 을 통해 REST API(JSON) 을 사용 할 수 있는 예제를 적어 봤습니다. 

작성자도 초보 수준의 코딩만 가능하여, 어려운 질문은 받을 수 없습니다...



사전 필요 사항


당연하게도 Python 이 설치 되어 있어야 합니다. (python 3.6 기준으로 작성되었습니다.)

저의 경우에는 테스트를 위해 eclipse를 활용했습니다. 

eclipse 에서 python 을 사용하는 방법은 다음에 포스팅 하겠습니다.




참고 사항

JSON 포멧으로 데이터를 호출하는 예제 테스트 페이지 : https://api.androidhive.info/contacts/




예제


* IF

number = 31

guess = int(input('Enter an Integer : '))


if guess == number:

    print('Conguraturations, you guessed it.')

elif guess < number:

    print('No, it is a little higher than that')

else:

    print('No, it is a little lower than that')

    

print('done')



* For

for i in range(1,5):

    print(i)

else:

    print('the for loop is over')


* Break + len 

while True:

    s = input('Enter something : ')

    if s == 'quit':

        break

    print('Length of the string is', len(s))

print('Done')


* While + IF

number = 31

running = True



while running:

    guess = int(input('Enter an Integer :'))

    

    if guess == number:

        print('Conguraturations')

    elif guess < number:

        print('No, It is a little higher than that')

    else:

        print('No, It is a little lower than that')

else:

    print('The while loop is over.')

print('done')


* 기본적인 한글 웹페이지 크롤링

import urllib.request



f = urllib.request.urlopen("http://finance.naver.com")

fp = f.read()

fps = fp.decode('euc-kr')

f.close()


print(fps)



* JSON 포멧으로 REST API 사용

import json

import urllib.request



urlTicker = urllib.request.urlopen('https://api.androidhive.info/contacts/')


readTicker = urlTicker.read()


dict = json.loads(readTicker)

dict2 = json.loads(readTicker)


for h in dict['contacts']:

    print(h['id'])

    

    

for h in dict2['contacts']:

    print(h['id'],h['phone']['mobile'])





Python 입문자용 무료 교재

Byte of Python(한글판)


『원저자 : Swaroop C H <swaroop@swaroopch.com>

Translated by Jeongbin Park <pjb7687@gmail.com>』



  Python 초보 및 입문자용 교재로 널리 알려진 Byte of Python 교재로, 발행되고 배포되기 시작한지는 오래 되었으나, 배우기엔 부족함이 없다. 기본적인 C나 객체지향 언어의 개념만 알고 있다면 실습을 통해 얼마든지 간단한 스크립팅, 프로그래밍이 가능 할 것으로 보인다. 




Sourceforge Download links

http://byteofpython-korean.sourceforge.net/byte_of_python.html

http://byteofpython-korean.sourceforge.net/byte_of_python.pdf

+ Recent posts