在网上找一堆稀奇古怪东东都搞不定之后研究文档得到一简单方法。

fittype能创建一个自定义线性模型,使用方法:

fittype({'x','sin(x)','1'})

线性模型是:

$$ ax+b\sin(x)+c $$

所以只要创建一个ax模型拿去用就可以了。

ft=fittype({'x'})
f=fit(m,U,ft)

标注假名的歌词:

僕(ぼく)なんかいなくても

大切(たいせつ)な花(はな)を踏(ふ)みにじられた
報復(ほうふく)が怖(こわ)いから 目(め)を逸(そ)らす
いくじなしの僕(ぼく)は蟻(あり)の巣(す)の中(なか)
じっと不幸(ふこう)が過(す)ぎ去(さ)るのを待(ま)つ
だんだんだんだん 心(こころ)が濁(にご)る
だんだんだんだん 心(こころ)が濁(にご)る
僕(ぼく)には この世界(せかい)を変(か)えられないような気(き)がしている

みんな あの子(こ)の陰口(かげぐち)を言(い)うけど
こっそり 本(ほん)の貸(か)し借(か)りをしてる
銃口(じゅうこう)向(む)けられ 踏(ふ)み絵(え)を踏(ふ)まされ
歯(は)を食(く)いしばり「ウザいね」と笑(わら)う
だんだんだんだん 心(こころ)が腐(くさ)る
だんだんだんだん 心(こころ)が腐(くさ)る
僕(ぼく)には この世界(せかい)を変(か)えられないような気(き)がしている

零度(れいど)の雨(あめ) 期待(きたい)の火(ひ)が消(き)える
こんな奴(やつ)じゃ 何(なに)も叶(かな)わないよ
こんな奴(やつ)じゃ 君(きみ)に愛(あい)されないよ

うるせえ 弱虫(よわむし)でも生(い)きていくんだよ
透明(とうめい)な僕(ぼく)にも 何(なに)か出来(でき)るだろ
世界(せかい)は憎(にく)らしく 我(われ)関(かん)せず回(まわ)る
僕(ぼく)なんかいなくても
止(や)まない争い(あらそい)に シューティングスターを
優(やさ)しい人(ひと)に一縷(いちる)の幸せ(しあわせ)を
無慈悲(むじひ)な悲喜劇(ひきげき)は続(つづ)く
僕(ぼく)なんかいなくても それでも
やらなくちゃ それでも
やらなくちゃ それでも

青春(せいしゅん)捧(ささ)げて手(て)にしたメダルを
あの人(ひと)に2、3秒(びょう)で奪(うば)われ
星(ほし)の数(かず)ほどいる主役(しゅやく)の群(むれ)に
押(お)し潰(つぶ)されて やがて貝(かい)になる
だんだんだんだん 心(こころ)が終(お)わる
だんだんだんだん 心(こころ)が終(お)わる
僕(ぼく)なんか いてもいなくても同(おな)じような気(き)がしている

「夢(ゆめ)」も「詐欺(さぎ)」も 同(おな)じ顔(かお)してる
信(しん)じる者(もの)は みんな救(すく)われるの
信(しん)じきれない僕(ぼく)は救(すく)われないの?

知ら(し)ねえよ まだ心臓(しんぞう)は動(うご)いてんだよ
敗戦(はいせん)続(つづ)きの出来レース 何年目(ねんめ)だろう
息絶(いきた)えたその後(あと)も 陽(ひ)は昇(のぼ)る
僕(ぼく)なんかいなくても それでも
やらなくちゃ それでも
自分(じぶん)に嫌(きら)われても

だんだんだんだん 命(いのち)が光(ひか)る
だんだんだんだん 命(いのち)が光(ひか)る
泥(どろ)にまみれても 思(おも)い過(す)ごしでも
キラキラキラキラキラキラ光(ひか)る
「悪(わる)い夢(ゆめ)は終(お)わる」 綺麗事(きれいごと)にすがる
すべて無意味(むいみ)だとしても

うるせえ 弱虫(よわむし)でも生(い)きていくんだよ
透明(とうめい)な僕(ぼく)にも何(なに)か出来(でき)るだろ
世界(せかい)は憎(にく)らしく 我(われ)関(かん)せず回(まわ)る
僕(ぼく)なんかいなくても
止(や)まない争い(あらそい)に シューティングスターを
優(やさ)しい人(ひと)には どうか めいっぱいの幸せ(しあわせ)を
叶(かな)わないと分(わ)かっていても
この世界(せかい)が終(お)わっていても
僕(ぼく)なんかいなくても それでも
やらなくちゃ それでも
やらなくちゃ それでも
僕(ぼく)なんかいなくても それでも


