CasperSecurity

Current Path : /lib/python3/dist-packages/CommandNotFound/db/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/CommandNotFound/db/__pycache__/creator.cpython-310.pyc

o

���a�/�@s<ddlZddlZddlZddlZddlZddlZddlZddlZddlZe�	�ddddddd�Z
d	ZGd
d�d�Zdd
�Z
Gdd�d�Zedkr�ejejd�eej�dkrvedejd�edejd�edejd�e�d�eejdd��Ze�ejd�ej��D]\ZZe�deef�q�dSdS)�N�x�d�P�<�(�)�main�universe�contrib�
restrictedznon-free�
multiversea�
           CREATE TABLE IF NOT EXISTS "commands" 
           (
            [cmdID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
            [pkgID] INTEGER NOT NULL,
            [command] TEXT,
            FOREIGN KEY ([pkgID]) REFERENCES "pkgs" ([pkgID])
           );
           CREATE TABLE IF NOT EXISTS "packages"
           (
            [pkgID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
            [name] TEXT,
            [version] TEXT,
            [component] TEXT,
            [priority] INTEGER
           );
           CREATE INDEX IF NOT EXISTS idx_commands_command ON commands (command);
           CREATE INDEX IF NOT EXISTS idx_packages_name ON packages (name);
c@s$eZdZdd�Zdd�Zdd�ZdS)�measurecCs||_||_dS�N)�what�stats)�selfrr�r�</usr/lib/python3/dist-packages/CommandNotFound/db/creator.py�__init__=s
zmeasure.__init__cCst��|_dSr)�time�now)rrrr�	__enter__@szmeasure.__enter__cGs:|j|jvrd|j|j<|j|jt��|j7<dS)Nr)rrrr)r�argsrrr�__exit__Bs"zmeasure.__exit__N)�__name__�
__module__�__qualname__rrrrrrrr
<sr
c
CsFzt�|�WdSty"}z|jtjkr�WYd}~dSd}~wwr)�os�remove�OSError�errno�ENOENT)�path�errr�rm_fHs���r$c@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�	DbCreatorcCs(||_t��d|_dt��d�|_dS)Nr)�total�
total_time)�files�apt_pkg�get_architectures�primary_archrr)rr(rrrrQszDbCreator.__init__cCs|d}|�|�st�d|�dS|d}t�|��<}z|�t�|�|�Wn'tjyN}zt	|�dkrBt�
d|�t�d�n|�WYd}~nd}~wwWd�n1sYwYt
|�t�||�t|d��}t�|��|�Wd�dS1s�wYdS)Nz	.metadataz0%s does not require an update (inputs unchanged)z.tmpzdatabase is lockedz*%s is locked by another process. Ignoring.r�w)�_db_update_needed�logging�info�sqlite3�connect�
executescript�
create_db_sql�_fill_commands�OperationalError�str�warning�sys�exitr$r�rename�open�json�dump�_calc_input_metadata)r�dbname�
metadata_file�tmpdb�conr#�fprrr�createUs8
�
������"�zDbCreator.createc
Cs�tj�|�sdSz t|��
}t�|�}Wd�n1swY||��kWStyB}zt�	d||�WYd}~dSd}~ww)NTzcannot read %s: %s)
rr"�existsr;r<�loadr>�	Exceptionr.r7)rr@rC�metar#rrrr-qs
���zDbCreator._db_update_neededcCs@i}|jD]}t�|�}|j|j|j|j|j|jd�||<q|S)N)�st_ino�st_dev�st_uid�st_gid�st_size�st_mtime)	r(r�statrIrJrKrLrMrN)rrH�p�strrrr>{s

�zDbCreator._calc_input_metadatac	Cs�|jD]B}tjdd|gtjd��-}d|vr|�|||j�n|�||j�|��dkr6tj|j	d�
|�d��Wd�n1s@wYqt��|jd|jd<t
�d	|jd
|jdf�dS)Nz/usr/lib/apt/apt-helperzcat-file)�stdout�Contentsrz#/usr/lib/apt/apt-helper cat-file {})�
returncode�cmdr'zprocessed %i packages in %.2fsr&)r(�
subprocess�Popen�PIPE�_parse_single_contents_filerR�_parse_single_commands_file�wait�CalledProcessErrorrT�formatrrr.r/)rrB�f�subrrrr4�s 
����	�zDbCreator._fill_commandscCs|�d||f���}|S)Nz�
            SELECT packages.pkgID, name, version 
            FROM commands 
            INNER JOIN packages on packages.pkgID = commands.pkgID
            WHERE commands.command=? AND packages.name=?;
            ��execute�fetchone)rrB�command�pkgname�
