CasperSecurity

Current Path : /lib/python3/dist-packages/DistUpgrade/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/DistUpgrade/__pycache__/apt_clone.cpython-310.pyc

o

\�Ha���@s�ddlmZddlZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZmZdejvrgej�dd�ej�dd�Gd	d
�d
e�ZGdd�de�ZdS)
�)�print_functionN)�FetchFailedException)�BytesIO�open�APT_CLONE_DEBUG_RESOLVERzDebug::pkgProblemResolver�1zDebug::pkgDepCache::AutoInstallc@sFeZdZdZdZdd�Zdd�Zddd	�Zd
d�Zdd
�Z	dd�Z
dS)�LowLevelCommandszN calls to the lowlevel operations to install debs
        or repack a deb
    z/usr/bin/dpkg-repackcCsF|sdSddg}|dkr|�dd�|�d|�t�||�}|dkS)NT�dpkgz-i�/r�chroot�)�insert�
subprocess�call)�self�debfiles�	targetdir�install_cmd�ret�r�7/usr/lib/python3/dist-packages/DistUpgrade/apt_clone.py�install_debs3szLowLevelCommands.install_debscCshtj�|j�std|j��|jg}t��dks&tj�d�s dSddg|}tj||g|d�}|dkS)z$ dpkg-repack pkgname into targetdir z
no '%s' foundrz/usr/bin/fakerootN�fakerootz-u)�cwd)�os�path�exists�dpkg_repack�IOError�getuidrr)r�pkgnamer�
repack_cmdrrrr�
repack_deb=szLowLevelCommands.repack_debNcCs,|dur
t��d}t�d||g�}|dkS)N�CODENAME�debootstrapr)�lsb_release�get_distro_informationrr)rr�distrorrrrr$IszLowLevelCommands.debootstrapcCst�dd|d|g�}|dkS)Nzapt-keyz	--keyring�addr�rr)r�fromkeyfile�intokeyfilerrrr�
merge_keysOs
�zLowLevelCommands.merge_keyscCst�dd||g�}|dkS)N�mountz--bindrr))r�olddir�newdirrrrr�
bind_mountTszLowLevelCommands.bind_mountcCst�d|g�}|dkS)N�umountrr))r�binddirrrrr�bind_umountXszLowLevelCommands.bind_umount�N)�__name__�
__module__�__qualname__�__doc__rrr"r$r,r0r3rrrrr-s

rc@sDeZdZdZde��dZdZ		dIdd�Z		dJd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdKdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�ZdLd.d/�Z		dMd0d1�ZdNd2d3�ZdNd4d5�Zd6d7�ZdOd8d9�Z d:d;�Z!d<d=�Z"d>d?�Z#d@dA�Z$dPdCdD�Z%dLdEdF�Z&dGdH�Z'dS)Q�AptClonez� clone the package selection/installation of a existing system
        using the information that apt provides

        If dpkg-repack is installed, it will be used to generate debs
        for the obsolete ones.
    zapt-clone-state-%s.tar.gzr�./NcCsft�|_t�|_t�|_|r||_ntjj�	�|_|r||_
ntjj��|_
|r-||_
dStj|_
dSr4)�set�not_downloadable�version_mismatchr�commands�fetch_progress�apt�progress�text�AcquireProgress�install_progress�base�InstallProgress�
_cache_cls�Cache)rr?rD�	cache_clsrrr�__init__hs
zAptClone.__init__FcCstj�|�rtj�||j�}n	|�d�s|d7}|dkr7t��tj�	d|�tj�	dtj�|d��t�
�tj|dd��E}|�
|�|�||�|�|�|�||�|�|�|�|�|�||�|rl|�|�|r{|�|�Wd	�d	SWd	�d	S1s�wYd	S)
z� save the current system state (installed pacakges, enabled
            repositories ...) into the apt-state.tar.gz file in targetdir
        z.tar.gzz.apt-clone.tar.gzr
�Dir�Dir::State::statuszvar/lib/dpkg/statuszw:gz)�name�modeN)rr�isdir�join�CLONE_FILENAME�endswith�apt_pkg�init_config�configr;�init_system�tarfiler�_write_uname�_write_state_installed_pkgs�_write_state_auto_installed�_write_state_sources_list�_write_state_apt_preferences�_write_state_apt_keyring�_write_state_extra_files�_write_state_dpkg_status�_dpkg_repack)r�	sourcedir�target�with_dpkg_repack�with_dpkg_status�
scrub_sources�extra_files�tarrrr�
save_state�s4
�




