Jump to content

Cheater

Active Members
  • Posts

    1534
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by Cheater

  1. Cum n-am mai deschis un topic aici de multi ani, si am terminat serialele, si n-am somn, m-am gandit sa impartasesc cu voi optimizarile ce le folosesc pentru a imbunatati timpul de raspuns si viteza internetului. Este vorba de setari si configurari ce se aplica routerului, si este necesar ca routerul sa va permita conectarea prin ssh ca root pentru a le aplica.

    Eu folosesc https://www.synology.com/en-us/products/RT2600ac dar sunt convins ca ca sunt si alti producatori ce au routere cu linux destul de accesibil pentru a implementa optimizarile. Stiu nu e AX, luna viitoare scot cei de la Synology unul AX.

    Oricum tutorialul se aplica la fel si la AX si AC. Cand apare wifi 6e in Romania, poate fac o continuare.

     

    La routerele Synology parola setata la userul Admin, este parola de root.

    Valorile ce le gasiti in continuare au fost optimizate pentru o viteza maxima permisa de isp de 940Mbps, dar pana la 2.5Gbps nu ar trebui sa fie necesare modificari semnificative. De asemenea puteti aplica aceste setari si pe servere linux vor aduca imbunatatiri semnificative fata de default.

     

    1. /etc/rc.local

    Este posibil sa nu functioneze configurarile exact asa cum le prezint eu aici pe routerul vostru, de aceeea inainte de a le scrie in fisiere pentru a deveni persistente, faceti setarile la run-time, si adaptatiile daca este necesar, sau omitetile daca nu se aplica la voi (nu aveti binarele respective/variabilele de kernel, ajustati caila catre ele)

    Quote

    # Add this if your router has build-in IDS/IPS

    set ips queue_length 8192

     

    # Start random number seeder. Increases the entropy pool from ~120 to ~4096

    /usr/sbin/rngd -r /dev/urandom -o /dev/random -W 90% > /dev/null 2>&1

     

    # Configure custom txqueuelen, based on your actual internet speed, on all interfaces except the virtual ones, 8333 is used for 1Gbps, it's important to calculate the right configuration based on your speed, I used the numbers below, here it is the formula in `Kernel Parameters for Core Networking` section: https://cromwell-intl.com/open-source/performance-tuning/ethernet.html

    # Also do NOT change MTU if you won't be able to change it for every device in your entire network.

    # I use 2 commands, one for wifi+bridges and one just for ethernet ports, you may adjust this commands.

    for i in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF | grep -v lo | grep -v tap | grep -v vbr| grep -v eth); do ifconfig $i txqueuelen 7500 > /dev/null 2>&1; done 
    for i in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF | grep eth); do ifconfig $i txqueuelen 7833 > /dev/null 2>&1; done

     

    # nic off-loading, check it in console before yo make it permanent. Use ethtool -k eth0 to check your interface capabilities. I use it only for ethernet interfaces.

    for i in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF | grep eth); do ethtool -K $i rx on tx on sg on tso on ufo on gso on gro on lro on rxhash on ntuple on txvlan on rxvlan on tx-nocache-copy off tx-checksum-ipv4 on tx-checksum-ip-generic on tx-checksum-ipv6 on tx-checksum-fcoe-crc on tx-checksum-sctp on tx-scatter-gather on tx-scatter-gather-fraglist on tx-tcp-segmentation on tx-tcp-ecn-segmentation on tx-tcp6-segmentation on highdma on tx-gso-robust on tx-fcoe-segmentation on tx-gre-segmentation on tx-ipip-segmentation on tx-sit-segmentation on tx-udp_tnl-segmentation on tx-vlan-stag-hw-insert on > /dev/null 2>&1; done

     

    # Tuning the initial congestion window parameter (initcwnd) and advertised receive window (initrwnd), make sure that the interfaces are up and you received DHCP before it runs, or add a sleep before if it is needed.

    sleep 600

    ip route | while read p; do ip route change $p initcwnd 128 initrwnd 128; done > /dev/null 2>&1
    ip -6 route | while read p; do ip -6 route change $p initcwnd 128 initrwnd 128; done > /dev/null 2>&1

    exit 0

     

    2. /etc/sysctl.conf

    Ca sa aplicati configurarile fara reboot folositi sysctl -p, sau sysctl -w nume_variabila=valoare. Indepartati variabilele daca primiti eroare, unele pot sa lipseasca din versiunea de kernel pe care o aveti.

    Quote

    kernel.panic=3
    # Required for Synology Routers, comment it if you don't have a default like this before edit this file.
    net.ipv6.conf.default.accept_ra_defrtr=0

    # Force gc to clean-up quickly
    net.ipv4.neigh.default.gc_interval = 3600

    # Set ARP cache entry timeout
    net.ipv4.neigh.default.gc_stale_time = 3600

    # Setup DNS threshold for arp
    net.ipv4.neigh.default.gc_thresh3 = 4096
    net.ipv4.neigh.default.gc_thresh2 = 2048
    net.ipv4.neigh.default.gc_thresh1 = 1024


    # congestion control (default cubic)
    # /sbin/modprobe tcp_htcp
    # sysctl net.ipv4.tcp_available_congestion_control
    # some routers uses highspeed instead of htcp, but it is the same thing.
    net.ipv4.tcp_congestion_control=highspeed 
    # use bbr if you have kernel >4.9
    #net.ipv4.tcp_congestion_control=bbr 
    #net.core.default_qdisc=fq

    ### Set the max OS send buffer size (wmem) and receive buffer
    # size (rmem) for queues on all protocols. In other
    # words set the amount of memory that is allocated for each
    # TCP socket when it is opened or created while transferring files

    # Default Socket Receive Buffer
    net.core.rmem_default = 14155776
    net.core.rmem_max = 28311552
    net.core.wmem_default = 14155776
    net.core.wmem_max = 28311552


    # Set minimum, default, and maximum TCP buffer limits
    # decrease it if you have packet loose after you configure it
    net.ipv4.tcp_rmem = 4096 14155776 28311552
    net.ipv4.tcp_wmem = 4096 14155776 28311552
    net.ipv4.udp_rmem_min = 16384
    net.ipv4.udp_wmem_min = 16384

    # Increase the maximum total buffer-space allocatable
    # This is measured in units of pages (4096 bytes)
    net.ipv4.tcp_mem = 65536 131072 262144
    net.ipv4.udp_mem = 65536 131072 262144

    net.ipv4.tcp_max_tw_buckets = 1440000

    # Set maximum network input buffer queue length
    net.core.netdev_max_backlog = 250000
    net.core.netdev_budget = 50000
    net.core.dev_weight = 50000
    net.core.flow_limit_table_len=8192

    # Disable caching of TCP congestion state (2.6 only)
    net.ipv4.tcp_no_metrics_save = 1

    # increase port range
    net.ipv4.ip_local_port_range = 1024 65535

    # Protect Against TCP Time-Wait
    net.ipv4.tcp_rfc1337 = 1
    net.ipv4.tcp_fack = 1

    # This will enusre that immediatly subsequent connections use the new values
    net.ipv4.route.flush = 1
    net.ipv6.route.flush = 1

    # Increase TCP queue length
    net.ipv4.neigh.default.proxy_qlen = 96
    net.ipv4.neigh.default.unres_qlen = 6

    # Increase size of RPC datagram queue length
    net.unix.max_dgram_qlen = 256

    net.ipv4.tcp_notsent_lowat = 16384

    # Limit the maximum memory used to reassemble IP fragments (CVE-2018-5391)
    net.ipv4.ipfrag_low_thresh = 196608
    net.ipv6.ip6frag_low_thresh = 196608
    net.ipv4.ipfrag_high_thresh = 262144
    net.ipv6.ip6frag_high_thresh = 262144

    # Performance
    net.ipv4.tcp_reordering = 3

    # max connections, usefull if your router is also a download station or it has a database like postgress/mysql
    net.core.somaxconn=1024000
    net.ipv4.tcp_tw_reuse=1
    net.ipv4.tcp_fastopen = 3
    net.ipv4.tcp_low_latency=1
    net.ipv4.tcp_fin_timeout=7
    net.ipv4.tcp_max_syn_backlog=1024
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_keepalive_intvl = 15
    net.ipv4.tcp_keepalive_probes = 5
    net.ipv4.tcp_sack=1
    net.core.optmem_max = 25165824
    # disable timestamps and syncookies to decrease tcp header size
    net.ipv4.tcp_timestamps=0
    net.ipv4.tcp_syncookies=0
    # use ecn in case of congestion instead of dropping packets 
    net.ipv4.tcp_ecn=1
    net.ipv4.tcp_slow_start_after_idle=0
    net.ipv4.tcp_syn_retries = 2
    # make sure that we identify the right mtu, make sure that ping is allowed on ipv4/ipv6 in your fw
    net.ipv4.ip_no_pmtu_disc=0
    net.ipv4.tcp_base_mss=1460
    net.ipv4.tcp_mtu_probing=1
    net.ipv4.route.mtu_expires=86400
    net.ipv6.route.mtu_expires=86400

    # Turn on window scaling which can enlarge the transfer window:
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_adv_win_scale = 14


    # Number of times SYNACKs for passive TCP connection.
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_retries2 = 5
    net.ipv4.tcp_retries1 = 3

    kernel.domainname = SynologyRouter

    # Increase size of file handles and inode cache, usefull if your router is also a download station or it has a database like postgress/mysql
    fs.file-max = 50000
    fs.inotify.max_user_watches=6000

    # tells the kernel how many TCP sockets that are not attached to any
    # user file handle to maintain. In case this number is exceeded,
    # orphaned connections are immediately reset and a warning is printed.
    net.ipv4.tcp_max_orphans = 600


    # Security
    net.ipv4.tcp_challenge_ack_limit=1073741823
    net.ipv4.conf.default.rp_filter=2
    net.ipv4.conf.all.rp_filter=2

    # For low-latency 
    net.core.busy_poll=100
    net.core.busy_read=100
    net.ipv4.route.gc_timeout = 100

     

    3. Wifi

     

    Alegem canalul:

     

    Primul pas este scanarea de spectru, sunt multe aplicatii pentru asta, scopul este sa identificati canalul cel mai putin folosit pe 2.4/5Ghz sau daca este folosit retelele ce emit pe acel canal sa aiba o putere cat mai mica.

     

    TvBIR97VF7hs.png?o=1

     

    - pe 2.4Ghz sunt 3 canale ce nu se suprapun (non overlapping channels), 1, 6 si 11, ideal este sa alegem unul dintre acestea. Daca toate sunt libere, alegeti 11.

    - pe 5Ghz, cautam sa ne ferim de canalele cu DFS obligatoriu, astfel ne orientam catre benziile U-NII-1 si U-NII-3, daca avem noroc sa locuim in US/Canada (sau routerul crede asta), as recomanda canalul 161. Dar cum locuim in Romania si e 5000 lei amenda daca setezi alta tara si mergi pe un canal aiurea (in ideea in care avem vreo UM in apropiere, bruiem ceva, ei fac sesizare la ANCOM si ne bate ANCOM la usa, putin probabil), iar routerul nu ne lasa sa folosim 161 pe Romania, m-as uita la 40-44, daca este liber.

    Daca ai un router capabil, si intamplator locuiesti in Australia, routerul iti va permite 4W puterea in U-NII-3, cea mai mare din lume acceptata pe wifi, dar majoritatea routerelor suporta ±1W maxim.

     

    Channel width:

     

    Marimea canalului este importanta, cu cat este mai mare, cu atat incap mai multe date, deci avem viteza mai mare. 

    - pe 2.4Ghz, eu merg pe width de 40Mhz

    - pe 5Ghz, routerul meu stie sa mearga pe un width de 80+80 Mhz, practic foloseste 2 canale, am ales un canal din U-NII-1 si unul U-NII-3 (cand locuiam in US), ambele cu un width de 80Mhz, bine si deviceurile din caza trebuie sa stie 80+80 Mhz, sau 160Mhz, cel mai probabil suporta doar 80Mhz, ceea ce e good enough oricum.

     

    Alte setari:

     

    DTIM 4 - mai mic scade viteza si timpul de raspuns, si se consuma mai multa baterie, mai mare e opusul, optimul este 4. Dar puteti face A/B testing si vedeti ce vi se potriveste mai bine.

    Multicast translation - on

    AMPDU - on 

    EXTENDED NSS - on

    U-APSD - off

    MU-MIMO - on, ideal 4x4, dar si 2x2 ar trebui sa fie suficient.

    PMF support - off, apare un overhead ciudat si pare buggy, daca la voi se comporta la fel si on si off, e o idee buna sa ii dati on. La fel si WPA 3.

    IGMP Snooping - on

    Orice setare de power saving, off!

    Downgrade usb 3.0 device to reduce interference to 2.4 Ghz signal - on

    Allow auto-switch to DFS channels - off

    WPS - off (security)

    Daca routerul suporta guest, si nu folositi reteaua in mod curent, opriti guest.

    La criptarea retelei alegeti AES, pentru ca e hw accelerated.

    Alegeti pe 2.4Ghz N only, si 5Ghz AC/AX only, ca sa va asigurati ca fortati device-urile sa folosesca cele mai rapide protocoale de wifi, daca sunt device ce nu functioneza corect reveniti la o setare mai permisiva.

    Daca routerul suporta 802.11v aka Smart Connect, puteti, si recomand, sa folositi acelasi nume si la 2.4Ghz si la 5Ghz si routerul va negocia protocolul cel mai bun suportat de device, tinand cont si de calitatea semnalului pentru a avea cea mai buna acoperire si un plus de simplitate.

     

    + Folositi un doh dns, daca suporta routerul, sau macar un cloudflare dns, are datacenter si la otopeni si peers locale - https://1.1.1.1/dns/ .

     

    Firewall:

     

    Mtu probing se foloseste de icmp (ping), pentru a identifica valoarea optima, astfel este important sa acceptati icmp pe ipv4 si ipv6. 

    Blocati orice port ce nu are ce cauta in afara, eu de exemplu, prefer sa folosesc un port non-default pentru vpn server, din care mai apoi sa am access la interfata routerului si alte chestii.

     

    Locatia fizica:

     

    Recomand sa identificati locul de unde, din pozitia routerului puteti vedea usile la toate camerele (sau cat mai multe), un hol, sa va asigurati ca nu sunt obstacole (pereti mai ales de beton, frigider, etc..) in jurul routerului, este ideal sa fie situat la o inaltime de 2m, prins pe perete (preferabil), daca folositi wifi cu precadere dintr-o anumita camera cautati o pozitie cat mai aproape de camera care sa respecte cele de mai sus. Daca pui routerul sub pat, de sub pat o sa ai putere maxima :))). 

    Este adevarat ca semnalul ocoleste/trece prin obstacole doar ca fiecare obstacol scade semnificativ puterea, daca punem routerul pe jos, in mod automat va intalni semnificativ mai multe obstacole, si daca prin dreptul lui trec persoane, o sa apara spike-uri, nu ne dorim asta, de aceea inaltimea de 2m este optima.

     

    Performante obtinute:

     

    Inainte de a face aceste optimizari aveam 300-400 mbps, cu spike-uri mari.

    Dupa, am 650-666 pe orice device Apple mai nou de 2019 (testat cu: iPhone X, 12, MacBook Pro 16'' M1 pro/M1 max), si 800-900 Mbps pe deviceuri Apple 2017-2019 (chiar 2014) (testat cu: MacBook Pro 16'' 2014, 2019, Intel-based), au pus placi de retea mai slabe pe 5Ghz cu 2/mimo in loc de 3 cum era pana in 2019 pe device recente, probabil ca sa faca o economie de baterie/de cost de productie, naiba stie. https://support.apple.com/ro-ro/guide/deployment/dep2ac3e3b51/web

    Cert este ca routerul duce mai mult decat deviceurile ce le folosesc.

    Daca routerul este capabil AX la 2 mimo atat pe partea de router cat si de client estimez o viteza de 750-800Mbps, ceea ce e destul de bine.

     

    Update, screenshoot facut din qbittorrent, de pe un MBP M1 Pro, pe WIFI:

    46pU6ntInOT1.png

     

    Sper sa va fie de folos!

     

    Have fun! :)

     

    PS: daca am facut vreo greseala, o sa o corectez zilele urmatoare, am inceput sa scriu la 23 si e 03 :))

    • Upvote 8
  2. 1 hour ago, OKQL said:

    Hai ccca se face troll, zbori

     

    @Cheater

    API e scris de tine?

     

    Nu, API nu e scris de mine, l-am gasit gata scris, si am inceput de acolo. Poate il scriam eu daca nu exista, cand m-am lovit de bugul mentionat m-am gandit sa imi scriu singur api, apoi am zis ca e in afara scopului...voiam sa ajung repede la rezultat fara prea mare bataie de cap. Este un proiect de fun, nu vreau sa investesc in el sau sa il dezvolt mai mult.

    • Upvote 1
  3. 1 hour ago, Gecko said:

    Din: https://tidal.com/us/terms#ref-content

    Offline mode, adica acel feature care-ti permite sa descarci melodiile local, le descarca sub forma catorva sute/mii de fisiere mici care le face imposibil de redat in alte aplicatii. Cu alte cuvinte, nu-ti descarca fisiere MP3 sau MP4, in schimb tu le descarci asa pentru ca nu descarci fisierul lor, ci inregistrezi stream-ul prin ffmpeg. Orice astfel de incercare de copiere intra la ultima parte din quote, "circumventing the Services' technical protection system". Chiar daca o faci intr-un mediu care nu e conectat la net, tot nu e ok.

     

    M-am lovit de acelasi lucru la aplicatia Audible, de unde voiam sa descarc un audiobook, dupa ce l-am cumparat, pentru a-l asculta pe un sistem de nu avea acces la net si nici posibilitatea de a instala aplicatia lor. Am luat fisierul descarcat prin aplicatie (AAX), si am descoperit ca e un container criptat, redabil doar de aplicatia lor. Tidal urmeaza aceeasi abordare, insa nu le mai pune in container, salveaza toate bucatile de streaming, criptate.

     

    Cu alte cuvinte, cand platesti un abonament la un serviciu de streaming, nu obtii acces la fisierele lor media, ci doar dreptul de a le reda prin aplicatiile lor, fara sa le modifici in niciun fel. Deci, da, ce faci tu aici intra la piraterie. E simplu de inteles, daca nu exista un buton pentru a face ce vrei tu, in aplicatiile lor, iti e interzis s-o faci.

     

    In alta ordine de idei, HiFi e un mod de a reda FLAC prin internet, iti livreaza fisierul FLAC la maxim 1141 kbps in loc de a-ti livra unul comprimat (OGG / MP3), la 320 kbps, cum fac Spotify, Apple Music si restul cu abonamente premium. Faptul ca tu le descarci local elimina nevoia de HiFi, pentru ca nu mai descarci nimic dupa. Daca le descarci FLAC de oriunde, le poti reda la aceeasi calitate, asa cum spuneai si tu, daca ai scule pe masura. Tidal nu reinventeaza nimic, doar foloseste libFLAC si sacrifica mai mult bandwidth pentru a incerca sa livreze FLAC direct.

     

    Faptul ca ai citit intr-un advertorial Tidal ca ei livreaza muzica la alt nivel nu zice prea multe, si, sincer sa fiu, sunt surprins ca ii ridici atat in slavi doar pentru asta.

     

    P.S. Spotify are un sistem mult mai bun de discovery. :D 

    Vad ca te-ai documentat putin. Diferenta e ca pot sa iti descarc si flac-uri (prin link de app desktop/mobile) doar ca, sunt cum spui si tu criptate. Foloesc WidevineCDM.

    Iti dau multe fisiere prin web doar. Si calitate master ai doar pe Mac/Win cu aplicatia de desktop.

    Eu folosesc de cativa ani Tidal, si sunt fan, chiar face diferenta pe un sistem bun/casti bune, adica e asta si restul din punctul meu de vedere. (legat de valorile exacte le-am mentionat in primul post)

     

    Da asa este Spotify are un sistem de recomandari incredibil de bine pus la punct! Asta e motivul pentru care am si Spotify :)))).

    • Upvote 1
  4. 11 hours ago, MrGrj said:

    GG pentru initiativa.

     

    Vad ca ai ceva timp pe forumu' asta si eu intru din ce in ce mai rar. Am incercat sa dau c/p intr-uun IDE sa bag cateva imbunatatiri da' sa-mi bag pula daca nu mai mult m-am enervat.

     

    Daca vrei sa faci ceva cum trebe' pentru forum (chiar daca spui ca ii facut asa intr-o doara in conced), fa si tu un commit pe git sau ce folosesti tu,  pune un link aici, alege o versiune de Python recenta nu ceva care o sa fie deprecated maine poimaine. Ca mai vine azi unu' cu un edit, maine altu' cu un issue, si pac te trezesti cu meleonu' de la Dragnea care iti cumpara aplicatia si o baga pe RATB.

     

    Pwp & no homo :) 

    Nu intentionez sa postez jucaria in alta parte. Am facut-o pt mine si am zis sa o pun si aici, nu vreau sa o stie chiar tot netul dupa :)))

    Daca nu te descurci la ceva, scrie-mi PM si o sa incerc sa te ajut.

  5. 1 minute ago, Gecko said:

    Sa-mi fie cu pardon daca ma bag aiurea, dar atata timp cat Tidal nu-ti ofera posibilitatea de a descarca melodiile direct din aplicatie, ceea ce faci aici e acelasi lucru cu a le descarca direct prin torrenti. Corect?

    Pentru android si ios, ai optiunea de a le descarca si asculta offline, diferenta intre ce gasesti pe torrent si asta, este calitatea.

    Daca te gandesti la piraterie, ma gandesc la compatibilitate, eu in continuare platesc abonamentul, si daca masina nu e compatibila si am placerea de a asculta melodiile in masina, gresesc cu ceva?

  6. Salutare Guys,

     

    Cum se mai intampla sa te plictisesti in concediu, am facut azi, un script in python cu care poti descarca melodii de pe Tidal (https://tidal.com).

    Tidal este un serviciu de streaming online asemanator Spotify, doar ca are o calitate net superioara: HI-FI - 44.1 kHz/16 bit flac si mp4 si Master - 96 kHz/24 bit (MQA) - flac .

    Daca ai niste scule decente (fie ca e vorba de casti sau un sistem) e must have!

     

    Povestea a inceput de la nevoia de a descarca niste melodii pentru a le asculta offline, si cum nu am gasit nimic functional, am decis sa scriu eu aceasta aplicatie.

    Si m-am gandit sa impartasesc cu voi!

     

    Dependinte (e posibil sa imi fi scapat cateva):
    pip install tidalapi Unidecode
    ffmpeg - trebuie sa fie in system path

     

    Testand jucaria am gasit un bug in tidalapi: in cazul in care o melodie nu are relese date, va crapa, este un caz extrem de rar, si se intampla inspecial la unele melodii vechi. Daca iti place doar muzica noua si foarte comerciala cu siguranta nu ai neaparat nevoie de acest fix.
    # fix in tidalapi:
    # edit __init__.py
    # from line 224
    # change:
        # if 'releaseDate' in json_obj:
        #     try:
        #         kwargs['release_date'] = datetime.datetime(*map(int, json_obj['releaseDate'].split('-')))
        #     except ValueError:
        #         pass
        # return Album(**kwargs)
    # with:
        # if 'releaseDate' in json_obj:
        #     if json_obj['releaseDate'] is None:
        #         json_obj['releaseDate'] = '2008-10-14'
        #     try:
        #         kwargs['release_date'] = datetime.datetime(*map(int, json_obj['releaseDate'].split('-')))
        #     except ValueError:
        #         pass
        # return Album(**kwargs)

     

    Salvati codul intr-un fisier .py, si rulati-l. Apropo, caile catre fisierele salvate/creerea de directoare este hardcodata in format *nix, deci nu va asteptati sa va mearga pe windoza fara mici finisaje.

    Este scris si testat in Python 2,7 (defaultul la macOS Majave) dar am cautat sa il tin compatibil si cu Python 3.x (sper ca mi-a iesit).

    # -*- coding: utf-8 -*-
    
    # RST Tidal MP4 Downloader by Cheater v1.0 (https://rstforums.com)
    # All tracks will be download in PCM (MPEG AAC Audio coded, MP4A) at 44100 Hz/16 bits, 320 kbps and stored in MP4 container
    
    # requirements:
    # pip install tidalapi Unidecode
    # ffmpeg
    
    # tidalapi has a bug, so if some album/playlist contains one song with no date, it will exit, this is very rare, however, there is some workaround.
    # fix in tidalapi:
    # edit __init__.py
    # from line 224
    # change:
        # if 'releaseDate' in json_obj:
        #     try:
        #         kwargs['release_date'] = datetime.datetime(*map(int, json_obj['releaseDate'].split('-')))
        #     except ValueError:
        #         pass
        # return Album(**kwargs)
    # with:
        # if 'releaseDate' in json_obj:
        #     if json_obj['releaseDate'] is None:
        #         json_obj['releaseDate'] = '2008-10-14'
        #     try:
        #         kwargs['release_date'] = datetime.datetime(*map(int, json_obj['releaseDate'].split('-')))
        #     except ValueError:
        #         pass
        # return Album(**kwargs)
    
    import tidalapi
    import os
    import subprocess
    import errno
    import shlex
    from aigpy.cmdHelper import myinput
    from subprocess import Popen, PIPE, STDOUT
    from random import randint
    from time import sleep
    import unidecode
    
    # compatibility workaround for py27/py3
    try:
        from subprocess import DEVNULL # py3k
    except ImportError:
        import os
        DEVNULL = open(os.devnull, 'wb')
    
    # fill this with your tidal user and pass
    tidalUser = ''
    tidalPass = ''
    
    
    cwd = os.getcwd()
    
    config = tidalapi.Config()
    # using HIGH quality in order to get mp4's unencrypted url instead of enctyped flac
    config.quality = 'HIGH'
    
    session = tidalapi.Session(config)
    session.login(tidalUser, tidalPass)
    
    def getTidalTrackUrl(track_id):
    	try:
    		url = session.get_media_url(track_id)
    		return url
    	except:
    		# in case we need to retry we add a random sleep, in order to worckaround bot detection
    		sleep(randint(1,10))
    		print('Tidal responds with 401. Retrying track url discovery for track id: ' + str(track_id))
    		generatePlaylistTrackUrl(track_id)
    
    def downloadAlbum():
    	while True:
    		print("----------------ALBUM------------------")
    		sID = myinput("Enter AlbumID(Enter '0' go back) :")
    		if sID == '0':
    		    return
    		tracks = session.get_album_tracks(album_id=sID)
    
    		queue = []
    
    		for track in tracks:
    		    trackNo = str(tracks.index(track) + 1)
    		    # don't try to download unavailable track, it will fail
    		    if track.available is False:
    		    	continue
    		    # replace utf-8 diacritics with ascii equivalent, and cleanup " and ' from album/artist/track name
    		    trackName = unidecode.unidecode(track.name).replace('"', '').replace("'", "")
    		    artistName = unidecode.unidecode(track.artist.name).replace('"', '').replace("'", "")
    		    albumName = unidecode.unidecode(track.album.name).replace('"', '').replace("'", "")
    		    print('Adding to queue: ' + artistName + ' - ' + albumName + ' - ' + trackNo + '.' + trackName)
    
    		    # create dw directory and subdirs if it not exits
    		    if not os.path.exists(cwd + '/tidalDownloaded/' + albumName):
    		    	os.makedirs(cwd + '/tidalDownloaded/' + albumName)
    
    		    cmd = 'ffmpeg -y -i "rtmp://' + getTidalTrackUrl(track.id) + '" -acodec copy "' + cwd + '/tidalDownloaded/' + albumName + '/' + trackNo + '.' + artistName + ' - ' + trackName + '.mp4"'
    		    queue.append(cmd)
    
    		print('All track has been added to queue successfully. Download begins....')
    		processes = []
    		for cmd in queue:
    
    		    p = subprocess.Popen(shlex.split(cmd), shell=False, universal_newlines=True, stdout=DEVNULL, stderr=subprocess.STDOUT)
    		    processes.append(p)
    
    		print('All tracks download is in progress. Please wait....')
    
    		# wait for all started ffmpeg processes to be finished
    		for p in processes:
    		    if p.wait() != 0:
    		        print("There was an error")
    
    		print("Finished. All tracks has been download successfully!")
    	return True
    
    
    def downloadPlaylist():
    	while True:
    		print("----------------PlayList------------------")
    		sID = myinput("Enter PlayList(Enter '0' go back) :")
    		if sID == '0':
    		    return
    
    		playlist = session.get_playlist(playlist_id=sID)
    
    		tracks = session.get_playlist_tracks(playlist_id=sID)
    
    		
    		queue = []
    
    		for track in tracks:
    		    trackNo = str(tracks.index(track) + 1)
    
    		    # don't try to download unavailable track, it will fail
    		    if track.available is False:
    		    	continue
    
    		    # replace utf-8 diacritics with ascii equivalent, and cleanup " and ' from playlist/artist/track name
    		    playlistName = unidecode.unidecode(playlist.name).replace('"', '').replace("'", "")
    		    trackName = unidecode.unidecode(track.name).replace('"', '').replace("'", "")
    		    artistName = unidecode.unidecode(track.artist.name).replace('"', '').replace("'", "")
    		    print('Adding to queue: ' + playlistName + ' - ' + trackNo + '.' + artistName + ' - ' + trackName)
    
    		    # create dw directory and subdirs if it not exits
    		    if not os.path.exists(cwd + '/tidalDownloaded/' + playlistName):
    		    	os.makedirs(cwd + '/tidalDownloaded/' + playlistName)
    
    		    cmd = 'ffmpeg -y -i "rtmp://' + getTidalTrackUrl(track.id) + '" -acodec copy "' + cwd + '/tidalDownloaded/' + playlistName + '/' + trackNo + '.' + artistName + ' - ' + trackName + '.mp4"'
    		    queue.append(cmd)
    
    		print('All track has been added to queue successfully. Download begins....')
    		processes = []
    		for cmd in queue:
    
    		    p = subprocess.Popen(shlex.split(cmd), shell=False, universal_newlines=True, stdout=DEVNULL, stderr=subprocess.STDOUT)
    		    processes.append(p)
    
    		print('All tracks download is in progress. Please wait....')
    
    		# wait for all started ffmpeg processes to be finished
    		for p in processes:
    		    if p.wait() != 0:
    		        print("There was an error")
    
    		print("Finished. All tracks has been download successfully!")
    	return True
    
    while True:
        print(" RST Tidal MP4 Downloader by Cheater v1.0 (https://rstforums.com)")
        print("=====================Choice=========================")
        print(" Enter '0' : Exit")
        print(" Enter '1' : Download Album.")
        print(" Enter '2' : Download PlayList.")
        print("====================================================")
        print("All tracks will be download in PCM (MPEG AAC Audio coded, MP4A) at 44100 Hz/16 bits, 320 kbps and stored in MP4 container")
        choice = myinput("Choice:")
        if choice == '0':
        	quit()
        elif choice == '1':
            downloadAlbum()
        elif choice == '2':
            downloadPlaylist()
    
    
    

     

    Ce stie sa faca?

    1. Poti descarca un album

    2. Poti descarca un playlist

    3. Adauga melodiile intr-o coada, si le descarca simultan pentru a scurta timpul de asteptare semnificativ.

     

    Daca aveti intrebari sau nu va descurcati puteti scrie aici, si va voi ajuta in limita timpului disponibil (adica sper sa nu fie nevoie :))) ).

     

    PS: Fiti blanzi cu code review, sunt programator si python nu este specialitatea mea, este al 2-lea script scris in python si prima interactiune am avut-o in decembrie.

    PS2: Distractie si La multi ani! 

    PS3: Feel free to improve it!

    Later: Am gasit un tool functional de download scris de altcineva (daca il gaseam mai repede probabil ca nu il mai scriam eu pe asta, deci nu e neaparat bine): https://github.com/redsudo/RedSea acest tool spre deosebire de ce am scris eu, stie de si decripteze flacurile, astfel poate descarca inclusiv MQA de 92k / 24bit (cea mai intalta calitate disponibila pe tidal), si flac  44.1k / 16bit cu un bitrate de 1.411 kbps. Decriptarea nu e rocket sience, dar cu siguranta a fost nevoie de un reverse engineering serios pentru aflarea algoritmului si key de criptare (AES cu key binara, tinuta in base64 in cod).

    • Thanks 2
    • Upvote 7
  7. Eu cred ca leak-ul a fost intentionat, ganditi-va ca din mai intra GDPR, si cum ei nu au anuntat nimic in primele 72h, daca s-ar fi aflat dupa aceasta data amenda ar fi fost giganta:

     

    Sanctions
    The following sanctions can be imposed:

    a warning in writing in cases of first and non-intentional noncompliance
    regular periodic data protection audits
    a fine up to €10 million or up to 2% of the annual worldwide turnover of the preceding financial year in case of an enterprise, whichever is greater, if there has been an infringement of the following provisions (Article 83, Paragraph 4[21])
    the obligations of the controller and the processor pursuant to Articles 8, 11, 25 to 39, and 42 and 43
    the obligations of the certification body pursuant to Articles 42 and 43
    the obligations of the monitoring body pursuant to Article 41(4)
    a fine up to €20 million or up to 4% of the annual worldwide turnover of the preceding financial year in case of an enterprise, whichever is greater, if there has been an infringement of the following provisions: (Article 83, Paragraph 5 & 6[21])
    the basic principles for processing, including conditions for consent, pursuant to Articles 5, 6, 7, and 9
    the data subjects' rights pursuant to Articles 12 to 22
    the transfers of personal data to a recipient in a third country or an international organisation pursuant to Articles 44 to 49
    any obligations pursuant to member state law adopted under Chapter IX
    noncompliance with an order or a temporary or definitive limitation on processing or the suspension of data flows by the supervisory authority pursuant to Article 58(2) or failure to provide access in violation of Article 58(1)

    https://en.wikipedia.org/wiki/General_Data_Protection_Regulation#Sanctions

    • Upvote 1
  8. 4 hours ago, Zatarra said:

    Am eu o intrebare.. Muie? :))

     

    De ce nu mi-ai tinut o antena ca sunt sarac :(

    Subscriu, si mie mi-a dat teapa... Bine o sa zica ca am fost sa beau si daia nu eram acolo, dar nu recunosc nimic :P 

  9. 12 minutes ago, Byte-ul said:

    De ce cacat e firesc ca salariul sa fie discutat live? Mi se pare o aiureala ca e si confidential.

     

    Omul trebuie sa stie din start la ce se duce, sa nu isi piarda timpul aiurea cu voi.

    Cred ca poti intreba si la telefon daca sunteti pe aceeasi pagina. :) via-a-vis de salariu. Plus serios, acum, daca esti programator sti preturile din piata, si in afara de cateva exceptii, si aici ma refer la firme mai ciudate unde cred ca sunt smecheri si platesc sub piata, salariile sunt tot pe acolo.

    • Upvote 1
  10. @redcoder, pe tine te-a suparat cineva!

    Este doar un anunt de job, nu stiu cum ai vedea tu anuntul ideal pentru tine.

     

    Salariul in 99% din cazul este confidential si nu va fi discutat decat live, lucru ce este firesc. Iar pana la o astfel de discutie este mai putin relevant, ce credem despre, cum ni se pare.... viata bate filmult din mintea noastra :)

    Totusi nu cunosc programator senior ce sa ia doar 3000 ron.

     

    Iesirile la masa nu sunt obligatorii, si se intampla de obicei in pauza de masa, de la pranz.

     

    Eu inteleg ca vrei sa schimbi lumea joburilor, si cred ca nu postezi unde trebuie pt asta, te rog lasa loc si pentru cei cu adevarat interesati sa posteze.

     

    Multumesc,

  11. Misiunea job-ului tau: 
    Sa faci o diferenta prin valoarea pe care o poti aduce in cadrul echipei! Mai exact, sa contribui la dezvoltarea si imbunatatirea platformei software Co-Factor cu ajutorul careia generam un impact pozitiv asupra angajatilor si business-urilor clientilor nostri. 

    Cine suntem noi, Co-Factor:
    O echipa tanara si motivata, cu ambitii care depasesc granitele Romaniei, pozitionandu-ne ca un creator de valoare si nu un provider de servicii de outsourcing. Ca si confirmare a inovativitatii noastre, solutia software dezvoltata de Co-Factor a fost premiata de industria de HR iar clientii nostri sunt companii de top precum Banca Transilvania, Regina Maria, Groupama, eMAG, Deloitte, Avon Cosmetics, Ernst & Young si altii.

    Biroul este pozitionat intr-o zona premium, pe Bulevardul Primaverii (langa Parcul Herastrau si in apropiere de Pta Charles de Gaulle) intr-o atmosfera fresh si relaxanta.

    Responsabilitati: 
    • Dezvoltarea si perfectionarea solutiei software Co-Factor care integreaza procese de HR si business precum managementul performantei, inovare interna colaborativa, comunicare sociala, recunoastere si gamification etc 
    • Colaborarea cu restul echipei, aducand valoare prin participarea la intalniri de planificare, organizare si strategie, intalniri de code review, precum si prin idei de imbunatatire continua a solutiei
    • Furnizarea de solutii creative si eficiente la probleme care par in munca de zi cu zi 
    • Root-cause analysis si definirea de solutii tehnice
    • Oferirea de sugestii de imbunatatire a proceselor si tehnologiilor oferite 
    • Definirea/ clarificarea task-urilor si estimarea corecta a nivelului de efort in proiecte
    • Colaborarea activa cu ceilalti colegi din cadrul Co-Factor, in vederea indeplinirii cu succes a misiunii job-ului. 
    • Prioritizarea task-urilor si executia lor in timing-ul asumat pentru a livra conform promisiunilor
    • Contributia la definirea solutiilor impreuna cu echipa atat in ceea ce priveste proiectele noi cat si cele existente 
    • Mentorat si inspiratie pentru colegii cu mai putina experienta  
    • Nu in ultimul rand, apetit pentru inovare si o atitudine plina de energie pozitiva, ca factor motivator in munca de zi cu zi!

    Expertiza tehnica: 
    2-4 ani de experienta ca PHP developer.
    Experienta in PHP, MySql, OOP, MVC, javascript (jquery), versioning (git) si composer.
    Know-how in RESTful services si design patterns.
    In plus, ar fi “nice to have” daca ti-ai putea aduce aportul si la dezvoltarile in REACT, ES6 si scriind unit tests.

    Cum lucram noi: 
    Probabil te-ai obisnuit sa lucrezi Agile, asta este si modul nostru de lucru.
    Ca tehnologie, suntem in proces de migrare spre Symfony 3 si React.
    Suntem fani linux, si aparatul nostru de cafea face cea mai buna cafea! 
    Nu ne crezi? Te asteptam sa vezi!

    Ce-ti oferim?
    Salariu atractiv
    Asigurare de sanatate premium
    Posibilitatea de promovare si dezvoltare profesionala 
    Locatie si atmosfera frumoasa
    Team-buildinguri anuale, iesiri periodice la masa impreuna, work + fun!
  12. As adauga, e bine ca dev, sa foloseasca un tool de management al taskurilor (jira, trelo, asana, etc..) iar clientul poate avea access pentru a putea interveni daca taskurile nu sunt bine intelese/definite dar si pentru a avea o imagine de ansamblu asupra dezvoltarii. Asemenea este esential sa existe un server de dev unde clientul sa poata vedea ultimele implementari.

     

    Taskurile trebuie sa ie cat mai granulare, iar daca un task ia mai mult de cateva ore/o zi, poate fi spart in taskuri mai mici, pentru ca asta inseamna ca nu este destul de granular definit.

    Daca taskurile sunt bine definite, atunci estimarile ies mult mai realiste, caci in procesul de definire a taskurilor iti dai seama daca si ce ti-a scapat initial din estimari.

     

    Inca un lucru, niciodata nu se estimeaza un task in timpul ideal de lucru, ci in timpul efectiv.

     

    Timp ideal = daca am avea un cronometru unde am cronometra cat am lucra, oprindu-l de fiecare data cand iesim la o tigara sau mergem la toaleta, asta ar fi timpul ideal

    Timpul efectiv = este timpul ideal, la care se adauga intreruperile, firesti, umane, ca doar nu suntem roboti, si daca nu luam in considerare asta, intotdeauna estimarile noastre o sa fie KO. Si nu trebuie ca dev sa se simta vinovati pt asta, si nici beneficiarii furati, caci este felul in care lucrurile merg, orice altel de estimare va cauza probleme pentru ca nu o sa poata fi respectate termenele si ambii o sa ie nemultumiti.

     

    Iar, nu exista un termen batut in cuie, totul este estimativ, ideal este ca totul sa ie cat mai aproape de estimare, totusi la un proiect mare o abatere de 15-20% este rezonabila. Desi o data cu experienta estimarile sunt mai bune iar aceasta poate ajunge si la 1%. Abaterile astea pot veni de la ambele parti, ori clientul s-a apucat sa schimbe anumite lucruri, ori echipa de dezvoltare si-a dat seama ca solutia luata in considerare la estimare nu este cea mai optima. Si este la fel de firesc pe cum este firesc sa exista buguri. Daca nu ai buguri, inseamna ca nu ai testat destul de bine aplicatia si atunci e o problema.

     

    Fi la final, un contract strong, trebuie sa stea deasura oricarei discutii.

    • Upvote 5
  13. Cauta un CaptivePortal, sunt o gramada gata facute.

    De obicei autentificarea in Captive Portal este facuta intr-un server radius, iar acesta poate sa aiba in spate un mysql.

    Din aplicatia ta scri direct in mysql, ce e folosit de radius, iar radius+captiveportal se ocupa de autentificare.

     

    Pentru a-ti usura munca, iti recomand sa folosesti PfSense, este un router os, bazat pe freebsd, foarte light, ce are si captive portal, si radius.

    Configurezi apoi radius sa foloseasca un mysql extern, unde ti aplicatia, partea de comanda si control. Si that's it! :)

     

    CaptivePortal din PfSense suporta template-uri deci poti face o pagina faina, ce sa informeze/ceara o actiune de la user, chiar cont nou, poti folosi link extern catre partea de plati/user management a aplicatiei tale ce o whitelistezi astfel incat userul sa nu trebuiasca sa fie autentificat pentru a accesa aplicatia ta.

     

    Mai mult poti configura din radius (efectiv din mysql) ce limite de viteza vrei pe grupuri de useri sau pe useri individuali, iar pfsense si implementarea lui de CaptivePortal se ocupa de tot! :)

    Mai mult PfSense va trimite statistici catre radius ce vor fi stocate in mysql, si poti scoate din ele niste grafice faine, poti vedea ce useri sunt conectati, de cat timp...etc, se numeste radius accounting. PfSense se ocupa de asemenea de dhcp si toate celelalte necesare :).  

     

    Spor!

    • Upvote 2
  14. Uite o firma de HR a facut un document foarte interesant ce include inclusiv salariile pe diverse posturi din it:

    http://www.brainspotting.ro/wp-content/uploads/2015/10/Brainspotting_ITC_Talentmap_2015-2016.pdf

    E bine de stiut pentru cultura generala a noastra celor ce lucram in IT. Unde suntem si unde mergem.

    Este adevarat ca sunt firme, ce platesc extrem de prost angajatii, de nici nu sunt in grile, dar de asemenea stiu firme ce platesc foarte bine angajatii de sunt in afara grilelor, in partea de sus.

    Media, firescul, obisnuitul este in grile.

    Daca simtiti ca nu sunteti in grile, nu va costa nimic sa mergeti la interviuri si sa tintiti firme mai mari, alea sunt mai serioase, bine sunt si firme mici serioare, dar rar. Iar daca o firma mica/mare nu isi permite sa mearga in aceste grile, este clar ca are o problema de management, ori produsul nu este foarte inspirat, ori este ceva ce nu este ok acolo, so, cand va angajati vin la pachet si problemele firmei, este o alegere sa le accepti sau nu.

    Apropo de grile, voi cum sunteti, sunteti bine sau?

  15. Ce vrea tipul ala se faca intra la trafic de carne vie, so sunt sigur ca baietii astia te pot ajuta: Agen?ia Na?ional? Împotriva Traficului de Persoane

    Acolo nu lucreaza militieni ordinari, sunt in general oameni cu experienta, cu grade mai mari, au tehnici de protectie a victimelor, eu zic sa apelezi cu incredere sunt cel mai in masura sa te ajute, iar ei fiind mai sus de politie nu ii implica in mod direct pe politisti so totul va fi safe!.

  16. În prezent, multe state dezvoltate se confrunt? cu dificult??i în protejarea infrastructurilor IT na?ionale, generate, printre altele, ?i de lipsa speciali?tilor în securitate IT. Pentru încurajarea ?i motivarea tinerilor talenta?i în acest domeniu de a se al?tura echipelor de speciali?ti angrenate în eforturile de asigurare a securit??ii IT, sunt organizate competi?ii la nivel na?ional. Prin Campionatul European de Securitate Cibernetic? se ofer? acestor concursuri un caracter multina?ional - echipele fiec?rui stat fiind implicate atât în exerci?ii de colaborare, cât ?i în competi?ie- pentru a colabora, ?i, în cele din urm?, a concura între ei. Probele campionatului acoper? domenii precum securitate web, securitate mobil?, puzzleuri criptografice, inginerie invers? ?i investiga?ii, pentru care vor acumula puncte.În anul 2015 va avea loc, la Lucerne, Elve?ia, prima edi?ie a Campionatului European de Securitate Cibernetic?. Acesta este o ini?iativ? a European Union Agency for Network and Information Security (ENISA) ?i a 6 ??ri: Austria, Germania, România, Spania, Elve?ia, Marea Britanie.

    ro.png

    Organiza?ie – asocierea SRI/ Centrul Na?ional Cyberint, MECS, CERT-RO ?i ANSSI

    www.cybersecuritychallenge.ro

    Contact – Gabriela Matei, gabriela.matei@cyberint.ro

    Programul etapei na?ionale:

    În perioada iunie-iulie, se va desf??ura faza online a etapei na?ionale. Pentru înscriere, v? rug?m s? utiliza?i formularul de înscriere disponibil pe site.

    Persoanele care se înscriu la faza online a etapei na?ionale a competi?iei vor putea accesa faza online a etapei na?ionale cu ajutorul unei parole ?i al unui nume de utilizator, generate automat de c?tre Administrator.

    În perioada august-septembrie se va desf??ura faza on site a etapei na?ionale. La aceasta vor participa primii 50 de clasa?i din etapa online ?i va avea loc la sediul Centrului Na?ional CYBERINT, din Bucure?ti, la o dat? ce va fi comunicat? ulterior.

    Participan?ii între 14-18 ani selecta?i s? participe la aceast? faz? vor trebui s? se prezinte sediul Centrului Na?ional CYBERINT, din Bucure?ti, înso?i?i de un adult.

    Ce exerci?ii trebuie s? rezolvi în cadrul competi?iei

    Echipele vor trebui s? se transpun? într-un scenariu care presupune dezvoltarea ?i ap?rarea unei infrastructuri. Partea cea mai important? va r?mâne dezvoltarea ?i ap?rarea propriei infrastructuri, dar atacarea celorlalte echipe aduce puncte.

    Vor fi 3 nivele de dificultate a testelor: greu, mediu ?i u?or.

    Tematica testelor acoper? urm?toarele domenii:Echipele vor trebui s? rezolve un scenariu care presupune dezvoltarea ?i ap?rarea unei infrastructuri. De asemenea, ave?i ?ansa s? strânge?i puncte prin atacarea celorlalte echipe. Partea cea mai important? va r?mâne dezvoltarea ?i ap?rarea propriei infrastructuri. Mai mult, este foarte important s? cuno?ti punctele tari ?i slabe ale echipei tale, pentru a distribui sarcinile în mod optim. Vor fi 3 nivele de dificultate a testelor: greu, mediu ?i u?or. Testele sunt din urm?toarele domenii:

    • Securitate web
    • Criptografie
    • Inginerie invers? ?i investiga?ii
    • Programare
    • Teste de penetrare
    • Atac ?i aparare
    • Securitate Linux/windows/macOS
    • Securitate telefoane mobile

    Organizare:

    Serviciul Român de Informa?ii

    sri.jpg

    Ministerul Educa?iei ?i Cercet?rii Stiin?ifice

    logo_me.jpg

    CERT-RO

    cert.ro.jpg

    Ascia?ia Na?ional? pentru Securitatea Sistemelor de Informa?ii

    ansii.png

    Condi?ii de înscriere:

    Fiecare ?ar? participant? va avea o echip? selec?ionat? în urma fazei na?ionale a concursului. Participan?ii care vor s? se înscrie în competi?ie trebuie s? îndeplineasc? urm?toarele criterii:

    - au vârsta cuprins? între 14 ?i 30 de ani

    - sunt cet??eni ai ??rii pentru care particip?, sau locuiesc ?i urmeaz? o form? de înv???mânt în aceast? ?ar?

    - nu de?in o diplom? de master în domeniul securit??ii cibernetice sau similar

    - nu de?in certificare/curs în domeniul securit??ii cibernetice (spre exemplu: Certified Ethical Hacker, diplom? în investiga?ii)Componen?a echipelor ?i categorii

    Echipele sunt formate din 2 (maxim 3) antrenori ?i maxim 10 concuren?i din 2 categorii: juniori (între 14 ?i 20 ani) ?i seniori (între 20 ?i 30 ani). În fiecare echip? pot fi maxim 5 membri seniori. Vârsta de referin?? este vârsta concurentului la data la care va începe concursul la nivel na?ional.

    Programul concursului final

    Concursul final se va desf??ura în Elve?ia, în ora?ul Lucerne pe parcursul a cinci zile ( 19 - 23 octombrie). Programul cuprinde atât desf??urarea concursului propriu-zis, precedat de efectuarea unor exerci?ii pentru acomodare, cât ?i evenimente de socializare ?i vizite turistice.

    Participan?ii între 14-18 ani selecta?i pentru a participa la concursul final, care se va desf??ura în Elve?ia, nu vor putea p?r?si ?ara f?r? acordul p?rin?ilor sau tutorelui legal, dat prin declara?ie notarial? autentificat?.

    Detalii si inscriere: http://www.cybersecuritychallenge.ro/

    ____

    Personal, imi suna fain, totusi nu as merge, ca apoi apar pe listele organizatorilor life-time.

    Voi ce parere aveti?

    PS: vedeti si termenii si conditiile si politica de confidentialitate.

  17. Am lansat RoTunneling VPN v4

    Changelog:

    Suport pentru Windows 10.

    Drivere sunt semnate pentru o instalare mai usoara, fara a necesita "Disable driver signature enforcement" in Windows 8 si Windows 10.

    Imbunatatiri de performanta si compatibilitate.

    Upgrade a OpenSSL intern la 1.0.2a.

    Imbunatatiri cu privire la comportamentul aplicatiei cand Windows hiberneaza.

    Imbunatatirea sistemului de setup.

    Va recomandam sa dezinstalati versiunea anterioara inainte de a o instala pe aceasta, upgrade-ul nu este posibil datorita modificari sistemului de setup.

    Updateurile viitoare vor fi anuntate si in cadrul aplicatiei.

    Download RoTunneling VPN v4:

    https://www.rotunneling.net/descarcari-vpn/

  18. Momentan nu este in plan sa adaugam o astfel de functie, caci userii obisnuiti nu au nevoie, ar fi o nisa mica si o nisa destul de problematica (putini end-useri cu intentii bune ar avea nevoie de o astfel de functie pentru a folosi ip diverse din clase mari)

    Totusi am lansat serviciile Enterprise ( https://www.rotunneling.net/servicii-vpn-enterprise/ ) ce presupun construirea la comanda a ecosistemului VPN (+consultanta + suport + training) specific pentru nevoile companiilor. Astfel aici in functie de cerere se pot achizitiona clase de ip dedicate folosirii de catre companiile ce doresc acest lucru.

×
×
  • Create New...