单词与释义表:

日语单词 假名 中文释义
大切 たいせつ 重要、珍贵
はな
踏みにじられる ふみにじられる 被践踏
報復 ほうふく 报复
怖い こわい 可怕
目を逸らす めをそらす 转移视线
蟻の巣 ありのす 蚂蚁巢
不幸 ふこう 不幸
濁る にごる 污浊、混浊
世界 せかい 世界
陰口 かげぐち 背后说坏话
銃口 じゅうこう 枪口
歯を食いしばる はをくいしばる 咬牙忍耐
腐る くさる 腐烂、堕落
零度 れいど 零度
期待 きたい 期待
叶う かなう 实现、达成
透明 とうめい 透明
憎らしい にくらしい 可憎、令人厌恶
我関せず われかんせず 与我无关
争い あらそい 争斗、冲突
幸せ しあわせ 幸福
無慈悲 むじひ 无情
悲喜劇 ひきげき 悲喜剧
青春 せいしゅん 青春
メダル めだる 奖牌
かい 贝壳
終わる おわる 结束
詐欺 さぎ 诈骗
信じる しんじる 相信
救われる すくわれる 被救赎、得救
心臓 しんぞう 心脏
阳光
息絶える いきたえる 死亡、断气
いのち 生命
光る ひかる 发光
どろ
綺麗事 きれいごと 美丽的事、空话

这首歌词内容富有深刻的情感,标注和释义能帮助你更好地理解每个词的意义!如果有需要进一步解释的词语或句子,随时告诉我! 😊

第一步:设置环境

  1. 安装Python库

    • nmap: 用于网络扫描。
    • sqlite3: 用于与SQLite数据库交互(Python标准库中已包含)。
    • requestshttpx: 用于HTTP检测。
    • sqlite3: 用于与SQLite数据库交互(Python标准库中已包含)。
    • requestshttpx: 用于HTTP检测。
    • ssl:用于获取TLS信息。
    • 使用pip安装库:python-nmap, requests, httpx.
    pip install python-nmap requests httpx                                                                                              
    

第二步:设置SQLite数据库

首先,我们需要一个简单的SQLite数据库,用于存储扫描结果。

import sqlite3                                                                                                                         
                                                                   
def init_db():                                                     
    conn = sqlite3.connect('network_assets.db')                                                                                        
    cursor = conn.cursor()                                                                                                             
                                                                                                                                       
    cursor.execute('''                                             
        CREATE TABLE IF NOT EXISTS assets (                                                                                            
            id INTEGER PRIMARY KEY AUTOINCREMENT,                                                                                                                                                                                                                             
            host TEXT,                                                                                                                                                                                                                                                        
            port INTEGER,                                                                                                                                                                                                                                                     
            protocol TEXT,                                                                                                                                                                                                                                                    
            service TEXT,                                                                                                                                                                                                                                                     
            software TEXT,                                                                                                                                                                                                                                                    
            version TEXT,                                                                                                                                                                                                                                                     
            banner TEXT,                                                                                                                                                                                                                                                      
            update_time TEXT                                                                                                                                                                                                                                                  
        )                                                                                                                                                                                                                                                                     
    ''')                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                              
    cursor.execute('''                                                                                                                                                                                                                                                        
        CREATE TABLE IF NOT EXISTS http_servers (                                                                                      
            id INTEGER PRIMARY KEY AUTOINCREMENT,                                                                                      
            asset_id INTEGER,                                                                                                          
            http_status INTEGER,                                                                                                       
            title TEXT,                                                                                                                
            update_time TEXT,                                                                                                          
            FOREIGN KEY(asset_id) REFERENCES assets(id)                                                                                
        )                                                                                                                              
    ''')                                                                                                                               
                                                                   
    cursor.execute('''                                                                                                                                                                                                                                                        
        CREATE TABLE IF NOT EXISTS https_servers (                 
            id INTEGER PRIMARY KEY AUTOINCREMENT,                                                                                                                                                                                                                             
            asset_id INTEGER,                                                                                                          
            tls_version TEXT,                                                                                                                                                                                                                                                 
            cipher TEXT,                                           
            server_name TEXT,                                                                                                                                                                                                                                                 
            dns_name TEXT,                                         
            certificate_authority TEXT,                                                                                                
            sha256_fingerprint TEXT,                           
            sha256_openssl_fingerprint TEXT,                                                                                           
            update_time TEXT,                                                                                                          
            FOREIGN KEY(asset_id) REFERENCES assets(id)            
        )                                                          
    ''')                                                                                                                               
                                                                                                                                                                                                                                                                              
    conn.commit()                                                                                                                      
    conn.close()                                                                                                                       
                                                                   