�
"�zAptClone.save_statecCs2t��dt��dt��dtj�d�d�}|S)Nr��zAPT::Architecture)�hostname�kernel�
uname_arch�arch)r�unamerSrU�find)r�	host_inforrr�_get_host_info_dict�s



�zAptClone._get_host_info_dictcCsV|��}tjdd�}d�dd�|��D��}|�|d�|��|j|jdd�dS)N�w�rN�
cSsg|]
\}}d||f�qS)z%s: %sr)�.0�key�valuerrr�
<listcomp>�s�z)AptClone._write_uname.<locals>.<listcomp>z./var/lib/apt-clone/uname��arcname)	rr�tempfile�NamedTemporaryFilerP�items�write�flushr(rM)rrgrq�f�inforrrrX�s
�zAptClone._write_unamecCs<|durdS|D]}t�|�D]}|j|d|d�qqdS)Nz
./extra-filesrz)�globr()rrfrg�pr�rrrr^�s��z!AptClone._write_state_extra_filesc
CsT|j|d�}d}d}t��d}|D]]}|jro|d|j|jjt|j�f7}|j	r-|j	j
s5|j�|j�n|jj
r=|j	j
sD|j
�|j�|jjD]&}|jdkrU|jdkrUqH|j|krn|d|j|jj|jdkri|jndf7}qt�d�}	|�d�}t|�|	_t��|	_|�|	t|��t�d	�}	|�d�}t|�|	_t��|	_|�|	t|��dS)
N��rootdir��IDz	%s %s %s
�now�unknownz"./var/lib/apt-clone/installed.pkgs�utf-8z ./var/lib/apt-clone/foreign.pkgs)rGr%r&�is_installedrM�	installed�version�int�is_auto_installed�	candidate�downloadabler<r(r=�origins�archive�originrW�TarInfo�encode�len�size�time�mtime�addfiler)
rrarg�cache�s�foreign�	distro_id�pkg�o�tarinforrrrY�sF��

��







z$AptClone._write_state_installed_pkgscCstj�d�}|j|dd�dS)N�dir::state::statusz./var/lib/apt-clone/dpkg-statusrz)rSrU�	find_filer()rrg�dpkg_statusrrrr_�sz!AptClone._write_state_dpkg_statuscCs,tj�d�}tj�|�r|�|d�dSdS)NzDir::State::extended_statesz#./var/lib/apt-clone/extended_states)rSrUr�rrrr()rrg�extended_statesrrrrZ�s��z$AptClone._write_state_auto_installedcC�Vtj�d�}tj�|�r|j|dd�tj�dd�}tj�|�r)|j|dd�dSdS)NzDir::Etc::preferencesz./etc/apt/preferencesrzzDir::Etc::preferencespartsz/etc/apt/preferences.dz./etc/apt/preferences.d�rSrUr�rrrr(�find_dir�rrgr�r�rrrr\����z%AptClone._write_state_apt_preferencescCr�)NzDir::Etc::trustedz./etc/apt/trusted.gpgrzzDir::Etc::trustedpartsz/etc/apt/trusted.gpg.dz./etc/apt/trusted.gpg.dr�r�rrrr]�r�z!AptClone._write_state_apt_keyringcCs�tj�d�}|�|||d�tj�d�}tj�|�rM|j|ddd�t�	|�D]'}|�
d�r/q'|�d�s5q'd	||f}tj�|�rBq'|�|||d
|�q'dSdS)N�Dir::Etc::sourcelistz./etc/apt/sources.list�Dir::Etc::sourcepartsz./etc/apt/sources.list.dF)r{�	recursive�.z.listz%s/%sz./etc/apt/sources.list.d/)
rSrUr��$_add_file_to_tar_with_password_checkr�rrrr(�listdir�
startswithrRrO)rrg�scrub�sources_list�source_parts�source�sources_file_namerrrr[�s.
��

��z"AptClone._write_state_sources_listc	Cs�|rktjdd��Y}t|d��;}|��D]&}t|�tur |�d�}t�d|�r-t�	dd|�}|�
|�d��|��q|j
|j|d�Wd�n1sLwYWd�dSWd�dS1sdwYdS|j
||d�dS)	N�wbrt�rbzUTF-8z/[^/@:]*:[^/@:]*@z/USERNAME:PASSWORD@r�rz)r|r}r�	readlines�type�bytes�decode�re�search�subrr�r�r(rM)rrg�sourcesr�r{�source_copyr��linerrrr�s
�
P�z-AptClone._add_file_to_tar_with_password_checkcCsdSr4r�rrgrrr�_write_modified_files_from_etc%sz'AptClone._write_modified_files_from_etccCs>t��}|jD]	}|j�||�q|j|dd�t�|�dS)N�./var/lib/apt-clone/debsrz)r|�mkdtempr<r>r"r(�shutil�rmtree)rrg�tdirr rrrr`)s

zAptClone._dpkg_repackcCs&|��d�d�rd|_dSd|_dS)N���r:r�)�getnamesr��	TARPREFIXr�rrr�_detect_tarprefix2s

