Akshita Internship
Akshita Internship
Technology (Co-Ed)
INTERNSHIP REPORT
AKSHITA GUDI
USN: SG20CSE018
Semester: 8th
Date of Internship
Faculty Advisor
SHIVKUMAR KAGI SIR
Kalaburagi, Karnataka.
2024
COMPUTER SCIENCE ENGINEERING
DEPARTMENT
CERTIFICATE
Certified that the Internship work entitled “EVENT MANAGEMENT SYSTEM” is a bonafide
work carried out by AKSHITA GUDI and bearing USN No SG20CSE018 in partial
fulfillment of the requirement for the award of the degree of COMPUTER SCIENCE
ENGINEERING Sharnbasva University, Kalaburagi during the year 2024-2025. It is
certified that all corrections / suggestion indicated for Internal Assessment have been
incorporated in the Report. The Project Report has been approved as it satisfies the academic
requirements in respect of project work
prescribed for the B.TECH Degree.
Marks Details
Sl Maximum Marks
Name of the Student USN
No Marks Obtained
1 AKSHITA GUDI SG20CSE018
2
ACKNOWLEDGEMENT
I also extend my sincere thanks to Dr. ANIL KUMAR BIDVE registrar SHARNBASVA
UNIVERSITY, KALABURAGI. For his constant encouragement.
I am also thankful to chairman Dr. SYED ASRA of faculty of engineering & technology
(CO-EDUCATION), department of computer science & engineering for his
encouragement and insightful comments at all stages of my Project
AKSHITA GUDI
(USN:SG20CSE018)
TABLE OF CONTENTS
Cha
pter Internship schedule
No Introduction of company and departments
1. Key Learnings
2. Documentation
3. Challenges faced
4. Conclusion
5. References
6. Appendix 1 :
Industry
supervisor’s
report
Appendix 2 :
Students log
sheet Appendix
3 : Students
feedback form
Appendix 4: Documentary
Evidence’s of
Internship Such has
Screenshots of Online
S nship mail/any
e other
s communication
s letter copy.
i
o
n
s
/
A
u
d
i
o
-
V
i
d
e
o
File
s/Any other
details
Appendix 5:
Offer Letter’s
copies if placed.
Appendix 6:
I
n
t
e
r
BRIEF SUMMARY
Authorized
Seal and Signatory
CERTIFICATE OF COMPLETION
CHAPTER 1 INTERNSHIP REPORT 2o22
INTERNSHIP SCHEDULE
Sl no Tasks
1 Basics concepts of Java
2 Advanced of Java Concepts
3 Advanced of Java Concepts 2
4 JDBC Concepts
5 Servlets
6 (JSP) JavaServer Pages
7 HTML Fundamentals
8 CSS Fundamentals
9 Bootstrap Concepts
10 jQuery
11 Advanced SQL Concepts
12 Integration and Project web
development
CHAPTER 2 INTERNSHIP REPORT 2o22
KEY LEARNINGS
Sl no Departments Learnings
Working
Phase 1:
During the initial phase, our focus will be on designing and developing the core functionalities of the EMS.
This includes:
Phase 2:
In the second phase, we will concentrate on creating a user-friendly interface and implementing key
functionalities of the EMS. This includes:
Phase 3:
The final phase involves evaluating the usability and effectiveness of the EMS, identifying areas for
improvement, and proposing enhancements. This includes:
cd Open_Source_Web-Vulnerability-Scanner-and-Patcher/setup
SOFTWARE REQUIREMENTS
Database: Oracle 10g
Frontend: HTML
IDE: My Eclipse
Technology: Java
Definition
Local File Inclusion (LFI) allows an attacker to include files on a server through the web browser. This
vulnerability exists when a web application includes a file without correctly sanitising the input, allowing
and attacker to manipulate the input and inject path traversal characters and include other files from the
web server. An LFI attack may lead to information disclosure, remote code execution, or even Cross-site
Scripting (XSS). Typically, LFI occurs when an application uses the path to a file as input. If the application
treats this input as trusted, a local file may be used in the include statement.
Libraries Used
Request – This particular library has been used as we need to make HTTP requests in order to check for
the LFI vulnerability.
sys – This particular library is necessary as it helps by providing various functions and variables to
manipulate different parts of the Python Runtime environment
How To Run
Logic Utilized
Firstly, using the if statement we filter out invalid target application inputs. Once we find a valid target we
store it in selected_target. The selected target is then attacked with the given payload. If an LFI
vulnerability is found it will be printed on the terminal.
Log4j Scanner
This repository provides a scanning solution for the log4j Remote Code Execution vulnerabilities (CVE-
2021-44228 & CVE-2021-45046). The information and code in this repository are provided "as is" and was
assembled with the help of the Tribe N. This is not intended to be a 100% true positive solution; False
negatives may occur.
Libraries Used
Fuzzing
Fuzzing is an effective way to find security bugs in software, so much so that the Microsoft Security
Development Lifecycle requires fuzzing at every untrusted interface of every product. If you develop
software that may process untrusted inputs, you should use fuzzing.
WAF
A WAF or Web Application Firewall is the protective barrier between a web application and the internet.
In simple terms, It monitors the traffic hitting website servers with requests, and filters out the ones with
malicious intent.
WAF bypass payloads
Trying to gather xss payloads from the internet that bypasses WAF. All credit goes to the owners of the
payloads.
CVE-2021-45046
In certain non-default configurations, it was found that the fix to address CVE-2021-44228 in Apache Log4j
2.15.0 was insufficient. This issue affects the log4j version between 2.0 and 2.15. Log4j 1.x is NOT
impacted by this vulnerability.
DNS Callback
DNS Callback, custom-dns-callback-host Provides libopendkim with a handle representing the DNS
resolver package to be used, such as a handle to an instantiation of a library.The DNS callback is the first
stop in the DNS lookup, and it is responsible for dealing with the client that made the initial request. The
resolver starts the sequence of queries that ultimately leads to a URL being translated into the necessary
IP address.
RSA
RSA is a type of asymmetric encryption, which uses two different but linked keys. In RSA cryptography,
both the public and the private keys can encrypt a message. The opposite key from the one used to
encrypt a message is used to decrypt it.
B64ENCODE:-
Base64 is a binary to a text encoding scheme that represents binary data in an ASCII string format. It is
designed to carry data stored in binary format across the network channels. Base64 mechanism uses 64
characters to encode.
UUID4:-
Version 4 UUIDs, are simply 128 bits of random data, with some bit-twiddling to identify the UUID version
and variant. UUID collisions are extremely unlikely to happen, especially not in a single application space.
Decrypt_data:-
The conversion of encrypted data into its original form is called Decryption. It is generally a reverse
process of encryption. It decodes the encrypted information so that an authorized user can only decrypt
the data because decryption requires a secret key or password.
Append:-
Append in Python is a pre-defined method used to add a single item to certain collection types. Without
the append method, developers would have to alter the entire collection's code for adding a single value
or item.
Parse_logs:-
Parsing is the process of splitting unstructured log data into attributes (key/value pairs). You can use these
attributes to facet or filter logs in useful ways. This in turn helps you build better charts and alerts.
Steps to test
This is a vulnerability which is extremely common with web applications which dynamically include
external files. When web applications take user input (URL, parameter value, etc.) and pass them into file
include commands, the web application might be tricked into including remote files with malicious code.
Although almost all web application frameworks support file inclusion and they are perfectly secure. The
issue begins when the user supplied input is accepted without proper validation. The malicious user can
easily create backdoors, get unauthorised access to restricted data, run malicious code on the server, take
complete control of the server etc. As said before most web application architectures allow for user input
in the form of URL, parameter and value. When such user input is not sanitised and properly validated
then the user can easily redirect the web application to an unsafe address where the security of the web
application is ultimately compromised which maybe range from gaining unauthorised access to restricted
data all the way to Cross Site Scripting (XSS) and thus eventually leading to a compromised system. PHP is
particularly vulnerable to RFI attacks due to the extensive use of “file includes” in PHP programming and
due to default server configurations that increase susceptibility to an RFI attack.
Libraries Used
Request – This particular library has been used as we need to make HTTP requests in order to check for
the RFI vulnerability.
sys – This particular library is necessary as it helps by providing various functions and variables to
manipulate different parts of the Python Runtime environment.
Logic Utilized
Firstly, we check for a valid target. After this step we try to redirect the target to a predetermined external
page. If the target web application accesses the external page then an appropriate message will be
displayed to the user.
To Be Noted
The present version of our RFI scanner checks the local host because of legal restrictions (lack of
permission) we cannot check on any web applications right now.
SQL Injection scanner
Definition
A SQL injection scanner is an automated tool used to verify the vulnerability of websites and web apps for
potential SQL injection attacks. SQL injection is a code injection technique used to attack data-driven
applications, in which malicious SQL statements are inserted into an entry field for execution . SQL
injection must exploit a security vulnerability in an application's software, for example, when user input is
either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is
not strongly typed and unexpectedly executed. SQL injection is mostly known as an attack vector for
websites but can be used to attack any type of SQL database.
Libraries Used
requests - The requests library is the de facto standard for making HTTP requests in Python. It abstracts
the complexities of making requests behind a beautiful, simple API so that you can focus on interacting
with services and consuming data in your application.
argparse - This class helps create a program in a command-line-environment in a way that appears easy to
code but also improves interaction. It also automatically generates help and usage messages and issues
errors when users give the program invalid arguments.
sys - This particular library is necessary as it helps by providing various functions and variables to
manipulate different parts of the Python Runtime environment.
colorama - Colorama is a python module that is used to display colored output in console. It can change
both, foreground and background color of any text which is displayed in the console.
injection and checks the playload for the vulnerability and slows it down if the vulnerabal's are presents ..
How To Run
Using the fuzzing we inject and test the payload to check if the url has a vulnerability and to verfiy the url
for time elapsed from when the connection is made with url . If an SQLI vulnerability is found then the
payload slows down the browser and we are informed of the existence of the vulnerability.
Cross-Site Scripting (XSS)
Definition
Cross-Site Scripting attacks are a type of injection, in which malicious scripts are injected into otherwise
trustworthy websites. An attacker exploits a XSS vulnerability via a web application, generally in the form
of a browser side script to a different end user. These vulnerabilities are quite widespread as they can
occur anywhere an input is taken from a user without validating or encoding it and is used to generate an
output. The end user’s browser has no way to know that the script should not be trusted and it will
execute the script as it thinks the script came from a trusted source. Thus, the malicious script after
injection can access any cookies, session tokens, or the other sensitive information retained by the
browser and use with that site.
Libraries Used
selenium - It is a library in python which is used to control web browsers through programs and
performing browser automation.
warnings - This class is usually used to warn the developer of situations that take place during the
execution of a program.
argparse - This class helps create a program in a command-line-environment in a way that appears easy to
code but also improves interaction. It also automatically generates help and usage messages and issues
errors when users give the program invalid arguments.
sys - This particular library is necessary as it helps by providing various functions and variables to
manipulate different parts of the Python Runtime environment.
How To Run
Logic Utilized
Using the Selenium Web Driver we have made a custom browser and then we test the web application in
that browser to check if it accepts user input without proper validation. If an XSS vulnerability is found
then the payload slows down the browser and we are informed of the existence of the vulnerability.
Patcher
For our Patcher we have separate programs which will patch up different vulnerabilities. We cannot
present a complete, compiled software at this present moment as these patches are complex and are
written in different languages. To get the Patcher up and running in time for the final inspection would not
be possible as there are many languages which would need to be compiled into one.
Angular XSS Patcher
When rendering AngularJS templates with a server-side templating engine like ERB or Haml it is easy to
introduce XSS vulnerabilities. These vulnerabilities are enabled by AngularJS evaluating user-provided
strings containing interpolation symbols (default symbols are {{ and }}).
This gem patches ERB/rails_xss and Haml so Angular interpolation symbols are auto-escaped in unsafe
strings. And by auto-escaped we mean replacing {{ with {{ $root.DOUBLE_LEFT_CURLY_BRACE }}. To leave
AngularJS interpolation marks unescaped, mark the string as html_safe.
This is an unsatisfactory hack. A better solution is very much desired, but is not possible without some
changes in AngularJS. See the related AngularJS issue.
If you want to disable angular_xss in some part of your app, you can use
Installation
Installation
iv. Read the code so you know what you're getting into.
v. Put this into your Gemfile after other templating engines like Haml or Erubis:
viii. Run your test suite to find the places that broke.
ix. Mark any string that is allowed to contain Angular expressions as #html_safe.
Known limitations
As I have seen lots of misunderstanding on how PATCH works, I aim to clarify its usage before diving into
the actual solution.
Consider, for example, we are creating an API to manage contacts. On the server, we have a resource that
can be represented with the following JSON document:
Let's say that John has been promoted to senior engineer and we want to keep our contact list updated.
We could modify this resource using a PUT request, as shown below:
With PUT, however, we have to send the full representation of the resource even when we need to
modify a single field of a resource, which may not be desirable in some situations.
Let's have a look on how the PUT HTTP method is defined in the [RFC 7231][rfc7231], one of the
documents that currently define the HTTP/1.1 protocol:
The key here is: the PUT payload must be a new representation of the resource. Hence it's not meant for
performing partial modifications to resources at all. To fill this gap, the PATCH method was created and it
is currently defined in the [RFC 5789][rfc5789]:
The difference between the PUT and PATCH requests is reflected in the way the server processes the
request payload to modify a given resource:
• In a PUT request, the payload is a modified version of the resource stored on the
server. And the client is requesting the stored version to be replaced with the
new version.
• In a PATCH request, the request payload contains a set of instructions describing
how a resource currently stored on the server should be modified to produce a
new version.
The PATCH method definition, however, doesn't enforce any format for the request payload apart from
mentioning that the request payload should contain a set of instructions describing how the resource will
be modified and that set of instructions is identified by a media type.
Let's have a look at some formats for describing how a resource is to be PATCHed:
JSON Patch
JSON Patch is a format for expressing a sequence of operations to be applied to a JSON document. It is
defined in the [RFC 6902][rfc6902] and is identified by the application/json-patch+json media type.
The JSON Patch document represents an array of objects and each object represents a single operation to
be applied to the target JSON document.
The evaluation of a JSON Patch document begins against a target JSON document and the operations are
applied sequentially in the order they appear in the array. Each operation in the sequence is applied to the
target document and the resulting document becomes the target of the next operation. The evaluation
continues until all operations are successfully applied or until an error condition is encountered.
The operation objects must have exactly one op member, whose value indicates the operation to perform:
JSON Merge Patch is a format that describes the changes to be made to a target JSON document using a
syntax that closely mimics the document being modified. It is defined in the [RFC 7396][rfc7396] is
identified by the application/merge-patch+json media type.
The server processing a JSON Merge Patch document determine the exact set of changes being requested
by comparing the content of the provided patch against the current content of the target document:
1.
If the merge patch contains members that do not appear within the target
document, those members are added
2.
If the target does contain the member, the value is replaced
3.
null values in the merge patch indicate that existing values in the target
document are to be removed
4.
Other values in the target document will remain untouched
JSON-P 1.0, defined in the JSR 353 and also known as Java API for JSON Processing 1.0, brought official
support for JSON processing in Java EE. JSON-P 1.1, defined in the JSR 374, introduced support for JSON
Patch and JSON Merge Patch formats to Java EE.
Let's have a quick look at the API to start getting familiar with it:
And to patch using JSON Merge Patch, we would have the following:
Having said that, let me highlight that JSON-P is just an API, that is, a set of interfaces. If we want to work
with it, we need an implementation such as [Apache Johnzon][johnzon]:
For an incoming request with the application/json-patch+json content type, the payload must be
converted to an instance of [JsonPatch][javax.json.JsonPatch].
For an incoming request with the application/merge-patch+json content type, the payload must be
converted to an instance of [JsonMergePatch][javax.json.JsonMergePatch].
Spring MVC, however, doesn't know how to create instances of [JsonPatch][javax.json.JsonPatch] and
[JsonMergePatch][javax.json.JsonMergePatch]. So we need to provide a custom
[HttpMessageConverter<T>][org.springframework.http.converter.HttpMessageConverter] for each type.
Fortunately it's pretty straightforward.
The constructor will invoke the parent's constructor indicating the supported media type for this
converter:
It's unlikely we'll need to write [JsonPatch][javax.json.JsonPatch] instances to the responses, but we could
implement it as follows:
The message converter for [JsonMergePatch][javax.json.JsonMergePatch] is pretty much the same as the
converter described above (except for the types handled by the converter):
Creating the controller methods
With the HTTP message converters in place, we can receive [JsonPatch][javax.json.JsonPatch] and
[JsonMergePatch][javax.json.JsonMergePatch] as method arguments in our controller methods,
annotated with [@RequestBody][org.springframework.web.bind.annotation.RequestBody]:
So, to apply the patch to a Java bean, we first need to convert the Java bean to a JSON-P type, such as
[JsonStructure][javax.json.JsonStructure] or [JsonValue][javax.json.JsonValue]. Then we apply the patch to
it and convert the patched document back to a Java bean:
With module extension dependency on the classpath, we can configure the [ObjectMapper]
[com.fasterxml.jackson.databind.ObjectMapper] and expose it as a Spring [@Bean]
[org.springframework.context.annotation.Bean] (so it can be picked up by String and can be injected in
other Spring beans):
The[findAndRegisterModules()]
[com.fasterxml.jackson.databind.ObjectMapper.findAndRegisterModules] method is
important here: it tells Jackson to search and register the any modules found in the
classpath, including the [jackson-datatype-jsr353][jackson-datatype-jsr353] extension
module. Alternatively, we can register the module manually:
With this in place, the controller method implementation for JSON Patch could be like:
And the implementation is quite similar for JSON Merge Patch, except for the media type
and for the types handled by the method:
Validating the patch
Once the patch has been applied and before persisting the changes, we must ensure that the patch didn't
lead the resource to an invalid state. We could use [Bean Validation annotations]
[javax.validation.constraints] to define constraints and then ensure that the state of the model is valid.
To perform the validation, we could inject [Validator][javax.validation.Validator] in our class and invoke
the [validate()][javax.validation.Validator.validate] method. If any constraint has been violated, it will
return a set of [ConstraintViolation<T>][javax.validation.ConstraintViolation] and then we can throw a
[ConstraintViolationException][javax.validation.ConstraintViolationException]. So the method to apply the
patch could be updated to handle the validation, as shown below:
Alternatively, we could simply annotate the method with [@Valid][javax.validation.Valid] and Bean
Validation will take care of performing the the validation on the returned value (the Spring bean may need
to be annotated with [@Validated][org.springframework.validation.annotation.Validated] to trigger the
validation):
Bonus: Decoupling the domain model from the API model
The models that represent the domain of our application and the models that represent the data handled
by our API are (or at least should be) different concerns and should be decoupled from each other. We
don't want to break our API clients when we add, remove or rename a field from the application domain
model.[2]
While our service layer operates over the domain/persistence models, our API controllers should operate
over a different set of models. As our domain/persistence models evolve to support new business
requirements, for example, we may want to create new versions of the API models to support these
changes. We also may want to deprecate the old versions of our API as new versions are released. And it's
perfectly possible to achieve when the things are decoupled.
To minimize the boilerplate code of converting the domain model to the API model (and vice versa), we
could rely on frameworks such as [MapStruct][mapstruct]. And we also could consider using [Lombok]
[lombok] to generate getters, setters, equals(), hashcode() and toString() methods for us.
By decoupling the API model from domain model, we also can ensure that we expose only the fields that
can be modified. For example, we don't want to allow the client to modify the id field of our domain
model. So our API model shouldn't contain the id field (and any attempt to modify it may cause an error or
may be ignored).
In this example, the domain model class is called Contact and the model class that represents a resource is
called ContactResourceInput. To convert between these two models with MapStruct, we could define a
mapper interface and MapStruct will generate an implementation for it:
Once the ContactMapper is injected in our controller, we can use it to handle the model conversion.
Here's what the controller method for handling PATCH requests with JSON Patch could be like:
And, for comparision purposes, here's a controller method for handling PUT requests:
This is a serious problem, which allows the attacker access to system files without any restrictions, for
example the file /etc/passwd or the WordPress wp-config.php file, which has the authentication data with
the system data base.
The solution to vulnerability patch is updating the plugin to the latest version, however, this can bring
some compatibility problems and dependence on certain systems. To this end, a corrective patch is herein
distributed.
Use
In order to resolve this vulnerability you have two possibilities:
1. Using a bash script provided with the patch, or if you are an experienced user,
2. Use the corrective patch directly in the file.
The file to be updated is as follows: image_view.class.php, and can be found on the directories described
below.
To use it, enter in the command line:
or
For Minecraft users: The full path to the jar needs to be added in the above argument unless the jar is put
into the instance (or .minecraft) folder. This jar does not go into the mods folder.
SQLI Patcher
Description
This module allows Ruby programs to interface with the SQLite3 database engine (http://www.sqlite.org).
You must have the SQLite engine installed in order to build this module.
Open a database
db = SQLite3::Database.new test.db
● Create a database rows = db.execute <<-SQL create table numbers ( name varchar(30), val int );
SQL
● Execute a few inserts { "one" => 1, "two" => 2, }.each do |pair| db.execute "insert into numbers
values ( ?, ? )", pair end
● Find a few rows db.execute( "select * from numbers" ) do |row| p row end
Compilation and Installation
Install SQLite3, enabling option SQLITE_ENABLE_COLUMN_METADATA (see www.sqlite.org/compile.html
for details).
Alternatively, you can download and install the RubyGem package for SQLite3/Ruby (you must have
RubyGems and SQLite3 installed, first):
If you have sqlite3 installed in a non-standard location, you can specify the location of the include and lib
files by doing:
Usage
For help figuring out the SQLite3/Ruby interface, check out the FAQ. It includes examples of usage. If you
have any questions that you feel should be address in the FAQ, please send them to
[email protected]
CHAPTER 5 INTERNSHIP REPORT 2o22
CHALLENGES FACED
CONCLUSION
The
“Event Management”
was successfully designed and is tested for accuracy and quality. During this
project we have accomplished all the objectives and this project meets the
needs of the organization. The developed will be used in searching,
retrieving and generating information for the concerned requests.
GOALS ACHIVIED
6. Web enabled.
Industrial Supervisor: K a r t h i k M N
Supervisor Email: [email protected] Internship is: Paid yes Unpaid
In the Institute internship program, faculty members are expected to be mentors for students. Do you feel
that your Faculty coordinator served such a function? Why or why not?
How well were you able to accomplish the initial goals, tasks and new skills that were set down in
your learning contract? In what ways were you able to take anew direction or expand beyond your
contract? Why were some goals not accomplished adequately?
What has been the most significant accomplishment or satisfying moment of your internship? What
Give suggestions as to how your internship experience could have been improved. (Could you have
handled added responsibility? Would you have liked more discussions with your professor concerning
your internship? Was closer supervision needed? Was more of an orientation required?)
`
intern
6.Overall GPA:
NA
Preferance-2
Preferance-3
Industrial Supervisor
Name: Title: Company/Organization: Internship Address: City, State, Pin:
Phone: Email:
Faculty Mentor
Name: shivkumar kagi Phone: 9632574447
• Skills
Learning Activities: How will your internship activities enable you to acquire the
knowledge/understanding, and skills you listed above.
On the job: Describe how your internship activities will enable you to meet your learning objectives.
Include projects, research, report writing, conversations, etc., which you will do while working,
relating them to what you intend to learn.
Teaching/Mentoring Activities: How your technical knowledge can be applied at the site of the
internship. How you can create value through mentoring/help people learn new things.
Off the job: List reading, writing, contact with faculty supervisor, peer group discussion, field
trips, observations, etc., you will make and carry out which will help you meet your learning
objectives.
Evaluation: Your Internship supervisor will provide a written evaluation of your internship.
Describe in detail what other evidence you will provide to your faculty Mentor to document what
you have learned (e.g. journal, analytic paper, project, descriptive paper, oral presentation, etc.)
Include deadline dates.
Part III: The Internship
Job Description: Describe in as much detail as possible your role and responsibilities while on
your internship. List Duties, project to be completed, deadlines, etc. How can you contribute to the
organization/site of internship?
Part IV:Agreement
This contract may be terminated or amended by student, faculty coordinator or work supervisor at any
time upon Written notice, which is received and agreed to by the other two parties.
Evaluation (I)
5.
Name of Student Akshita Gudi Mob. No. 7019756693
6.
College Roll No. 018 University Roll No. SG20CSE018
7.
Branch/Semester CSE 8th sem Period of Training Three months
8.
Home Address with contact Shahstri chowk Bramphur , Kalaburagi
7019756693
9.
Address of Training Site: www.prodevans.com
10.
Address of Training Providing Agency: #18th,S.V.G:
Nagar,Priyadarshini Layout,Vijayanagar, Bengaluru,
11.
Name/Designation of Training In- Karthik M N
12.
Type of Work
13.
Date of Evaluation
a) Atten
dance:
_(Satis
factory
/
Good/
Excelle
nt)
b)Pract
ical
Work:
d)Evaluation of Industry: (Satisfactory/ Good/ Excellent)
Overall grade: (Satisfactory/ Good/Excellent)
Signature of Faculty Mentor
1 Abhishek SG18CSE400
HOST ORGANIZATION
CERTIFICATE
Date:____/____/________
Signature:_____________
Name and position of the authorized person at the host
Institution/company: Sookshmas E-learning Privated
_____________________________