init_db()                                                          

第三步:扫描网络资产

  1. 使用Nmap扫描主机和端口
import nmap                                                        
import datetime                                                                                                                        
                                                                                                                                                                                                                                                                              
def scan_network_assets(host):                                                                                                                                                                                                                                                
    nm = nmap.PortScanner()                                                                                                                                                                                                                                                   
    nm.scan(host, '1-65535')  # 扫描所有端口                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                              
    results = []                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                              
    for host in nm.all_hosts():                                                                                                                                                                                                                                               
        for proto in nm[host].all_protocols():                                                                                                                                                                                                                                
            ports = nm[host][proto].keys()                                                                                                                                                                                                                                    
            for port in ports:                                                                                                                                                                                                                                                
                data = {                                                                                                                                                                                                                                                      
                    'host': host,                                                                                                                                                                                                                                             
                    'port': port,                                                                                                      
                    'protocol': proto,                                                                                                 
                    'service': nm[host][proto][port]['name'],                                                                          
                    'software': nm[host][proto][port].get('product', ''),                                                              
                    'version': nm[host][proto][port].get('version', ''),                                                               
                    'banner': nm[host][proto][port].get('extrainfo', ''),                                                              
                    'update_time': datetime.datetime.now().isoformat()                                                                 
                }                                                                                                                      
                results.append(data)                                                                                                   
                                                                   
    return results                                                                                                                                                                                                                                                            
                                                                   
# Example usage:                                                                                                                                                                                                                                                              
# results = scan_network_assets('192.168.1.1')                                                                                         
# print(results)                                                                                                                                                                                                                                                              

第四步:检查HTTP状态

import requests                                                                                                                        
                                                                                                                                       
def check_http_server(host, port):                                 
    try:                                                           
        response = requests.get(f'http://{host}:{port}', timeout=5)                                                                    
        status = response.status_code                                                                                                                                                                                                                                         
        title = response.headers.get('Server', '')                                                                                     
        return {                                                                                                                       
            'http_status': status,                                 
            'title': title                                         
        }                                                                                                                              
    except requests.RequestException:                                                                                                  
        return None                                                
                                                                   
# Example usage:                                                                                                                       
# http_info = check_http_server('192.168.1.1', 80)                                                                                     
# print(http_info)                                                                                                                     

第五步:获取HTTPS信息

import ssl                                                                                                                                                                                                                                                                    
import socket                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                              
def get_https_info(host, port):                                                                                                                                                                                                                                               
    context = ssl.create_default_context()                                                                                                                                                                                                                                    
    conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=host)                                                                                                                                                                                           
                                                                                                                                                                                                                                                                              
    try:                                                                                                                                                                                                                                                                      
        conn.connect((host, port))                                                                                                                                                                                                                                            
        cert = conn.getpeercert()                                                                                                                                                                                                                                             
        tls_info = {                                                                                                                   
            'tls_version': conn.version(),                                                                                             
            'cipher': conn.cipher(),                                                                                                   
            'server_name': host,                                                                                                       
            'dns_name': cert.get('subjectAltName', ''),                                                                                
            'certificate_authority': cert.get('issuer', ''),                                                                           
            'sha256_fingerprint': ssl.DER_cert_to_PEM_cert(conn.getpeercert(True)).hex(),                                              
            'sha256_openssl_fingerprint': conn.getpeercert(True).hex()                                                                 
        }                                                                                                                              
        return tls_info                                            
    except Exception as e:                                                                                                                                                                                                                                                    
        return None                                                
    finally:                                                                                                                                                                                                                                                                  
        conn.close()                                                                                                                   
                                                                                                                                                                                                                                                                              
# Example usage:                                                   
# https_info = get_https_info('example.com', 443)                                                                                                                                                                                                                             
# print(https_info)