zAptClone._detect_tarprefixcCs�t�|��L}|�|�|�|jd�}|��D]1}|�d�}|�d�s)|��dkr*q|�	�}t
|�dkrH|d�d�sH|dWd�SqWd�dS1sTwYdS)N�etc/apt/sources.listr��#r�rir
)rWrr��extractfiler�r�r�r��strip�splitr�rR)r�	statefilergr�r��lrrr�_get_info_distro:s"


��
��zAptClone._get_info_distroc	Cs4|�|�pd}t�|���}|�|jd�}d}}g}|��D]&}|�d�}|����\}	}
}|d7}t	|�r;|d7}|	�
d�rE|�|	�q|�|jd�}|j
}
d}d}|jd|��vry|�|jd���}t�|�}|�dd�}|�d	d�}||d
�|�||t�|
�|d�Wd�S1s�wYdS)Nr�� var/lib/apt-clone/installed.pkgsrr�rz-desktopzvar/lib/apt-clone/unamerkrnz, )rkr'�metar��
autoinstalled�datern)r�rWrr�r�r�r�r�r�r�rR�append�	getmemberr�r��readrS�
TagSection�getrPr��ctime)rr�r'rgr�r�r�r�r�rMr��auto�mr�rkrnr��sectionrrr�_get_clone_info_dictHsP�


����
�$�zAptClone._get_clone_info_dictcCsd|�|�S)Nz�Hostname: %(hostname)s
Arch: %(arch)s
Distro: %(distro)s
Meta: %(meta)s
Installed: %(installed)s pkgs (%(autoinstalled)s automatic)
Date: %(date)s
)r�)rr�rrrr�ps�z
AptClone.infocCs�t�|��*}|�|�|�|j|dd��}g}|��D]
}|�|�d��qWd�n1s2wY||}tj	�
|�rZt|��}|��}	Wd�n1sTwYng}	tj|	|d||d�}
g}|
D]}|�|�qk|S)Nrr�zcurrent-system%s)�fromfile�tofile)
rWrr�r�r�r�r�r�rrr�difflib�unified_diff)rr��system_filerrg�
clone_file�clone_file_linesr��fp�system_file_lines�gen�diffrrr�_get_file_diff_against_cloneys.
��

���z%AptClone._get_file_diff_against_cloner
c	Csp|dkrtj�d|�td�|��}|�|�}|D]}|�|d�|�|d�kr9td||�|d�|�|d�f�qtd�d}|�|||�}|rPtd�|��|j	|d�}t
�|��7}	|	�|j
d�}
i}|
��D] }|���d	�}|�d
�s||dkr}qj|��\}
}}||f||
<qjWd�n1s�wYi}|D]}|js�q�|jjt|j�f||j<q�t|���t|���}|r�td�td�t|���td
�t|���t|���}|r�td�td�t|���td
�t�}t|�D] }||vr�q�||\}}||\}}||k�r|�|||f�q�|�r4td�td�|D]\}}}td|||f��q$dSdS)Nr
�DPkg::Chroot-DirectoryzClone info differences: z '%s': clone='%s' system='%s'r�z/etc/apt/sources.listr�r�r�r�z2Installed on the system but not in the clone-file:� ruz2Installed in the clone-file but not in the system:zVersion differences: z-Pkgname <clone-file-version> <system-version>z %s  <%s>   <%s>)rSrUr;�printrrr�r�r�rPrGrWrr�r�r�r�r�r�r�r�r��strr�rM�keys�sortedr()rr�rrq�
clone_inforw�sources_list_systemr�r�rgr��installed_in_cloner�rMr�r��installed_on_systemr��only_on_system�
only_in_clone�pkgversion_differencesr �clone_file_pkgversion�
clone_is_auto�system_pkgversion�sys_is_auto�	clone_ver�
system_verrrr�	show_diff�s�

