o
    Hi                     @   s   d Z ddlmZ ddlmZ ddlmZmZ ddlZddlZddlZdd Z	dd	 Z
d
d Zdd Zdd Zdd Zedd dS )u   
字符串加密和分割
    )oc_util)oc_yaml)oc_tooloc_encode_decodeNc                  C   sd   t j} t t jd d add tD td d < t t jd d atd td t|  d S )Nu   /工程中所有字符串列表z.txtc                 S   s   g | ]
}t |d kr|qS    )len).0a r   A/data/storage/obfuscation/tool/ObjectiveC/oc_function/s_string.py
<listcomp>   s    zinit.<locals>.<listcomp>u   /工程中常量字符串列表GETHEAD)r   path_mix_projectget_text_linespath_mixall_string_listconst_string_listappendbase64_encode_and_replace)pathr   r   r   init	   s   

r   c              
   C   s.  d}t ddD ]}|ttj  }qttj d }| d tj d | }t| d| d }d| d }|d | }|d | }ttj}	t t	dd	D ]}|	ttj  }	qTt
|d
}
|
 }t|||	}W d    n1 s{w   Y  t
|d}
|
| W d    n1 sw   Y  t
|d
}
|
 }t|||	}W d    n1 sw   Y  t
|d}
|
| W d    n1 sw   Y  t|tj tjd tj d | d }t|||  t|||  tj| ddD ]\}}}dd |D |d d < dd |D |d d < |D ]w}tj||}t
|dD}
|
 }tD ]5}|tv r:q1d| d }||v ret|}d| }||vrW|| }||d| d d |	 }q1W d    n	1 srw   Y  t
|d}
|
| W d    n	1 sw   Y  qqd S )N r      	Extension/zNSString+%sz.hz.m   za+wTtopdownc                 S      g | ]}| d dkr|qS z
.frameworkFendswithr	   dr   r   r   r   =       z-base64_encode_and_replace.<locals>.<listcomp>c                 S   &   g | ]}t j|d  tjv r|qS r   osr   splitextr   list_support_open_file_typer	   fr   r   r   r   >      & r@""
#import "NSString+%s.h"

.)rangerandomchoicer   list_random_words
capitalizename_current_projectr*   mkdirrandintopenreadwrite_header_filewritewrite_method_filer   	add_groupr   add_filewalkr   joinr   r   r   hs_base64_encodereplace)r   new_file_name_new_folder_namefolder_pathheader_file_namemethod_file_nameheader_file_pathmethod_file_pathnew_method_namer.   file_contentf_pathrootdirsfilesname	file_patholdoc_old	en_stringadd_contentr   r   r   r      sr   




r   c           
   
   C   s   t j| ddD ]s\}}}dd |D |d d < dd |D |d d < |D ]U}t j||}t|d%}| }tD ]}|tv r@q9d| d }	|	|v rOt||}q9W d    n1 sZw   Y  t|d	}|	| W d    n1 stw   Y  q$qd S )
NTr   c                 S   r!   r"   r#   r%   r   r   r   r   S   r'   z.breakup_search_and_replace.<locals>.<listcomp>c                 S   r(   r   r)   r-   r   r   r   r   T   r/   r0   r1   r2   r   )
r*   rD   r   rE   r=   r>   r   r   one_string_methodr@   )
r   rS   rT   rU   rV   rW   r.   rQ   rX   rY   r   r   r   breakup_search_and_replaceQ   s,   
r]   c                 C   s<   | d } | d } | d|  } | d|  } | d } | d } | S )Nz&
#import <Foundation/Foundation.h>



zNS_ASSUME_NONNULL_BEGIN

z@interface NSString(%s)

z- (NSString *)%s;

z@end

zNS_ASSUME_NONNULL_END

r   rQ   	file_namemethod_namer   r   r   r?   a   s   r?   c                 C   sH   | d|  } | d|  } | d|  d } | d } | d d } | d } | S )	Nr3   z@implementation NSString(%s)

z- (NSString *)%s
z{
zP    NSData *data = [[NSData alloc] initWithBase64EncodedString:self options:0];
zO    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
z}

z@end
r   r^   r   r   r   rA   j   s   rA   c                 C   s   d}|D ]$}d}t |dkrd}|dkrd}|dkrd}|| d d | d }qd	| d
 }d| }d| d }| ||} | S )Nr   ,r   \z\\r2   z\"@z@[]z![%s componentsJoinedByString:@""]r1   )r   rG   )rQ   
old_stringxr
   symbol
one_stringr   r   r   r\   r   s   r\   1zhainanjunbigao.com)__doc__
ObjectiveCr   r   r   r   r*   r6   timer   r   r]   r?   rA   r\   r   r   r   r   <module>   s    7	