第六步:整合所有数据并存储到数据库

在此步骤中,我们可以将所得数据整合,并存储到SQLite数据库。

def insert_into_db(asset_data, http_data=None, https_data=None):                                                                                                                                                                                                              
    conn = sqlite3.connect('network_assets.db')                                                                                        
    cursor = conn.cursor()                                                                                                             
                                                                   
    cursor.execute('''                                             
        INSERT INTO assets (host, port, protocol, service, software, version, banner, update_time)                                     
        VALUES (:host, :port, :protocol, :service, :software, :version, :banner, :update_time)                                         
    ''', asset_data)                                               
                                                                   
    asset_id = cursor.lastrowid                                                                                                        
                                                                                                                                       
    if http_data:                                                                                                                      
        cursor.execute('''                                         
            INSERT INTO http_servers (asset_id, http_status, title, update_time)                                                       
            VALUES (?, ?, ?, ?)                                                                                                                                                                                                                                               
        ''', (asset_id, http_data['http_status'], http_data['title'], asset_data['update_time']))                                                                                                                                                                             
                                                                                                                                                                                                                                                                              
    if https_data:                                                                                                                                                                                                                                                            
        cursor.execute('''                                                                                                                                                                                                                                                    
            INSERT INTO https_servers (asset_id, tls_version, cipher, server_name, dns_name, certificate_authority,                                                                                                                                                           
                                      sha256_fingerprint, sha256_openssl_fingerprint, update_time)                                                                                                                                                                            
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)                                                                                                                                                                                                                                
        ''', (asset_id, https_data['tls_version'], https_data['cipher'][0], https_data['server_name'],                                                                                                                                                                        
              str(https_data['dns_name']), str(https_data['certificate_authority']),                                                                                                                                                                                          
              https_data['sha256_fingerprint'], https_data['sha256_openssl_fingerprint'],                                                                                                                                                                                     
              asset_data['update_time']))                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                              
    conn.commit()                                                                                                                      
    conn.close()                                                                                                                       
                                                                                                                                       
# Example usage:                                                                                                                       
# for asset in results:                                                                                                                
#     http_info = check_http_server(asset['host'], asset['port'])                                                                      
#     https_info = None                                                                                                                
#     if 'https' in asset['service']:                                                                                                  
#         https_info = get_https_info(asset['host'], asset['port'])                                                                    
#     insert_into_db(asset, http_info, https_info)                 

最后一步:运行整体系统

为了运行这个系统,你需要为特定的资产调用这些功能——扫描每个主机,检查其HTTP状态,获取HTTPS信息,并将其结果存储到数据库中。结合上面的所有代码段,你可以逐步执行扫描和存储操作。

这个系统简要展示如何使用Python和几个库去架构一个简单的网络资产扫描系统。需要实际使用时,可能还需要处理更多的异常和边界条件以确保系统的健壮性。

这是 Osmedeus 下一代版本 v4.6.4 的使用文档,它是一个用于进攻性安全的工作流引擎。以下是该工具的主要功能和使用示例的中文翻译:


Osmedeus 下一代 v4.6.4 由 @j3ssiejjj 提供

进攻性安全的工作流引擎

