Jump to content
webglimpser

[Proiect]: 3eyes - 0.53 beta

Recommended Posts

Nota!
Acest proiect cred ca o sa il suspend si il voi reface in GOLang,  ii mai performant pe async requests si in comparatie cu python nu ii limitat de GIL "Global Interpreter Lock".

Am inceput sa lucrez la un proiect python de ~ o luna, numit 3eyes: un 'community-based' framework pentru fingerprint webservice-uri dinamic bazat pe template-uri yaml.
Link: https://github.com/BogdanDSergiu/3eyes


Sa trec direct la ce poate sa faca cu exemple reale, dupa instalarea modulelor python ( pip install requirements.txt ).

 

- In acest repository se afla si 'url_examples.txt' prin care se poate incarca prin argumentul '-i' si modulul prin '-m':

 

python 3eyes.py -m grafana -i url_examples.txt

 

Output:
 

(...)

[-] Found: http://[IP CENZURAT] : 'Grafana OSS' v9.1.0
[-] Found: https://[CENZURAT] : 'Grafana OSS' v8.4.6
[-] Found: https://[CENZURAT] : 'Grafana OSS' v7.4.3


[+] Percentages based on total URLs.
[-] Execution time: 4.71 sec
[-] Total:          97
[-] Succeed:         3 3.09%
    └─ Grafana OSS: 3.09%
        └─ 9.1.0:    1 1.03%
        └─ 7.4.3:    1 1.03%
        └─ 8.4.6:    1 1.03%
[-] Fail:           94 96.91%
    └─ StatusCode:  85 87.63%
    └─ NoMatch:      9 9.28%


Nota! Daca sunt mai multe target-uri (fara -t, numai prin pipe sau -i) o sa realizeze un rezumat, in exemplele urmatoare o sa omit acesta functionalitate daca nu prezinta importanta.

 

- Selectarea unei versiuni anume din modul grafana, se face prin argumentul '-sm' (select module):


python 3eyes.py -m grafana -i url_examples.txt -sm "Grafana OSS"

 

Output:

 

(...)

[-] Found: http://[IP CENZURAT] : 'Grafana OSS' v9.1.0
[-] Found: https://[CENZURAT] : 'Grafana OSS' v7.4.3
[-] Found: https://[CENZURAT] : 'Grafana OSS' v8.4.6

(...)



- Selectarea unei versiuni specifice se face prin argumentul '-cv' (check version)


python 3eyes.py -m grafana -i url_examples.txt -sm "Grafana OSS" -cv "x.y.z 7.4.3"

 

(...)

[-] Found: https://[CENZURAT] : 'Grafana OSS' v7.4.3

(...)



- Setarea output-ului se face prin argumentul '-so' (set output):


python 3eyes.py -m grafana -i url_examples.txt -sm "Grafana OSS" -cv "x.y.z 7.4.3" -so "Am gasit {{url}} cu versiunea {{ver}}"

(...)

Am gasit https://[CENZURAT] cu versiunea 7.4.3

(...)



Nota: markdown-uri valide sunt {{url}}, {{name}}, {{descr}} si {{ver}}, unde {{name}} si {{descr}} sunt din modulul grafana

 

- Modulul grafana are un tag 'server' pentru validarea webserver-ului, care in default nu ii executat si poate fii folosit in cazul in care nu ii sigur daca exista instanta grafana.Se activeaza prin '-cs' (check server):


python 3eyes.py -m grafana -i url_examples.txt -sm "Grafana OSS" -cv "x.y.z 7.4.3" -so "Am gasit {{url}} cu versiunea {{ver}}" -cs

 

(...)

Am gasit https://[CENZURAT] cu versiunea 7.4.3


[+] Percentages based on total URLs.
[-] Execution time: 4.05 sec
[-] Total:          97
[-] Succeed:         1 1.03%
    └─ Grafana OSS: 1.03%
        └─ 7.4.3:    1 1.03%
[-] Fail:           96 98.97%
    └─ StatusCode:  85 87.63%
    └─ NoMatch:      9 9.28%
    └─ NoVerMatch:   2 2.06%



Nota! Acesta functie verifica prima data regex-ul din server apoi trece mai departe sa verifice versiunile.


- In modului grafana in tag-ul 'arguments' se afla logica extra, care in mod normal nu ii executat, in acest caz 'getHostInfo' care se activea prin argumentul '-so':


python 3eyes.py -m grafana -t https://[IP CENZURAT] -so "'{{url}}' - '{{x.getHostInfo}}' : v{{ver}}"

 

(...)

'https://[IP CENZURAT]' - 'http://[HOSTNAME CENZURAT]:3000/' : v9.1.0


Nota: Argumentul este reprezentat prin 'x.' la inceput, in acest caz extrage doar informatia ce se afla in webserver-ul grafana care poate sa nu fie valid, nu transforma ip in domeniu.


FAQ:
+ De ce trebuie sa fie tag-ul 'server' obligatori in modul daca nu ii folosit in default?
- Deoarece o sa fie folositor la urmatoarea functionalitate de 'auto detect'

 

+ Care sunt problemele?
- La pornire, cateodata se blocheaza fara sa afiseze nimica si numai reactioneaza la CTRL+C. Nu trece mai departe de 'asyncio.run(init())' posibil cum argparser foloseste func sync in arg type.

- Design-ul trebuie realizat consistent

 

+ De ce verifica doar response body, dar headers nu?

- Deoarece ma gandesc sa il refac in alt limbaj si atunci numai merita sa contribui la versiunea python

 

+ De ce il publici asa de repede, fara sa il scoti din beta?
- Imi doresc o reconversie profesionala pentru a putea aplica anul viitor la job-uri cu un profil GitHub. Nu stiu daca este la fel de util pe cat cred sau daca merita sa-l refac în GO. Sunt incepator în ecosistemul GitHub si în limbajul Go.

 

Astept parerile voastre.

Edited by webglimpser
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...