Jump to content

MrGrj

Active Members
  • Posts

    1419
  • Joined

  • Last visited

  • Days Won

    45

Everything posted by MrGrj

  1. Pentru practica, recomand platforme destinate acestui scop + sa urmaresti oameni care au video-uri in care explica ce si cum se intampla. Cateva exemple clasice ar fi: - Hack the Box (https://www.hackthebox.com/) - TryHackMe (https://tryhackme.com/) - picoCTF (https://picoctf.org/) - OverTheWire https://overthewire.org/wargames/ Ca si canale, pe vremuri il urmaream pe tipu' asta: https://www.youtube.com/@_JohnHammond insa sunt sigur ca poti gasi multi altii pe placul / stilul tau. Spor la invatat
  2. Uhm, ar fi misto daca am avea mai multe dezbateri de genu' asta. Chiar m-a tinut prins vreo 7 minute Adevaru' e probabil undeva la mijloc, iar problema principala cu aplicatiile astea moderne (d.p.m.d.v) este lipsa de educatie si increderea in servere. @koteri3692 - are dreptate din perspectiva existentei unei vulnerabilitati potentiale în aplicatiile E2EE care nu educa utilizatorii sa verifice manual cheile publice. Totusi, aceasta vulnerabilitate nu este o problema a criptografiei in sine, ci a implementarii și utilizarii acesteia. Intr-adevar, dacă Fane Pedala nu verifica manual cheile publice, un server compromis poate introduce o cheie falsa ==> atac MiTM. MiTM este posibil daca serverele sunt rau intentionate sau obligate sa colaboreze cu agentiile guvernamentale. @Nytro - este corect in teorie (exista mecanisme ex. certificare, verificare manuala care pot preveni atacurile MiTM). Insa aceste mecanisme nu sunt întotdeauna implementate sau utilizate corect în practica. Ceva exemple concrete: Signal permite verificarea manuala prin scanarea codurilor QR intre utilizatori. Verificarea asta face ca atacurile MiTM sa fie aproape imposibile, dar majoritatea utilizatorilor ignora acest pas. WhatsApp oferă opțiuni limitate de verificare a cheilor. Aplicatiile E2EE precum Signal nu utilizeaza CA-uri pentru a verifica cheile publice. In schimb, Signal se bazeaza pe trust local și pe verificari manuale. Așadar argumentul lui Nytro nu se aplica direct aplicatiilor de mesagerie. Legat de faptul ca NSA poate face MiTM pe TLS: este posibil în anumite conditii ex. compromiterea DigiNotar sau alte incidente legate de BGP hijacking bla bla. In ziua de azi, browser-ele moderne includ masuri ca HSTS (HTTP Strict Transport Security) și Certificate Transparency Logs pentru a preveni asta In aplicatiile de mesagerie astea nu exista, iar încrederea se bazeaza mai mult pe server. So my humble opinion: ce zice koteri3692 este un scenariu tehnic real, dar oarecum teoretic. Nytro subliniaza soluții valide, dar neaplicabile complet în lumea reala fara eductia corespunzatoare a userilor. pwp jos hacerii mei preferatzi PS: io nu-s hacer si imi place shaorma cu de toate
  3. A few days ago, a user contacted me on LinkedIn with a job offer, the message seemed very direct to me, but when I checked his profile and the company he worked for, everything seemed quite normal, and after answering the messages, and starting a process the interview went pretty straight forward (personal interview about my technical background, personal projects, etc), everything very normal up to that point. At the time of the technical interview, this person gave me the link to a repository where the challenge was (a backend/frontend project with a README in the root with the instructions). Maybe it was nerves, or maybe I was too confident, but I didn't review the code before running the project on my machine, but when I started the backend, I notice that although the terminal showed me that the server was running with no errors, I notice that when making any request no log appears, and that caught my attention. After making a review of the code I notice this weird line hidden at the end of a file (Picture 1 and 2) That was the line that prevented the server from running, when I checked that file I found this (Picture 3) The file is obfuscated, but at first glance you can tell it's an IIFE, and using an online tool I tried to decrypt it as much as I could and I found this kind of things (Picture 4, 5, 6, 7, 😎 Clearly that script was gathering information from my computer and sending it to that IP, and from what I can see the information it is trying to retrieve is related to crypto wallets. Obviously, all the responsibility here falls on me for not having reviewed the code at the beginning, or running the project on a virtual machine, as I said at the beginning, perhaps it was the nerves of the "interview" and I forgot about that. Another detail that I noticed after looking at the code more closely is that the folder where the script is is ".svn" (something very familiar to those who used Subversion), but the detail here is that many folders that start with a "." gets hidden by VSCode on the file explorer, so it was harder to notice if I hadn't found the reference in the code. Luckily they haven't been able to take any information from my computer since I don't have anything related to crypto, but I have had to change all my passwords, so lesson learned. Source
  4. Pwp la toti hackerii care sunt ei hackeri: https://hackertyper.com/. Dc sa vrei sa fii bogat cand parizeru' cu mustar is love?
  5. First of all, v-a programat @Nytro pe toti, ca altfel nu aveati unde sa va certati pwp
  6. Summary: se fura mult, se face putin si se face si prost. Pe bani imprumutati
  7. using System; using System.Diagnostics; using System.IO; using System.Windows.Forms; namespace MyNamespace { public partial class MyForm : Form { private Process cmdProcess; public MyForm() { InitializeComponent(); InitializeCmd(); } private void InitializeCmd() { cmdProcess = new Process(); cmdProcess.StartInfo.FileName = "cmd.exe"; cmdProcess.StartInfo.CreateNoWindow = true; cmdProcess.StartInfo.UseShellExecute = false; cmdProcess.StartInfo.RedirectStandardInput = true; cmdProcess.StartInfo.RedirectStandardOutput = true; cmdProcess.StartInfo.RedirectStandardError = true; // ascunde bara de titlu si butoanele cmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmdProcess.Start(); StreamWriter cmdStreamWriter = cmdProcess.StandardInput; StreamReader cmdStreamReader = cmdProcess.StandardOutput; StreamReader cmdErrorReader = cmdProcess.StandardError; // adaugă controlul la form TextBox cmdControl = new TextBox(); cmdControl.Multiline = true; cmdControl.Dock = DockStyle.Fill; cmdControl.ScrollBars = ScrollBars.Vertical; cmdControl.Font = new System.Drawing.Font("Courier New", 10); Controls.Add(cmdControl); // afișează output-ul din terminal în control cmdStreamReader.BaseStream.BeginRead(new byte[1], 0, 0, null, null); cmdStreamReader.DataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) { cmdControl.Invoke(new Action(() => { cmdControl.AppendText(e.Data + Environment.NewLine); })); } }; // citește input de la utilizator și trimite la terminal cmdControl.KeyDown += (s, e) => { if (e.KeyCode == Keys.Enter) { cmdStreamWriter.WriteLine(cmdControl.Text); cmdControl.Clear(); } }; // afișează erorile în consolă cmdErrorReader.BaseStream.BeginRead(new byte[1], 0, 0, null, null); cmdErrorReader.DataReceived += (s, e) => { if (!string.IsNullOrEmpty(e.Data)) { Debug.WriteLine(e.Data); } }; } private void MyForm_FormClosing(object sender, FormClosingEventArgs e) { cmdProcess?.Kill(); } } }
  8. Ai niste credit moca si la cate cutremure avem noi pot sa consider ca merge for life Trimit mesaj doar cand e unu' cu magnitudine mare deci nu prea e stres.
  9. Am facut si eu un script acum ceva timp (updated recently), in Python, care ia info de pe http://alerta.infp.ro/ (polling de 1s) si trimite mesaj via Twillio daca un cutremur are magnitudinea mai mare de un threshold custom (default 4). Rulat in background cu `nohup` merge decent. Link: https://github.com/mr-grj/eq_notifier
  10. Raspunsul e foarte simplu: pare ca ai ajuns intr-un mediu toxic de care trebuie sa scapi cat mai repede. Cu cat stai mai mult cu atat vei deveni mai frustrat si te vei consuma pentru astfel de nimicuri. Cat despre ce ziceai tu cu: ... nu cred ca e cazul sa iti faci griji. Poate era o problema acum 10 ani inainte sa explodeze piata IT. In ziua de azi, angajatorilor le trebuie oameni si nu prea le mai pasa cat ai stat prin companii. Cu atat mai mult cu cat ai avut un motiv intemeiat sa pleci.
  11. Da-le celor de la antidrog sa le foloseasca
  12. Cred ca asta e mot-a-mot cu ce ai tu acolo desi b-ul ala nush de ce nu e float: #include <iostream> #include <cmath> using namespace std; int main() { int n, a, b; cout << "n = "; cin >> n; a = 1; b = 1; while (a*a + b*b <= n) { if (a*a + b*b == n) { cout << "a = "; cin >> a; cout << "b = "; cin >> b; } a += 1; b = sqrt(n - a*a); } cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; } // LE. Sunt platit foarte bine ca sa ajut lumea la teme. That could be you Learn and you'll get rich
  13. https://github.com/RunaCapital/awesome-oss-alternatives
  14. len("Acum cativa ani cand umblam pe aici era o activitate mare acum este intr-un punct mai greu, ma gandesc ca sa formam echipe mici sa revitalizam comunitatea dinou , 3 membri bunicei evident si cineva din staff de aici sa ne ocupam sa facem un grup puternic pe facebook Romanian Security Team unde acolo se creste foarte usor si foarte repede grupul. Sunt multi pasionati de informatica , iar pagina rst sa se ocupe alti 3 membri pentru revitalizare , trebuie sa cautam sa fim undeva in pas cu modul de expunere a comunitati cu timpul , parerea mea ca daca ne facem echipe de cate 3 , 3 pe un grup care garantat in 1 luna 2 face sigur 10.000 membri o spun din proprie experienta ca am crescut grup in scurt timp la 11.000 iar apoi 3 se ocupa de pagina rst acolo nu este munca multa doar daca se posteaza odata pe zi din 3 insi cate 1 post de fiecare in tema informatica plus noutatile in tehnologie etc iar avem de castigat ,iar unul pasionat de informatica din grup de aici care este pasionat si de tik tok poate face un cont de tik tok gen Rst, si tot asa pe diferite retele mai vechi si mai noi iar toate sa duca la acest forum , sursa mama si tata unde cine vor pe celelalte comunitati ale noastre sa dezvolte proiecte sa se inscrie aici si de aici facut un chat frumos unde sa dezbatem fel si fel de teme, vreau pareri si opinii".split()) Aproximativ 5 secunde, da, ca se incarca greu zsh. Se pare ca am gresit: sunt 258. Prima fraza am omis-o & inclus-o in count
  15. Inainte de asta (MRRST - Marea Revitalizare RST), eu sunt uimit ca ai reusit sa faci o fraza de 282 cuvinte fara sa pui un punct. Mai mai sa raman fara aer cand am citit ce-ai scris.
  16. E pa bune ma sunat pa mn Iohannis si a anceput sa planga k are nevoie da oameni am zis da ca nu puteam sa zic nu ca daca ziceam nu era diferit de da si trebuia sa fie da deci am zis da
  17. Da, e adevarat. Ca daca era fals era fals da' nu e fals e adevarat
  18. @Byte-ul la ce versiune ti-or ajuns Coaili?
  19. Da-mi PM cu: - ce ai nevoie (cu cat mai multe detalii, cu atat mai bine) - care este bugetul si cum ai de gand sa platesti - deadline Nu raspund daca nu oferi toate info de mai sus. Ms PS: <pun>Also, eu lucrez in Python, nu Phyton. Sper sa fie ok</pun>
  20. Here u go: try: # make the request here except requests.Timeout as timeout_err: # handle timeout print(timeout_err) except requests.RequestException as req_err: # handle other errors print(req_err)
  21. M-am uitat la ei pe lib si nu suporta timeout ca parametru. Ca workaround poti face ceva de genu': import requests import yfinance as yf import functools session = requests.Session() session.request = functools.partial(session.request, timeout=30) # replace requests library in yfinance yf.base._requests = session yf.utils._requests = session yf.ticker._requests = session The above should do the trick
  22. Setezi `timeout=<cat_vrei_tu>` pe fiecare request (e.g. `requests.get(url, timeout=10)`), dai retry de 3 ori sau cat vrei si treci mai departe daca resursa respectiva e busita (eventual stochezi in logs ca sa vezi ce se intampla si de ce nu merge). De asemenea, e posibil sa ai ceva antibots mechanism si sa iti dea block pentru cateva secunde/minute/ani etc...caz in care tre' sa folosesti proxies / socks. Uneori merge doar daca pui un mic sleep intre requesturi (e posibil sa le omori serveru') + schimbi User-Agent.
  23. E destul de usor ce vrei tu sa faci si poti combina solutiile de mai sus. Intr-adevar, pentru a fi sigur ca scriptul isi reia treaba de unde a ramas iti trebuie un Queuing mechanism in care sa stochezi statusul si id-ul fiecarui request in parte. Iti va fi usor sa reiei taskurile de unde au ramas. Ca sa rezolvi problemele cu no internet connection, curent nema, apocalipsa etc e ceva mai interesant (intra cumva in categoria de disaster recovery - multa teorie). Dar pe scurt, cu cateva try / except-uri ar trebui sa o rezolvi (e.g. poti face initial un HEAD request catre yfinance + retry de cateva ori in cazul in care requestul faileaza. Daca dupa cateva retry-uri nu primesti nimic de la url-ul respectiv, treci la urmatorul si pui in queue url-ul precedent pentru a-l incerca mai tarziu bla bla e mult de scris). Poti incerca urmatorul stack: - Python (il folosesti deja) - RabbitMQ (message broker) - Ceva DB (ceva cum ar fi Mongo cred ca ar merge perfect din moment ce nu pare ca ai vreo relatie intre datele de care ai nevoie) Ideea generala pentru a scapa de acel "retrieving..." e ca trebuie sa faci mereu sanity request check-uri care sa te asigure ca urmatoarele reqs vor merge. In caz contrar, tratezi acolo ce e de tratat. E.g: try: import httplib except: import http.client as httplib def i_have_internet(): conn = httplib.HTTPConnection("www.google.com", timeout=5) try: conn.request("HEAD", "/") conn.close() return True except: conn.close() return False def main(): if i_have_internet(): # do your stuff (process yfinance bla bla) else: # wait, retry, check internet settings or w/e u want main() Mai sus e un exemplu simplu de check insa tu ar trebui sa tratezi tot ce ai nevoie. Asta se rezolva pe parcurs dupa ce intampini toate problemele.
  24. Partikip sambata viitoare daca face @Silviu cinste. Veniti bre? @Silviu, @endemic, @Byte-ul, @QuoVadis, etc
  25. E prea mult cod? Sunt doua linii Mai ai `xml` lib care e usor de folosit (etree).
×
×
  • Create New...