Merhaba Değerli forum üyeleri ve hocalarım
bu konumda askere gitmeden önce yarım bıraktığım bir projeyi kodları ile paylaşıcam.
bu araç basit bir görsel arayüze sahip, kodları inceleyip ilham alabilirsiniz şuan demo sürümünü paylaşıyorum.
Yorumlarınızı bekliyorum.
bu konumda askere gitmeden önce yarım bıraktığım bir projeyi kodları ile paylaşıcam.
bu araç basit bir görsel arayüze sahip, kodları inceleyip ilham alabilirsiniz şuan demo sürümünü paylaşıyorum.
Yorumlarınızı bekliyorum.
Python:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QGridLayout, QLabel, QDialog, QVBoxLayout, QHBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Aytlogo Eğitim Demo")
self.setGeometry(100, 100, 1050, 300)
self.setWindowFlag(Qt.FramelessWindowHint)
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
self.main_layout = QVBoxLayout(self.central_widget)
self.grid_layout = QGridLayout()
self.main_layout.addLayout(self.grid_layout)
top_layout = QHBoxLayout()
top_layout.setContentsMargins(0, 0, 0, 0)
top_layout.setSpacing(0)
self.main_layout.addLayout(top_layout)
minimize_button = QPushButton("")
minimize_button.setFixedSize(20, 20)
minimize_button.setStyleSheet("""
QPushButton {
background-color: #ffbd4c;
border-radius: 10px;
color: #ffffff;
font-weight: bold;
}
QPushButton:hover {
background-color: #ffaa00;
}
""")
minimize_button.clicked.connect(self.showMinimized)
top_layout.addWidget(minimize_button, alignment=Qt.AlignLeft)
close_button = QPushButton("")
close_button.setFixedSize(20, 20)
close_button.setStyleSheet("""
QPushButton {
background-color: #ff5c5c;
border-radius: 10px;
color: #ffffff;
font-weight: bold;
}
QPushButton:hover {
background-color: #ff1a1a;
}
""")
close_button.clicked.connect(self.close)
top_layout.addWidget(close_button, alignment=Qt.AlignRight)
self.button_style = """
QPushButton {
background-color: #343a40;
color: #ffffff;
border: 1px solid #495057;
border-radius: 8px;
padding: 12px;
font-size: 14pt;
font-weight: bold;
}
QPushButton:hover {
background-color: #495057;
border-color: #adb5bd;
}
QPushButton:pressed {
background-color: #6c757d;
border-color: #adb5bd;
}
"""
self.central_widget.setStyleSheet("background-color: #111111;")
self.pages = [
{
"title": "Programlama",
"buttons": [
{"text": "Python Nedir?", "article": "Python, yüksek seviyeli, genel amaçlı bir programlama dilidir. Guido van Rossum tarafından geliştirilen Python, basit ve okunabilir sözdizimi ile dikkat çeker. Genellikle web geliştirme, veri analizi, yapay zeka gibi alanlarda kullanılır. Python'un avantajları arasında geniş kütüphane desteği, platform bağımsız olması ve topluluk desteğinin güçlü olması sayılabilir."},
{"text": "JavaScript Nedir?", "article": "JavaScript, genellikle web sayfalarına interaktiflik kazandırmak için kullanılan bir programlama dilidir. Tarayıcıda çalıştığı için istemci tarafında (client-side) çalışır. JavaScript, dinamik içerik oluşturmak, kullanıcı etkileşimi sağlamak ve web uygulamalarını geliştirmek için yaygın olarak kullanılır. JavaScript'in en önemli özelliklerinden biri ise Node.js gibi platformlar aracılığıyla sunucu tarafında (server-side) da kullanılabilmesidir."},
{"text": "HTML Nedir?", "article": "HTML, bir web sayfasının yapısını tanımlayan işaretleme dilidir. HyperText Markup Language kelimelerin vurgulanmasından, başlıkların belirlenmesine kadar çeşitli işlevleri gerçekleştirmek için kullanılır. HTML, web tarayıcıları tarafından okunabilir bir şekilde yorumlanır ve kullanıcıya metinler, resimler, bağlantılar gibi içerikleri sunmak için temel yapı taşını oluşturur."},
{"text": "CSS Nedir?", "article": "Cascading Style Sheets (CSS), web sayfalarının görünümünü ve formatını belirlemek için kullanılan bir stil dilidir. HTML veya XML gibi belge işaretleme dillerine (markup languages) görsel stil vermek için kullanılır. CSS, web sayfalarının renkleri, fontları, arka planları ve genel düzenlemeleri gibi birçok görsel özelliğini kontrol etmek için kullanılır."},
{"text": "Java Nedir?", "article": "Java, Sun Microsystems tarafından geliştirilen, nesne yönelimli, genel amaçlı bir programlama dilidir. Java, yazılım geliştirme dünyasında yaygın olarak kullanılan platform bağımsız bir dil olarak bilinir. Java, özellikle büyük ölçekli uygulamaların geliştirilmesinde, özellikle de kurumsal uygulamalarda tercih edilir."},
{"text": "C++ Nedir?", "article": "C++, nesne odaklı bir programlama dilidir ve C dilinden türetilmiştir. C++ genellikle sistem programlama, oyun geliştirme, yazılım altyapısı, sürücü ve uygulama yazılımı gibi alanlarda kullanılır. C++'ın en önemli özelliklerinden biri, yüksek performanslı uygulamalar geliştirebilme yeteneğidir."},
{"text": "PHP Nedir?", "article": "PHP: Hypertext Preprocessor, genellikle web geliştirme için kullanılan bir sunucu tarafı programlama dilidir. PHP, HTML içine gömülebilir ve çoğu web sunucusu ve çevre birimleri tarafından desteklenir. Dinamik web sayfaları oluşturmak, form işleme, veritabanı bağlantısı gibi görevlerde PHP sıkça kullanılır."},
{"text": "Ruby Nedir?", "article": "Ruby, açık kaynaklı, nesne yönelimli bir programlama dilidir. Ruby, basit, doğal bir sözdizimine sahip olması ve üretkenlik odaklı olması nedeniyle popülerdir. Web geliştirme, prototipleme, veri analizi gibi çeşitli alanlarda kullanılır."},
{"text": "Swift Nedir?", "article": "Swift, Apple tarafından geliştirilen, modern, güçlü ve kullanımı kolay bir programlama dilidir. Swift, genellikle iOS ve macOS uygulamaları geliştirmek için kullanılır. Swift, Objective-C'ye kıyasla daha güvenli ve daha hızlıdır."},
{"text": "Go Nedir?", "article": "Go, Google tarafından geliştirilen açık kaynaklı bir programlama dilidir. Go, basit ve okunabilir bir sözdizimine sahiptir ve özellikle ağ programlama, web geliştirme ve bulut tabanlı uygulamalar için tercih edilir."}
]
},
{
"title": "Açıklar Ve Saldırılar",
"buttons": [
{"text": "XSS", "article": "XSS (Cross-Site Scripting) saldırıları genellikle web uygulamalarında bulunan bir güvenlik açığı türüdür. Saldırganlar, diğer kullanıcılar tarafından görülen web sayfalarına kötü amaçlı betikler enjekte ederler. Bu, hassas bilgilerin, örneğin çerezlerin veya oturum belirteçlerinin çalınmasına veya kullanıcının sayfadaki eylemlerinin kontrol edilmesine yol açabilir."},
{"text": "CSRF", "article": "CSRF (Cross-Site Request Forgery) saldırıları, kullanıcıları bilgileri veya onayları olmadan bir web sitesinde eylemler gerçekleştirmeye ikna eden saldırı türleridir. Saldırganlar, kullanıcının kimliğini kullanarak kötü amaçlı eylemler yaparlar, örneğin fon transferi veya hesap ayarlarını değiştirme."},
{"text": "Shell Upload", "article": "Shell yükleme saldırıları, saldırganların web sunucusuna kötü amaçlı komut dosyaları yükleyip çalıştırmasına olanak tanır. Bu, yetkisiz erişime, veri hırsızlığına veya sunucunun daha fazla istismarına yol açabilir."},
{"text": "DDoS", "article": "DDoS (Distributed Denial of Service) saldırıları, hedeflenen bir sistemi aşırı miktarda internet trafiği ile ezerek, meşru kullanıcılara erişimi engellemeyi amaçlar. Bu tür saldırılar hizmetlerin kesintiye uğramasına, finansal kayıplara ve kuruluşların itibarının zedelenmesine neden olabilir."},
{"text": "Firewall Atlatma", "article": "Firewall atlatma saldırıları, firewall yapılandırmalarındaki güvenlik açıklarını kullanarak bir ağa yetkisiz erişim sağlamayı amaçlar. Saldırganlar, bu açıkları kullanarak güvenlik kontrollerini atlayabilir ve ağ içinden daha fazla saldırı başlatabilir."},
{"text": "Phishing", "article": "Phishing saldırıları, sahte e-posta, web sitesi veya iletişim yoluyla kullanıcıları yanıltarak hassas bilgileri (şifreler, kredi kartı numaraları vb.) çalmayı amaçlayan saldırı türleridir. Bu tür saldırılar kimlik hırsızlığı, finansal kayıplar ve hesap erişimine izinsiz erişim gibi sonuçlara yol açabilir."},
{"text": "Ransomware", "article": "Ransomware saldırıları, kurbanın dosyalarını şifreleyerek ve ardından şifreyi çözmek için fidye talep ederek çalışır. Bu tür saldırılar veri kaybına, finansal kayıplara ve işletmelerin faaliyetlerinin kesintiye uğramasına neden olabilir."},
{"text": "Sosyal Mühendislik", "article": "Sosyal mühendislik saldırıları, insanları gizli bilgileri ifşa etmeye veya güvenlik açıklarını açmaya ikna etmek için psikolojik manipülasyon tekniklerini kullanan saldırı türleridir. Bu tür saldırılar, telefon, e-posta veya yüz yüze etkileşim yoluyla gerçekleştirilebilir."},
{"text": "Zero-Day Exploit", "article": "Zero-day exploit saldırıları, yazılım veya donanım güvenlik açıklarını hızlı bir şekilde hedefleyen kötü amaçlı yazılımlardır. Bu tür saldırılar genellikle bir güvenlik açığı hakkında bilgi yayımlandıktan hemen sonra gerçekleşir ve savunmasız sistemlere ciddi zararlar verebilir."},
{"text": "SQL Injection", "article": "SQL injection saldırıları, web uygulamalarında yaygın bir güvenlik açığıdır. Saldırganlar, kötü amaçlı SQL sorguları enjekte ederek hassas verilere erişebilir, veritabanı içeriğini değiştirebilir veya yönetici işlemleri gerçekleştirebilir."},
{"text": "Ortadaki Adam (MitM)", "article": "Orta adam saldırıları, iki iletişen taraf arasındaki veriyi dinlemeye, değiştirmeye veya engellemeye yönelik bir saldırı türüdür. Bu tür saldırılar, veri güvenliği, kimlik avı ve veri bütünlüğü risklerini artırabilir."},
{"text": "Erişim Kontrolü", "article": "Erişim kontrolü saldırıları, erişim kontrol mekanizmalarındaki güvenlik açıklarını hedef alarak yetkisiz erişim elde etmeyi amaçlar. Saldırganlar, kimlik doğrulamayı atlatarak, ayrıcalıkları artırabilir veya yetkili olmadıkları alanlara erişebilir."},
{"text": "Şifreleme ", "article": "Şifreleme saldırıları, şifrelenmiş veriyi kırarak veya şifreleme algoritmalarındaki zayıflıkları kullanarak şifreli veriye erişmeyi amaçlar. Bu tür saldırılar hassas bilgilerin ifşa edilmesine ve güvenlik ihlallerine neden olabilir."},
{"text": "Kimlik Doğrulama ", "article": "Kimlik doğrulama saldırıları, bir kullanıcının kimlik bilgilerini ele geçirerek veya kimlik doğrulama mekanizmalarındaki zayıflıkları kullanarak kimlik doğrulama sürecini atlatmayı amaçlar. Bu tür saldırılar, yetkisiz erişime, hesap ele geçirmeye ve güvenlik ihlallerine neden olabilir."}
]
}
]
self.current_page_index = 0
self.page_title_label = QLabel(self.pages[self.current_page_index]["title"])
self.page_title_label.setAlignment(Qt.AlignCenter)
self.page_title_label.setStyleSheet("color: #ecf0f1; font-size: 20pt;")
self.grid_layout.addWidget(self.page_title_label, 0, 0, 1, 4)
self.prev_button = QPushButton("◄")
self.prev_button.setStyleSheet(self.button_style)
self.prev_button.setFixedSize(40, 40)
self.prev_button.clicked.connect(self.prev_page)
self.grid_layout.addWidget(self.prev_button, 0, 0, 1, 1, alignment=Qt.AlignTop | Qt.AlignLeft)
self.next_button = QPushButton("►")
self.next_button.setStyleSheet(self.button_style)
self.next_button.setFixedSize(40, 40)
self.next_button.clicked.connect(self.next_page)
self.grid_layout.addWidget(self.next_button, 0, 3, 1, 1, alignment=Qt.AlignTop | Qt.AlignRight)
self.update_page()
def update_page(self):
for i in reversed(range(self.grid_layout.count())):
widget = self.grid_layout.itemAt(i).widget()
if widget is not None and widget != self.prev_button and widget != self.next_button and widget != self.page_title_label:
widget.deleteLater()
for i, button_data in enumerate(self.pages[self.current_page_index]["buttons"]):
button = QPushButton(button_data["text"])
button.setStyleSheet(self.button_style)
self.grid_layout.addWidget(button, i // 4 + 2, i % 4)
button.clicked.connect(lambda checked, article=button_data["article"]: self.open_article(article))
def open_article(self, article):
dialog = QDialog(self)
dialog.setWindowTitle("Makale")
dialog.setStyleSheet("background-color: #111111; color: #ecf0f1;")
dialog_layout = QVBoxLayout(dialog)
label = QLabel(article)
label.setStyleSheet("color: #ecf0f1; font-size: 13pt;")
label.setWordWrap(True)
dialog_layout.addWidget(label)
dialog.setLayout(dialog_layout)
label.adjustSize()
dialog.setMinimumSize(label.width() + 40, label.height() + 40)
dialog.exec_()
def next_page(self):
self.current_page_index = (self.current_page_index + 1) % len(self.pages)
self.page_title_label.setText(self.pages[self.current_page_index]["title"])
self.update_page()
def prev_page(self):
self.current_page_index = (self.current_page_index - 1) % len(self.pages)
self.page_title_label.setText(self.pages[self.current_page_index]["title"])
self.update_page()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.drag_pos = event.globalPos() - self.frameGeometry().topLeft()
event.accept()
def mouseMoveEvent(self, event):
if event.buttons() & Qt.LeftButton:
self.move(event.globalPos() - self.drag_pos)
event.accept()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.drag_pos = None
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())