示例扫描命令:

  1. 启动一个默认的“通用”流的简单扫描

    osmedeus scan -t sample.com
    
  2. 启动一个通用扫描,但排除某些模块

    osmedeus scan -t sample.com -x screenshot -x spider
    
  3. 直接使用模块进行扫描,输入为一个包含 HTTP 域名的文件

    osmedeus scan -m content-discovery -t http-file.txt
    
  4. 启动扫描,使用不同于默认设置的速度选项

    osmedeus scan -f vuln --tactic gently -t sample.com
    osmedeus scan --threads-hold=10 -t sample.com
    osmedeus scan -B 5 -t sample.com
    
  5. 启动一个简单的扫描使用其他流

    osmedeus scan -f vuln -t sample.com
    osmedeus scan -f extensive -t sample.com -t another.com
    osmedeus scan -f urls -t list-of-urls.txt
    
  6. 扫描目标列表

    osmedeus scan -T list_of_targets.txt
    osmedeus scan -f vuln -T list-of-targets.txt
    
  7. 对 Git 仓库执行静态漏洞扫描和秘密扫描

    osmedeus scan -m repo-scan -t https://github.com/j3ssie/sample-repo
    osmedeus scan -m repo-scan -t /tmp/source-code-folder
    osmedeus scan -m repo-scan -T list-of-repo.txt
    
  8. 扫描 CIDR,文件包含 CIDR 格式的内容(如 1.2.3.4/24

    osmedeus scan -f cidr -t list-of-ciders.txt
    osmedeus scan -f cidr -t '1.2.3.4/24'
    
  9. 直接运行漏洞扫描和目录扫描

    osmedeus scan -f domains -t list-of-domains.txt
    osmedeus scan -f vuln-and-dirb -t list-of-domains.txt
    
  10. 使用自定义字典

    osmedeus scan -t sample.com -p 'wordlists={{Data}}/wordlists/content/big.txt'
    
  11. 启动一个正常的扫描并备份整个工作流文件夹到备份文件夹

    osmedeus scan --backup -f domains -t list-of-subdomains.txt
    
  12. 启动扫描时,分块输入以更快地查看输出

    osmedeus scan --chunk --chunk-parts 20 -f cidr -t list-of-100-cidr.txt
    
  13. 更新漏洞数据库到最新版本再开始扫描

    osmedeus scan --update-vuln -f urls -t list-of-100-cidr.txt
    
  14. 扫描完成后持续运行扫描

    osmedeus utils cron --for --cmd 'osmedeus scan -t example.com'
    
  15. 备份所有工作区

    ls ~/workspaces-osmedeus | osmedeus report compress
    

扫描命令使用说明:

  • 启动一个扫描:

    osmedeus scan -f [flowName] -t [target]
    osmedeus scan -m [modulePath] -T [targetsFile]
    osmedeus scan -f /path/to/flow.yaml -t [target]
    osmedeus scan -m /path/to/module.yaml -t [target] --params 'port=9200'
    
  • 执行扫描并指定模块路径:

    osmedeus scan -m /path/to/module.yaml -t [target] -l /tmp/log.log
    
  • 执行带有不同策略的扫描:

    osmedeus scan --tactic aggressive -m module -t [target]
    

云端使用:

  1. 启动云扫描:

    osmedeus cloud -f [flowName] -t [target]
    osmedeus cloud -f [flowName] -T [targetFile] --no-del
    osmedeus cloud -m [modulePath] -t [target]
    
  2. 设置线程数和云端扫描:

    osmedeus cloud -c 5 -f [flowName] -T [targetsFile]
    osmedeus cloud --token xxx -c 5 -f [flowName] -T [targetsFile]
    
  3. 使用分块模式进行扫描:

    osmedeus cloud --chunk -c 5 -f [flowName] -t [targetsFile]
    

队列使用:

  1. 添加目标到队列:

    osmedeus queue -Q /tmp/queue-file.txt -c 2
    osmedeus queue --add -t example.com -Q /tmp/queue-file.txt
    
  2. 查看和管理队列:

    osmedeus queue list
    

报告使用:

  1. 查看报告列表:
    osmedeus report list
    osmedeus report extract -t target.com.tar.gz
    osmedeus report extract -t target.com.tar.gz --dest .
    osmedeus report compress -t target.com
    osmedeus report view --raw -t target.com
    osmedeus report view --static -t target.com
    osmedeus report view --static --ip 0 -t target.com
    

实用工具使用:

  1. 健康检查:

    osmedeus health
    osmedeus health git
    osmedeus health cloud
    osmedeus version --json
    
  2. 更新和配置:

    osmedeus update
    osmedeus update --vuln
    osmedeus update --force --clean
    osmedeus update --force --update-url https://very-long-url/premium.sh
    
  3. 工作流相关命令:

    osmedeus workflow list
    osmedeus workflow view -f general
    osmedeus workflow view -v -f general
    
  4. 进程管理:

    osmedeus utils ps
    osmedeus utils ps --proc 'jaeles'
    osmedeus utils ps --osm
    osmedeus utils ps --osm --kill
    
  5. 定时任务(Cron)管理:

    osmedeus utils cron --cmd 'osmedeus scan -t example.com' --sch 60
    osmedeus utils cron --for --cmd 'osmedeus scan -t example.com'
    

💡 获取完整帮助信息,请运行:

osmedeus --hh

📖 文档可以在此查看:Osmedeus 文档


这份翻译涵盖了 Osmedeus 的常见使用命令、扫描任务配置、云端和队列管理等内容,可以帮助用户更好地理解并应用该工具进行进攻性安全测试。