�������
���zAptClone.show_diffc	Cs:|dkr#tj�d|�|j�dtj�|d��|j�dtj�|d��t�	|��
}|�
|�Wd�n1s8wYtj�|�sUtd|�|�
|�}|j�||�|j|||d	�|�||�|rk|�||�|�||||�|�||�|�||�|dkr�|j�tj�|d��|j�tj�|d��dSdS)
z� take a statefile produced via (like apt-state.tar.gz)
            save_state() and restore the packages/repositories
            into targetdir (that is usually "/")
        r
r�z/proc�procz/sys�sysNz0Dir '%s' does not exist, need to bootstrap first)�mirror)rSrUr;r>r0rrrPrWrr�rr�r�r$�_restore_sources_list�_restore_apt_keyring�_rewrite_sources_list�_restore_package_selection�_restore_not_downloadable_debs�_restore_extra_filesr3)	rr�r�exclude_pkgs�
new_distro�protect_installedrrgr'rrr�
restore_state�s,�
�zAptClone.restore_statecCs�t��}tj�d�}tj�|tj�|��s!t�	|tj�|��t
�|||�|�||�|r7|�
||�|j|d�}z|�tjj���Wn	tyQYnw|��|j|||d�}t
�|�|S)Nr�r�)r)r|r�rSrUr�rrr�dirname�makedirsr��copyr	rrG�updater@rArErCrr�#_restore_package_selection_in_cacher�)rr�rrrbr�r��missingrrr�simulate_restore_states$�
zAptClone.simulate_restore_statec
	Cs,t�|���}tj�|ddd�}tj�|�rt�|d|�|�|j	d|�tj�|ddd�}t�
|tjtj
BtjBtjB�|rgddlm}tj�d|�|�}|jdd�D]
}	|	j|krb||	_qX|��z|�|j	d	|�Wn	ty{Yn	wWd�dSWd�dS1s�wYdS)
N�etcr@�sources.list�%s.apt-cloner�r)�SourcesListr�zetc/apt/sources.list.d)rWrrrrPrr�r�extractr��chmod�stat�S_IRUSR�S_IWUSR�S_IRGRP�S_IROTH�aptsources.sourceslistrrSrUr;�list�uri�save�KeyError)
rr�rrrg�existing�
td_sourcesrr��entryrrrr	s6�
����"�zAptClone._restore_sources_listc	Cs�tj�|ddd�}d|}tj�|�rt�||�t�|��M}z|�|j	d|�Wn	t
y3Ynwz|�|j	d|�Wn	t
yHYnwtj�|�rc|j�||�t�
|�Wd�dSWd�dS1snwYdS)Nrr@ztrusted.gpgrzetc/apt/trusted.gpgzetc/apt/trusted.gpg.d)rrrPrr�rrWrrr�r)r>r,�remove)rr�rr*�backuprgrrrr
0s*���	"�zAptClone._restore_apt_keyringc
Cs|durg}t|�}t�}t�}t�|j�}|r&|D]}|jr%|�|j�qt�|���}	|	�	|j
d�}
|����|
��D]�}|�
��d�}|�d�sO|dkrPq=|��\}}
}dd�}|||�raq=|�|�t|�}|}||vr�z*|r�||j|dd�|jd	kr�|��||js�td
|��n||j|d�Wn ty�}zt�d||f�|�|�WYd}~nd}~ww||�|�q=Wd�n1s�wYWd�n1s�wY|jd	kr�|��|D]}||vr�|�|�q�||j�s
||j�s
|�|�q�|S)
Nr�r�r�r�cSs |D]}t�||�r
dSqdS)NT)�fnmatch)rMr�exclrrr�is_excluded\s
��zAAptClone._restore_package_selection_in_cache.<locals>.is_excludedF)�	from_user�auto_fixrzpkg %s not marked upgrade)r2zcan't add %s (%s))r;rS�ProblemResolver�	_depcacher��protect�_pkgrWrr�r��actiongroupr�r�r�r�r�r(r��mark_install�broken_count�resolve�marked_install�SystemError�logging�warning�	mark_auto)rr�r�rrr�pkgs�resolverr�rgr�r�rMr�r�r1�auto_installedr2�errrrBsv��




���������
&