already_in_dbrrr�_in_db�s��zDbCreator._in_dbcCs |�d|f�|�d|f�dS)Nz"DELETE FROM packages WHERE pkgID=?z"DELETE FROM commands WHERE pkgID=?�ra)rrB�pkgidrrr�
_delete_pkgid�szDbCreator._delete_pkgidcCs"|�d|f���}|r|dSdS)Nz'SELECT pkgID from packages WHERE name=?rr`)rrBrd�have_pkgrrr�
_get_pkgid�s��zDbCreator._get_pkgidcCs|�d||||f�}|jS)Nzt
            INSERT INTO packages (name, version, component, priority)
            VALUES (?, ?, ?, ?);
            )ra�	lastrowid)rrBrd�version�	component�priority�currrr�_insert_package�s
�zDbCreator._insert_packagecCs|�d||f�dS)NzF
        INSERT INTO commands (command, pkgID) VALUES (?, ?);
        rg)rrBrc�pkg_idrrr�_insert_command�s�zDbCreator._insert_commandc	Cs�t�|�}|��sdS|jd}|�d�rdS|jd}|jd}|dkr,||jkr,dS|���rM|jdd7<|jd}|j�d	�rJ|jd	}|j�d
d�}t�}	|j�dd�rgt|j�dd��	d
��}	|jd�	d
�D]�}
|
|	vrvqot
d|j��|�||
|�}Wd�n1s�wY|r�t�||d�dkr�t
�d|
�t
d|j��|�||d�Wd�n1s�wYn
t
�d|
|f�qot
�d|
|||f�t
d|j��|�||�}Wd�n1s�wY|�s(t|}
|
t|j�dd��7}
t
d|j��|�|||||
�}Wd�n	1�s#wYt
d|j��|�||
|�Wd�n	1�sAwYqo|��s1dSdS)N�suitez
-backportsrn�arch�allr&��namezvisible-pkgnamerm�zignore-commands�,�commands�sql_already_db�r�+replacing exiting %s in DB (higher version)�sql_delete_already_in_db�(skipping %s from %s (lower/same version)�adding %s from %s/%s (%s)�sql_have_pkgzpriority-bonus�0�sql_insert_pkg�sql_insert_cmd)r)�TagFile�step�section�endswithr+r�get�set�splitr
rf�version_comparer.�debugrirk�component_priorities�intrqrs)rrBrC�tagfrtrnrurdrm�ignore_commandsrcrerrrorrrrZ�sf







���������z%DbCreator._parse_single_commands_filec
Csd}|D�]}|�d�}|�d�s!|�d�s!|�d�s!|�d�s!qz
|�dd�\}}Wn	ty4Yqwtj�|�}|�d�D]�}z|���dd�\}	}Wnty]|��}d	}	Ynwt	|	�d��d
kro|	�d�\}
}	nd}
d}t
d|j��|�|||�}Wd�n1s�wY|r�	t�d||f�q@t�d||||f�t
d|j��|�||�}
Wd�n1s�wY|
s�t|
}t
d|j��|�||||
|�}
Wd�n1s�wYt
d|j��|�|||
�Wd�n	1�swYq@qdS)Nzutf-8zusr/sbinzusr/bin�bin�sbinrwrz�/�unknownr}rr|Frr~rr�r�r�r�r�)�decode�
startswithr��
ValueErrorrr"�basename�strip�rsplit�lenr
rrfr)r�r.r�rirkr�rqrs)rrBr^rCrt�lrc�pkgnamesrdr�rnrmrerrrorrrrY�sd

������������z%DbCreator._parse_single_contents_fileN)rrrrrDr-r>r4rfrirkrqrsrZrYrrrrr%Ps

	9r%�__main__)�level�z%usage: %s <output-db-path> <files...>z. e.g.: %s commands.db ./dists/*/*/*/Commands-*zP e.g.: %s /var/lib/command-not-found/commands.db  /var/lib/apt/lists/*Commands-*rwr}z%s: %s)r r<r.rr0rVr8rr)�initr�r3r
r$r%r�basicConfig�INFOr��argv�printr9�colrDr�itemsrO�amountr�rrrr�<module>sF�S
�	
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY