Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Packj, ΠΊΠΎΡΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π΄Π΅ΠΉΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠΈ Π²ΡΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ (βsupply chainβ). ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π½Π° Python ΠΈ JavaScript, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅ PyPi ΠΈ NPM (Π² ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠ΅Ρ ΡΡΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Ruby ΠΈ RubyGems). ΠΠΎΠ΄ΡΡ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· AGPLv3.
ΠΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° 330 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ PyPi Π±ΡΡ Π° ΠΎΡΠΊΡΠΈΡΠΈ 42 Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ Π±Π΅ΠΊΠ΄ΠΎΡΠΈΠΈ ΠΈ 2.4 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠΈΡΠΊΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°. Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΎΠ±ΡΠ»Π΅Π΄Π²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ Π² API ΠΈ ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Π² ΠΠ OSV. ΠΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° API ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠ°ΠΊΠ΅Ρ MalOSS. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠΎΡΡΡΠ΅Ρ. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° 651 ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Ρ ΡΠΈΡΠΊΠ° ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΎΠΌΠ΅ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΡΠ΅Π· βevalβ ΠΈΠ»ΠΈ βexecβ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΊΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° Π·Π°ΠΌΡΠ³Π»ΡΠ²Π°Π½Π΅ ΠΈ ΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ (obfuscated), ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π½Π΅ΠΏΡΠ°Π²ΠΎΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ (setup.py), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΡΠΊΠ²ΠΎΡΠΈΠ½Π³ (ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ), ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΠΈΠ·ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅, ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ΄.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ΅Ρ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ PyPi, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π»ΠΈ Π½Π° Π²ΡΠ½ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΊΡΠ°ΠΆΠ±Π° Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° AWS ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: loglib-modules (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΌ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° loglib), pyg-modules, pygrata ΠΈ pygrata-utils (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΌ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pyg) ΠΈ hkg-sol-utils.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