�z,AptClone._restore_package_selection_in_cachecCs||j|d�}tjj�dd�tjj�dd�z|�|j�Wn	ty'Ynw|��|�	||||�|�
|j|j�dS)Nr�zDir::Binr
zDir::Bin::dpkgz
/usr/bin/dpkg)rGr@rSrUr;rr?rrr�commitrD)rr�rrrr�rrrr�s�z#AptClone._restore_package_selectioncCstt�|��+}|��D]}|jd}|j�|�r'|jt|�d�|_|�||�q
Wd�dS1s3wYdS)Nzextra-files/)rWr�
getmembersr�rMr�r�r)rr�rrgr��prefixrrrr�s
��"�zAptClone._restore_extra_filesc		s�t�|��,}z�fdd�|��D�}|�||�Wnty)YWd�dSwWd�n1s4wYg}tj�|d�}t�tj�|d��D]}tj�||�}|�	|�qL�j
�||�dS)Ncs"g|]
}|j��jd�r|�qS)zvar/lib/apt-clone/debs/)rMr�r�)rvr��rrrry�s"z;AptClone._restore_not_downloadable_debs.<locals>.<listcomp>r�z*.deb)rWrrF�
extractallr)rrrPr�r�r>r)	rr�rrg�debsdir�debsr�deb�debpathrrHrr
�s ���z'AptClone._restore_not_downloadable_debscCs�ddlm}m}tj�dtj�tj�	|ddd���tj�dtj�tj�	|ddd���|�}|j
dd�D])}|js>|jr?q6d	}d
D]}|j
�d|�rUd||f}nqC|r\||_
q6||_
q6tj�	|ddd
�}	tj�d�}
tj�|	�r�t|	d��"}|D]}|||
�}
|
js�|
js�|
|vr�|j
�|
�q}Wd�n1s�wYt�|	�|j
D]}|j�d�r�|j
�|�|j
�d|�d|_q�|��dS)Nr)r�SourceEntryr�rr@rr�zsources.list.dr�)�updates�security�	backportsz-%sz%s-%szsources.list.apt-clone�rzcdrom:T)r%rrNrSrUr;rr�abspathrPr&�invalid�disabled�distrRr�rrr�r-r'r�r
r()rrrrrNr�r,�replacement�pocketr*�
sourcelistr�r��srcrrrr�sV����
���

�zAptClone._rewrite_sources_listr�c	Cs�|r
tj�|d�}nd}t�}tj�tj�d��}t�tj�|dd��D])}t	|dd��}|D]}|�
d�r=|�|���q/Wd�n1sHwYq$t�}t�
|�D] \}	}
}|D]}tj�|	t|�d�|�}
|
|vru|�|
�q]qV|S)	Nrz/etcrLr�z*.listr�)�encodingz/etc/)rrrPr;rrSrUr�r�rr�r(r��walkr�)rra�etcdir�owned�dpkg_basedirr�r�r��unowned�dirpath�dirnames�	filenamesrM�fullnamerrr�_find_unowned_in_etc�s.
����
��zAptClone._find_unowned_in_etcc
CsR|tj�d�}t�}t|���}t�|�}|D]}d|vr�|d�d�D]q}d}t|���dkr8|��\}	}
}n|��\}	}
||	}|
��}
|dkrKq$t	j
�|�s^t�
d|�|�|�q$t��}t|d��}|�|���Wd�n1sywY|��|
kr�t�
d||��|
f�|�|�q$qWd�|S1s�wY|S)	NrL�	conffilesru��obsoletezconffile %s removedr�zconffile %s (%s != %s))rSrUrpr;r�TagFiler�r�r�rrrr>�debugr(�hashlib�md5rr��	hexdigest)
rrar��modifiedr��tagr,r�rhrM�md5sumrrlrrr�_find_modified_conffiles�sD


�
�
��
��z!AptClone._find_modified_conffilescCstd�dS)Nznot implemented yet)r�)rrarrr�_dump_debconf_database
szAptClone._dump_debconf_database)NNN)FFFN)F)r
)r
NNFNr4)FN)r�)(r5r6r7r8rrorQr�rJrhrrrXr^rYr_rZr\r]r[r�r�r`r�r�r�r�r�rrrr	r
rrrr
rrerqrrrrrrr9]sT
�
� 	
$	
		(	
K
�
&

@	
*
#r9)�
__future__rr@�	apt.cacherrSr�r/r�rkr>r%rr�r�r rrWr|r��iorr�environrUr;�objectrr9rrrr�<module>s0
0
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